2013-04-04 14 views
5

Używam funkcji findHomography z OpenCV metodą RANSAC w celu znalezienia homografii, która wiąże dwa obrazy połączone z zestawem punktów kluczowych. Głównym problemem jest to, że nie udało mi się jeszcze znaleźć nigdzie, jakie są wartości matrycy maski, którą funkcja wyprowadza. Jedyną informacją, którą znam jest to, że wartości 0 są wartościami odstającymi, a wartości niezerowe są wartościami inklantowymi. Ale co to znaczy wartość inklerów? Ktokolwiek wie?Wartości maski OpenHV C++ findHomography oznaczające

Z góry dziękuję!

część kodu gdzie wywołać findHomography:

cv::Mat H12; 
cv::Mat mask; 

H12 = cv::findHomography(FvPointsIm1, FvPointsIm2, mask, CV_RANSAC, 5); 
ui->Debug_Label->setText(Mat2QString(mask)); 
+0

Pytasz o znaczenie rozróżnienia inlier/outlier lub o wartości liczbowe w masce? – Aurelius

+0

Informacje o wartościach numerycznych w masce. – jsalvador

+0

Czy otrzymujesz wartości inne niż "0" lub "1"? – Aurelius

Odpowiedz

10

Maska zwrócony przez findHomography jest 8-bitowy, jednokanałowe cv::Mat (lub std::vector<uchar> jeśli wolą) zawierający albo 0 lub 1 wskazujący odrębne stanowisko status.

EDYCJA: Dostęp do każdego elementu maski przez wywołanie .at<double>, co prowadzi do mylących wyników. Powinieneś używać , która poprawnie interpretuje wartość macierzy.

+0

Aby przekonwertować wartości maski na QString, używam następującego dla każdego pola macierzy: 'QString :: number (mask.at (i, j))' – jsalvador

+0

Fajnie, to był błąd. Dziękuję Ci bardzo! – jsalvador

+1

Nie mogę wydrukować poprawnie wartości, używając: 'mask.at (0, 0)'. Drukuje małą ikonę macierzy z wartościami "0 0, 0 1" ... Czy wiesz dlaczego? – JonesV