Home > PR > regu_naive.m

regu_naive

PURPOSE ^

function [objeto]=regu_naive(Imobservada,b,N,M);

SYNOPSIS ^

function [restaurada]=regu_naive(Imobservada,b,N,M);

DESCRIPTION ^

 function [objeto]=regu_naive(Imobservada,b,N,M);

   Dada una imagen observada que ha pasado por un proceso de degradación  representado
   por b y a la que se ha añadido ruido, se intenta regularizar utilizando la 
   pseudoinversa en el dominio frecuencial. N es el tamaño del bloque
   y M es el tamaño del bloque más un borde, esto se hace para que los efectos de borde
   no se vean en la solución. 
   Se devuelve tambien la imagen con los bloques sin procesar para hacer el overlapping

      
      EJEMPLO                                                                        
                                                                                     
      N = 16;                                                                          
      M = 44;                                                                          
      val = 0.1;

      figure,[Irest]=regu_naive(BlurredNoisy,PSF,N,M);

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 % function [objeto]=regu_naive(Imobservada,b,N,M);
0002 %
0003 %   Dada una imagen observada que ha pasado por un proceso de degradación  representado
0004 %   por b y a la que se ha añadido ruido, se intenta regularizar utilizando la
0005 %   pseudoinversa en el dominio frecuencial. N es el tamaño del bloque
0006 %   y M es el tamaño del bloque más un borde, esto se hace para que los efectos de borde
0007 %   no se vean en la solución.
0008 %   Se devuelve tambien la imagen con los bloques sin procesar para hacer el overlapping
0009 %
0010 %
0011 %      EJEMPLO
0012 %
0013 %      N = 16;
0014 %      M = 44;
0015 %      val = 0.1;
0016 %
0017 %      figure,[Irest]=regu_naive(BlurredNoisy,PSF,N,M);
0018 %
0019 
0020 
0021 function [restaurada]=regu_naive(Imobservada,b,N,M);
0022 
0023 [fil,col]=size(Imobservada);
0024 
0025 objeto=rand([fil,col]); 
0026 
0027 nver = fil/N;
0028 nhor = col/N;
0029 
0030 objetoparaoverlapping = rand(nver*M,nhor*N);
0031 
0032 
0033 a=(M-N)/2;
0034 
0035 Im2=ampliaconborde(Imobservada,a);
0036 
0037 
0038 B=freqz2(b,M,M);
0039 
0040 B=ifftshift(B);
0041 
0042 BB = abs(B).^2;  
0043 Bconj = conj(B); 
0044 
0045 contadorfilas=1; 
0046   
0047 for i=M/2:N:fil+a
0048    i
0049    contadorcolumnas=1;
0050    for j=M/2:N:col+a
0051     
0052       
0053  
0054       observado=Im2(i-M/2+1:i+M/2,j-M/2+1:j+M/2);
0055 
0056       cub=fft2(observado);
0057 
0058       Hinv=Bconj./BB;
0059 
0060       fftsol = Hinv.*cub;
0061          
0062       sol=real(ifft2(fftsol));
0063          
0064       solefectiva=sol(a+1:a+N,a+1:a+N);
0065       
0066       %objeto(i-a-N/2+1:i-a+N/2,j-a-N/2+1:j-a+N/2)=deraster(Objetos(:,pos),N,N);;
0067       
0068       objeto(i-a-N/2+1:i-a+N/2,j-a-N/2+1:j-a+N/2)=solefectiva;
0069 
0070       objetoparaoverlapping((contadorfilas-1)*M+1:contadorfilas*M,(contadorcolumnas-1)*M+1:contadorcolumnas*M) = sol;
0071 
0072       
0073       %figure(2),imshow(objeto,[0 256]),pause(0.1);
0074       %colormap(gray);imagesc(objeto),pause(0.1);
0075       contadorcolumnas=contadorcolumnas+1;
0076    end
0077    contadorfilas=contadorfilas+1;
0078 end
0079 
0080 
0081 
0082 restaurada = do_overlap(objetoparaoverlapping,M,N,4);
0083  
0084  
0085  
0086  
0087

Generated on Wed 29-Nov-2006 16:19:19 by m2html © 2003