2016-06-01 4 views
0

В LATCH_match.cpp в opencv_3.1.0 матрица гомографии определяется и используется как:Матрица гомографии в Opencv?

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)?

ответ

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-прецизионную с использованием известных наземных гомологов истины между изображениями.

Я думаю, что образ ../data/graf1.png является https://github.com/Itseez/opencv/blob/3.1.0/samples/data/graf1.png, что я показываю здесь:

enter image description here

Согласно комментария 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.

+0

Так вы говорите, что это одноранговая матрица. Итак, как я могу получить такую ​​матрицу для общего изображения? – justHelloWorld

+1

Это изображение происходит из хорошо известного компьютерного видения [набора данных] (http://www.robots.ox.ac.uk/~vgg/data/data-aff.html). Документ, который вначале описывает методологию и вводит набор данных, из моих знаний: [Оценка эффективности локальных дескрипторов] (https://www.robots.ox.ac.uk/~vgg/research/affine/det_eval_files/mikolajczyk_pami2004. PDF). Гомография связывает геометрическое преобразование между двумя видами для плоской поверхности и перспективной проекции. Таким образом, вы не можете использовать эту гомографию для других изображений, но вы можете оценить гомографию с помощью надежной схемы (RANSAC). – Catree

+0

Вы можете использовать [cv :: findHomography] (http://docs.opencv.org/3.1.0/d9/d0c/group__calib3d.html#ga4abc2ece9fab9398f2e560d53c8c9780) с помощью RANSAC. Плоское предположение очень важно, точки должны лежать на плоскости в 3D-мире (например, стена, книга и т. Д.). RANSAC используется для устранения выбросов. В принципе, вы выбираете 4 балла в случайном порядке (минимальное количество баллов для оценки гомографии), и вы проверяете, согласуется ли достаточное количество точек с моделью, иначе вы выберете еще 4 балла. В конце вы получаете гомографию и листы/выбросы. Лица должны быть также в большинстве. – Catree