Significado de los valores de máscara de OpenCV C ++ findHomography

Estoy utilizando la función findHomography de OpenCV con el método RANSAC para encontrar la homografía que relaciona dos imágenes vinculadas con un conjunto de puntos clave. El principal problema es que todavía no he podido encontrar en ningún lugar cuáles son los valores de la matriz de máscara que genera la función. La única información que sé es que los valores 0 son valores atípicos, y los valores no nulos son valores atípicos. Pero, ¿qué significa el valor inliers? ¿Alguien sabe?

¡Gracias por adelantado!

Pieza de código donde llamo findHomography :

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

La máscara devuelta por findHomography es un cv::Mat solo canal de 8 bits (o std::vector , si lo prefiere) que contiene 0 o 1 indica el estado de valor atípico.

EDITAR: Usted accede a cada elemento de la máscara llamando a .at , lo que lleva a una salida confusa. Debe usar .at , que interpretará el valor de la matriz correctamente.

Utilicé el método findHomography después de aplicar la coincidencia de puntos clave.

  • Los puntos negativos son puntos clave coincidentes que se calculan como verdaderos positivos (coincidencias correctas);
  • Los valores atípicos son puntos clave coincidentes que se calculan como falsos positivos (falsas coincidencias).

Luego puede usar la salida de máscara para extraer el subconjunto de coincidencias correctas de todas las coincidencias.

  • Hay un ejemplo en Python 3.6 y OpenCV 3.4.1:

     good_kp = [gray_kp[m.queryIdx].pt for m in good_matches] correct_matched_kp = [good_kp[i] for i in range(len(good_kp)) if mask[i]]