¿Cómo utilizar SIFT para hacer coincidir las esquinas?
La coincidencia de imágenes se puede utilizar en una variedad de situaciones, como seguimiento de objetivos, detección, reconocimiento, empalme de imágenes, etc., entre las cuales la tecnología principal 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 detectores: 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 ricamente texturizados.
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. Propuesta del método de coincidencia SIFT
Para eliminar puntos clave sin 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 relativamente reciente. método SIFT método de coincidencia de la distancia del vecino y la siguiente distancia del vecino más cercano: tome un punto clave SIFT en una imagen y encuentre la distancia euclidiana más cercana entre él y el vértice de la distancia euclidiana en 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 mayor dimensionalidad del espacio de características, puede haber una gran cantidad de otras coincidencias falsas a distancias similares, por lo que su proporción es 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 relación recomendado por Lowe es 0,8, pero el autor comparó una gran cantidad de dos imágenes con cambios arbitrarios de escala, rotación y brillo. Los resultados muestran que la relación es mejor entre 0,4 y 0,6, y la relación es mejor. Los puntos coincidentes son inferiores a 0,4. Hay muy pocos puntos coincidentes superiores a 0,6 y hay una gran cantidad de coincidencias falsas. 6 Hay una gran cantidad de coincidencias falsas, por lo que el principio de relación recomendado es el siguiente:
Ratio=0: adecuado para coincidencias con requisitos de mayor precisión;
Ratio=0. 6: Adecuado para partidos con más puntos coincidentes;
Proporció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, el vector de características SIFT de 128 dimensiones se normaliza a 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 multiplicado por el coseno del ángulo del vector y luego usando la función coseno inverso (acos) para encontrar el coseno del ángulo vectorial. función) para encontrar el ángulo entre vectores. El método de Lowe demostró ser excelente tanto en términos de corrección como de consumo de tiempo.
Del mismo modo, la función knnsearch se puede utilizar para encontrar los puntos más cercanos y segundos más cercanos: cuando se utiliza la distancia euclidiana, knnsearch proporciona casi los mismos resultados que el método de aproximación utilizado por Lowe, lo que confirma que la eficacia euclidiana simulada de 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.