Red de conocimiento informático - Material del sitio web - Cómo hacer coincidir dos cuadriláteros en una imagen para que sus márgenes sean iguales csdn

Cómo hacer coincidir dos cuadriláteros en una imagen para que sus márgenes sean iguales csdn

1. Coincidencia de puntos característicos (esquinas)

La coincidencia de imágenes se puede aplicar en muchas ocasiones, como seguimiento de objetivos, detección, reconocimiento, empalme de imágenes, etc., y la tecnología central de la coincidencia de esquinas es la coincidencia de esquinas. La llamada coincidencia angular se refiere a encontrar la correspondencia entre los píxeles característicos entre dos imágenes, determinando así la relación posicional entre las dos imágenes.

La coincidencia de bordes y esquinas se puede dividir en los siguientes cuatro pasos:

1. Extraer puntos de detección: busque los píxeles (puntos de esquina) más fácilmente identificables en las dos imágenes que se van a combinar. . puntos), como los bordes de objetos con ricas texturas.

2. Extraiga descriptores: para los puntos de esquina detectados, utilice algunas características matemáticas para describirlos, como histogramas de gradiente, características binarias aleatorias locales, etc. Los detectores y métodos de extracción de descriptores más utilizados incluyen: tamizar, harris, surf, rápido, agast, enérgico, freak, enérgico, breve/orbe, etc.

3. Coincidencia: determine su correspondencia en las dos imágenes a través de los descriptores de cada punto de esquina. Los métodos comúnmente utilizados incluyen flann, etc.

4. Eliminación de ruido: elimine los valores atípicos coincidentes incorrectos y conserve los puntos coincidentes correctos. Los métodos más utilizados incluyen KDTREE, BBF, Ransac, GTM, etc.

2. El método SIFT propuesto

Para eliminar los puntos clave que no tienen relación de coincidencia debido a la oclusión de la imagen y la confusión del fondo, Lowe, el autor de SIFT, propuso un método comparativo más cercano. método vecino. Método SIFT de distancia y siguiente distancia vecina más cercana: tome un punto clave SIFT en una imagen y encuentre los dos primeros puntos clave con la distancia euclidiana más cercana a otra imagen. Entre estos dos puntos clave, si el odds ratio obtenido al dividir la distancia más cercana por la siguiente distancia más cercana es menor que un cierto umbral T, entonces se acepta el par de coincidencias. Esto se debe a que para coincidencias falsas, debido a la alta dimensionalidad del espacio de características, puede haber una gran cantidad de otras coincidencias falsas a distancias similares, por lo que su proporción será mayor. Obviamente, al reducir el umbral de relación T, el número de puntos de coincidencia SIFT se reducirá pero será más estable, y viceversa.

El umbral de Loweratio es 0,8, pero el autor hizo coincidir una gran cantidad de dos imágenes con proporciones, rotaciones y cambios de brillo arbitrarios. Los resultados muestran que se producirá una gran cantidad de coincidencias falsas cuando la proporción es 0,6. , por lo que se recomienda que el principio de relación sea el siguiente:

Relación = 0, 4: adecuado para combinar con requisitos de mayor precisión;

Relación = 0, 6: adecuado para combinar con muchos puntos coincidentes; Relación = 0, 5: en circunstancias normales.

Tres códigos de coincidencia SIFT comunes

1. vl_ubcmatch.c en la caja de herramientas Sift en vlfeat utiliza una distancia euclidiana ordinaria para la comparación (este código SIFT lo proporciona Andrea

Cortesía de Vedaldi).

2. El código C++ de Lowe's utiliza la distancia euclidiana, pero en el código de Matlab, para acelerar el cálculo, utiliza ángulos vectoriales para aproximar la distancia euclidiana: Primero, normalice el vector propio SIFT de 128 dimensiones. vector unitario (la raíz cuadrada de la suma de los cuadrados de cada número dividida por la raíz cuadrada de la suma de los cuadrados), luego haga un producto escalar para obtener el coseno del ángulo del vector y finalmente use el coseno inverso (acos ) función para encontrar el ángulo entre los vectores. El método de Lowe's demostró ser excelente tanto en términos de corrección como de consumo de tiempo.

Del mismo modo, la función knnsearch también se puede utilizar para encontrar los puntos más cercanos y segundos más cercanos: cuando se utiliza la distancia euclidiana, knnsearch da casi los mismos resultados que el método de aproximación utilizado por Lowe, lo que confirma la eficacia de la simulación del método euclidiano. distancia.

3. OpenSIFT de Rob Hess utiliza KDTREE para optimizar la coincidencia.

4. KDTREE+BBF implementado por CSDN master v_JULY_v optimiza la coincidencia SIFT y elimina las discrepancias: hablando del árbol KD y el algoritmo SIFT+BBF desde la perspectiva del algoritmo del vecino más cercano K y la medición de distancia

--El Algoritmo de los Métodos Estructurados--Canal Blog--CSDN.NET.

5. OpenCV tiene una variedad de comparadores para implementar la coincidencia SIFT en características 2d: VectorDescriptorMatcher, BFMatcher (comparador de descriptores de fuerza bruta), FernDescriptorMatcher. Comparador de descriptores unidireccional (OneWayDescriptorMatcher), comparador basado en Flann (FlannBasedMatcher), etc. Actualmente, solo sabemos usar knnsearch, que proporciona múltiples medidas de distancia, pero no conozco las diferencias específicas.