Red de conocimiento informático - Material del sitio web - ¿Cómo unir dos imágenes?

¿Cómo unir dos imágenes?

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., entre las cuales la tecnología principal es la coincidencia de esquinas. -La llamada coincidencia de ángulos 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 de coincidencia SIFT propuesto

Para eliminar los puntos clave sin relación de coincidencia causados ​​por 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 de vecino SIFT método de coincidencia de distancia y segunda distancia de vecino más cercano: tome un punto clave SIFT en una imagen, encuentre los dos primeros puntos clave más cercanos a la distancia euclidiana de la otra imagen y luego compare estos dos puntos clave con el siguiente A. La distancia del vecino más cercano se compara para encontrar los dos puntos clave superiores 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 puntos coincidentes. 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 allí. son muy pocas si son menos de 0,4 de coincidencias, hay una gran cantidad de coincidencias falsas superiores a 0,6. 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, normalice el vector propio SIFT de 128 dimensiones como unidad. vector (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 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 los 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.