Documentos de Académico
Documentos de Profesional
Documentos de Cultura
BORDES
Esta aproximación, se comporta también como una derivada, esto quiere decir,
que se hace cero en área de intensidad constante y sus valores son
proporcionados al grado de cambio de intensidad, en áreas donde los valores de
los pixeles son variables. Es común referirse a la magnitud del gradiente o su
aproximación simplemente como “el grandiente”
MATLAB
Ejemplo en matlab de la detección de bordes definiendo un filtro para detección de
bordes.
La imagen a filtrar debe estar en escala de grises.
Para convertir RGB a escala de grises se utiliza el comando:
Imagen_gray=rgb2gray(Imagen_RGB);
>> filter=[1 2 1;0 0 0;-1 -2 -1];
>> Im_RGB=imread('medusa.jpg');
>> Im_gray=rgb2gray(Im_RGB);
>> Im_edge=filter2(filter,Im_gray);
>> imshow(Im_RGB);
>>figure,imshow(Im_edge);
Imagen2=medfilt2(Imagen)
Ejemplo:
>> Im_RGB=imread('fruta.jpg');
>> Im_gray=rgb2gray(Im_RGB);
>> Im_gray=imnoise(Im_gray, 'salt
& pepper');
>> imshow(Im_gray)
>> Im_filt=medfilt2(Im_gray);
>> figure, imshow(Im_filt)
imagen_edge=edge(imagen_gray,’mascara’);
Imagen_bin=imagen<=Umbral
Imagen_bin=im2bw(Imagen,level)
>> Im_bin=Im_gray>=128
OPERADOR DE PREWITT
Luego, la imagen del gradiente debe ser binarizada con un umbral adecuado para
la detección de los bordes deseados.
a) Implementación de filtrado con operador Prewitt.
Mediante la función de Matlab conv2, se logró implementar el filtrado de cada
componente del operador de Prewitt con la imagen de entrada spiderweb.jpg, la
cual se muestra en la Figura 1. Los resultados obtenidos se muestran en las
imágenes Im1 e Im2 de la Figura 2. Se observa que existen diferencias entre los
bordes resaltados en cada imagen, aunque existen algunas partes en común
debido a las componentes diagonales de la imagen. En ambas se identifica la
presencia de ruido debido a que este operador resalta los cambios en la
intensidad sin importar que sean cambios leves.
para
de t2.
En la imagen con umbral igual a t2 apenas se pueden percibir algunos bordes. Sin
embargo, al disminuirlo a la mitad ya se pueden detectar perfectamente varios
bordes de la imagen. Para el caso de la imagen de bordes detectada para ¼ del
valor de t2, se observa que los bordes de la telaraña se comienzan a mezclar,
debido a que se están considerando las diferencias menores entre las
intensidades de los pixeles correspondientes a los sectores entre los bordes de la
telaraña, este efecto se acentúa cuando el umbral se elige cada vez menor, donde
un valor muy pequeño como 1/32 de t2 no permite percibir ningún borde en la
imagen, debido a que se considera que toda variación muy pequeña es un borde.
function [im1,im2]=prewitt(img,graph)
%Detector de bordes mediante operador Prewitt
%Si el parámetro graph es 1, grafica Im1 e Im2.
if nargin <2
graph=0;
end
P_hor=[-1 0 1;-1 0 1;-1 0 1];
P_vert=[-1 -1 -1; 0 0 0; 1 1 1];
im1=conv2(double(img),double(P_hor),'same');
im2=conv2(double(img),double(P_vert),'same');
if(graph==1)
figure;
colormap(gray)
subplot('Position',[0.05,0.25,0.4,0.5])
imagesc(im1)
title(sprintf('Im1, Kernel Prewitt Horizontal\n (Detecta Bordes
Verticales)'))
subplot('Position',[0.55,0.25,0.4,0.5])
imagesc(im2)
title(sprintf('Im2, Kernel Prewitt Vertical\n (Detecta Bordes
Horizontales)'))
end
e) Bordes relacionados con la telaraña
Finalmente, se determinó que un umbral con valor entre t2 y ½ t2 podría permitir
detectar los bordes de las telarañas únicamente, por lo que finalmente se lograron
resultados adecuados con el valor de umbral t3=0.28. Los resultados se muestran
en la Figura 5, donde se aprecian claramente los bordes de la telaraña en todas
las direcciones.
En ambas imágenes se nota que existe una alta cantidad de ruido binario, debido
a que los bordes se perderían si se aumenta el umbral. Se puede observar que
existen diferencias en los bordes detectados, aunque mayoritariamente se
comparten los bordes en ambas imágenes debido a las múltiples direcciones de
las líneas en el cuadro.
c) Magnitud del gradiente y versión coloreable del cuadro.
Se combinaron las componentes del gradiente aproximado por operador de
Roberts calculando la magnitud del gradiente mediante la ecuación (1), y se
binarizó la imagen resultante con un umbral t5=0.065, el cual demostró los
mejores resultados para el objetivo de crear una imagen “coloreable”, es decir con
sólo los bordes de las figuras. El resultado se muestra en la Figura 9 (Izquierda).
Además de lo pedido, se probó la efectividad de un filtrado mediano con una
ventana de 2x2, logrando mostrar que se elimina parte del ruido binario presente,
además de suavizar las líneas diagonales y se obtiene un mejor efecto visual. Por
otro lado también se mezclan algunos bordes detectados, generando zonas más
oscuras que pierden detalle, como por ejemplo los ojos de las damas. La imagen
final resultante se muestra en la Figura 9 (Derecha).
2*matriz(i-radio,j)+matriz(i-radio,j+radio));
sumcol=(matriz(i-radio,j+radio)+2*matriz(i,j+radio)+
matriz(i+radio,j+radio))-(matriz(i-radio,j-radio)+
2*matriz(i,j-radio)+matriz(i+radio,j-radio));
G(i-radio,j-radio)=fix(sumfil+sumcol);
end
end
S=Negativo(G);
subplot(1,2,1);
imshow(imagen);
title('Imagen Original');
subplot(1,2,2);
imshow(uint8(S));
title('Deteccion de Bordes usando Sobel');
BIBLIOGRAFIA
Universidad de Chile
Facultad de Ciencias Físicas y Matemáticas
Departamento de Ingeniería Eléctrica
EL7007 – Introducción al Procesamiento Digital de Imágenes
Implementación de un algoritmo para la detección y conto de células en
imágenes microscópicas.
Autores: Moreira Quiroz José, Valencia Delgado Vladimir, Chávez Burbano
Patricia.
Facultad de Ingeniería en Electricidad y Computación (FIELC)
Escuela Superior Politécnica del Litoral (ESPOL)
Campus Gustavo Galindo.
I Seminario sobre Sistemas Inteligentes 2006