1. 程式人生 > >魚眼影象校正(球面等距投影模型)

魚眼影象校正(球面等距投影模型)

為了真正的理清魚眼影象校正的原理,查閱了很多的資料,本文主要從以下幾個方面詳細闡述基於球面透視投影等距模型的魚眼影象校正演算法。
1,魚眼相機的構造原理。
2,透視投影。
3,等距投影演算法

魚眼相機的構造

成像模型的不同,魚眼相機的成像原理不同於一般的小孔成像模型。對於一般的小孔成像模型其成像的示意圖如下所示:
小孔成像模型
小孔成像視角原理圖
我們先展示了小孔成像的相關知識,不同於小孔成像 魚眼影象由於為了獲得更加寬廣的視角,因此允許了影象畸變的存在。其成像也就不同於小孔成像的線性模型。對於魚眼相機,我們一般將其成像模型用球面,拋物面模型來代替。下面先來看看魚眼相機的成像光路圖:
這裡寫圖片描述

從圖中可以看出,魚眼相機的成像路徑是完全不同於一般的小孔成像的相機。一般的魚眼相機由以下幾個部分組成:
這裡寫圖片描述


為了更好的描述,魚眼相機的成像原理,以及其成像過程,通常根據應用場景的不同將魚眼相機等效為以下的幾種模型:
這裡寫圖片描述
圖中的等距投影模型就是本文演算法所採用的模型,對於實際的理解,我們可以認為相機的成像模型實際上表徵的是成像的像高與入射角之間的關係。以等距投影模型為例來說明,公式中r表示的是感測器上成像的像高。f表示的是相機的焦距。theta表示的是入射角的大小。成像模型實際上是為了用來描述入射角與成像像高之間的對映關係,等距投影是以線性關係來定義,等立體角投影模型是用正弦函式來定義,立體視覺投影是以正切函式來定義的。那麼如何來理解所謂的等距投影呢?先來看看等距投影的示意圖:
這裡寫圖片描述
從圖中可以看出以相同增量的入射角theta來進行投影,等距投影模型將這些相同增量位置的畫素投影到成像面上的時候所得到的像高是相等的。其實這個關係從等距投影的r的表示式上也可以看出來。
明白了等距投影的概念時候,下一個需要理解的概念就是影象畸變。影象的畸變分為徑向畸變和切向畸變。所謂的徑向畸變意思就是沿著成像半徑方向的影象位置的偏移,切向畸變表示的是沿著成像點切線方向影象畫素點位置的偏移。可以藉助於下面這張圖來理解下影象畸變的概念。
這裡寫圖片描述

根據成像形狀的不同可以將魚眼相機分為普通魚眼相機和對角型。不同的相機模型所採用的原理是不同的,這對我們選擇影象的校正方案是很重要的。
魚眼相機模型

透視投影

等距投影演算法

這裡寫圖片描述
(考慮到我們專案的魚眼相機實際上是屬於壁掛式的安裝方式,採用球面模型等距投影演算法相比於經緯度法會更好一點。)

演算法說明:
如圖中所示將魚眼成像模型等效為一個半球面,
P(x,y,z):為現實空間(CCS)中的一點;
P1(x1,y1,z1):為P點與虛擬成像光心連線交成像半球面的一點。
P2(u,v):過點P1作XOY平面垂線,交XOY平面一點P2。(注意在實際的成像過程中XOY平面並非實際的成像面,這裡畫出來只是為了方便理解。真實的成像面實際上是上圖中最下方的xoy平面。)
r:不同角度的景物通過魚眼相機的投影在感測器上的像高。r的不同表示式代表著不同的成像模型,本次演算法由於採用等距投影模型故r的表示式為r = f*arg(入射);

