En este apartado explicamos como se hace la detección de bordes horizontales y verticales de una imagen mediante el uso de máscaras:
Para los bordes horizontales aplicamos la máscara:
[-1 -1 -1; 2 2 2; -1 -1 -1]
Para los bordes verticales aplicamos la máscara:
[-1 2 -1; -1 2 -1; -1 2 -1]
Si queremos obtener los bordes girados 45 grados o -45 grados bastaría con cambiar la máscara obteniendo:
Para 45 grados:
[-1 -1 2; -1 2 -1; 2 -1 -1]
Para -45 grados:
[2 -1 -1; -1 2 -1; -1 -1 2]
Código en Matlab para realizar la detección de bordes:
%deteccion de los bordes horizontales y verticales de una imagen:
%%
%limpieza de las variables y cierre de las gráficas
clear all
close all
%lectura de la imagen:
Im_RGB=imread('imagen1.jpg');
Im_gray=rgb2gray(Im_RGB);
%deteccion de bordes general:
Im_edge_general=edge(Im_gray,'canny');
%deteccion de bordes horizontales
mascara_filtro=[-1 -1 -1; 2 2 2; -1 -1 -1];
Im_gray_filtrada=imfilter(Im_gray,mascara_filtro);
Im_gray_filtrada_abs=abs(Im_gray_filtrada);
Im_edge_horizontal=Im_gray_filtrada_abs>=max(Im_gray_filtrada_abs(:));
%deteccion de bordes verticales
mascara_filtro2=[-1 2 -1; -1 2 -1; -1 2 -1];
Im_gray_filtrada2=imfilter(Im_gray,mascara_filtro2);
Im_gray_filtrada_abs2=abs(Im_gray_filtrada2);
Im_edge_vertical=Im_gray_filtrada_abs2>=max(Im_gray_filtrada_abs2(:));
%representacion de los resultados
figure(1),
imshow(Im_edge_general),title('deteccion de bordes general')
figure(2),
imshow(Im_gray_filtrada),title('imagen filtrada horizontal')
figure(3),
imshow(Im_edge_horizontal),title('deteccion de bordes horizontales')
figure(4),
imshow(Im_gray_filtrada2),title('imagen filtrada vertical')
figure(5),
imshow(Im_edge_vertical),title('deteccion de bordes verticales')
Tras ejecutar el código obtenemos entre otras imágenes:
Imagen tras la detección de bordes general
Imagen tras la detección de bordes horizontal
Imagen tras la detección de bordes vertical
Entrada principal
No hay comentarios:
Publicar un comentario