Beruflich Dokumente
Kultur Dokumente
Detección de Bordes
Ana Salinas1 Stephanie Ayala2
% a: imagen de entrada.
Resumen— En este artículo se presenta los resultados % b: imagen de salida.
obtenidos al aplicar detección de bordes en una imagen. w1=[-1,0,1;
Se utilizan varias funciones para observar cual es la -2,0,2;
función o ventajas de aplicarlos en una imagen. Se hizo uso
de comandos en MATLAB para mostrar el resultado de éstos. -1,0,1];
w2=[1, 2, 1;
0, 0, 0;
Index Terms—. Operadores, Sobel, Prewitt, Laplace, matriz, -1,-2,-1];
gradiente. función, bordes, prewitt, brújula, laplace, rango. c=abs(conv2(a,w1,'valid'));
cc=abs(conv2(a,w2,'valid'));
c=c+cc;
I. INTRODUCTION t1=c<=255;
t2=c>255;
L a importancia de la detección de bordes en una imagen es
observar aquellos pixeles donde se produce un cambio
c=c.*t1+255*t2;
b=uint8(c);
brusco en la función de intensidad. puede ser de mucha Figura 1. Codigo para detección de bordes
utilidad al momento de resaltar o delinear factores muy
importantes en el diagnóstico de patologías médicas. Así Posteriormente se procede utilizar una imagen llamada
comola transición entre dos regiones de la imagen, las cuales “saturn.tif”, para comprobar como el código anterior es eficaz
tienen diferentes niveles de intensidades. en su uso:
Hay diferentes operadores que se basan en gradientes para el
cálculo de los bordes en una imagen en escala de grises:
Sobel, Prewitt, entre otros, los cuales se desarrollara en este
artículo.
Existen diferentes tipos de filtros, aquí estudiaremos cinco
de ellos para variar el resultado. Explicando cada uno de
ellos.
II. PROCEDIMIENTO
A. Función Sobel
El uso de esta función simula la aplicación de un filtro de
sobel sobre una imagen. El filtro de sobel, básicamente, se Figura 2. Imagen original
refiere al tipo de filtro que resaltar aquellas características de
la imagen que por causa del mecanismo de captación o por
error hayan quedados emborronados en la imagen. Este tipo de
filtros es muy usado como método directo de mejorar una
imagen cara a su presentación a un observador humano .
En un archivo “.m” se escribe el código siguiente para poder
aplicar la detección de bordes:
Función Sobel
function b=sobel(a)
% rutina para el detector de bordes de Sobel
%
Figura 3. Imagen con detección de bordes
% b=sobel(a)
Como se puede observar los bordes por la función fueron
detectados. Básicamente el funcionamiento de esta función se
Ana Salinas1 (anasalinas.mol@gmail.com) Stephanie Ayala2 maneja de manera que la generación de dos matrices funcional
(tephy_ayala93@hotmail.com). Pertenecen a la cátedra de Imágenes Médicas como kernel al obtener el valor absoluto de la convolución de
dirigida por Ingeniero José Roberto Yúdice, en la Universidad Don Bosco de estas.
El Salvador, Centro América
2
Se comprueba nuevamente con otra imagen como esta función Función Prewitt
detecta los bordes de la imagen esta vez como una imagen de
intensidad . Figura 4 y figura 5 function b=prewitt(a)
% rutina para el detector de bordes de prewitt
%
% b=prewitt(a)
% a: imagen de entrada.
% b: imagen de salida.
W1=[-1,0,1;
-1,0,1;
-1,0,1];
w2=[1, 1, 1;
0, 0, 0;
-1,-1,-1];
c=abs(conv2(a,w1,’valid’));
cc=abs(conv2(a,w2,’valid’));
c=c+cc;
t1=c<=255;
t2=c>255;
Figura 4.Imagen de intensidad c=c.*t1+255*t2;
b=uint8©;
Figura 6. Código para la aplicación de la función prewitt
B. Función prewitt
Se usa en el proceso de imágenes, en particular dentro de
algoritmos de descubrimiento del borde. Técnicamente, es un
operador de diferenciación distinto, calculando una
aproximación del declive de la función de intensidad de la
imagen. A cada punto a la imagen, el resultado del operador
de Prewitt es el vector del declive correspondiente o la norma Figura 7. Imagen con detección de borde prewitt
de este vector. El operador Prewitt está basado en enroscar la
imagen con un pequeño, los separables, y número entero
valorado se filtran la dirección horizontal y vertical y es por lo C. Función brújula
tanto relativamente barato en términos de cálculos. la otra Esta función se caracteriza por el realce de los bordes
mano, la aproximación del declive que produce es basándose en un ángulo determinado.
relativamente ordinaria, en particular para variaciones de alta Al igual que las funciones anteriores se precisa de un código
frecuencia a la imagen. [1] de Matlab para poder utilizarse en el archivo en el cual se
necesita
Para poder apreciar el funcionamiento de esta función es
necesario crear un código Matlab adicional, que se muestra a
continuación:
3
Función Brujula
function b=brujula(a,th)
% rutina para detectar bordes
%
% b=brujula(a,th)
%
% a: imagen de entrada.
% th: dirección de la línea (0, 45, 90, 135 grados)
% b: imagen de salida.
%
a=double(a);
w0= [-1,0,1;
-1,0,1;
-1,0,1];
w45= [0, 1, 1;
-1, 0, 1;
-1,-1,0];
w90= [1, 1, 1; Figura 9. Aplicación de función brújula en diferentes ángulos
0, 0, 0;
-1,-1,-1];
w135=[1, 1, 0;
1, 0,-1; D. Función Laplace
0,-1,-1];
if th==0 Con la función Laplace los bordes usan una segunda derivada.
c=abs(conv2(a,w0,'valid')); La cima de la curva ahora es cero y claramente se puede
t1=c<=255; observar por tanto el filtro Laplace representa un borde fino,
t2=c>255; de sólo un píxel de ancho. A menudo es necesario desenfocar
c=c.*t1+255*t2; algo la imagen antes de aplicar el filtro de detectar bordes: se
b=uint8(c);
elseif th==45
aplanan las ondulaciones de la señal y así se evitan los bordes
c=abs(conv2(a,w45,'valid')); falsos. [2]
t1=c<=255;
t2=c>255; Se presenta el código de Matlab adicional para poder utilizar
c=c.*t1+255*t2; esta función
b=uint8(c);
elseif th==90 Función Laplace
c=abs(conv2(a,w90,'valid'));
t1=c<=255; function b=laplace2(a)
t2=c>255; % rutina para el detector de bordes
c=c.*t1+255*t2; Laplaciano para puntos aislados
b=uint8(c);
%
elseif th==135
c=abs(conv2(a,w135,'valid'));
% b=laplace(a)
t1=c<=255; %
t2=c>255; % a: imagen de entrada.
c=c.*t1+255*t2; % b: imagen de salida.
b=uint8(c); %
else a=double(a);
disp('el ángulo sólo puede ser 0, 45, 90 ó 135 l=[-1 -1 -1;-1 8 -1;-1 -1 -1];
grados') c=round(conv2(a,l,'valid'));
return
z=c>=0;
end
Figura 8. Codigo de la función brújula
c=c.*z;
t1=c<=255;
Una vez se tiene el código la función se puede utilizar de t2=c>255;
manera efciente como se muestra en la figura 9. Donde al b=c.*t1+255*t2;
cambiar los angulos de se generan mas bordes no tan a b=uint8(b);
Figura 10. Codigo para función Laplace
profundidad como en prewitt pero si lo suficiente.
Cuando ya se tiene el código de la función se puede utilizar
efectivamente en una imagen
4
Función Gradiente
ima= imread ('sonrisa.jpg');
gris=rgb2gray (ima);
[dx,dy] =
gradient(double(gris)); G
=
Figura 10. Aplicación de función rango.
5
uint8(sqrt(dx.^2+dy.^2));
imshow(G);
figure(1),subplot(1,2,1), imshow(gris),title('Imagen
original'), subplot(1,2,2),imshow(G),title('Imagen IV. CONCLUSIONES
con bordes detectados'); La detección de bordes de una imagen, permite la delimitación
Figura 13. Codigo de función gradient de objetos u organismos con el fin de poder calcular el número
o la profundidad de ellos.
Como ejemplo tenemos la siguiente Imagen [3]
Los filtros para la detección de bordes en las imágenes
proporcionan una herramienta muy útil y bastante y sencilla
para poder identificarlos, cada filtro posee un efecto diferente
al otro, además; es de considerar que los bordes pueden tener
diferentes intensidades de pixeles independientemente de la
calidad de imagen, por lo tanto la selección del filtro
dependerá de las características de la imagen o de los
beneficios que provea cada filtro, para obtener un buen
Figura 14. Imagen original vs Imagen con bordes detectados con función
resultado sin perder la información que sería la estructura
gradiente principal de la imagen.