查找同形值的含义
OpenCV C++ - findHomography values meaning
我已经检查了stackoverdefect,特别是在这个链接中,但是它没有回答我的问题。
为了匹配两张图片,我使用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
value H: 1
value H: 0
value H: 0
value H: 0
value H: 1
value H: 0
value H: 0
value H: 0
value H: 1
行列式单应性:1
对于一个糟糕的匹配(两个不同的图片),我有这个:
单应字大小3
value H: 0
value H: 0
value H: 241
value H: 0
value H: 0
value H: 277
value H: 0
value H: 0
value H: 1
行列式单形:0.00533235
我不明白这个结果。有人能解释一下吗?我想使用这些值来确定这是否一个好的匹配。我希望在第一种情况下只有1,但事实并非如此。
我想,我在没有真正理解的情况下使用了Homography和Ransaw。我在网上查过了,但它很复杂,所以如果你也有很好的解释,我就接受了。
谢谢。
根据openCV文档,findHomography '查找两个平面之间的透视图转换'。这意味着它能够计算从不同位置拍摄的两张图像(同一(校准)板)的透视变换。
如果你比较两个完全不同的图像点集,它将无法找到这样的变换。
H是矩阵。在第一种情况下,H是单位矩阵[[1,0,0],[0,1,0],[0,0,1]。也就是说,没有变化。
在第二种情况下,似乎你只是在x中进行了241的翻译,在y中进行了277的翻译。但是在x和y中没有表示,因为(H=[[a,0,241],[0,b,277],[0,0,1]])'a'和'b'都是零。
- 正在查找文档以获得PS4平台的C++中的设备信息
- 在C++中查找文件
- 模板元程序查找相似的连续类型名称
- 在UNIX系统中使用DIR查找文件的字节大小
- 查找最接近的大于当前数字的数字的索引
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 查找后更改类变量
- 使用正则表达式regex_search在字符串中查找字符串
- 使用gcc从静态链接的文件中查找可选符号
- 在C++中查找范围的长度
- 算法问题:查找从堆栈中弹出的所有序列
- 在Windows中查找扬声器输出的当前音量级别
- 如何在C++中使用X509证书模在令牌中查找私钥
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 在 for 循环中查找问题时遇到困难
- 如何在文件中查找字节序列
- 试图创建一个多线程程序来查找0-100000000之间的总素数
- 使用堆查找第K个最大元素的时间复杂性
- 一个函数,用于查找字符串1包含字符串2 c++的次数