公式的推導:
魚眼影象的等距投影模型:r = f* ,其中f表示的是攝像機的焦距。 表示的是光線的入射角。
設魚眼影象上的畫素的座標為(x,y)。目標影象的平面即為上圖中P(X,Y,Z)所在的平面。一般我們取Z=R,其中R為魚眼影象的半徑。由上圖的示意圖可得到:
這裡寫圖片描述
平面的投影。同時也是實際成像面中像高r與實際影象座標x軸之間的夾角。具體理解可參考上圖。當得到了theta ,alpha , 這兩個值之後,實際上也就得到了球面上一點P1(x1,y1,z1)的極座標的表示式。2維的平面座標實際上是通過極座標這個橋樑對映到三維座標系中的。此時P1可用極座標表示出來。P1( theta,alpha ).
由空間一點的極座標轉化為空間點的三維座標:
P1點的三維座標為:
這裡寫圖片描述
在得到空間的點的三維座標之後,下一步就是要將這個空間點進行球面透視變換。將虛擬球面上的點P1,對映到目標影象平面。根據相似三角形的關係,考慮圖中三角形OPP3,OP3P3’,與 可知:
這裡寫圖片描述
實際上我們校正後的目標影象的平面就是Z = R平面。因此假設校正後的目標影象的座標為(u,v)。可以得到魚眼影象的源影象(x,y)和目標影象之間的對映關係。
這裡寫圖片描述
根據變換之後的魚眼影象的效果,調整魚眼影象半徑以達到最好效果。同時程式設計時建議採用矩陣運算的形式進行,減少迴圈迭代次數,提高演算法執行效率。
當然,對於最後的推到公式實際上有許多的方法,除了使用空間三角形的相似定理之外。還可以使用兩個具有相同夾角的三角形,其相同角的三角函式值相同。再結合球面模型的空間表示式x2+y2+z2=R2,以及拋物面的空間表示式來求解目標影象與源影象之間的畫素對映關係。

相關推薦

魚眼影象校正球面投影模型

為了真正的理清魚眼影象校正的原理,查閱了很多的資料,本文主要從以下幾個方面詳細闡述基於球面透視投影等距模型的魚眼影象校正演算法。 1,魚眼相機的構造原理。 2,透視投影。 3,等距投影演算法 魚眼相機的構造 成像模型的不同,魚眼相機的成像原理不同於一般

魚眼影象校正球面投影模型_IV

基於上週的模擬情況,通過調整校正後目標影象的大小,實現了對對映之後魚眼影象的完整對映: 可以看到由於採用的是球面透視投影的演算法,因此,校正之後的影象的具有保形性。若追求影象的完整視場,則校正的質

js的form表單提交url傳參數包含+特殊字符的解決方法

