Una generalización de los operadores de gradiente direccionales son las mascaras de Kirsch. Los operadores de Kirsch son cuatro, de 0 a 135 grados, con 45 grados entre ellos, cuyo objetivo es detectar la dirección en que se tenga máxima respuesta, dando esto la direccionalidad de la orilla. Dichos operadores se pueden definir a diferentes tamaños, como 2x2, 3x3, 5x5.
Mascara 3x3 para 0 grados. Mascara 3x3 para 45 grados.
Mascara 3x3 para 90 grados. Mascara 3x3 para 135 grados.
Dado que la respuesta tiene cierta dependencia en la magnitud de la función, y no solo su derivada, es común utilizar mascaras de mayor tamaño (5x5) para reducir este efecto.
Dada la respuesta a cada operador a diferente dirección, se toma la orilla de mayor magnitud como la dirección de la orilla en cada pixel.
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 5 matrices renglón-columna de la imagen original (r, c), para los grados 0, 45, 90, 135 y la imagen final, las cinco de tipo uint8.
4-Se crean 4 arreglos uno para el grado 0: [-1,-1,-1],[0,0,0],[1,1,1], para el grado 45: [-1,-1,0],[-1,0,1],[0,1,1], para el grado 90 [-1,0,1],[-1,0,1],[-1,0,1] y para el grado 135: [0,1,1],[-1,0,1],[-1,-1,0], de tipo float, que representaran la matriz de la mascara.
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 (grado 0) 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 grado 0.
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 (grado 0) 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 grado 0.
6-Para el grado 45 se hará el mismo procedimiento anterior (5), con la diferencia que ahora se tomara el arreglo de la mascara del grado 45.
7-Para el grado 90 se hará el mismo procedimiento anterior (5), con la diferencia que ahora se tomara el arreglo de la mascara del grado 90.
8-Para el grado 135 se hará el mismo procedimiento anterior (5), con la diferencia que ahora se tomara el arreglo de la mascara del grado 135.
9-Recorremos la imagen original en renglón-columna y unimos las matrices resultantes de los grados 0, 45, 90, 135.
10-Mostramos las imágenes resultantes de los grados 0, 45, 90, 135 y la imagen final.
11-Guardamos las imágenes.
7-Para el grado 90 se hará el mismo procedimiento anterior (5), con la diferencia que ahora se tomara el arreglo de la mascara del grado 90.
8-Para el grado 135 se hará el mismo procedimiento anterior (5), con la diferencia que ahora se tomara el arreglo de la mascara del grado 135.
9-Recorremos la imagen original en renglón-columna y unimos las matrices resultantes de los grados 0, 45, 90, 135.
10-Mostramos las imágenes resultantes de los grados 0, 45, 90, 135 y la imagen final.
11-Guardamos las imágenes.
Ejemplo.
No hay comentarios.:
Publicar un comentario