2.2 Methods
2.2.2 Genotyping
Esta función es un filtro de detección de bordes por medio del cálculo de gradiente.
Este método obtiene los bordes en las direcciones (x, y) de una imagen, la magnitud del gradiente y la dirección del vector gradiente.
La ecuación 3.4.2 expresa la forma de obtener el vector gradiente.
Ecuación 3.4.2 Donde i, j, son los vectores unitarios en las direcciones X e Y.
De la ecuación anterior se obtienen los operadores de Sobel (Gx, Gy)12, para detectar los bordes en la dirección horizontal X y vertical Y, los cuales se muestran en la figura 3.4.12.
12
Operador de Sobel. Feature extraction and imagen processing. Mark Nixon & Alberto Aguado. Pag. 124
Figura 3.4.11a. Función Alisamiento
Prototipo virtual para una decoradora de pasteles usando control numérico por computadora
32 Figura 3.4.12. Máscaras de convolución de Sobel para la detección de bordes en la dirección
horizontal (Gx) y vertical (Gy).
En la figura 3.4.12, se muestran dos máscaras de convolución, la máscara del inciso a) pertenece al operador Gx de Sobel que sirve para encontrar los bordes en la dirección horizontal de la imagen, en el inciso b) se expresa el operador Gy, que consiste en una máscara de convolución, que detecta los borde en la dirección vertical de la imagen.
Los operadores Gx y Gy sirven para encontrar la magnitud del gradiente G, el cual determina los bordes de Sobel para este caso. La ecuación 3.4.3 indica como calcular la magnitud del gradiente G.
Ecuación 3.4.3
Con estos operadores también se obtiene el ángulo de dirección del gradiente G, tal y como lo muestra la ecuación 3.4.4.
Ecuación 3.4.4
Pseudocódigo.
Para cada pixel de Imagen f(x,y). {
Gx = f(x-1, y-1)*1 + f(x-1, y)*2 + f(x-1, y+1)*1
–f(x+1, y-1)*1 - f(x+1, y)*2 - f(x+1, y+1)*1 //horizontal Gy = f(x-1, y-1)*1 + f(x, y-1)*2 + f(x+1, y-1)*1
–f(x-1, y+1)*1 - f(x, y+1)*2 - f(x+1, y+1)*1 //vertical
G = (Gx2 + Gy2 )1/2 //Magnitud del vector Gradiente.
θG = ArcTan(Gy/Gx) //Direccion del vector Gradiente.
}
Prototipo virtual para una decoradora de pasteles usando control numérico por computadora
33
El primer resultado de esta función son los bordes de la imagen original en la dirección del gradiente Gx y Gy.
La figura 3.4.13a y 3.4.13b muestran el resultado de aplicar la máscara de convolución de gradiente en Gx, Gy, además de aplicar la función Invertir al resultado de cada gradiente para cambiar el color de fondo.
Después de haber obtenido el valor de los gradientes Gx y Gy, se procede a calcular la magnitud del gradiente G, para esto se aplica la ecuación 3.4.3.
Figura 3.4.14. Resultado del filtro de Sobel.
La figura 3.4.14 muestra el resultado obtenido de la magnitud del gradiente G con la ecuación 3.4.3, que consiste finalmente en la detección de bordes de Sobel. Adicionalmente al resultado de la detección de Sobel, se le aplicó la función invertir colores y la función
binarizar imagen, para obtener un fondo blanco con líneas de un solo tono de color.
Figura 3.4.13a. Bordes del gradiente
Prototipo virtual para una decoradora de pasteles usando control numérico por computadora
34 3.4.7 Función bordes de Prewitt.
Es un filtro de detección de bordes por medio del cálculo de gradiente al igual que Sobel, la diferencia radica en su máscara de convolución, en la cual los operadores Gx y Gy de Prewitt13 presentan las máscaras de convolución que muestra la figura 3.4.15.
Figura 3.4.15. Máscaras de convolución de Prewitt para la detección de bordes en la dirección horizontal Gx y vertical Gy.
En la figura 3.4.15, se muestran dos máscaras de convolución, la máscara del inciso a) pertenece al operador Gx de prewitt, que sirve para encontrar los bordes de la imagen en la dirección horizontal, en el inciso b) se expresa el operador Gy, que consiste en una máscara de convolución que detecta los borde en la dirección vertical.
Después, los resultados de las aproximaciones de los gradientes horizontales y verticales (Gx, GY), son usados para obtener la magnitud del gradiente de la ecuación 3.4.3 y el ángulo de dirección del gradiente mediante la ecuación 3.4.4, vistas en la función de Sobel.
Pseudocódigo.
Algoritmo
Para cada pixel de Imagen f(x,y). {
Gx = f(x-1, y-1)*1 + f(x-1, y)*1 + f(x-1, y+1)*1
–f(x+1, y-1)*1 - f(x+1, y)*1 - f(x+1, y+1)*1 //horizontal
Gy = f(x-1, y-1)*1 + f(x, y-1)*1 + f(x+1, y-1)*1
–f(x-1, y+1)*1 - f(x, y+1)*1 - f(x+1, y+1)*1 //vertical
G = (Gx2 + Gy2 )1/2 //Magnitud del vector Gradiente.
θG = ArcTan(Gy/Gx) //Direccion del vector Gradiente.
}
f(x,y) = G(x,y)
13
Prototipo virtual para una decoradora de pasteles usando control numérico por computadora
35
La figura 3.4.16a y 3.4.16b muestran el resultado de aplicar el gradiente en X, Y de Prewitt, además de aplicar la función Invertir al resultado de cada gradiente para cambiar el color de fondo. En estos resultados se puede observar que hay similitud con los obtenidos con los gradientes propuestos por Sobel, pero en el método de Prewitt la cantidad de pixeles pertenecientes a bordes son menores que los que se obtienen con Sobel.
Después de haber obtenido el valor de estos pixeles se procede a calcular la magnitud de la imagen, para esto se aplica la ecuación 3.4.3.
Figura 3.4.17. Resultado del filtro de Prewitt.
La figura 3.4.17 muestra el resultado que se obtiene de calcular la magnitud del gradiente G utilizando la ecuación 3.4.3 con los parámetros Gx y Gy obtenidos con los operadores de Prewitt, adicionalmente al resultado de la detección de Prewitt, se le aplicó la función invertir
colores y la función binarizar imagen, para obtener un fondo blanco con líneas de color negro.
Los resultados obtenidos en los filtros de Sobel y Prewitt tienen tanta similitud que hace difícil ver la diferencia, pero usando un contador de pixeles negros en las imágenes resultantes se determina la diferencia, en la imagen resultante de Sobel se obtuvieron 17017 pixeles negros y en la imagen resultante de Prewitt se obtuvieron 14751 pixeles negros.
Figura 3.4.16a. Bordes del gradiente
Prototipo virtual para una decoradora de pasteles usando control numérico por computadora
36 3.4.8 Función bordes de Roberts.
El operador gradiente de Roberts14 es el método no lineal más simple utilizado para la detección de bordes. Presenta la desventaja que, dependiendo de la dirección, ciertos bordes son más realzados que otros, inclusive teniendo igual magnitud. Al igual que Sobel y Prewitt, este detector ocupa 2 máscaras de convolución para encontrar los bordes del gradiente G en la dirección horizontal (Gx) y vertical (Gy).
Figura 3.4.18. Máscaras de convolución de Roberts para la detección de bordes en la dirección horizontal (Gx) y vertical (Gy).
La figura 3.4.18, muestras dos máscaras de convolución, con la máscara del inciso a) se obtiene el operador Gx y con la máscara del inciso b) el operador Gy, sabiendo que estos elementos sirven para encontrar la magnitud del gradiente G usando la ecuación 3.4.3 y el ángulo de dirección del gradiente G con la ecuación 3.4.4.
El siguiente procedimiento muestra como calcular los bordes de la imagen usando los operadores de Roberts.
Pseudocódigo.
Para cada pixel de Imagen f(x,y). {
Gx = f(x , y)*1 + f(x+1, y+1)*-1; //horizontal Gy = f(x+1, y)*1 + f(x, y-1)*-1; //vertical
G = (Gx2 + Gy2 )1/2 //Magnitud del vector Gradiente.
θG = ArcTan(Gy/Gx) //Dirección del vector Gradiente.
}
f(x,y) = G(x,y)
Calculando los operadores Gx y Gy que propone Roberts se obtienen los resultados que muestra la figura 3.4.19a y 3.4.19b.
14
Prototipo virtual para una decoradora de pasteles usando control numérico por computadora
37
La figura 3.4.19a y 3.4.19b, son las componentes del vector gradiente de Roberts, que son utilizadas para calcular la magnitud de este vector.
Figura 3.4.20. Resultado del filtro de Roberts
La imagen de la figura 3.4.20 se obtuvo realizando la operación de la ecuación 3.4.3 con los operadores de Roberts obtenidos.