字符 www. mit function form表單提交 sub win tno wiki 方法一:(偽裝form表單提交) linkredwin = function(A,B,C,D,E,F,G){ var formredwin = document.cr

Linux學習Ubuntu一些常用配置

最近兩天開始了Linux的學習,由於Linux發行的版本有很多,一開始苦於不知道學哪一個版本,耽誤了一段時間後來自己也明白了,不管學哪一個版本只要把一個版本的學好其他版本上手的速度也很快,這只是一方面的因素,還有一方面的因素是因為沒有學習的資源,網上報班聽課的話

C++ Opencv——影象處理預處理+矩形物體分割

 影象預處理分割目標 // ROI提取 Mat Image_ROI(Mat frame) { Mat gray, bw, img, bkup; /*目標提取——預處理——Mat ROI*/ /*預處理很重要——直接找到目標*/ //預處理很重要——直接找到目標 // 灰度化

OpenCV3.3—影象增強方法:直方圖均衡化 equalizeHist

1. 直方圖均衡化 直方圖均衡化是通過調整影象的灰階分佈,使得在0~255灰階上的分佈更加均衡,提高了影象的對比度,達到改善影象主觀視覺效果的目的。對比度較低的影象適合使用直方圖均衡化方法來增強影象細節。 均衡化處理後的影象只能是近似均勻分佈,均衡化影象的動態範圍擴大了。但是本是擴大了量化間

OpenCV3.3—影象增強方法:伽馬變換

1. 伽馬變換 伽馬變換主要用於影象的校正,將灰度過高或者灰度過低的圖片進行修正,增強對比度。變換公式就是對原影象上每一個畫素值做乘積運算: 伽馬變換對影象的修正作用其實就是通過增強低灰度或高灰度的細節實現的,從伽馬曲線可以直觀理解: γ值以1為分界,值越小,對影象

CCF計算機軟體能力認證試題練習-影象旋轉Java參考答案學習記錄

問題描述   旋轉是影象處理的基本操作,在這個問題中,你需要將一個影象逆時針旋轉90度。   計算機中的影象表示可以用一個矩陣來表示,為了旋轉一個影象,只需要將對應的矩陣旋轉即可。 輸入格式   輸入的第一行包含兩個整數n, m,分別表示影象矩陣的行數和列數。   

JS控制圖片顯示的大小圖片比例縮放

在Web上顯示圖片,通常都會有圖片顯示比例問題,如果不給<img />限制width和height,那麼如果圖片大了就會將整個頁面擠亂,圖片小了又會使圖片失真。 我的需求如下: 預先定義好圖片顯示的標準寬度和高度。 如果圖片的大小超過了標準定義,那麼等比例壓縮圖片。 如果圖片的大小等於標準定義,

PS顏色校正Photoshop顏色顯示偏色

用Photoshop開啟圖,發現顯示圖片偏色,顏色不正。 如下圖,右邊是用Photoshop開啟的,圖片顏色不正常,居然偏黃: 找了半天解決辦法,發現用系統的【校準顯示器顏色】可以解決。 一路【下

清華大學張長水教授:機器學習和影象識別附視訊、PPT下載

本篇乾貨整理自清華大學自動化系教授張長水於2018年4月27日在清華大學資料科學研

第52章、Bitmap影象處理從零開始學Android

1、Drawable → Bitmap public static Bitmap drawableToBitmap(Drawable drawable) { Bitmap bitmap = Bitmap .createBitmap( drawable.getIntrinsicWidth(), drawabl

用101000張食物圖片實現影象識別資料的獲取與處理-python-tensorflow框架

    前段時間,日劇《輪到你了》大火,作為程式設計師的我,看到了另外一個程式設計師—二階堂,他的生活作息,以及飲食規律,讓我感同身受,最讓我感觸的是他做的AI聊天機器人,AI菜品分析機器人,AI罪犯分析。      這讓作為程式設計師的我突然萌生了一股攀比和一種激情,我也得做一個出來(小聲bb,都得嘗試下)

識別貓的單隱藏層神經網絡我的第一個模型

負數 所有 sha 分類 col 缺少 right shadow 一個 摘要:算法詳解;代碼;可視化查看超參數影響 目標:識別一張圖是不是貓 數據集:訓練數據209張64*64 測試數據50張 64*64 方案:二分分類法 算法:logistic回歸 ,

LeetCode 126. Word Ladder II 構造最短路徑模型

Given two words (beginWord and endWord), and a dictionary’s word list, find all shortest transformation sequence(s) from beginWord to endWord, suc

怎樣區分線性和非線性_線性與非線性的區別線性分析、線性模型

一直對線性非線性沒有很準確的定義認識,今天特意查了查,特此記錄下。 怎樣區分線性和非線性 1.線性Line,是指量與量之間按照比例成直線關係,在數學上可理解為一階導數是個常數;    非線性non-line則指不按照比例不成直線關係,一節導數不為常數。 2.線性可

盒子模型含ie8--怪異盒子模型

盒子模型包括:centent(內容)、border(邊框)、padding(內邊距)、margin(外邊距) HTML:    <div>centent</div>        CSS: &nbs

利用spark做文字分類樸素貝葉斯模型

樸素貝葉斯模型 樸素貝葉斯法是基於貝葉斯定理與特徵條件獨立假設的分類方法。對於給定的訓練資料集,首先基於特徵條件獨立假設學習輸入/輸出的聯合概率分佈;然後基於此模型,對給定的輸入x,利用貝葉斯定理求出後驗概率最大的輸出y。至於樸素貝葉斯模型的原理部分,這裡就不

DeepFool迷惑深度學習分類模型測試

      AI+網路安全是當前網路攻擊與防禦方向比較熱門和前沿的領域。同時網路安全中的漏洞挖掘、入侵檢測、異常流量等傳統任務也已經出現了大量基於深度學習的實現方法。然而當以深度學習為主流的人工智慧應

併發無鎖佇列學習單生產者單消費者模型

1、引言 本文介紹單生產者單消費者模型的佇列。根據寫入佇列的內容是定長還是變長,分為單生產者單消費者定長佇列和單生產者單消費者變長佇列兩種。單生產者單消費者模型的佇列操作過程是不需要進行加鎖的。生產者通過寫索引控制入隊操作,消費者通過讀索引控制出佇列操作。二者