我正在研究PIV工作流,目前我正在預處理圖像。我需要擺脫圖像中的透視失真。我確實有「圖像處理工具箱」和「攝像機校準器」。我已經用「undistortImage()」擺脫了鏡頭扭曲;「以及通過棋盤圖案推斷的cameraParams對象。用Matlab的「camerParams」(計算機視覺系統工具箱)糾正圖像
第一個問題:是否可以使用cameraParams對象來透視圖像,以便我的棋盤在圖像中被糾正?
第二個問題:由於我無法使用cameraParams對象,因此我嘗試手動使用轉換函數。我嘗試使用控制點對(使用cpselection工具,原始圖像和生成的棋盤圖像)和fitgeotrans(移動點,固定點,「投影」);函數來獲得我的tform對象。不過,我總是得到錯誤信息:
Error using fitgeotrans>findProjectiveTransform (line 189)
At least 4 non-collinear points needed to infer projective transform.
Error in fitgeotrans (line 102)
tform = findProjectiveTransform(movingPoints,fixedPoints);
我嘗試了很多不同對控制點(4對或更多)。但我仍然收到這個錯誤。我相信我必須在這裏忽略一些東西。
任何幫助表示讚賞,謝謝。
斯蒂芬
**第一個問題**:獲得cameraParams唯一唯一的原因是爲了讓圖片清爽。因此它不僅可能,而且是「強制性的」。 **第二個**:好像看起來你給的這些屁股是在一條線上,而且它們應該是非共線的! – 2014-12-02 15:54:25
謝謝。 1 .: 是的,這也是我的想法。爲了獲得鏡頭失真,Matlab必須在內部做一些透視校正。但是我無法找到一種方法將修正應用於圖像。 「undistortImage()」只是進行鏡頭校正。 2 .:我的點在矩形或菱形中排列,因此實際上不在一條線上。所以這個錯誤讓我有點困惑...... – Stephan 2014-12-02 16:02:50
在這裏你有方程式:http://en.wikipedia.org/wiki/Distortion_%28optics%29 – 2014-12-02 16:03:37