在LATCH_match.cpp
opencv_3.1.0
中,单应矩阵被定义并用作:
Mat homography;
FileStorage fs("../data/H1to3p.xml", FileStorage::READ);
...
fs.getFirstTopLevelNode() >> homography;
...
Mat col = Mat::ones(3, 1, CV_64F);
col.at<double>(0) = matched1[i].pt.x;
col.at<double>(1) = matched1[i].pt.y;
col = homography * col;
...
为什么H1to3p.xml
是:
<opencv_storage><H13 type_id="opencv-matrix"><rows>3</rows><cols>3</cols><dt>d</dt><data>
7.6285898e-01 -2.9922929e-01 2.2567123e+02
3.3443473e-01 1.0143901e+00 -7.6999973e+01
3.4663091e-04 -1.4364524e-05 1.0000000e+00 </data></H13></opencv_storage>
选择这些数字的标准是什么?它们可用于过滤关键点的任何其他单应性测试(如LATCH_match.cpp
)?
答案 0 :(得分:4)
我认为您的“LATCH_match.cpp
opencv_3.1.0
”
https://github.com/Itseez/opencv/blob/3.1.0/samples/cpp/tutorial_code/xfeatures2D/LATCH_match.cpp
在该文件中,您find:
// If you find this code useful, please add a reference to the following paper in your work:
// Gil Levi and Tal Hassner, "LATCH: Learned Arrangements of Three Patch Codes", arXiv preprint arXiv:1501.03719, 15 Jan. 2015
所以,看http://arxiv.org/pdf/1501.03719v1.pdf你会发现
对于每个集合,我们将第一个图像与剩余的每个图像进行比较 五,检查通信。使用的是衡量绩效 代码来自[16,17] 1 ,它计算召回和1精度 在图像之间使用已知的基本事实单应性。
我认为我在此处显示的图片../data/graf1.png
是https://github.com/Itseez/opencv/blob/3.1.0/samples/data/graf1.png:
根据评论Homography matrix in Opencv? Catree,原始数据集位于http://www.robots.ox.ac.uk/~vgg/research/affine/det_eval_files/graf.tar.gz,据说
包括图像对之间的同形数据。
所以我认为存储在文件../data/H1to3p.xml
中的单应性是图像1和图像3之间的单应性。