Sunteți pe pagina 1din 4

im1=imread('A:\UTM\Noveno Semestre\Sistemas Expertos\imagenes\mdb001.

pgm'); b1=edge(im1,'canny','vertical'); b2=edge(im1,'canny','horizontal'); b3=edge(im1,'canny'); subplot(2,2,1),subimage(im1),Title('Imagen Original'); subplot(2,2,2),subimage(b1),Title('Sobel Vertical'); subplot(2,2,3),subimage(b2),Title('Sobel Horizontal'); subplot(2,2,4),subimage(b3),Title('Sobel'); im1=imread('A:\UTM\Noveno Semestre\Sistemas Expertos\imagenes\mdb001.pgm'); sf=fspecial('canny'); sc=sf'; b1=imfilter(im1,sf); b2=imfilter(im1,sc); b3=imadd(b1,b2); subplot(2,2,1),subimage(im1),Title('Imagen Original'); subplot(2,2,2),subimage(b2),Title('Sobel Vertical'); subplot(2,2,3),subimage(b1),Title('Sobel Horizontal'); subplot(2,2,4),subimage(b3),Title('Sobel'); -------------------------------------% TRANSFORMADA DE HOUGH PARA DETECCION DE RECTAS % Universidad Nacional de Quilmes % Ingeniera en Automatizacin y Control Industrial % Ctedra: Visin Artificial - Agosto de 2005 A=double(imread('A:\UTM\Noveno Semestre\Sistemas Expertos\imagenes\mdb001.pgm',' pgm')); B=A>240; %Binarizacion de la imagen IMAGEN=B; [m,n]=size(IMAGEN); figure(1);imshow(IMAGEN);title('IMAGEN BINARIZADA'); %%%%%%%%%%%%%%%%%%%%%%%%%%%PARMETROS%%%%%%%%%%%%%%%%%%%%%%%%% NTITA=500; %cantidad de divisiones del eje tita NRO=500; %cantidad de divisiones del eje ro TITAmax=pi/2; %variacion de la variable tita TITAmin=-pi/2; TITAdelta=(TITAmax-TITAmin)/NTITA; %variacion minima de tita ROmax=sqrt(m^2+ n^2); %variacion de ro ROmin=0; ROdelta=(ROmax-ROmin)/NRO; %minima variacion de ro %%%%%%%%%%%%%%%%%%%%%%%%%CAMBIO DE COORDENADAS DE LAS RECTAS%%%%%%%%%%%%%%%% ET=zeros(NTITA,NRO); %ET: Espacio Transformado de (ro,tita) [X,Y]=find(IMAGEN); %Retorna las coordenas (x,y) de los ptos de la imagen if length(Y)>1 for i=1:length(Y) %Recorre la eje Y for j=1:NTITA %Recorre el eje TITA %%%CONVERSION DE COORDENADAS%%% TITAc=TITAmin + TITAdelta*(j-0.5); %Desplazamiento por casilleros ROc=X(i)*cos(TITAc)+ Y(i)*sin(TITAc); %Armado de senos a partir de %(X,Y) ROg=floor((ROc/ROmax)*(NRO-1)+0.5)+1; %Redondeado de RO desplazando %cada casillero if (ROg>=1)&(ROg<=NRO) %Si esta dentro de la grilla %escribo el valor en ET ET(j,ROg)=ET(j,ROg)+1; %LLeno las grila con los %puntos, Obtencion de Senos end %en funcion A TRANSFORMACION%%% end

end end %%%%%%%%%%%%%%%%%%%%%%%BUSQUEDA DE LA RECTA MAS POPULAR%%%%%%%%%%%%%%%%%%% [TITA,RO]=find(ET==max(ET(:))); %Busqueda de la recta mas popular TITAr=TITAmin + TITAdelta*(TITA-0.5); %nuevos parametros para la reconstrucion ROr=ROmin + ROdelta*(RO-0.5); IMAGEN2=zeros(m,n,3); IMAGEN2(:,:,1)=IMAGEN*255; IMAGEN2(:,:,2)=IMAGEN*255; IMAGEN2(:,:,3)=IMAGEN*255; for xi=1:m yi=floor((ROr-xi*cos(TITAr))/sin(TITAr)+0.5); %Reconstruccion de de la recta if (yi>=1) &(yi<=n) IMAGEN2(xi,yi,1)=255; %Imagen reconstruida end end figure(2); imshow(uint8(IMAGEN2));title('Original y Reconstruida') %%%%%%%%%%%%%%%%%%%%%ELIMINACION DE LA PRIMERA RECTA ENCONTRADA%%%%%%%%%%%%%% for i=1:length(Y) %Recorre la eje Y for j=1:NTITA %Recorre el eje TITA ROc=0; ROg=floor((ROc/ROmax)*(NRO-1)+0.5)+1; %Redondeado de RO desplazando %cada casillero if (ROg>=1)&(ROg<=NRO) %Si esta dentro de la grilla %escribo el valor en ET ET(j,ROg)=ET(j,ROg)+1; %LLeno las grila con los puntos end end end %%%%%%%%%%%%%%%%%%%%%%%BUSQUEDA DE LA SEGUNDA RECTA MAS POPULAR%%%%%%%%%%%%%% [TITA,RO]=find(ET==max(ET(:))); %Busqueda de la recta mas popular TITAr=TITAmin + TITAdelta*(TITA-0.5); %nuevos parametros para la reconstrucion ROr=ROmin + ROdelta*(RO-0.5); for xi=1:m yi=floor((ROr-xi*cos(TITAr))/sin(TITAr)+0.5); %Reconstruccion de de la recta if (yi>=1) &(yi<=n) %Imagen reconstruida IMAGEN2(xi,yi,2)=255; end end figure(3); imshow(uint8(IMAGEN2));title('Original y Reconstruida') ------------------------------------------------------------------------------------function umbralOptimo = umbralOtsu(Imagen) Imagen='A:\UTM\Noveno Semestre\Sistemas Expertos\imagenes\mdb001.pgm' % % umbralOptimo = umbralOtsu(Imagen) % Esta funcion calcula el umbral optimo para binarizar una imagen mediante el % Metodo de Otsu. % % Universidad Nacional de Quilmes % Ingeniera en Automatizacin y Control Industrial % Ctedra: Visin Artificial - Octubre de 2005 Imagen = fix(double(Imagen)); [f,c]=size(Imagen); % Calculo de la distribucion de probabilidad de los niveles de gris P=zeros(1,256);

for i=1:f*c P(Imagen(i)+1) = P(Imagen(i)+1) + 1; end P = P / (f*c); % Calculo del momento acumulado de orden cero y del de primer orden omega = zeros(1,256); omega(1) = P(1); mu = zeros(1,256); for i=2:256 omega(i) = omega(i-1) + P(i); mu(i) = mu(i-1) + (i-1)*P(i); end % Calculo del umbral optimo segun Otsu sigmaB2max = 0; sigmaB2 = 0; mut = mu(256); % Intensidad media total de la imagen umbralOptimo = 0; for t=1:256 omega1 = omega(t); omega2 = 1 - omega1; if omega1~=0 & omega2~=0 mu1 = mu(t) / omega1; mu2 = (mut-mu(t)) / omega2; sigmaB2 = omega1 * (mu1-mut)^2 + omega2 * (mu2 - mut)^2; if sigmaB2 > sigmaB2max sigmaB2max = sigmaB2; umbralOptimo = t-1; end end end --------------------------------------AA=double(imread('A:\UTM\Noveno Semestre\Sistemas Expertos\imagenes\mdb001.pgm', 'pgm')); B=AA>240; %Binarizacion de la imagen a=B; [n,m]=size(a); figure(1);imshow(a);title('IMAGEN BINARIZADA'); dilatada=zeros(size(a)); for i=2:n-1 for j=2:m-1 dilatada(i,j)=a(i,j); if (a(i,j)==0 & (a(i,j-1)==1 | a(i-1,j)==1 | a(i,j+1)==1 | a(i+1,j)==1)) dilatada(i,j)=1; end end end figure(2); imshow(dilatada);title('Original y Reconstruida') -----------------------------------------------AA=double(imread('A:\UTM\Noveno Semestre\Sistemas Expertos\imagenes\mdb001.pgm', 'pgm')); B=AA>240; %Binarizacion de la imagen a=B; B=[0 1 0;1 1 1;0 1 0]; % ELEMENTO ESTRUCTURAL 4-conectado dilatada_matlab=imdilate(a,B); figure, subplot(1,2,1), imshow(dilatada) title('Dilatacion con algoritmo intuitivo')

subplot(1,2,2), imshow(dilatada_matlab) title('Dilatacion con "imdilate" de Matlab') erosionada_matlab=imerode(a,B); figure, subplot(1,2,1), imshow(erosionada) title('Erosion con algoritmo intuitivo') subplot(1,2,2), imshow(erosionada_matlab) title('Erosion con "imerode" de Matlab') -----------------------------------------AA=double(imread('A:\UTM\Noveno Semestre\Sistemas Expertos\imagenes\mdb001.pgm', 'pgm')); B=AA>240; %Binarizacion de la imagen a=B; [n,m]=size(a); B=[0 1 0;1 1 1;0 1 0]; erosionada=zeros(size(a)); for i=2:n-1 for j=2:m-1 erosionada(i,j)=a(i,j); if (a(i,j)==1 & (a(i,j-1)==0 | a(i-1,j)==0 | a(i,j+1)==0 | a(i+1,j)==0)) erosionada(i,j)=0; end end end derosionada_matlab=imerode(a,B); figure, subplot(1,2,1), imshow(erosionada) title('Erosion con algoritmo intuitivo') subplot(1,2,2), imshow(erosionada_matlab) title('Erosion con "imerode" de Matlab') -----------------------------------------------I = imread('A:\UTM\Noveno Semestre\Sistemas Expertos\imagenes\mdb001.pgm','pgm') ; S = qtdecomp(I,.001); blocks = repmat(uint8(0),size(S)); x=(1:1:255) for dim = x numblocks = length(find(S==dim)); if (numblocks > 0) values = repmat(uint8(1),[dim dim numblocks]); values(2:dim,2:dim,:) = 0; blocks = qtsetblk(blocks,S,dim,values); end end blocks(end,1:end) = 1; blocks(1:end,end) = 1; imshow(I), figure, imshow(blocks,[])

S-ar putea să vă placă și