2010-12-19 21 views
10

¿Alguien sabe cuáles son las diferencias entre los operadores de Prewitt, Sobel y Laplacian en los algoritmos de detección de bordes?Técnicas de detección de bordes

¿Hay algunas mejores que otras?

¿Se utilizan diferentes operadores en diferentes situaciones?

Respuesta

16

El operador de Laplace es un operador derivado de segundo orden, los otros dos son operadores derivados de primer orden, por lo que se usan en diferentes situaciones. Sobel/Prewitt mide la pendiente mientras que el laplaciano mide el cambio de la pendiente.

Ejemplos:

Si tiene una señal con una pendiente constante (un gradiente):

Gradient signal: 1 2 3 4 5 6 7 8 9 

una primera filtro derivado (Sobel/Prewitt) medirá la pendiente, por lo que la respuesta del filtro es

Sobel result:  2 2 2 2 2 2 2 

El resultado de un filtro lapace es 0 para esta señal, porque la pendiente es constante.

Ejemplo 2: Si tiene una señal de flanco de:

Edge:   0 0 0 0 1 1 1 1 

El resultado filtro Sobel tiene un pico; el signo del pico depende de la dirección del borde:

Sobel result: 0 0 0 1 1 0 0 0 

El filtro de Laplace produce dos picos; la ubicación del borde se corresponde con el punto de anulación del resultado del filtro de Laplace:

Laplace result: 0 0 0 1 -1 0 0 0 

Así que si quieres saber la dirección del borde y, tendrá que utilizar un filtro derivado primera orden. Además, un filtro de Laplace es más sensible al ruido que Sobel o Prewitt.

Los filtros Sobel y Prewitt por el contrario son bastante similares y se utilizan para los mismos fines. diferencias importantes entre primera orden filtros derivados son

  • Sensibilidad al ruido
  • Anisotropía: Idealmente, los resultados del filtro para X/Y deben ser proporcionales a pecado α y cos alfa, donde α es el ángulo del gradiente, y la suma de los dos cuadrados debe ser la misma para cada ángulo.
  • Comportamiento angular

Estas propiedades se puede medir con imágenes de prueba artificiales (como la famosa Jähne test patterns, que se encuentra en "Image Processing" by Bern Jähne). Desafortunadamente, no encontré nada sobre el operador Prewitt en ese libro, por lo que tendrías que hacer tus propios experimentos.

Al final, siempre hay un intercambio entre estas propiedades, y cuál de ellas es más importante depende de la aplicación.

+0

Gracias Nikie, esa es una respuesta brillante y exactamente lo que estaba buscando. Respuesta aceptada :). – ale

+0

Los patrones de prueba de Jähne de Intel obviamente han cambiado de ubicación (enlace inactivo en la respuesta anterior), los encontré aquí: https://software.intel.com/en-us/node/503777 – winne2

+1

@ winne2: Gracias, he actualizado el enlazar – Niki

Cuestiones relacionadas