Práctica 5 Con Matlab (Reparado) (Reparado)
Práctica 5 Con Matlab (Reparado) (Reparado)
Práctica 5 Con Matlab (Reparado) (Reparado)
ELECTRÓNICA MÉDICA
Katherine Villarreal
2023
3 de febrero 2023
Vecindad entre pixeles:
Dos pixeles son vecinos si son adyacentes o tienen en común una de sus fronteras o una
de sus esquinas.
a) Conectividad
La conectividad entre pixeles sirve para establecer límites en objetos o entre regiones
de componentes en una imagen. Hay dos tipos: Conectividad a 4 y conectividad a 8.
Dos pixeles están conectados si son adyacentes o tienen vecindad 4 o vecindad 8 y su
nivel de gris cumple cierto criterio.
0 1 1 1 0 1 0 1
1 0 0 1 0 1 0 1
1 0 1 1 0 1 0 1
1 0 0 0 0 1 0 1
0 0 0 1 0 1 1 1
0 0 1 0 0 0 0 0
0 1 0 0 0 0 0 0
Contiene 6 segmentos
CONECTIVIDAD 8
0 0 0 0 0 0 0 0
0 1 1 1 0 1 0 1
1 0 0 1 0 1 0 1
1 0 1 1 0 1 0 1
1 0 0 0 0 1 0 1
0 0 0 1 0 1 1 1
0 0 1 0 0 0 0 0
0 1 0 0 0 0 0 0
Contiene 3 segmentos
0-negro
1-blanco
G.1: Umbralización
NOTA: Los objetos a contar deben estar en blanco, de no ser así usar el
complemento(not).
El 4 u 8 representa el número de conexiones de cada pixel con sus vecinos.
Para obtener el número de objetos: n= max(max(Numero_objetos))
Dado que la imagen puede tener ruido su interpretación final requiere de filtros y
operaciones morfológicas de cierre o apertura, (ver más abajo) que permiten rastrear en
la imagen las etiquetas de los objetos conectados con el comando label2rgb(imagen).
Una vez etiquetada se puede extraer las características de los objetos. También puede
seleccionar los objetos con bwselect (imagen, conectividad4u8) para usar el mouse para
seleccionar un punto y enter y luego mostrar con imshow que segmento de imagen
elegido.
Filtros para eliminar ruido: Reduce el ruido indeseable, anulando ciertas áreas que no
corresponden a ningún segmento de interés: bwareaopen(ImagenBinaria, tamañoRuido)
es el más usado.
Máscara o ubicación semilla es una matriz lógica que puede tener el tamaño de la
imagen o dos ubicaciones específicas que contienen los índices de la columna y fila.
Umbral se especifica como un escalar no negativo entre 0 y 1. Los valores bajos suelen
dar lugar a grandes regiones y los valores altos producen regiones pequeñas.
Ejercicio1: Use las dos formas de segmentación anteriores con una imagen DICOM
presente los resultados de la segmentación, el número de estructuras encontradas, y
uno de los segmentos visualizados.
Código Matlab
clc
close all
clear all
A=dicomread('IM218');
subplot(1,3,1)
imshow(A,[])
title('Imagen Dicom Principal');
seedpointR=15;
seedpointC=67;
W = graydiffweight (A, seedpointC, seedpointR, 'GrayDifferenceCutoff' , 25);
subplot(1,3,2)
imshow(log(W),[])
title('Imagen Dicom');
thresh=0.02;
BW=imsegfmm(W, seedpointC, seedpointR, thresh);
subplot(1,3,3)
imshow(BW,[])
title('Imagen Segmentada');
Imagen de Matlab
Imagen Dicom Principal Imagen Dicom Imagen Segmentada
Ejercicio2: Eliminar los segmentos con áreas inferiores a 50 en una imagen a colores.
Pegar imagen resultante.
Código Matlab
Imagen de Matlab
Operaciones morfológicas
a) OPERACIONES MORFOLÓGICAS:
Las operaciones más utilizadas son la dilatación que adiciona pixeles a la imagen, de
forma que la imagen se suaviza. O la erosión que remueve pixeles en la frontera de la
imagen. Esto facilita la reconstrucción de las imágenes y se usa como filtros para
eliminar ruido en el caso de la erosión o para rellenar figuras inconclusas en caso de la
dilatación.
Se puede dilatar o erosionar la imagen, aplicando las funciones (imdilate e imrode) use
la ayuda de Matlab, para completar la información de dilatar y erosionar la imagen
binaria
Erosión
%%Erosion
I =imread('hormigas.png');
imshow(I)
I1=rgb2gray(I);
T=graythresh(I1);
IB=imbinarize(I1,T);
IB=not(IB);
BW2 = bwareaopen(IB,50);
imshowpair(IB,BW2,'montage')
title('imagenBinaria_vs_imagenFiltrada')
S=strel('rectangle',[2 3]);
I4=imerode(IB,S);
figure
imshowpair(IB,I4,'montage')
title('imagenBinaria_vs_imagenErosionada')
I5= imsubtract(IB,BW2);
I6= imsubtract(IB,I4);
figure;imshowpair(I5,I6,'montage')
title('ElementosEliminadospoFiltado_vs_ElemntosEliminadosPorErosion')
Dilatación
%%Dilatacion
I =imread('hormigas.png');
I1=rgb2gray(I);
T=graythresh(I1);
IB=imbinarize(I1,T);
IB=not(IB);
BW2 = bwareaopen(IB,50);
%imshowpair(IB,BW2,'montage')
%title('imagenBinaria_vs_imagenFiltrada')
S=strel('rectangle',[2 3]);
I7=imdilate(BW2,S);
imshow(I7)
Codigo en Matlab
clc
close all
clear all
%%imagen1
A=imread('hormiga.jpg');
subplot(1,5,1)
imshow(A)
title('Imagen Original')
T=graythresh(A);
IB=im2bw(A,T);
subplot(1,5,2)
imshow(IB)
title('Imagen Binarizada')
z= strel('square',8);
% z = strel('sphere',4);
% z=strel('cube',5);
I2=edge(IB);
subplot(1,5,3)
imshow(I2)
title('Imagen I2')
I3=imdilate(I2,z);
subplot(1,5,4)
imshow(I3)
title('Imagen Dilatada')
I4=imerode(I3,z);
subplot(1,5,5)
imshow(I4)
title('Imagen')
Imagen en Matlab
Imagen Original Imagen Binarizada Imagen I2 Imagen Dilatada Imagen
EROSIÓN
Codigo en Matlab
clc;
clear all ;
close all;
I =imread('hormiga.jpg');
imshow(I)
I1=rgb2gray(I);
T=graythresh(I1);
IB=imbinarize(I1,T);
IB=not(IB);
BW2 = bwareaopen(IB,50);
imshowpair(IB,BW2,'montage')
title('imagenBinaria_vs_imagenFiltrada')
S=strel('rectangle',[2 3]);
I4=imerode(IB,S);
figure
imshowpair(IB,I4,'montage')
title('imagenBinaria vs imagenErosionada')
I5= imsubtract(IB,BW2);
I6= imsubtract(IB,I4);
figure;imshowpair(I5,I6,'montage')
title('Elementos Eliminados por Filtado vs Elemntos
Eliminados Por Erosion')
Imagen en Matlab
imagenBinariavs i magenFiltrada
imagenBinaria vs imagenErosionada
DILATACIÓN
Codigo en Matlab
I =imread('hormiga.jpg');
I1=rgb2gray(I);
T=graythresh(I1);
IB=imbinarize(I1,T);
IB=not(IB);
BW2 = bwareaopen(IB,50);
%imshowpair(IB,BW2,'montage')
%title('imagenBinaria_vs_imagenFiltrada')
S=strel('rectangle',[2 3]);
I7=imdilate(BW2,S);
imshow(I7)
Imagen en Matlab
c) EXTRACCIÓN DE LA FRONTERA:
Ejercicio: Usar los comandos de matlab, para obtener la apertura, cierre y la frontera de
la Fig.3.15
CÓDIGO Matlab
clc
close all
clear all
%%imagen1
A=imread('cafe.jpg');
% A=rgb2gray(A);
subplot(1,5,1)
imshow(A)
title('Imagen Original')
K=graythresh(A);
IB=imbinarize(A,K);
subplot(1,5,2)
imshow(IB)
title('Imagen Binarizada')
V=strel('square',9);
I2=imopen (IB,V);
subplot(1,5,3)
imshow(I2)
title('Imagen Open')
I3=imclose (IB,z);
subplot(1,5,4)
imshow(I3)
title('Imagen Close')
I4=imerode(IB,z);
I5=IB-I4;
subplot(1,5,5)
imshow(I5)
title('Imagen Erode')
Imagen MATLAB
Imagen Original Imagen Binarizada Imagen Open Imagen Close Imagen Erode
Conclusión