關於透視變換的映射關系


OpenCV提供了一些關於透視變換的接口,例如getPerpectiveTransform, warpPerspective等。這里主要說明一下warpPerspective是如何工作的。

其實OpenCV中很多圖像變換的映射關系都是反直覺的,如這里的warpPerspective和remap函數。直覺告訴我們,這些函數的輸入是原圖的像素坐標,通過映射表或矩陣運算,輸出的是目標圖像的像素坐標。其實不然,OpenCV是先取一個目標圖像的坐標,然后根據映射關系定位到原圖中去,再從原圖中得到該坐標的像素值。然而通過映射關系得到的坐標通常不是一個整數,即並不是原圖的一個像素坐標,所以還需根據原圖中該坐標周圍的像素值用某些插值算法計算出該坐標應有的像素值。也就是:

映射關系

對於warpPerspective這個函數,我們已知它表示的映射關系了:

warpPerspective map

特別提醒,公式里的x,y是目標圖像的坐標!那么我們設原圖坐標是xo,yo,則有:

\[x_o=\]

xo=(M11x+M12y+M13)/(M31x+M32y+M33)

yo=(M21x+M22y+M23)/(M31x+M32y+M33)

當我們想計算原圖中某個特定的點在目標圖像中的位置時,就需要解這個二元一次方程組了,解得:

x=((M22-M32yo)(M33xo-M13)-(M12-M32xo)(M33yo-M23))/((M22-M32yo)(M11-M31xo)-(M12-M32xo)(M21-M31yo))

y=((M21-M31yo)(M33xo-M13)-(M11-M31xo)(M33yo-M23))/((M21-M31yo)(M12-M32xo)-(M11-M31xo)(M22-M32yo))

 

推薦閱讀:

http://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#warpperspective


免責聲明!

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



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