【Computer Vision】圖像單應性變換/投影/仿射/透視


一、基礎概念

1. projective transformation  = homography = collineation.

2. 齊次坐標:使用N+1維坐標來表示N維坐標,例如在2D笛卡爾坐標系中加上額外變量w來形成2D齊次坐標系$(x,y) \Rightarrow (x,y,w)$ 

齊次坐標具有規模不變性,同一點可以被無數個齊次坐標表達.$(x,y,1) \Rightarrow (ax,ay,a)$ 齊次坐標轉化為笛卡爾坐標可以通過同除最后一項得到.

3. 單應性變換是對齊次坐標下點的線性變換,可以通過矩陣運算來表達$ x^{'}= Hx$

H為非奇異矩陣.

 二、基礎變換

剛體變換(rigid transformation): 旋轉和平移變換/rotation,translation, 3個自由度,點與點之間的距離不變
$$ x' = \begin{pmatrix} R&t \\ 0^T&1\end{pmatrix}x $$

 R為2*2旋轉矩陣,t為2維列向量,0^T為0的二維行向量

相似變換(similarity transformation): 增加了縮放尺度, 四個自由度,點與點之間的距離比不變

$$x' = \begin{pmatrix} sR & t  \\  0^T & 1 \end{pmatrix}x$$

s為縮放尺度

仿射變換(affine transformation): 仿射變換和相似變換近似,不同之處在於相似變換具有單一旋轉因子和單一縮放因子,仿射變換具有兩個旋轉因子和兩個縮放因子,因此具有6個自由度. 不具有保角性和保持距離比的性質,但是原圖平行線變換后仍然是平行線.

$$x' = \begin{pmatrix}A&t \\ 0^T&1\end{pmatrix}x$$

A為2*2的非奇異矩陣,可被分解為如下: $A = R(\theta)R(-\phi)DR(\phi)$

其中$R(\theta) R(\phi)$ 為旋轉矩陣,D為對角陣$ D = \begin{pmatrix} \lambda_1 & 0 \\ 0 & \lambda_2 \end{pmatrix} $

$\lambda_1 和 \lambda_2$可以看做兩個方向的縮放比.

投影變換(projective transformation): 也叫作單應性變換。投影變換是齊次坐標下非奇異的線性變換。然而在非齊次坐標系下卻是非線性的,這說明齊次坐標的發明是很有價值的。投影變換比仿射變換多2個自由度,具有8個自由度。上面提到的仿射變換具有的“不變”性質,在投影變換中已不復存在了。盡管如此,它還是有一項不變性,那就是在原圖中保持共線的3個點,變換后仍舊共線。投影變換表示如下:

$$x' = \begin{pmatrix}A&t \\ V^T&v\end{pmatrix}x$$

其中$V = (v_1,v_2)^T$

透視變換: 透視變換將圖像投影到一個新的視平面,是二維到三維再到另一個二維(x', y')空間的映射。

透視變換前兩行和仿射變換相同,第三行用於實現透視變換。透視變換前后,原來共線的三個點,變換之后仍然共線。

 

以上公式設變換之前的點是z值為1的點,它三維平面上的值是x,y,1,在二維平面上的投影是x,y,通過矩陣變換成三維中的點X,Y,Z,再通過除以三維中Z軸的值,轉換成二維中的點x’,y’.
從以上公式可知,仿射變換是透視變換的一種特殊情況.它把二維轉到三維,變換后,再轉映射回之前的二維空間(而不是另一個二維空間)

 

三、Python實現

python版本:2.7

依賴包:scipy,numpy,pylab,PIL

 

1. 使用仿射矩陣進行image warping: 圖像扭曲

圖片:trees_001.jpg

from scipy import ndimage
from numpy import *
from PIL import Image
from pylab import *
im = array(Image.open('trees_001.jpg').convert('L'))
H = array([[1.4,0.05,-100],[0.05,1.5,-100],[0,0,1]])
#im2  = ndimage.affine_transform(im,H[:2,:2],(H[0,2],H[1,2]))
im2  = ndimage.affine_transform(im,H[:2,:2],(H[0,2],H[1,2]))
figure()
gray()
imshow(im2)
show()

 

 結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM