- Operador Sobel
-
El operador Sobel es utilizado en procesamiento de imágenes, especialmente en algoritmos de detección de bordes. Técnicamente es un operador diferencial discreto que calcula una aproximación al gradiente de la función de intensidad de una imagen. Para cada punto de la imagen a procesar, el resultado del operador Sobel es tanto el vector gradiente correspondiente como la norma de éste vector.
Contenido
Descripción simple
El Operador Sobel aplicado sobre una imagen digital en escala de grises, calcula el gradiente de la intensidad de brillo de cada punto (píxel) dándo la dirección del mayor incremento posible (de negro a blanco) además calcula el monto de cambio en esa dirección, es decir, devuelve un vector. El resultado muestra qué tan abruptamente o suavemente cambia una imagen en cada punto analizado, y a su vez que tanto un punto determinado representa un borde en la imagen y también la orientación a la que tiende ese borde. En la práctica, el cálculo de la magnitud -que da nociones de un borde- es más sencilla que la interpretación de la dirección.
Matemáticamente, el gradiente de una función de dos variables (para este caso la función de intensidad de la imagen) para cada punto es un vector bidimensional cuyos componentes están dados por las primeras derivadas de las direcciones verticales y horizontales. Para cada punto de la imagen, el gradiente del vector apunta en dirección del incremento máximo posible de intensidad, y la magnitud del gradiente del vector corresponde a la cantidad de cambio de intensidad en esa dirección. Lo anterior implica que el resultado de aplicar el operador sobel sobre la región de una imagen con intensidad de brillo constante es un vector cero, y el resultado de aplicarlo en un punto sobre un borde es un vector que apunta cruzando el borde (perpendicular) en sentido de los puntos más oscuros hacia los más claros.
Formulación
Matemáticamente, el operador utiliza dos kernels de 3×3 elementos para aplicar convolución a la imagen original para calcular aproximaciones a las derivadas, un kernel para los cambios horizontales y otro para las verticales. Si definimos como la imagen original y y son los dos kernels que representan para cada punto las aproximaciones horizontal y vertical de las derivadas de intensidad, el resultado es calculado como:
En cada punto de la imagen, los resultados de las aproximaciones de los gradientes horizontal y vertical pueden ser combinados para obtener la magnitud del gradiente, mediante:
Con esta información, podemos calcular también la dirección del gradiente:
donde, por ejemplo, Θ es 0 para bordes verticales con puntos más oscuros al lado izquierdo.
Formalmente
Debido a que la función de intensidad de una imagen digital sólo se conoce mediante puntos discretos, las derivadas de estas funciones no pueden ser definidas a menos que asumamos que existe una función continua que ha sido muestreada en los puntos de la imagen. Con algunas suposiciones adicionales, la derivada de la función continua de intensidad puede ser calculada como una función de la función de intensidad muestreada, i.e, de la imagen digital. De lo anterior resulta que las derivadas en cualquier punto particular son funciones de los valores de intensidad, virtualmente, en todos los puntos de la imagen. Sin embargo, aproximaciones a estas funciones diferenciales pueden ser definidas con el nivel de precisión requerido teniendo en cuenta únicamente una pequeña región de puntos alrededor del estudiado.
El operador sobel representa una primera aproximación imprecisa del gradiente de la imagen, pero es de calidad suficiente para ser de uso práctico en muchas aplicaciones. Más precisamente, éste operador utiliza sólo valores de intensidad en una región de 3x3 alrededor de cada punto analizado para calcular el gradiente correspondiente, además de que utiliza sólo números enteros para los coeficientes que indican la aproximación del gradiente.
Detalles técnicos
Como una consecencia de su definición, el operador sobel puede ser implementado mediante simples definiciones tanto en hardware como en software: sólo son utilizados ocho puntos de la imagen alrededor del punto a analizar para calcular el punto correspondiente de la imagen resultante, además sólo se requiere aritmética con números enteros para calcular una aproximación del vector gradiente. Además, los dos filtros discretos descritos arriba pueden ser separados:
y las dos derivadas y pueden ser calculadas con:
En ciertas implementaciones, estos cálculos separados dan buena ventaja ya que implican menor operaciones aritméticas para cada punto.
Ejemplo
Ya que el resultado del operador sobel es un mapeo de dos dimensiones del gradiente de cada punto, éste puede ser procesado y ser visto como una imagen, con las áreas de gradiente elevado (equivalentes a bordes) en negro y con los demás como blanco (el fondo de la imagen generada). Las siguientes imágenes ilustran lo anterior, se muestra el cálculo del operador sobel sobre una imagen. Observese las diferencias de gradiente (zonas negras) dadas al aplicar únicamente un gradiente.
Véase también
Enlaces externos
Wikimedia foundation. 2010.