Sie sind auf Seite 1von 5

1

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

En términos simples, el operador calcula el declive de la


intensidad de la imagen a cada punto, dando la dirección del
aumento más grande posible de la luz a la oscuridad y el
precio de cambio en esa dirección. El resultado por lo tanto
muestra cómo "repentinamente" o "suavemente" la imagen
cambia a ese punto, y por lo tanto cómo probablemente es que
esa parte de la imagen representa un borde, así como cómo ese
borde probablemente se orientará. Ver Figura 7.

Figura 5 de intensidad con detección de bordes

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

III. INVESTIGACIÓN COMPLEMENTARIA


A. Investigue la función que se utiliza en matlab para
reconocer los bordes de una imagen y explique cómo se usa y
que opciones tiene en cuanto a detección de bordes. (De
ejemplos)
La detección de bordes es una herramienta fundamental en
el procesamiento de imágenes y en visión por computadora,
particularmente en las áreas de detección y extracción de
características, que tiene como objetivo la identificación de
puntos en una imagen digital en la que el brillo de la
imagen cambia drásticamente o, más formalmente, tiene
Figura 8. Aplicación de función de Laplace discontinuidades.
Efectivamente como dice la definición de este filtro, se Para poder detectar los bordes de una imagen en MatLab
obtienen bordes fino en los cuales apenas se puede detectar la existen ciertas funciones, entre ellas están: Gradiente y Edge.
imagen respecto al fondo
Para la función Edge se tiene el siguiente código de ejemplo
E. Función Rango
Función Edge
La función rango es un tipo de filtro estadístico en dos
dimensiones [3]. Cuando en la imagen tiene varios bordes a ima =
detectar, este tipo de filtro aumenta el tamaño de los pixeles de imread('moneda.jpg');
los bordes. G = rgb2gray(ima);
Para ello antes de proceder se debe realizar siempre un archivo
“.m” del código de la función para poder utilizarla E = edge(G,'sobel');
imshow(E);
Función Rango figure(1),subplot(1,2,1), imshow(G),title('Imagen
function b=rango(a,nw,mw) original'), subplot(1,2,2),imshow(E),title('Imagen con
% rutina para el detector de bordes de rango bordes detectados');
% b=rango(a,mw,nw)
% a: imagen de entrada. Figura 11. Codigo de función Edge
% mw: ancho de la ventana
% nw: alto de la ventana
% b: imagen de salida.
%
a=double(a);
b=ordfilt2(a,nw*mw,ones(nw,mw));
c=ordfilt2(a,1,ones(nw,mw));
b=round(b-c);
b=uint8(b);
Figura 9. Codigo de función rango.
Figura 12 Imagen original vs Imagen con bordes detectados.
Teniendo el código se puede implementar a una imagen
La función EDGE, es una función especial para detectar
bordes en una imagen y utiliza operadores matriciales
especiales para transformar una imagen en escala de gises a
una imagen binarizada con bordes resaltados.

Tambien se tiene la función gradiente

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.

B. Investigue como se detectan bordes utilizando


procesamiento de imágenes con lógica borrosa (fuzzy logic).
Aplique esta técnica a una imagen
REFERENCES
La lógica difusa (fuzzy logic) se utiliza cuando la complejidad
del proceso en cuestión es muy alta y no existen modelos [1] http://www19.helpes.eu/01106518/OperadorDePrewitt
matemáticos precisos, para procesos altamente no lineales y
cuando se envuelven definiciones y conocimiento no [2] https://docs.gimp.org/2.10/es/filters-edge.html
estrictamente definido (impreciso o subjetivo).
En cambio, no es una buena idea usarla cuando algún modelo
matemático ya soluciona eficientemente el problema.[4]. [3]https://www.mathworks.com/help/images/ref/ordfilt2.html?
s_tid=srchtitle
Función Edge en

Figura 15 Codigo de fuzzy logic

Figura 16. Utilizando fuzzy logic

Das könnte Ihnen auch gefallen