SlideShare a Scribd company logo
1 of 78
Detección de bordes y discontinuidades
Filtrado y detección de bordes ,[object Object],[object Object],[object Object],[object Object],[object Object],Filtro promedio : Filtro promedio ponderado :
Filtrado y detección de bordes (II) ,[object Object],[object Object],[object Object],[object Object],Gausiana Laplaciana de la gausiana
Gradiente ,[object Object],[object Object],[object Object],Gradiente:  Variaciones del nivel de gris  en píxeles consecutivos x y f ( x , y ) f ( x , y +1) f ( x +1, y )
Gradiente (II) Magnitud del vector gradiente Dirección  del vector gradiente
Gradiente (III) % 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 gradiente VI=atan(double(gy)/double(gx)); Magnitud del vector gradiente Dirección del vector gradiente
Aplicación del Gradiente
Aplicación del Gradiente (II) V=edge(II,'roberts'); T  = 33% de max{|Gx|, |Gy|} Aplicación de Umbral
Representación del gradiente Referencia del programa MATLAB 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));
Representación del gradiente (II) Magnitud del gradiente Dirección del gradiente
Máscaras de Roberts La suma de los componentes de las má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 a máscaras de tamaño 3x3 Píxel a alterar en centro de la vecindad [BW,umbral,gv,gh] = edge(I,'prewitt')  >> gh=fspecial('prewitt') >> gv=gh' gh  = 1  1  1 0  0  0 -1  -1  -1 gv = 1  0  -1 1  0  -1 1  0  -1 % Se aplican filtros III=imfilter(II,gh); IV=imfilter(II,gv); % Obtiene el gradiente V=abs(III)+abs(IV); Equivalencia
Máscaras de Prewitt (II) ¿Magnitud predominante? Diagonal izquierda Diagonal derecha 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?
Máscaras de Robinson Una negada de la otra, menos costoso computacionalmente
Kirsch vs Robinson Comparación de máscaras a 45 o
Comparación entre máscaras Roberts Prewitt Sobel Kirsch Robinson Kirsch Robinson Roberts Prewitt Sobel Líneas verticales -45 o
Gradiente basado en derivada de segundo orden Función que define la máscara Segunda derivada en los puntos  x +1 e  y +1 Segunda derivada en los puntos  x  e  y Operador  Laplaciano
Gradiente basado en derivada de segundo orden (II) Máscaras equivalentes 0 1 0 1 -4 1 0 1 0 1 1 1 1 -8 1 1 1 1 0 -1 0 -1 4 -1 0 -1 0 -1 -1 -1 -1 8 -1 -1 -1 -1
Gradiente basado en derivada de segundo orden (III) Operaciones de imagen filtrada sobre  original para mejora de nitidez Si centro de  máscara negativo Si centro de  máscara positivo Lo anterior equivale a aplicar la siguiente máscara 1 1 1 1 -8 1 1 1 1
Primera vs segunda derivada a=[0:1/255:1]; for i=1:400 b(i,1:256)=a(1,:); end aa=zeros(400,72); bb=ones(400,72)*255; ent=[aa b bb];
Primera vs segunda derivada (II) Imagen Fila Primera derivada Segunda derivada
Primera vs segunda derivada (III) Detectar bordes  primera derivada Aplicar  umbral   de intensidad  a la imagen filtrada
Primera vs segunda derivada (IV) Detectar bordes  segunda derivada Detección de los  cruces por cero a la imagen filtrada Cruce por cero
Primera vs segunda derivada (V) Influencia del ruido
Primera vs segunda derivada (VI) Primera derivada
Primera vs segunda derivada (VII) Segunda derivada Más susceptible al ruido Menos utilizada para detectar bordes
Primera vs segunda derivada (VIII) % Filtro de Sobel (primera derivada) >> III=edge(II,‘sobel'); % Filtro  de segunda derivada >>  h=[1 1 1; 1 -8 1; 1 1 1]; >>IV=edge(II, 'zerocross', h); III ,[object Object],[object Object],[object Object],IV
Primera vs segunda derivada (IX) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Detección de puntos >> I=imread('discont2.jpg'); >> w=[-1, -1, -1; -1, 8, -1; -1, -1, -1] >> ww=-w >> II=imfilter(I,w); >> III=imfilter(I,ww); w = -1  -1  -1 -1  8  -1 -1  -1  -1 Se aplica el Laplaciano (segunda derivada)
Detección de líneas En una dirección específica % Se definen las máscaras w(:,:,1)=[-1, -1, -1; 2, 2, 2; -1, -1, -1];  % 0 o w(:,:,3)=rot90(w(:,:,1));                        % 90 o w(:,:,2)=[-1, -1, 2; -1, 2, -1; 2, -1, -1];  % 45 o w(:,:,4)=rot90(w(:,:,2));                        % -45 o % Se calcula la media for i=1:4 II(:,:,i) = imfilter(I,w(:,:,i),'symmetric','same'); maxima_intensidad(1,i)=mean2(II(:,:,i)) figure;imshow(II(:,:,i)); end La mayor media indica orientación predominante de las líneas
Detección de líneas (II) +
Detección de líneas (III) En cualquier dirección Efecto de doble línea como resultado de aplicar el Laplaciano w=fspecial('laplacian', 0) III=imfilter(II,w));
Detección de líneas (IV) En cualquier dirección Solución I: Mantiene la doble línea w=fspecial('laplacian',0)  III=imfilter(II,w); IV=abs(III)
Detección de líneas (V) En cualquier dirección Solución II: Seleccionar una línea w=fspecial('laplacian', 0) III=imfilter(II,w); V=III>0.23*(max(III(:)));
Detección de bordes Aplicación del gradiente Roberts z 1 z 2 Z 3 z 4 z 5 z 6 z 7 Z 8 z 9
Detección de bordes (II) Aplicación del gradiente (Prewitt) Sobel z 1 z 2 Z 3 z 4 z 5 z 6 z 7 Z 8 z 9
Detección de bordes (III) Combinación de píxeles de diferentes bordes % Filtrado utilizando máscaras de Roberts >> II45 = imfilter(I,[1 0; 0 -1],'symmetric'); >> II45p = imfilter(I,[-1 0; 0 1],'symmetric'); >> II135 = imfilter(I,[0 1;-1 0],'symmetric'); >> II135p = imfilter(I,[0 -1;1 0],'symmetric'); % Combinación de imágenes filtradas >>III=imlincomb(1,II45,1,II45p,1,II135,1,II135p); % Máximo entre gradientes >>grad_hv=abs(II45)+abs(135); >>grad_di=abs(II45p)+abs(II135p); >>IV=max(grad_hv, grad_di); % Máximo entre todos >>V=max(max(abs(II45),abs(135)), max(abs(II135),abs(II135p)));
Detección de bordes (IV) III IV V Vp=V>0.53*max(V(:)); IVp=IV>0.65*max(IV(:));
Detección de bordes (V) Combinación y selección por umbral % Se define el umbral umbral=0.3; % Se definen las máscaras  (Sobel) w(:,:,1)=fspecial('sobel'); w(:,:,3)=rot90(w(:,:,1)); w(:,:,2)=[-2, -1, 0; -1, 0, 1; 0, 1, 2]; w(:,:,4)=rot90(w(:,:,2)); % Se aplica Sobel en las cuatro orientaciones, con umbral for i=1:4 II(:,:,i) = imfilter(double(I),w(:,:,i),'symmetric','same'); II(:,:,i) = II(:,:,i) >= umbral.*max(abs(II(:))); figure;imshow(II(:,:,i)); end % Imagen resultante II=imlincomb(1,II(:,:,1), 1,II(:,:,2), 1,II(:,:,3), 1,II(:,:,4)); figure; imshow(II);
Detección de bordes (VI) Resultado de la detección de bordes para diferentes umbrales
Detección de bordes (VII) Método de Marr-Hildreth Laplaciana de la gausiana
Detección de bordes (VIII) Laplaciana de la gausiana Cruces por cero
Detección de bordes (IX) Laplaciana de la gausiana >> w=fspecial('log',5,.7) w = 0.0034  0.0338  0.0697  0.0338  0.0034 0.0338  0.1800  0.0105  0.1800  0.0338 0.0697  0.0105  -1.3250  0.0105  0.0697 0.0338  0.1800  0.0105  0.1800  0.0338 0.0034  0.0338  0.0697  0.0338  0.0034 >> sum(w(:)) -6.0715e-018 ,[object Object],[object Object]
Detección de bordes (X) Detección de cruces por cero laplaciana de la gausiana >> -fspecial('log', 5,  .4 ) ans = -0.2475 -0.2475 -0.2479 -0.2475 -0.2475 -0.2475 -0.3545 -1.2336 -0.3545 -0.2475 -0.2479 -1.2336  10.3145  -1.2336 -0.2479 -0.2475 -0.3545 -1.2336 -0.3545 -0.2475 -0.2475 -0.2475 -0.2479 -0.2475 -0.2475 >> -fspecial('log', 5,  .6 ) ans = -0.0056 -0.0192 -0.0483 -0.0192 -0.0056 -0.0192 -0.2758 -0.2426 -0.2758 -0.0192 -0.0483 -0.2426  2.4429  -0.2426 -0.0483 -0.0192 -0.2758 -0.2426 -0.2758 -0.0192 -0.0056 -0.0192 -0.0483 -0.0192 -0.0056
Detección de bordes (XI) >> III=edge(II, 'zerocross', 0.3, fspecial('laplacian', 0.1 )); >> IV=edge(II, 'zerocross', 0.3, fspecial('laplacian', 0.9 )); Más ruidosa
Detección de bordes (XII) Método de Marr-Hildreth (otra propuesta) ,[object Object],[object Object],[object Object],1 1 1 1 -8 1 1 1 1
Detección de bordes (XIII) >>  w=[1 1 1; 1 -8 1; 1 1 1]; >>III=edge(II, 'zerocross', 0.5, w);
Detección de bordes (XIV) Diferencia de Gausianas La Laplaciana de la gausiana puede aproximarse  a diferencia de filtros gausianos Debe cumplirse:
Detección de bordes (XV) >> IV=imfilter(II,fspecial('gaussian',[3 3],.8)); >> V=imfilter(II,fspecial('gaussian',[3 3],.2)); >> VI=imsubtract(IV,V); >> VI=VI>0.13*max(VI(:));
Método de Canny 1.- Suavizar la imagen con filtro gausiano 2.- Obtener el módulo y dirección del gradiente basado en  dos máscaras de Sobel, Prewitt o Roberts Punto de borde: Existe máximo local en dirección del gradiente 3.- Supresión no maximal:  Bordes débiles  Bordes fuertes 4.- Se incorporan los píxeles débiles 8 conectados a los píxeles fuertes
Aplicación de Canny Kirsch ( T =0.95 M ) Canny
Máscaras de Frei-Chen Subespacio borde Subespacio línea Subespacio promedio
Obtención de coeficientes de la máscara Prewitt Sobel a = [0.5; 1.5] = 0.5+(1./(1+exp(-pa)));  b = [0.5; 2.5] = 0.5+2*(1./(1+exp(-pb)));  Neurona -a 0 a -b 0 b -a 0 a
Obtención de coeficientes de la máscara (II) f(x-1, y-1) f(x-1, y) f(x-1, y+1) f(x, y-1) f(x, y) f(x, y+1) f(x+1, y-1) f(x+1, y) f(x+1, y+1) -a 0 a -b 0 b -a 0 a x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9
Obtención de coeficientes de la máscara (III) -a 0 a -b 0 b -a 0 a -a -b -a 0 0 0 a b a -b -a 0 -a 0 a 0 a b 0 a b -a 0 a -b -a 0 x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9
Obtención de coeficientes de la máscara (IV) Borde total = Suma de líneas en cada orientación Núcleo estimador
Obtención de coeficientes de la máscara (V) Núcleo estimador Coeficientes de la máscara resultante -2a-b -b b -2a-b 0 2a+b -b b 2a+b
Obtención de coeficientes de la máscara (VI) Núcleo estimador Componentes derivativos
Obtención de coeficientes de la máscara (VII) Matriz de entrada-salida El número de filas será semejante al número de píxeles La imagen original y la que contiene bordes tendrán la misma dimensión x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 f(x-1, y-1) f(x-1, y) f(x-1, y+1) f(x, y-1) f(x, y) f(x, y+1) f(x+1, y-1) f(x+1, y) f(x+1, y+1)
Obtención de coeficientes de la máscara (VIII) Sustituir en algoritmo de  aprendizaje supervisado ,[object Object],[object Object]
Obtención de coeficientes de la máscara (IX) Solución de sistema de ecuaciones lineales ,[object Object],-2a-b -b b -2a-b 0 2a+b -b b 2a+b
Obtención de coeficientes de la máscara (X) mm = -1.9216  -0.5584  0.5584 -1.9216  0  1.9216 -0.5584  0.5584  1.9216 >>IV=imfilter(II, mm, 'symmetric');
Transformada de Hough Representación de línea en forma normal Fuente
Transformada de Hough (II) Línea   Puntos con similar Rho y Theta
Transformada de Hough (III) Determina la transformada de Hough >>[Hough,Theta,Rho] = hough(a);  Determina picos en la transformada >> P = houghpeaks(H,1)  >> RT=[Rho(1,P(1,1)),Theta(1,P(1,2))]  Valores de Rho y Theta Línea definida en
Transformada de Hough (IV) >>II=rgb2gray(I); >> III=im2bw(II,.45); >> [H,T,R] = hough(III); >> P = houghpeaks(H, 2 ); Fuente

