OpenCV仿射變換+投射變換+單應性矩陣
本來想用單應性求解小規模運動的物體的位移,但是后來發現即使是很微小的位移也會帶來超級大的誤差甚至錯誤求解,看起來這個方法各種行不通,還是要匹配知道深度了以后才能從三維仿射變換來入手了,糾結~

- estimateRigidTransform():計算多個二維點對或者圖像之間的最優仿射變換矩陣 (2行x3列),H可以是部分自由度,比如各向一致的切變。
- getAffineTransform():計算3個二維點對之間的仿射變換矩陣H(2行x3列),自由度為6.
- warpAffine():對輸入圖像進行仿射變換
- findHomography: 計算多個二維點對之間的最優單映射變換矩陣 H(3行x3列) ,使用最小均方誤差或者RANSAC方法 。
- getPerspectiveTransform():計算4個二維點對之間的透射變換矩陣 H(3行x3列)
- warpPerspective(): 對輸入圖像進行透射變換
- perspectiveTransform():對二維或者三維矢量進行透射變換,也就是對輸入二維坐標點或者三維坐標點進行投射變換。
- estimateAffine3D:計算多個三維點對之間的最優三維仿射變換矩陣H (3行x4列)
- transform():對輸入的N維矢量進行變換,可用於進行仿射變換、圖像色彩變換.
- findFundamentalMat:計算多個點對之間的基矩陣H。
快速解決:
- 問題1:如何計算3個二維點對之間的仿射變換矩陣?
答:使用getAffineTransform()。
- 問題2:如何計算多個二維點對之間的仿射變換矩陣(使用誤差最小准則 )?
答:使用estimateRigidTransform()或者findHomography。
- 問題3:如何計算4個二維點對之間的透射變換?
答:使用getPerspectiveTransform()。
- 問題4:如何計算多個三維點對之間的仿射變換?
答:使用estimateAffine3D。
- 問題5:如何對輸入圖像進行仿射變換?
答:使用warpAffine()。
- 問題6:如何對輸入圖像進行透射變換?
答:使用perspectiveTransform()。
- 問題7:如何對輸入的二維點對進行仿射變換?
答:使用transform()。
- 問題8:如何對輸入的三維點對進行投射變換?
答:使用perspectiveTransform()。