验证对极约束
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;