我已经检查了 stackOverflaw,尤其是在这个链接中,但它没有回答我的问题。
我使用 Ransac 和 OpenCv 计算单应性以匹配两张图片。这里对应的代码:
Mat H = findHomography( obj, scene, CV_RANSAC,3);
std::cout << "Size of homography " << *H.size << std::endl ;
//Print homography
for (int i=0;i<H.rows;i++){
for (int j=0;j<H.cols;j++){
std::cout << "valeur H : " << (int)H.at<double>(i,j) << endl;
}
}
int N=1;
const double det = H.at<double>(0, 0) * H.at<double>(1, 1) - H.at<double>(1, 0) * H.at<double>(0, 1);
std::cout << "Determinant homography : " << det << std::endl;
对于一个好的匹配(完全相同的图片),我在我的终端上有这个:
单应性大小 3
价值 H : 1
价值 H : 0
价值 H : 0
价值 H : 0
价值 H : 1
价值 H : 0
价值 H : 0
价值 H : 0
价值 H : 1
行列式单应性:1
对于一场糟糕的比赛(两张不同的图片),我有这个:
单应性大小 3
价值 H : 0
价值 H : 0
价值 H : 241
价值 H : 0
价值 H : 0
价值 H : 277
价值 H : 0
价值 H : 0
价值 H : 1
行列式单应性:0.00533235
我不明白这个结果。有人可以解释一下吗?我想使用这些值来确定这是否匹配。我希望在第一种情况下只有 1 个,但没有。
我想,我在没有真正理解的情况下使用 Homography 和 Ransaw。我已经在互联网上检查过,但它很复杂,所以如果你也有很好的解释,我会接受。
感谢。