El operador de Sobel , a veces llamado operador de Sobel-Feldman o filtro de Sobel , se utiliza en el procesamiento de imágenes y la visión por computadora , particularmente dentro de los algoritmos de detección de bordes, donde crea una imagen que enfatiza los bordes. Lleva el nombre de Irwin Sobel y Gary Feldman, colegas del Laboratorio de Inteligencia Artificial de Stanford (SAIL). Sobel y Feldman presentaron la idea de un " Operador de gradiente de imagen isotrópico 3x3" en una charla en SAIL en 1968. [1] Técnicamente, es un operador de diferenciación discreta , que calcula una aproximación del gradiente.de la función de intensidad de la imagen. En cada punto de la imagen, el resultado del operador de Sobel-Feldman es el vector de gradiente correspondiente o la norma de este vector. El operador Sobel-Feldman se basa en convolucionar la imagen con un filtro pequeño, separable y de valor entero en las direcciones horizontal y vertical y, por lo tanto, es relativamente económico en términos de cálculos. Por otro lado, la aproximación de gradiente que produce es relativamente burda, en particular para variaciones de alta frecuencia en la imagen.
Formulación
El operador usa dos núcleos de 3 × 3 que están convolucionados con la imagen original para calcular aproximaciones de las derivadas : una para cambios horizontales y otra para verticales. Si definimos A como la imagen de origen, y G x y G y son dos imágenes que en cada punto contienen las aproximaciones derivadas horizontal y vertical respectivamente, los cálculos son los siguientes: [2]
dónde aquí denota la operación de convolución de procesamiento de señal bidimensional .
Dado que los núcleos de Sobel se pueden descomponer como los productos de un núcleo de diferenciación y promediado, calculan el gradiente con suavizado. Por ejemplo, Se puede escribir como
La coordenada x se define aquí como creciente en la dirección "derecha", y la coordenada y se define como creciente en la dirección "abajo". En cada punto de la imagen, las aproximaciones de gradiente resultantes se pueden combinar para dar la magnitud del gradiente, usando:
Con esta información, también podemos calcular la dirección del gradiente:
donde, por ejemplo, Θ es 0 para un borde vertical que es más claro en el lado derecho.
Más formalmente
Dado que la función de intensidad de una imagen digital solo se conoce en puntos discretos, las derivadas de esta función no se pueden definir a menos que supongamos que hay una función de intensidad diferenciable subyacente que se ha muestreado en los puntos de la imagen. Con algunas suposiciones adicionales, la derivada de la función de intensidad continua se puede calcular como una función de la función de intensidad muestreada, es decir, la imagen digital. Resulta que las derivadas en cualquier punto particular son funciones de los valores de intensidad en prácticamente todos los puntos de la imagen. Sin embargo, las aproximaciones de estas funciones derivadas se pueden definir con grados de precisión mayores o menores.
El operador Sobel-Feldman representa una aproximación bastante inexacta del gradiente de la imagen, pero aún tiene la calidad suficiente para ser de uso práctico en muchas aplicaciones. Más precisamente, usa valores de intensidad solo en una región de 3 × 3 alrededor de cada punto de la imagen para aproximar el gradiente de imagen correspondiente, y usa solo valores enteros para los coeficientes que ponderan las intensidades de imagen para producir la aproximación del gradiente.
Ampliación a otras dimensiones
El operador Sobel-Feldman consta de dos operaciones separables: [3]
- Suavizado perpendicular a la dirección de la derivada con un filtro triangular:
- Diferencia central simple en la dirección derivada:
Filtros Sobel-Feldman para derivados de imágenes en diferentes dimensiones con :
1D:
2D:
3D:
4D:
Así, como ejemplo, el kernel 3D Sobel-Feldman en la dirección z :
Detalles técnicos
Como consecuencia de su definición, el operador de Sobel se puede implementar por medios simples tanto en hardware como en software: solo se necesitan ocho puntos de imagen alrededor de un punto para calcular el resultado correspondiente y solo se necesita aritmética de enteros para calcular la aproximación del vector de gradiente. Además, los dos filtros discretos descritos anteriormente son separables:
y las dos derivadas G x y G y , por lo tanto, se pueden calcular como
En ciertas implementaciones, este cálculo separable puede ser ventajoso ya que implica menos cálculos aritméticos para cada punto de la imagen.
La aplicación de la convolución K al grupo de píxeles P se puede representar en pseudocódigo como:
- N (x, y) = Suma de {K (i, j) .P (xi, yj)}, para i, j que va de -1 a 1.
N (x, y) representa la nueva matriz resultante de aplicar la Convolución K a P , donde P es la matriz de píxeles.
Ejemplo
El resultado del operador de Sobel-Feldman es un mapa bidimensional del gradiente en cada punto. Puede procesarse y verse como si fuera una imagen en sí misma, con las áreas de alto gradiente (los bordes probables) visibles como líneas blancas. Las siguientes imágenes ilustran esto, mostrando el cálculo del operador Sobel-Feldman en una imagen simple.
Las siguientes imágenes ilustran el cambio en la dirección del degradado en un círculo en escala de grises. Cuando el signo de y son iguales, el ángulo del gradiente es positivo y negativo cuando es diferente. En el siguiente ejemplo, los colores rojo y amarillo en el borde del círculo indican ángulos positivos, y los colores azul y cian indican ángulos negativos. Los bordes verticales en los lados izquierdo y derecho del círculo tienen un ángulo de 0 porque no hay cambio local en. Los bordes horizontales en los lados superior e inferior del círculo tienen ángulos de -π/2 y π/2 respectivamente porque no hay cambio local en . El ángulo negativo para el borde superior significa que la transición es de una región brillante a una oscura, y el ángulo positivo para el borde inferior significa una transición de una región oscura a una brillante. Todos los demás píxeles están marcados como negros debido a que no hay cambios locales en ninguno o y, por tanto, el ángulo no está definido. Dado que el ángulo es una función de la razón de a los píxeles con pequeñas tasas de cambio aún pueden tener una gran respuesta de ángulo. Como resultado, el ruido puede tener una respuesta de ángulo grande que normalmente no es deseada. Cuando se utiliza información de ángulo de gradiente para aplicaciones de procesamiento de imágenes, se debe hacer un esfuerzo para eliminar el ruido de la imagen para reducir esta respuesta falsa.
Operadores alternativos
El operador Sobel-Feldman, aunque reduce los artefactos asociados con un operador de diferencias centrales puras, no tiene una simetría rotacional perfecta. Scharr buscó optimizar esta propiedad. [4] [5] Se han presentado núcleos de filtro de hasta tamaño 5 x 5, pero el que se usa con más frecuencia es:
Esto factores de manera similar:
Los operadores de Scharr resultan de una optimización que minimiza el error angular cuadrático medio ponderado en el dominio de Fourier. Esta optimización se realiza con la condición de que los filtros resultantes sean numéricamente consistentes. Por lo tanto, realmente son núcleos derivados en lugar de simplemente mantener restricciones de simetría. El filtro 3x3 con valor entero de 8 bits óptimo derivado de la teoría de Scharr es
Farid y Simoncelli también presentaron una estrategia de optimización similar y los filtros resultantes. [6] [7] También investigan esquemas derivados de orden superior. En contraste con el trabajo de Scharr, estos filtros no están obligados a ser numéricamente consistentes.
El problema del diseño de filtro derivado ha sido revisado, por ejemplo, por Kroon. [8]
Hast presentó filtros derivados basados en splines cúbicos arbitrarios. [9] Mostró cómo las derivadas de primer y segundo orden se pueden calcular correctamente utilizando splines cúbicos o trigonométricos mediante un enfoque de filtrado doble que proporciona filtros de longitud 7.
Otro operador similar que se generó originalmente a partir del operador Sobel, es el operador Kayyali, [10] un filtro de convolución basado en simetría rotacional perfecta 3x3.
Los núcleos derivados de orientación óptima reducen drásticamente los errores de estimación sistemática en la estimación del flujo óptico . En trabajos posteriores de Scharr se han presentado esquemas más grandes con una precisión aún mayor y familias de filtros optimizadas para una estimación de flujo óptico extendida. [11] Se han investigado conjuntos de filtros derivados de segundo orden para la estimación de movimiento transparente . [12] Se ha observado que cuanto más grandes son los núcleos resultantes, mejor se aproximan a la Derivada de los filtros gaussianos.
Comparaciones de ejemplo
Aquí, se utilizan cuatro operadores de gradiente diferentes para estimar la magnitud del gradiente de la imagen de prueba.
Implementación de Matlab
función sobel ( A: como matriz de imágenes bidimensionales ) Gx = [ - 1 0 1 ; - 2 0 2 ; - 1 0 1 ] Gy = [ - 1 - 2 - 1 ; 0 0 0 ; 1 2 1] filas = tamaño ( A , 1 ) columnas = tamaño ( A , 2 ) mag = ceros ( A ) para i = 1 : filas - 2 para j = 1 : columnas - 2 S1 = suma ( suma ( Gx . * A ( i : i + 2 , j : j + 2 ))) S2 = suma ( suma ( Gy . * A ( i : i + 2 , j : j + 2 ))) mag ( i + 1 , j + 1 ) = raíz cuadrada ( S1 . ^ 2 + S2 . ^ 2 ) final para final para umbral = 70 % varía según la aplicación [0 255] output_image = max ( mag , umbral ) output_image ( output_image == round ( umbral )) = 0 ; return output_image función final
Ver también
Referencias
- ^ Irwin Sobel, 2014, Historia y definición del operador Sobel
- ^ Detectores de funciones - Detector de bordes Sobel
- ^ K. Engel (2006). Gráficos de volumen en tiempo real . págs. 112-114.
- ^ Scharr, Hanno, 2000, Disertación (en alemán), Operadores óptimos en el procesamiento de imágenes digitales .
- ^ B. Jähne, H. Scharr y S. Körkel. Principios del diseño de filtros. En Manual de Visión por Computador y Aplicaciones. Prensa académica, 1999.
- ^ H. Farid y EP Simoncelli, Núcleos derivados direccionales equivariantes de rotación óptima , Análisis informático de imágenes y patrones de Conf Int'l, págs. 207-214, septiembre de 1997.
- ^ H. Farid y EP Simoncelli, Diferenciación de señales multidimensionales discretas , IEEE Trans Image Processing, vol.13 (4), págs. 496–508, abril de 2004.
- ^ D. Kroon, 2009, Short Paper University Twente, Optimización numérica de derivados de imagen basados en kernel .
- ^ A. Hast., "Diseño de filtro simple para derivadas de primer y segundo orden mediante un enfoque de filtrado doble" , Pattern Recognition Letters, vol. 42, nº 1 de junio, págs. 65–71. 2014.
- ^ Dim, Jules R .; Takamura, Tamio (11 de diciembre de 2013). "Enfoque alternativo para la clasificación de nubes de satélite: aplicación de gradiente de borde" . Avances en meteorología . 2013 : 1–8. doi : 10.1155 / 2013/584816 . ISSN 1687-9309 .
- ^ Scharr, Hanno (2007). "Filtros óptimos para flujo óptico extendido". Movimiento complejo . Apuntes de conferencias en informática. 3417 . Berlín, Heidelberg: Springer Berlin Heidelberg. págs. 14-29. doi : 10.1007 / 978-3-540-69866-1_2 . ISBN 978-3-540-69864-7.
- ^ Scharr, Hanno, FAMILIAS DE FILTROS DERIVADOS DE SEGUNDO ORDEN ÓPTIMO PARA ESTIMACIÓN DE MOVIMIENTO TRANSPARENTE 15ª Conferencia europea de procesamiento de señales (EUSIPCO 2007), Poznan, Polonia, 3 al 7 de septiembre de 2007.
enlaces externos
- Detección de bordes Sobel en Opencv
- Filtro Sobel , en la biblioteca SciPy Python
- Citas bibliográficas de Irwin Sobel en DBLP
- Ejemplo de detección de bordes de Sobel utilizando algoritmos informáticos