jueves, 15 de julio de 2010
Ejemplo Delimitacion Imagenes
Codigo:
%% Adquirir imagenes
I_original=imread('frutas.jpg');
%% Cambiar la imagen a escala de grises
I=rgb2gray(I_original);
%% Obtener el fondo de la imagen
background=imclose(I,strel('disk',58));
%% Identificacion de objetos
I2=imsubtract(background,I);
%% Binarizar imagen
lavel=graythresh(I2);
intensidad=lavel*255
BW=im2bw(I2,lavel);
%% Relleno de objetos (filtro de la media)
fill=imfill(BW,'holes');
%% Identificar objetos
[niveles, numObjects]=bwlabel(BW,4);
numObjects
stats=regionprops(niveles,'Eccentricity','Area','BoundingBox');
areas=[stats.Area];
excentricidad=[stats.Eccentricity]
%% Delimitar manzana
cantidad=0;
manzana=find(areas>80 & areas < style=""> statsmanzana=stats(manzana)
axes(handles.axes1)
imshow(I_original)
hold on;
cantidad =length(statsmanzana)*1+ cantidad ;
for idx = 1:length(statsmanzana);
h = rectangle ('Position',statsmanzana(idx).BoundingBox,...
'Curvature',[1,0.8],'LineWidth',5,'LineStyle','-.');
set (h,'EdgeColor',[0 0 1]);
hold on
end
hold off
disp([cantidad,'manzana'])
set(handles.valor,'string',cantidad)
Conteo de monedas
%% Primero convertimos la imagen a BW
coin1 = im2bw (imread ('coins.png'));
%% Llenamos las regiones de la imagen y los agujeros
coin2 = imfill (coin1, 'agujeros');
%% Etiquetamos y contarmos con los componentes conectados
[L Ne] = bwlabel (doble (coin2));
%% Determinamos la medina de las regiones de la imagen
prop = regionprops (L, 'Espacio', 'Centroide');
%% Inicializamos el contador a cero
total = 0;
%% Mostramos la imagen
imshow (imread ('coins.png')); conservar
Dinero% count% en base al área de la moneda
para n = 1: el tamaño (por la Proposición 1)% De 1 a número total de monedas
ciento = helice (n). Centroide;
X = centavo(1); Y = centavo (2);
2000" uc="Si la Prop (n). Área> 2000 ">If Prop (n). Area> 2000
texto (X-10, Y, '5 C ')
total = 5;
else
total = 10;
texto (X-10, Y, '10 C ')
end
end
hold on
título ([Total de monedas: num2str(total,'Cents'])
jueves, 10 de junio de 2010
EJERCICIO (Filtro de la Mediana)
Los píxeles de la nueva imagen se generan calculando la mediana del conjunto de píxeles del entorno de vecindad del píxel correspondiente a la imagen origen. De esta forma se homogeneizan los píxeles de intensidad muy diferente con respecto a la de los vecinos. Este tipo de filtro es bastante indicado cuando se tiene ruido aleatorio.
En Matlab la instrucción empleada para realizar el filtro de la mediana es medfilt2.
B = medfilt2(A)
Donde A es la matriz de entrada a la que se le aplica el filtro de la mediana utilizando por defecto una vecindad de 3X3.
imc=imread('C:\MATLAB7\work\imagenes\lena.jpg');
im=rgb2gray(imc);
fg = imnoise(im,'gaussian');
fs = imnoise(im,'salt & pepper',0.1)
h1=fspecial('average');
media1=imfilter(fg,h1);
media2=imfilter(fs,h1);
mediana1=medfilt2(fg);
mediana2=medfilt2(fs);
%Representaciones de las imágenes
subplot(2,3,1),subimage(fg),title('Imagen con ruido gaussiano');
subplot(2,3,4),subimage(fs),title('Imagen con ruido aleatorio');
subplot(2,3,2),subimage(media1),title('Filtro media');
subplot(2,3,5),subimage(media2),title('Filtro media');
subplot(2,3,3),subimage(mediana1),title('Filtro mediana');
subplot(2,3,6),subimage(mediana2),title('Filtro mediana');
EJERCICIO (Filtro de la mediana)
3.)
El filtrado mediana (mediante la función medfilt2) es útil para eliminar valores de píxeles extremos. El filtrado mediana utiliza vecindarios deslizantes para procesar una imagen, esto es, determina el valor de cada píxel de salida examinando un vecindario de tamaño mxn alrededor del correspondiente píxel de entrada.
El filtrado mediana ordena los valores de los píxeles en un vecindario y elige el valor mediana como resultado.
Como ejemplo se añadirá ruido del tipo “salt&peper” a una imagen y posteriormente se filtrará mediante un filtro media y un filtro mediana para que se observe la diferencia.
CODIGO
I=im2double(imread('eight.tif'));
J=imnoise(I,'salt & pepper',0.02); %Añade a imagen I ruido sal y pimienta de densidad 0.02
figure, imshow(I); title('imagen original ');
figure, imshow(J);title('imagen con ruido sal y pimienta');
K=filter2(fspecial('average',3),J); %Filtro J con filtro promedio en entorno de vecindad 3x3
L=medfilt2(J,[3 3]); %Filtro imagen J con filtro mediana en entorno de vecindad 3x3
figure, imshow(K); title('Resultado filtro media ');
figure, imshow(L); title('Resultado filtro mediana ');
EJERCICIO (Filtro de la Media)
2.)
Procedimiento para el suavizado de imágenes reduciendo la variación de intensidad entre un píxel y el siguiente.Se utiliza para reducir el ruido en las imágenes.
Filtrado por la mediana
Píxeles originales {2, 3, 8, 4, 2}
Ventana {-1, 0, 1}
Mediana de {2, 3, 8} = 3
Mediana de {3, 8, 4} = 4
Mediana de {8, 4 , 2} = 4
Píxeles transformados {2, 3, 4, 4, 2}
lunes, 7 de junio de 2010
Histograma
Fórmula del Histograma:
De dondeel valor de la k-ésima intensidad en el intervalo [0, I máx] y es el número de píxeles que posee la intensidad
El histograma puede estar normalizado:
Ejemplo:
Filtro de la Mediana
El valor final del píxel es un valor real presente en la imagen y no un promedio, de este modo se reduce el efecto borroso que tienen las imágenes que han sufrido un filtro de media. Este filtro es menos sensible a valores extremos. El inconveniente es que posee es que es más complejo de calcular ya que hay que ordenar los diferentes valores que aparecen en los píxeles incluidos en la ventana y determinar cual es el valor central.
Fórmula del filtro:
Distribución de la Mediana:
Filtro de la Media
Imagenes Digitales
La imagen digital es cualquier imagen fija o en movimiento, que se capture en un medio electrónico y que se represente como un archivo de información leído como una serie de pulsos eléctricos, los mismos que están basados en un sistema binario (unos y ceros).
Tipos:
- Imagenes Binarias
- Imagenes Vectoriales