Deteccion de borde
Filtrado y detección de bordes
Filtros pasobajo: Asemeja el nivel de gris del píxel con el entorno Reduce ruido Aumenta homogeneidad Se pierde detalle (bordes se difuminan)
Filtro promedio:
Filtro promedio ponderado:
Filtrado y detección de bordes (II)
Filtros pasoalto: Enfatizan diferencias en el nivel de gris Aumenta ruido Estimula loslímites o bordes
Gausiana Laplaciana de la gausiana
Gradiente
Detección de bordes: Enfatizan los bordes que rodean al objeto Filtros pasoalto
Gradiente: Variaciones del nivel de gris en píxeles consecutivos
y
f(x,y) f(x+1,y) x
f(x,y+1)
Gradiente (II)
Magnitud del vector gradiente
Gx 2 Gy 2
M ( x, y) 2 2
( x, y) tan 1 (1) 450 0 0 ( x, y) 90 45Dirección del vector gradiente
1350
Gradiente (III)
Magnitud del vector gradiente Dirección del vector gradiente
% Determina gx y gy function [gx,gy]=gradiente(I) hx=[-1 0;1 0]; hy=hx'; %filtro gx=imfilter(I,hx,'replicate','conv'); gy=imfilter(I,hy,'replicate','conv'); %end % Obtiene la magnitud del gradiente II=abs(gx)+abs(gy); %Obtiene la dirección del gradienteVI=atan(double(gy)/double(gx));
Aplicación del Gradiente
Gy
Gx
M x, y Gx G y
Aplicación del Gradiente (II)
Aplicación de Umbral
T = 33% de max{|Gx|, |Gy|}
1 N M T M ( x, y ) 2 MN x 1 y 1
V=edge(II,'roberts');
Representación del gradiente
clear;close all; I=imread('rice.png'); fim=mat2gray(I); %Magnitud del gradiente figure('name','Magnitud del Gradiente');[gx,gy]=gradiente(fim); imshow(abs(gx)+abs(gy));
%Dibuja gradiente en región [gx,gy]=gradiente(fim); figure('name','Gradiente'); imshow(fim(1:50,1:50),'InitialMagnification','fit'); hold on; quiver(gx(1:50,1:50),gy(1:50,1:50));
Referencia del programa MATLAB
Representación del gradiente (II)
Magnitud del gradiente
Dirección del gradiente
Máscaras de Roberts
La suma de los componentes de lasmáscaras es cero: Devuelve cero en áreas de intensidad constante
Máscaras de Roberts (II)
Máscaras de Roberts (III)
%En espacio de trabajo [BW,umbral,g45,g135] = edge(I,'roberts',...) g45 = imfilter(I,[1 0; 0 -1]/2,'replicate'); g135 = imfilter(I,[0 1;-1 0]/2,'replicate');
ó
>umbral
Máscaras de Roberts (IV)
Verificar tipo de datos de la imagen
Máscaras de Prewitt
Extensión amáscaras de tamaño 3x3
Píxel a alterar en centro de la vecindad
[BW,umbral,gv,gh] = edge(I,'prewitt') gh = 1 0 -1 gv = 1 1 1
Equivalencia
% Se aplican filtros III=imfilter(II,gh); IV=imfilter(II,gv); % Obtiene el gradiente V=abs(III)+abs(IV);
>> gh=fspecial('prewitt') >> gv=gh'
1 0 -1
1 0 -1
0 0 0
-1 -1 -1
Máscaras de Prewitt (II)
¿Magnitud predominante?
Diagonalizquierda
Diagonal derecha
M ( x, y) maxM H , MV , M I , M D
Dirección predominante La equivalente a la magnitud predominante
Máscaras de Prewitt (III)
Máscaras de Prewitt (IV)
Influencia del umbral
Máscaras de Sobel
Reforzar el valor del píxel central Reduce la influencia del ruido en la detección de discontinuidades
Prewitt
Sobel
Máscaras de Sobel (II)
>>w=fspecial('sobel')
Máscaras de Kirsch
8 máscaras que representan 8 orientaciones
Máscaras de Kirsch (II)
% Define máscaras de Kirsch k(:,:,1) = [-3 -3 5; -3 0 5; -3 -3 5]; k(:,:,2) = [-3 5 5; -3 0 5; -3 -3 -3]; for i=3:8 k(:,:,i) = rot90(k(:,:,i-2)); end % Aplica los 8 filtros (x: imagen) for i=1:8 resultado(:,:,i) = imfilter(I,k(:,:,i),‘replicate’); end % Selecciona el máximo de cada filtro II=max(abs(resultado),[],3); %Aplica umbral e=II>.5*max(II(:)); %50% Resultado del filtro
II
e
Máscaras de Kirsch (III)
Máscaras de Kirsch (IV)
Máscaras de Kirsch (V)
¿Magnitud predominante?
G( x, y) D max M 45 , M 225 G( x, y) I maxM135 , M 315
G( x, y)V maxM 0 , M180
G( x, y) H max M 90 , M 270
Máscaras de Robinson
Una negada de la otra,...
Regístrate para leer el documento completo.