More Related Content

What's hot

Algoritmos basicos de dibujo en 2 d
Algoritmos basicos de dibujo en 2 dAlgoritmos basicos de dibujo en 2 d
Algoritmos basicos de dibujo en 2 d
UDEC
 
Transformaciones lineales
Transformaciones linealesTransformaciones lineales
Transformaciones lineales
algebra
 
Matematicas ejercicios resueltos de integrales
Matematicas ejercicios resueltos de integralesMatematicas ejercicios resueltos de integrales
Matematicas ejercicios resueltos de integrales
Fabiana Carnicelli
 
Funcion lineal diapositivas
Funcion lineal diapositivasFuncion lineal diapositivas
Funcion lineal diapositivas
evyseclen
 

What's hot (20)

Isomorfos y arboles
Isomorfos y arbolesIsomorfos y arboles
Isomorfos y arboles
 
Monografia de mate 3 imprimir 2
Monografia de mate 3 imprimir 2Monografia de mate 3 imprimir 2
Monografia de mate 3 imprimir 2
 
Algoritmos basicos de dibujo en 2 d
Algoritmos basicos de dibujo en 2 dAlgoritmos basicos de dibujo en 2 d
Algoritmos basicos de dibujo en 2 d
 
Ejercicios integrales impropias
Ejercicios integrales impropiasEjercicios integrales impropias
Ejercicios integrales impropias
 
Transformaciones lineales
Transformaciones linealesTransformaciones lineales
Transformaciones lineales
 
Patrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. graspPatrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. grasp
 
Matematicas ejercicios resueltos de integrales
Matematicas ejercicios resueltos de integralesMatematicas ejercicios resueltos de integrales
Matematicas ejercicios resueltos de integrales
 
12.1 Funciones vectoriales.pdf
12.1 Funciones vectoriales.pdf12.1 Funciones vectoriales.pdf
12.1 Funciones vectoriales.pdf
 
Límites y continuidad en funciones de varias variables
Límites y continuidad en funciones de varias variablesLímites y continuidad en funciones de varias variables
Límites y continuidad en funciones de varias variables
 
Ecuaciones Diferenciales Lineales de Primer Orden
Ecuaciones Diferenciales Lineales de Primer OrdenEcuaciones Diferenciales Lineales de Primer Orden
Ecuaciones Diferenciales Lineales de Primer Orden
 
Solucionario determinantes
Solucionario determinantesSolucionario determinantes
Solucionario determinantes
 
Funciones de variable real: definiciones
Funciones de variable real: definicionesFunciones de variable real: definiciones
Funciones de variable real: definiciones
 
Transformaciones lineales
Transformaciones linealesTransformaciones lineales
Transformaciones lineales
 
