Deteccion de borde

Solo disponible en BuenasTareas
  • Páginas : 12 (2913 palabras )
  • Descarga(s) : 0
  • Publicado : 13 de noviembre de 2010
Leer documento completo
Vista previa del texto
Detección de bordes y discontinuidades

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)  maxM 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  maxM135 , M 315 

G( x, y)V  maxM 0 , M180 

G( x, y) H  max M 90 , M 270 

Máscaras de Robinson
Una negada de la otra,...
tracking img