Diferencia entre revisiones de «Cosas temporales para cursos»

De Grupo de Inteligencia Computacional (GIC)
Sin resumen de edición
Sin resumen de edición
Línea 3: Línea 3:
algunos codigos matlab para vision por computador
algunos codigos matlab para vision por computador


[[Imagen:Girasol.png]]
[[Imagen:Girasol.png|200px|thumb|]]
****************************
****************************



Revisión del 12:51 10 oct 2011

transparencias para el curso de vision [1]

algunos codigos matlab para vision por computador

Girasol.png

%descomposicion en planos de bits x es la imagen original

x=double(cara); plano_8=floor(x/2^7);

x=rem(x,2^7);

plano_7=floor(x/2^6);

x=rem(x,2^6);

plano_6=floor(x/2^5);

x=rem(x,2^5);

plano_5=floor(x/2^4);

x=rem(x,2^4); plano_4=floor(x/2^3);

x=rem(x,2^3); plano_3=floor(x/2^2);

x=rem(x,2^2); plano_2=floor(x/2^1);

x=rem(x,2^1); plano_1=x;


figure(1) subplot(2,4,1) imshow(plano_8) subplot(2,4,2) imshow(plano_7) subplot(2,4,3) imshow(plano_6) subplot(2,4,4) imshow(plano_5) subplot(2,4,5) imshow(plano_4) subplot(2,4,6) imshow(plano_3) subplot(2,4,7) imshow(plano_2) subplot(2,4,8) imshow(plano_1)

% reconstruccion a partir de los planos de bits

reconstruccion=zeros(size(cara));

reconstruccion=plano_1; reconstruccion=reconstruccion + plano_2*2^1; reconstruccion=reconstruccion + plano_3*2^2; reconstruccion=reconstruccion + plano_4*2^3; reconstruccion=reconstruccion + plano_5*2^4; reconstruccion=reconstruccion + plano_6*2^5; reconstruccion=reconstruccion + plano_7*2^6; reconstruccion=reconstruccion + plano_8*2^7; figure (2) imshow(reconstruccion, gray(256))

% reconstruccion con un watermark sencillo en el primer plano de bits

reconstruccion=zeros(size(cara));


reconstruccion(20:80,20:80)=fspecial('disk',30)>0;

reconstruccion=reconstruccion + plano_2*2^1; reconstruccion=reconstruccion + plano_3*2^2; reconstruccion=reconstruccion + plano_4*2^3; reconstruccion=reconstruccion + plano_5*2^4; reconstruccion=reconstruccion + plano_6*2^5; reconstruccion=reconstruccion + plano_7*2^6; reconstruccion=reconstruccion + plano_8*2^7; figure (3) imshow(reconstruccion, gray(256))


function modelo=construir_modelo(nimagen) cd orlfaces d=dir; modelo=zeros(112,92,size(d,1)-2); for i=3:size(d,1);

   cd (d(i).name)
   ds=dir;
   modelo(:,:,i-2)=imread(ds(nimagen+2).name);
   cd ..

end cd ..

function modelo=construir_modelo_LOO cd orlfaces d=dir; modelo=zeros(112,92,size(d,1)-2,10); for i=3:size(d,1);

   cd (d(i).name)
   ds=dir;
   for j=3:size(ds,1)
       modelo(:,:,i-2,j-2)=imread(ds(j).name);
   end
   cd ..

end cd ..

function [error_acumulado, matriz_confusion]=calcular_error_test(modelo,nimagen)

cd orlfaces d=dir; nclases=size(d,1)-2; distancia=zeros(nclases,1); matriz_confusion=zeros(nclases); error_acumulado=0; for i=3:size(d,1);

    cd(d(i).name)
    ds=dir;
    for j=3:size(ds,1)
        if j ~= nimagen + 2
            y=double(imread(ds(j).name));
            for k=1:size(d,1)-2
                distancia(k)=sum(sum(abs(modelo(:,:,k)-y)));
            end

%

            [dmin, clase]=min(distancia);
            matriz_confusion(i-2,clase)=matriz_confusion(i-2,clase)+1;
            error= (i-2) ~=clase;
            error_acumulado= error_acumulado + error;
        end
    end
    
    cd ..

end

cd ..

function [aciertos, error_acum]=calculo_error_LOO(m) m=double(m); [filas,cols,nsujetos,nimagenes]=size(m) error_acum=0; aciertos=0; for i=1:40

   i
   for j=1:10
       test=squeeze(m(:,:,i,j));
       distancias=zeros(nsujetos,nimagenes);
       
       for k=1:nsujetos
           for l=1:nimagenes
               
               distancias(k,l)=norm(test-m(:,:,k,l));
           end
       end
       distancias(distancias==0)=inf;
       [mincols rowinds]=min(distancias);
       [minglobal colind]=min(mincols);
       clase=rowinds(colind);
       if clase==i
           aciertos=aciertos+1;
       else
           error_acum=error_acum+1;
       end
   end

end