Interfaz grafica del metodo de biseccion en matlab
Interfaz grafica del metodo  de biseccion en matlabInterfaz grafica del metodo  de biseccion en matlab
Interfaz grafica del metodo de biseccion en matlab
 
Funciones de Varias Variables
Funciones de Varias Variables Funciones de Varias Variables
Funciones de Varias Variables
 
Funcion lineal diapositivas
Funcion lineal diapositivasFuncion lineal diapositivas
Funcion lineal diapositivas
 
colas de prioridad
colas de prioridad colas de prioridad
colas de prioridad
 
Ejercicios detallados del obj 5 mat ii 178 179-
Ejercicios detallados del obj 5 mat ii  178 179-Ejercicios detallados del obj 5 mat ii  178 179-
Ejercicios detallados del obj 5 mat ii 178 179-
 
Integración
IntegraciónIntegración
Integración
 
Cap10 func exponencial
Cap10 func exponencialCap10 func exponencial
Cap10 func exponencial
 

Similar to Segmentación de imagenes

Imagen Filtrado Espacial
Imagen Filtrado EspacialImagen Filtrado Espacial
Imagen Filtrado Espacial
Omar Sanchez
 
Imagen e histograma
Imagen e histogramaImagen e histograma
Imagen e histograma
Omar Sanchez
 
Imagen Filtrado Frecuencial
Imagen Filtrado FrecuencialImagen Filtrado Frecuencial
Imagen Filtrado Frecuencial
Omar Sanchez
 
Utp pdi_2014-2 lab2
 Utp pdi_2014-2 lab2 Utp pdi_2014-2 lab2
Utp pdi_2014-2 lab2
jcbp_peru
 
Utp 2015-2_pdi_lab2
 Utp 2015-2_pdi_lab2 Utp 2015-2_pdi_lab2
Utp 2015-2_pdi_lab2
jcbp_peru
 
Apuntes maximos y_minimos
Apuntes maximos y_minimosApuntes maximos y_minimos
Apuntes maximos y_minimos
Angel CaVa
 
Utp pd_iy_va_sap10 detecciòn de bordes
 Utp pd_iy_va_sap10 detecciòn de bordes Utp pd_iy_va_sap10 detecciòn de bordes
Utp pd_iy_va_sap10 detecciòn de bordes
jcbp_peru
 
Trabajo dsp Filtro de Butterworth
Trabajo dsp Filtro de Butterworth Trabajo dsp Filtro de Butterworth
Trabajo dsp Filtro de Butterworth
Cristian Zapata
 
1 numeros reales operaciones
1 numeros reales operaciones1 numeros reales operaciones
1 numeros reales operaciones
PMCI
 
TERCERA PRACTICA
TERCERA PRACTICATERCERA PRACTICA
TERCERA PRACTICA
kokame
 

Similar to Segmentación de imagenes (20)

Imagen Filtrado Espacial
Imagen Filtrado EspacialImagen Filtrado Espacial
Imagen Filtrado Espacial
 
