驗證對極約束
1. 將圖1中匹配好的特徵點像素座標轉化爲歸一化座標 :
輸入:keypoints_1[ m.queryIdx ].pt 爲像素座標, K爲相機內參矩陣;
得到:y1 = (x/z, y/z, 1) 相機歸一化座標。
代碼如下:
Point2d pt1 = pixel2cam ( keypoints_1[ m.queryIdx ].pt, K );
Mat y1 = ( Mat_<double> ( 3,1 ) << pt1.x, pt1.y, 1 );
2. 將圖2中匹配好的特徵點像素座標轉化爲歸一化座標 :
輸入:keypoints_2[ m.trainIdx ].pt 爲像素座標, K爲相機內參矩陣;
得到:y2 = (x/z, y/z, 1) 相機歸一化座標。
代碼如下:
Point2d pt2 = pixel2cam ( keypoints_2[ m.trainIdx ].pt, K );
Mat y2 = ( Mat_<double> ( 3,1 ) << pt2.x, pt2.y, 1 );
3. 通過公式 驗證對極約束,其中 爲相機歸一化座標,分別對應代碼中y1, y2
Mat d = y2.t() * t_x * R * y1;