Saltar al contenido

¿Es laplaciano de gaussiano para la detección de manchas o para la detección de bordes?

Por fin después de tanto batallar pudimos encontrar el resultado de este conflicto que algunos de nuestros usuarios de esta web han tenido. Si quieres aportar algo más no dejes de aportar tu comentario.

Solución:

La respuesta de hkchengrex es bastante completa, pero no estoy completamente de acuerdo. Quizás soy un poco exigente con la nomenclatura correcta. Un detector es algo que produce una fuerte respuesta en la ubicación de la cosa que se va a detectar.

El Laplaciano de Gauss (LoG) no es un detector de bordes, ya que tiene pasos por cero en (cerca de*) bordes. Pero se puede utilizar para construir un detector de bordes. El detector de bordes así construido es el detector de bordes de Marr-Hildreth. Debido a esto, a menudo se clasifica como detectores de borde. A mi, es un detector de líneas.

Laplace es la suma de las segundas derivadas (la traza de la matriz de Hesse). Una imagen convolucionada con el LoG es lo mismo que la laplaciana de una imagen convolucionada con una gaussiana:

img * [ d^2/dx^2 G(x,y) + d^2/dy^2 G(x,y) ] = d^2/dx^2 [ img * G(x,y) ] + d^2/dy^2 [ img * G(x,y) ]

Por lo tanto, el LoG produce una respuesta fuerte en los extremos de la imagen (donde la segunda derivada es máxima). Esto sucede en los picos de las “manchas” ya lo largo de las crestas de las líneas.

Tomemos esta simple imagen de prueba:

imagen con bloques, líneas y puntos.

y aplicarle el LoG:

LoG de la imagen de arriba

Aquí, los grises medios son píxeles con un valor de 0. Como puede verse, tiene una respuesta fuerte (negativa) a lo largo de la línea delgada y en los puntos pequeños. También tiene respuestas medias alrededor de los bordes de los objetos más anchos (negativo en el interior del borde, positivo en el exterior); los pasos por cero están cerca de donde están los bordes.

Podemos establecer el umbral de esta imagen para detectar la línea delgada y los puntos:

Iniciar sesión < 65

(el umbral de la magnitud produce el mismo resultado). Podemos reducir el umbral para ver que las respuestas medias ocurren alrededor de los bordes de interés:

abs (LoG) < 20

Se necesita más que un simple umbral para obtener bordes. Por el contrario, la magnitud del gradiente (las primeras derivadas son fuertes en la ubicación de los bordes) se puede establecer un umbral para obtener los bordes:

gradmag < 50

La magnitud del degradado no es útil para detectar líneas, ya que detecta los dos bordes a lo largo de las líneas, en lugar de la línea en sí. La magnitud del gradiente anterior se calcula utilizando derivadas gaussianas (Sobel es otra opción, pero no tan precisa).

Tenga en cuenta que el detector de bordes Canny se basa en la magnitud del gradiente, agrega un umbral de histéresis y supresión no máxima para hacer que las detecciones sean delgadas y significativas.


* La segunda derivada tiene un cruce por cero en los puntos de inflexión (que se puede tomar como true ubicación de los bordes). Sin embargo, el laplaciano es la suma de segundas derivadas. Si piensa en la segunda derivada en la dirección del gradiente, su cruce por cero estará bien localizado. Pero ahora agregue la segunda derivada en la dirección perpendicular (a lo largo del borde). Esta segunda derivada será cero a lo largo de un borde recto, negativa a lo largo de un borde curvo convexo (por ejemplo, el borde de un círculo) y positiva a lo largo de un borde curvo cóncavo. Por lo tanto, la suma de estos dos valores hará que los cruces por cero se desplacen en los bordes curvos, cuanto más fuerte sea la curvatura, más se desviará el cruce por cero de su true localización.

EDITAR: Cris Luengo tiene razón. Ignore la parte sobre el detector de bordes.


Laplaciano de Gauss (LoG) se puede utilizar como ambos detector de bordes y detector de manchas. Me saltaré las matemáticas detalladas y la justificación, creo que puede leerlas en un libro o en algunos sitios web aquí, aquí y aquí.

Para ver por qué se puede usar como ambos, veamos su trama y kernel.

ingrese la descripción de la imagen aquíingrese la descripción de la imagen aquí

Si tiene una mancha con un radio de 3 y un valor de 1 centrado en el núcleo, y el fondo tiene un valor de 0, tendrá una respuesta muy fuerte (negativa). Está claro por qué puede detectar manchas si el radio está configurado correctamente.

¿Qué tal la detección de bordes? Bueno, no es como el operador de Sobel que le da un gradiente y una respuesta fuerte para los bordes. El operador de Sobel no le da bordes precisos ya que el degradado generalmente sube y baja en unos pocos píxeles. Su borde tendría entonces varios píxeles de ancho. Para que la localización sea más precisa, podemos encontrar el píxel con gradiente máximo (o mínimo) localmente. Esto implica que su segunda derivada (laplaciana) debe ser igual a cero, o tiene un cruce por cero en ese punto.

AntesDespués

Puede ver que la imagen procesada tiene una banda clara y oscura. El cruce por cero es el borde. Para ver esto con un kernel, intente deslizar un borde de paso perfecto a través del kernel manualmente para ver cómo cambia la respuesta.

Para su segunda pregunta, supongo que lo absoluto está tratando de encontrar tanto la mancha clara como la oscura (mancha clara, fondo oscuro; mancha oscura, fondo claro) ya que dan una fuerte respuesta negativa y una fuerte respuesta positiva respectivamente. Luego, encuentra el máximo en todas las imágenes en cada ubicación de píxel. Para cada píxel de salida, utiliza el píxel de la imagen con la respuesta máxima como salida. Creo que su razón fundamental es que los píxeles con un fuerte impulso (una pequeña mancha) están enfocados.

Está usando bitwise_not como mecanismo de copia. Establece algunos píxeles, especificados por la máscara, a bit a bit, no a la imagen de origen. Al final, tendrías output que consta de píxeles de diferentes fuentes, excepto que todos ellos se han sometido a bit a bit. Para recuperar el true imagen, simplemente ‘NO’ ellos de nuevo, como NOT(NOT(x)) = x. 255-x hace exactamente eso. Creo que un copyTo también funcionaría, no estoy seguro de por qué eligió lo contrario.

Imágenes tomadas de http://fourier.eng.hmc.edu/e161/lectures/gradient/node8.html.

Agradecemos que quieras añadir valor a nuestro contenido informacional asistiendo con tu veteranía en las aclaraciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *