Análisis de imágenes: operador de gradiente en detección de bordes
Si quieres calcular el mapa de gradiente, debes diseñar una plantilla convolucional. Primero, debes comprender el sistema de coordenadas de la imagen al realizar el cálculo. Muchas publicaciones de blogs corresponden a plantillas que no coinciden con el sistema de coordenadas. Utilizamos principalmente sistemas de coordenadas computacionales en operaciones de convolución.
El sistema de coordenadas utilizado por el camarógrafo de la izquierda se utiliza a menudo en los cálculos de imágenes. Su origen de coordenadas está en la esquina superior izquierda y el eje X se extiende horizontalmente hacia la derecha. y es vertical y se extiende hacia abajo. Puede representar no solo la imagen, sino también el valor del píxel en las coordenadas.
Las visualizaciones en pantalla suelen utilizar el sistema de coordenadas Lena a la derecha porque el escaneo de la pantalla se realiza de izquierda a derecha y de arriba a abajo. El origen está en la esquina superior izquierda de la imagen, el eje vertical marca las filas de la imagen y el eje horizontal marca las columnas de la imagen. Puede representar no solo esta imagen, sino también los valores de la imagen en la intersección de filas y columnas.
Lo primero que debemos saber es que el gradiente es un vector. Si es un vector, tiene dirección y magnitud. La dirección del gradiente apunta a la dirección donde la función cambia más rápido, y su tamaño es su módulo y su tasa de cambio máxima. Para una función binaria, su gradiente en ese punto es, alternativamente, es:
donde están la amplitud y el ángulo de dirección de este vector gradiente
La siguiente imagen muestra el mapa matemático en escala de grises expresión. El valor de gris de un píxel es que tiene ocho vecinos.
El degradado de la imagen en este punto es
En...
Es decir, la dirección horizontal correspondiente a la imagen, es decir, la vertical. dirección correspondiente a la imagen del agua.
Para comprender la generación de mapas de gradiente, primero debemos comprender el proceso de convolución de plantilla.
La convolución de plantilla es un método de operación de plantilla. Los pasos son los siguientes:
(1) Explore la plantilla en la imagen de entrada y compare el centro de la plantilla con la posición del píxel. en la imagen Superposición;
(2) Multiplique cada coeficiente en la plantilla con la escala de grises de cada píxel correspondiente debajo de la plantilla;
(3) Agregue todos los productos (para mantener Rango de escala de grises, el resultado a menudo se divide por la suma de los coeficientes de la plantilla. Si la suma de la plantilla del operador de gradiente es 0, la división no es necesaria);
(4) Asigne el resultado de la operación anterior (el. salida de respuesta de la plantilla) al píxel correspondiente a la posición central de la plantilla en la imagen de salida.
De hecho, la generación del mapa de gradiente es la misma que la convolución de la plantilla. La única diferencia es que generar el mapa de gradiente requiere calcular la amplitud del gradiente en el punto después de que se completa la convolución de la plantilla y usarlo. esta amplitud como el valor de píxel para completar el cálculo. .
La siguiente figura muestra las plantillas horizontales y verticales utilizadas para generar mapas de gradiente:
Por ejemplo, si solo desea generar un mapa de gradiente en la dirección horizontal, entonces solo el mapa de gradiente en la dirección horizontal se calcula, el valor de escala de grises del punto correspondiente en el mapa de degradado es
Generalmente, se usa una plantilla en la dirección horizontal y una plantilla en la dirección vertical, y luego se fusiona, entonces el valor en escala de grises del mapa de gradiente en ese punto es
Es la magnitud del gradiente que mencionamos anteriormente, calculada con 2 como norma, que corresponde a la distancia euclidiana. Debido a que implica operaciones de suma cuadrada y raíz cuadrada, la cantidad de cálculo es relativamente grande. ¿Cómo puedo simplificar el cálculo? ¡Cambie a un método de cálculo aproximado! ! ! )
Al calcular la salida real del mapa de pendientes, se utiliza un método de cálculo simple, con una cuota de 1 (correspondiente a la distancia urbana), es decir,
Otro método simple es Tómelo como la especificación (correspondiente a la distancia del tablero de ajedrez), es decir,
Primero comprenda el diseño del operador de gradiente, que generalmente es horizontal y vertical. La plantilla horizontal se transpone y luego se dobla por la mitad, que es la dirección vertical.
Su esencia es un operador de gradiente diagonal, y los gradientes horizontales y verticales correspondientes son
El valor de gris del mapa de gradiente de salida es
Ventajas: posicionamiento de bordes Preciso
Desventajas: (1) No describe los cambios en la escala de grises en las direcciones horizontal y vertical, y solo se centra en la dirección diagonal, lo que es fácil de provocar omisiones. (2) Pobre robustez. Dado que los propios puntos participan en el cálculo del gradiente, las interferencias de ruido no se pueden suprimir de forma eficaz.
Adecuado para imágenes con bordes evidentes y menos ruido.
El operador Prewitt es una plantilla típica. El centro de la plantilla corresponde a las coordenadas de la imagen original que requieren gradientes. Los valores de escala de grises de 8 píxeles vecinos correspondientes se muestran en la siguiente tabla:
A través del operador Prewitt Después de la convolución con la plantilla horizontal del operador, el gradiente horizontal correspondiente es
Después de la convolución con la plantilla vertical del operador Prewitt, el gradiente vertical correspondiente es
La escala de grises del mapa de gradiente de salida El valor es
El operador Prewitt introduce una operación similar al promedio local, que tiene un efecto de suavizado sobre el ruido y puede suprimir el ruido mejor que el operador de Roberts.
Después de la convolución a través de la plantilla horizontal del operador Prewitt, el gradiente horizontal correspondiente es
Después de la convolución a través de la plantilla vertical del operador Prewitt, el gradiente vertical correspondiente es
El valor gris del mapa de gradiente de salida es
El operador Sobel introduce una operación similar al promedio ponderado local y su relación de posicionamiento de bordes es mejor que la del operador Prewitt.
Python llama a la interfaz OpenCV para implementar la detección de bordes del operador Sobel.