Imagen e histograma
Imagen e histogramaImagen e histograma
Imagen e histograma
 
tema 3-2 Algoritmos de realce.pdf
tema 3-2 Algoritmos de realce.pdftema 3-2 Algoritmos de realce.pdf
tema 3-2 Algoritmos de realce.pdf
 
Imagen Filtrado Frecuencial
Imagen Filtrado FrecuencialImagen Filtrado Frecuencial
Imagen Filtrado Frecuencial
 
Utp pdi_2014-2 lab2
 Utp pdi_2014-2 lab2 Utp pdi_2014-2 lab2
Utp pdi_2014-2 lab2
 
epn filtros
epn filtrosepn filtros
epn filtros
 
Transformada discreta de fourier en imagenes
Transformada discreta de fourier en  imagenesTransformada discreta de fourier en  imagenes
Transformada discreta de fourier en imagenes
 
Detección de bordes de una imagen en Matlab
Detección de bordes de una imagen en MatlabDetección de bordes de una imagen en Matlab
Detección de bordes de una imagen en Matlab
 
P5pds
P5pdsP5pds
P5pds
 
Utp 2015-2_pdi_lab2
 Utp 2015-2_pdi_lab2 Utp 2015-2_pdi_lab2
Utp 2015-2_pdi_lab2
 
Apuntes maximos y_minimos
Apuntes maximos y_minimosApuntes maximos y_minimos
Apuntes maximos y_minimos
 
W mora vectores_rectas_planos
W mora vectores_rectas_planosW mora vectores_rectas_planos
W mora vectores_rectas_planos
 
Diseño e implementacion.pptx
Diseño e implementacion.pptxDiseño e implementacion.pptx
Diseño e implementacion.pptx
 
Filtrado espacial - procesamiento de imagenes
Filtrado espacial - procesamiento de imagenesFiltrado espacial - procesamiento de imagenes
Filtrado espacial - procesamiento de imagenes
 
Utp pd_iy_va_sap10 detecciòn de bordes
 Utp pd_iy_va_sap10 detecciòn de bordes Utp pd_iy_va_sap10 detecciòn de bordes
Utp pd_iy_va_sap10 detecciòn de bordes
 
Trabajo dsp Filtro de Butterworth
Trabajo dsp Filtro de Butterworth Trabajo dsp Filtro de Butterworth
Trabajo dsp Filtro de Butterworth
 
1 numeros reales operaciones
1 numeros reales operaciones1 numeros reales operaciones
1 numeros reales operaciones
 
Electrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicadoElectrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicado
 
TERCERA PRACTICA
TERCERA PRACTICATERCERA PRACTICA
TERCERA PRACTICA
 
Dialnet estudio delefectodelasmascarasdeconvolucionenimagen-4902816 (1)
Dialnet estudio delefectodelasmascarasdeconvolucionenimagen-4902816 (1)Dialnet estudio delefectodelasmascarasdeconvolucionenimagen-4902816 (1)
Dialnet estudio delefectodelasmascarasdeconvolucionenimagen-4902816 (1)
 

More from Omar Sanchez

Funciones de Lyapunov basado en Krasovskii
Funciones de Lyapunov basado en KrasovskiiFunciones de Lyapunov basado en Krasovskii
Funciones de Lyapunov basado en Krasovskii
Omar Sanchez
 
Sensores de robots
Sensores de robotsSensores de robots
Sensores de robots
Omar Sanchez
 
Vehiculos no tripulados
Vehiculos no tripuladosVehiculos no tripulados
Vehiculos no tripulados
Omar Sanchez
 
Algunos aspectos de estabilidad
Algunos aspectos de estabilidadAlgunos aspectos de estabilidad
Algunos aspectos de estabilidad
Omar Sanchez
 
Control basado en modelo
Control basado en modeloControl basado en modelo
Control basado en modelo
Omar Sanchez
 

More from Omar Sanchez (20)

Assembler4
Assembler4Assembler4
Assembler4
 
Assembly programming II
Assembly programming IIAssembly programming II
Assembly programming II
 
Assembly programming
Assembly programmingAssembly programming
Assembly programming
 
Assembler Programming
Assembler ProgrammingAssembler Programming
Assembler Programming
 
Functions for Nano 5 Card
Functions for Nano 5 CardFunctions for Nano 5 Card
Functions for Nano 5 Card
 
Ejemplos de modelos basados en adaptacion parametrica
Ejemplos de modelos basados en adaptacion parametricaEjemplos de modelos basados en adaptacion parametrica
Ejemplos de modelos basados en adaptacion parametrica
 
Sistemas numericos
Sistemas numericosSistemas numericos
Sistemas numericos
 
Ensamblador
EnsambladorEnsamblador
Ensamblador
 
Nano5 features
Nano5 featuresNano5 features
Nano5 features
 
Referencias MATLAB
Referencias MATLABReferencias MATLAB
Referencias MATLAB
 
