Para mejorar la detección de orillas podría utilizarse un preprocesamiento pare eliminar altas frecuencias o ruido. El detector de orillas Sobel incluye detección de orillas y suavizamiento. Los operadores de Sobel parten de los operadores de Prewitt adicionando ciertos valores en la mascara que aproximan a un suavizamiento Gaussiano.
Los operadores de Sobel se pueden ver como la combinación unidimensional de diferenciación y cierto suavizamiento. Por ejemplo, uno de los operadores de Sobel lo podemos obtener como el producto de un vector de diferenciación (D) por uno de suavizamiento (G):
Sobel = DGT
Donde:
D = (−1, 0, 1) y G = (1, 2, 1).
Los operadores de Sobel se pueden implementar con las siguientes mascaras:
Para obtener este tipo de operador de una imagen es necesario realizar operaciones con ciertas mascaras.
Algoritmo.
1-Leer la imagen original, en tonos de grises.
2-Obtenemos el tamaño de la imagen original.
2-Obtenemos el tamaño de la imagen original.
3-Creamos 3 matrices renglón-columna de la imagen original (r, c), para guardar las coordenadas X, Y y la imagen resultante, las tres de tipo uint8.
4-Se crean dos arreglos una para el eje X: [-1,-2,-1],[0,0,0],[1,2,1] y otra para el eje Y: [-1,0,1],[-2,0,2],[-1,0,1] de tipo float, que representaran la matriz de la mascara, esto para el operador de Sobel.
5-Recorremos la imagen original en renglón-columna (r, c). Esto se hará de pixel a pixel, esto quiere decir, que en el recorrido se ira tomando una parte de la imagen original que sera como una subimagen o submascara de 3x3 y cada pixel de la subimagen y de la mascara (arreglo eje X) en la misma posición se multiplicaran y se irán sumando cada resultado y así sucesivamente. El resultado final se elevara al cuadrado y se le sacara su raíz. Esto se hará para el eje X.
5-Recorremos la imagen original en renglón-columna (r, c). Esto se hará de pixel a pixel, esto quiere decir, que en el recorrido se ira tomando una parte de la imagen original que sera como una subimagen o submascara de 3x3 y cada pixel de la subimagen y de la mascara (arreglo eje X) en la misma posición se multiplicaran y se irán sumando cada resultado y así sucesivamente. El resultado final se elevara al cuadrado y se le sacara su raíz. Esto se hará para el eje X.
6-Para el eje Y se hará el mismo procedimiento anterior (5), con la diferencia que ahora se tomara la mascara del arreglo del eje Y.
7-Recorremos la imagen original en renglón-columna, y uniremos las matrices resultantes que serán la del eje X y Y.
7-Recorremos la imagen original en renglón-columna, y uniremos las matrices resultantes que serán la del eje X y Y.
8-Mostramos las imágenes resultantes del operador de Sobel.
9-Guardamos las imágenes.
EjemploReferencia
http://ccc.inaoep.mx/~esucar/Libros/vision-sucar-gomez.pdf
http://www.songho.ca/dsp/convolution/convolution2d_example.html



No hay comentarios.:
Publicar un comentario