Home > PR > regu_modelo_ar12.m

regu_modelo_ar12

PURPOSE ^

function [objeto]=regu_modelo_ar12(Imobservada,b,noise,lambdas,N,M,criterio_lambda,pinta);

SYNOPSIS ^

function [restaurada]=regu_modelo_ar12(Imobservada,b,lambdas,N,M,criterio_lambda,pinta);

DESCRIPTION ^

 function [objeto]=regu_modelo_ar12(Imobservada,b,noise,lambdas,N,M,criterio_lambda,pinta);

   Dada una imagen observada que ha pasado por un proceso de degradación  representado
   por PSF y a la que se ha añadido ruido, se intenta regularizar 
   utilizando Wiener, a partir de una estimación del espectro 
   modelizando la señal mediante un modelo autorregresivo 
   
      
      EJEMPLO                                                                        
                                                                                     
      [Irest_AR]=regu_modelo_ar12(BlurredNoisy,PSF,lambdas,N,M,criterio_lambda,pinta);

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 % function [objeto]=regu_modelo_ar12(Imobservada,b,noise,lambdas,N,M,criterio_lambda,pinta);
0002 %
0003 %   Dada una imagen observada que ha pasado por un proceso de degradación  representado
0004 %   por PSF y a la que se ha añadido ruido, se intenta regularizar
0005 %   utilizando Wiener, a partir de una estimación del espectro
0006 %   modelizando la señal mediante un modelo autorregresivo
0007 %
0008 %
0009 %      EJEMPLO
0010 %
0011 %      [Irest_AR]=regu_modelo_ar12(BlurredNoisy,PSF,lambdas,N,M,criterio_lambda,pinta);
0012 %
0013 
0014 
0015 function [restaurada]=regu_modelo_ar12(Imobservada,b,lambdas,N,M,criterio_lambda,pinta);
0016 
0017 [dummy,noiseest]=wiener2(Imobservada,[2 2]);
0018 
0019 
0020 [fil,col]=size(Imobservada);
0021 
0022 restaurada = zeros(fil,col);
0023 
0024 nver = fil/N;
0025 nhor = col/N;
0026 
0027 objetoparaoverlapping = rand(nver*M,nhor*N);
0028 
0029 
0030 a=(M-N)/2;
0031 
0032 Im2=ampliaconborde(Imobservada,a);
0033 
0034 nlamb=length(lambdas);
0035 
0036 
0037 
0038 % Obtenemos el operador de blurring en el dominio de Fourier
0039 
0040 B=freqz2(b,M,M);
0041 
0042 B=ifftshift(B);
0043 
0044 
0045 
0046 
0047 contadorfilas=0; 
0048 
0049 valorlambda = 0;
0050 
0051 
0052 for i=N/2:N:fil
0053    %fprintf('\nFila %d : ',i)
0054    contadorfilas = contadorfilas+1;
0055    contadorcolumnas = 0;
0056 
0057    for j=N/2:N:col
0058       %fprintf('%d, ',j)
0059       contadorcolumnas = contadorcolumnas + 1;
0060   
0061    
0062       observado=Im2(i+a-M/2+1:i+a+M/2,j+a-M/2+1:j+a+M/2);
0063       
0064       
0065       [PSD,operador,coef_ar] = ajusta_bloque_ar12(observado);
0066 
0067       % Una vez tenemos el operador restauramos el bloque
0068 
0069       [sol]=restaura_bloque(observado,B,operador,M,N,lambdas,criterio_lambda);
0070 
0071 
0072       restaurada(i-N/2+1:i+N/2,j-N/2+1:j+N/2)=sol(a+1:a+N,a+1:a+N);
0073       
0074       if (pinta==1)
0075          imshow(restaurada,[0 256],'notruesize'),pause(0.2);
0076       end
0077            
0078       
0079       objetoparaoverlapping((contadorfilas-1)*M+1:contadorfilas*M,(contadorcolumnas-1)*M+1:contadorcolumnas*M) = sol;
0080       
0081 
0082    end
0083 end
0084 
0085 restaurada = do_overlap(objetoparaoverlapping,M,N,8);
0086 
0087

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