Control Modelo de Referencia y Linealizacion po Realimentacion
Control Modelo de Referencia y Linealizacion po RealimentacionControl Modelo de Referencia y Linealizacion po Realimentacion
Control Modelo de Referencia y Linealizacion po Realimentacion
 
Fundposori
FundposoriFundposori
Fundposori
 
Funciones de Lyapunov basado en Krasovskii
Funciones de Lyapunov basado en KrasovskiiFunciones de Lyapunov basado en Krasovskii
Funciones de Lyapunov basado en Krasovskii
 
Sensores de robots
Sensores de robotsSensores de robots
Sensores de robots
 
Vehiculos no tripulados
Vehiculos no tripuladosVehiculos no tripulados
Vehiculos no tripulados
 
Algunos aspectos de estabilidad
Algunos aspectos de estabilidadAlgunos aspectos de estabilidad
Algunos aspectos de estabilidad
 
Control basado en modelo
Control basado en modeloControl basado en modelo
Control basado en modelo
 
Grupos próximos
Grupos próximosGrupos próximos
Grupos próximos
 
Redes Neuronales
Redes NeuronalesRedes Neuronales
Redes Neuronales
 
Algunas consideraciones
Algunas consideracionesAlgunas consideraciones
Algunas consideraciones
 

Segmentación de imagenes

  • 1. Detección de bordes y discontinuidades
  • 2.
  • 3.
  • 4.
  • 5. Gradiente (II) Magnitud del vector gradiente Dirección del vector gradiente
  • 6. Gradiente (III) % 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 gradiente VI=atan(double(gy)/double(gx)); Magnitud del vector gradiente Dirección del vector gradiente
  • 8. Aplicación del Gradiente (II) V=edge(II,'roberts'); T = 33% de max{|Gx|, |Gy|} Aplicación de Umbral
  • 9. Representación del gradiente Referencia del programa MATLAB 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));
  • 10. Representación del gradiente (II) Magnitud del gradiente Dirección del gradiente
  • 11. Máscaras de Roberts La suma de los componentes de las máscaras es cero: Devuelve cero en áreas de intensidad constante
  • 13. 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
  • 14. Máscaras de Roberts (IV) Verificar tipo de datos de la imagen
  • 15. Máscaras de Prewitt Extensión a máscaras de tamaño 3x3 Píxel a alterar en centro de la vecindad [BW,umbral,gv,gh] = edge(I,'prewitt') >> gh=fspecial('prewitt') >> gv=gh' gh = 1 1 1 0 0 0 -1 -1 -1 gv = 1 0 -1 1 0 -1 1 0 -1 % Se aplican filtros III=imfilter(II,gh); IV=imfilter(II,gv); % Obtiene el gradiente V=abs(III)+abs(IV); Equivalencia
  • 16. Máscaras de Prewitt (II) ¿Magnitud predominante? Diagonal izquierda Diagonal derecha Dirección predominante La equivalente a la magnitud predominante
  • 18. Máscaras de Prewitt (IV) Influencia del umbral
  • 19. Máscaras de Sobel Reforzar el valor del píxel central Reduce la influencia del ruido en la detección de discontinuidades Prewitt Sobel
  • 20. Máscaras de Sobel (II) >> w=fspecial('sobel')
  • 21. Máscaras de Kirsch 8 máscaras que representan 8 orientaciones
  • 22. 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
  • 25. Máscaras de Kirsch (V) ¿Magnitud predominante?
  • 26. Máscaras de Robinson Una negada de la otra, menos costoso computacionalmente
  • 27. Kirsch vs Robinson Comparación de máscaras a 45 o
  • 28. Comparación entre máscaras Roberts Prewitt Sobel Kirsch Robinson Kirsch Robinson Roberts Prewitt Sobel Líneas verticales -45 o
  • 29. Gradiente basado en derivada de segundo orden Función que define la máscara Segunda derivada en los puntos x +1 e y +1 Segunda derivada en los puntos x e y Operador Laplaciano
  • 30. Gradiente basado en derivada de segundo orden (II) Máscaras equivalentes 0 1 0 1 -4 1 0 1 0 1 1 1 1 -8 1 1 1 1 0 -1 0 -1 4 -1 0 -1 0 -1 -1 -1 -1 8 -1 -1 -1 -1
  • 31. Gradiente basado en derivada de segundo orden (III) Operaciones de imagen filtrada sobre original para mejora de nitidez Si centro de máscara negativo Si centro de máscara positivo Lo anterior equivale a aplicar la siguiente máscara 1 1 1 1 -8 1 1 1 1
  • 32. Primera vs segunda derivada a=[0:1/255:1]; for i=1:400 b(i,1:256)=a(1,:); end aa=zeros(400,72); bb=ones(400,72)*255; ent=[aa b bb];
  • 33. Primera vs segunda derivada (II) Imagen Fila Primera derivada Segunda derivada
  • 34. Primera vs segunda derivada (III) Detectar bordes primera derivada Aplicar umbral de intensidad a la imagen filtrada
  • 35. Primera vs segunda derivada (IV) Detectar bordes segunda derivada Detección de los cruces por cero a la imagen filtrada Cruce por cero
  • 36. Primera vs segunda derivada (V) Influencia del ruido
  • 37. Primera vs segunda derivada (VI) Primera derivada
  • 38. Primera vs segunda derivada (VII) Segunda derivada Más susceptible al ruido Menos utilizada para detectar bordes
  • 39.
  • 40.
  • 41. Detección de puntos >> I=imread('discont2.jpg'); >> w=[-1, -1, -1; -1, 8, -1; -1, -1, -1] >> ww=-w >> II=imfilter(I,w); >> III=imfilter(I,ww); w = -1 -1 -1 -1 8 -1 -1 -1 -1 Se aplica el Laplaciano (segunda derivada)
  • 42. Detección de líneas En una dirección específica % Se definen las máscaras w(:,:,1)=[-1, -1, -1; 2, 2, 2; -1, -1, -1];  % 0 o w(:,:,3)=rot90(w(:,:,1));                        % 90 o w(:,:,2)=[-1, -1, 2; -1, 2, -1; 2, -1, -1];  % 45 o w(:,:,4)=rot90(w(:,:,2));                        % -45 o % Se calcula la media for i=1:4 II(:,:,i) = imfilter(I,w(:,:,i),'symmetric','same'); maxima_intensidad(1,i)=mean2(II(:,:,i)) figure;imshow(II(:,:,i)); end La mayor media indica orientación predominante de las líneas
  • 44. Detección de líneas (III) En cualquier dirección Efecto de doble línea como resultado de aplicar el Laplaciano w=fspecial('laplacian', 0) III=imfilter(II,w));
  • 45. Detección de líneas (IV) En cualquier dirección Solución I: Mantiene la doble línea w=fspecial('laplacian',0) III=imfilter(II,w); IV=abs(III)
  • 46. Detección de líneas (V) En cualquier dirección Solución II: Seleccionar una línea w=fspecial('laplacian', 0) III=imfilter(II,w); V=III>0.23*(max(III(:)));
  • 47. Detección de bordes Aplicación del gradiente Roberts z 1 z 2 Z 3 z 4 z 5 z 6 z 7 Z 8 z 9
  • 48. Detección de bordes (II) Aplicación del gradiente (Prewitt) Sobel z 1 z 2 Z 3 z 4 z 5 z 6 z 7 Z 8 z 9
  • 49. Detección de bordes (III) Combinación de píxeles de diferentes bordes % Filtrado utilizando máscaras de Roberts >> II45 = imfilter(I,[1 0; 0 -1],'symmetric'); >> II45p = imfilter(I,[-1 0; 0 1],'symmetric'); >> II135 = imfilter(I,[0 1;-1 0],'symmetric'); >> II135p = imfilter(I,[0 -1;1 0],'symmetric'); % Combinación de imágenes filtradas >>III=imlincomb(1,II45,1,II45p,1,II135,1,II135p); % Máximo entre gradientes >>grad_hv=abs(II45)+abs(135); >>grad_di=abs(II45p)+abs(II135p); >>IV=max(grad_hv, grad_di); % Máximo entre todos >>V=max(max(abs(II45),abs(135)), max(abs(II135),abs(II135p)));
  • 50. Detección de bordes (IV) III IV V Vp=V>0.53*max(V(:)); IVp=IV>0.65*max(IV(:));
  • 51. Detección de bordes (V) Combinación y selección por umbral % Se define el umbral umbral=0.3; % Se definen las máscaras (Sobel) w(:,:,1)=fspecial('sobel'); w(:,:,3)=rot90(w(:,:,1)); w(:,:,2)=[-2, -1, 0; -1, 0, 1; 0, 1, 2]; w(:,:,4)=rot90(w(:,:,2)); % Se aplica Sobel en las cuatro orientaciones, con umbral for i=1:4 II(:,:,i) = imfilter(double(I),w(:,:,i),'symmetric','same'); II(:,:,i) = II(:,:,i) >= umbral.*max(abs(II(:))); figure;imshow(II(:,:,i)); end % Imagen resultante II=imlincomb(1,II(:,:,1), 1,II(:,:,2), 1,II(:,:,3), 1,II(:,:,4)); figure; imshow(II);
  • 52. Detección de bordes (VI) Resultado de la detección de bordes para diferentes umbrales
  • 53. Detección de bordes (VII) Método de Marr-Hildreth Laplaciana de la gausiana
  • 54. Detección de bordes (VIII) Laplaciana de la gausiana Cruces por cero
  • 55.
  • 56. Detección de bordes (X) Detección de cruces por cero laplaciana de la gausiana >> -fspecial('log', 5, .4 ) ans = -0.2475 -0.2475 -0.2479 -0.2475 -0.2475 -0.2475 -0.3545 -1.2336 -0.3545 -0.2475 -0.2479 -1.2336 10.3145 -1.2336 -0.2479 -0.2475 -0.3545 -1.2336 -0.3545 -0.2475 -0.2475 -0.2475 -0.2479 -0.2475 -0.2475 >> -fspecial('log', 5, .6 ) ans = -0.0056 -0.0192 -0.0483 -0.0192 -0.0056 -0.0192 -0.2758 -0.2426 -0.2758 -0.0192 -0.0483 -0.2426 2.4429 -0.2426 -0.0483 -0.0192 -0.2758 -0.2426 -0.2758 -0.0192 -0.0056 -0.0192 -0.0483 -0.0192 -0.0056
  • 57. Detección de bordes (XI) >> III=edge(II, 'zerocross', 0.3, fspecial('laplacian', 0.1 )); >> IV=edge(II, 'zerocross', 0.3, fspecial('laplacian', 0.9 )); Más ruidosa
  • 58.
  • 59. Detección de bordes (XIII) >> w=[1 1 1; 1 -8 1; 1 1 1]; >>III=edge(II, 'zerocross', 0.5, w);
  • 60. Detección de bordes (XIV) Diferencia de Gausianas La Laplaciana de la gausiana puede aproximarse a diferencia de filtros gausianos Debe cumplirse:
  • 61. Detección de bordes (XV) >> IV=imfilter(II,fspecial('gaussian',[3 3],.8)); >> V=imfilter(II,fspecial('gaussian',[3 3],.2)); >> VI=imsubtract(IV,V); >> VI=VI>0.13*max(VI(:));
  • 62. Método de Canny 1.- Suavizar la imagen con filtro gausiano 2.- Obtener el módulo y dirección del gradiente basado en dos máscaras de Sobel, Prewitt o Roberts Punto de borde: Existe máximo local en dirección del gradiente 3.- Supresión no maximal: Bordes débiles Bordes fuertes 4.- Se incorporan los píxeles débiles 8 conectados a los píxeles fuertes
  • 63. Aplicación de Canny Kirsch ( T =0.95 M ) Canny
  • 64. Máscaras de Frei-Chen Subespacio borde Subespacio línea Subespacio promedio
  • 65. Obtención de coeficientes de la máscara Prewitt Sobel a = [0.5; 1.5] = 0.5+(1./(1+exp(-pa))); b = [0.5; 2.5] = 0.5+2*(1./(1+exp(-pb))); Neurona -a 0 a -b 0 b -a 0 a
  • 66. Obtención de coeficientes de la máscara (II) f(x-1, y-1) f(x-1, y) f(x-1, y+1) f(x, y-1) f(x, y) f(x, y+1) f(x+1, y-1) f(x+1, y) f(x+1, y+1) -a 0 a -b 0 b -a 0 a x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9
  • 67. Obtención de coeficientes de la máscara (III) -a 0 a -b 0 b -a 0 a -a -b -a 0 0 0 a b a -b -a 0 -a 0 a 0 a b 0 a b -a 0 a -b -a 0 x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9
  • 68. Obtención de coeficientes de la máscara (IV) Borde total = Suma de líneas en cada orientación Núcleo estimador
  • 69. Obtención de coeficientes de la máscara (V) Núcleo estimador Coeficientes de la máscara resultante -2a-b -b b -2a-b 0 2a+b -b b 2a+b
  • 70. Obtención de coeficientes de la máscara (VI) Núcleo estimador Componentes derivativos
  • 71. Obtención de coeficientes de la máscara (VII) Matriz de entrada-salida El número de filas será semejante al número de píxeles La imagen original y la que contiene bordes tendrán la misma dimensión x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 f(x-1, y-1) f(x-1, y) f(x-1, y+1) f(x, y-1) f(x, y) f(x, y+1) f(x+1, y-1) f(x+1, y) f(x+1, y+1)
  • 72.
  • 73.
  • 74. Obtención de coeficientes de la máscara (X) mm = -1.9216 -0.5584 0.5584 -1.9216 0 1.9216 -0.5584 0.5584 1.9216 >>IV=imfilter(II, mm, 'symmetric');
  • 75. Transformada de Hough Representación de línea en forma normal Fuente
  • 76. Transformada de Hough (II) Línea Puntos con similar Rho y Theta
  • 77. Transformada de Hough (III) Determina la transformada de Hough >>[Hough,Theta,Rho] = hough(a); Determina picos en la transformada >> P = houghpeaks(H,1) >> RT=[Rho(1,P(1,1)),Theta(1,P(1,2))] Valores de Rho y Theta Línea definida en
  • 78. Transformada de Hough (IV) >>II=rgb2gray(I); >> III=im2bw(II,.45); >> [H,T,R] = hough(III); >> P = houghpeaks(H, 2 ); Fuente