python計算機視覺編程
第三章 圖像到圖像的映射
單應性變換 是將一個平面內的點映射到另一個平面內的二維投影變換
也就是一個1×3的列向量(作為x)與一個3行3列的矩陣(單應性矩陣)點乘得到另一個1×3的列向量(作為x)
需要注意的是對於x,使用的是他的齊次坐標形式,所謂齊次坐標也就是在原有數據維度的基礎上加一,所增加的維度可以看做是尺度定義
單應性矩陣的自由度為8,原因為h9可以被設定為1,因為在齊次坐標形式下,ax與bx是相同的
坐標的歸一化:也就是講尺度這個維度數字變為1
仿射變換 包含了一個可逆矩陣A和一個平移向量t,其單應性矩陣形式為[[A t],[0,1]]。特點是保持了尺度為1,可用於圖像扭曲
相似變換 包含了尺度變換的二維剛體變換,[[sR t][0 1]] 其中R為旋轉矩陣[cos(sigma) -sin(sigma)][sin(sigma) cos(sigma)],s指定了變換的尺度
計算單應性矩陣需要4個對應點對
應用直接線性變換演算法計算單應性矩陣(DLT)
仿射變換具有6個自由度,需要三個對應點估計矩陣
圖像扭曲
對圖像塊應用仿射變換,稱為圖像扭曲
使用Scipy工具包中的ndimage.affine_transform(im,A,b,size)
線性變換A 平移向量b size用來指定輸出圖像的大小
圖像配准
對圖像進行變換,使變換後的圖像能夠在常見的坐標系中對齊。
實際上是尋找一個相似變換,在對應點之間建立映射
以人臉配准為例,根據眼睛和嘴的坐標(三點)計算出一個相似變換,然後將可以使用該變換的這些圖像扭曲到一個歸一化的坐標系中。
創建全景圖
在同一位置拍攝的兩幅或者多幅圖像是單應性相關的,需要使用該約束將很多圖像縫補起來,拼成一個大的圖像來創建全景圖像
RANSAC (Random Sample Consensus)隨機一致性採樣 是用來找到正確模型以擬合帶有雜訊數據的迭代方法,其基本思想是,數據中包含正確的點和雜訊點,合理的模型應該能夠在描述正確數據點的同時摒棄雜訊點
1)在數據中隨機選擇幾個點設定為內群
2)計算適合內群的模型
3)把其他剛才沒有選到的點帶入剛才建立的模型中,計算是否為內群
4)記下內群數量
5)重複以上步驟多次
6)比較哪次計算中內群數量最多,內群最多的那次所建的模型就是所求解
拼接圖像:待估計出圖像間的單應性矩陣後,需要將所有圖像扭曲到一個公共的圖像平面上,一般將中心圖像左邊或者右邊的區域填充0,以便為扭曲後的圖像騰出空間
此外還需要對單個圖像邊界上存在的邊緣效應進行處理,需要由額外的操作對強度進行歸一化,並對平移進行平滑場景轉換
推薦閱讀:
※有哪些應用場景適合用python的gevent來完成?
※關於try/except的問題?
※Python 參數傳引用還是傳值?
※用數據告訴你在上海你得這樣租(sheng)房(dian)子(qian)
※python 中文亂碼出現,不知道是什麼原因?
TAG:Python |