Home > PR > regu_modelo_ar8.m

regu_modelo_ar8

PURPOSE ^

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

SYNOPSIS ^

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

DESCRIPTION ^

 function [objeto]=regu_modelo_ar8(Imobservada,b,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_AR8]=regu_modelo_ar8(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_ar8(Imobservada,b,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_AR8]=regu_modelo_ar8(BlurredNoisy,PSF,lambdas,N,M,criterio_lambda,pinta);
0012 %
0013 
0014 
0015 function [restaurada]=regu_modelo_ar8(Imobservada,b,lambdas,N,M,criterio_lambda,pinta);
0016 
0017 [dummy,noiseest]=wiener2(Imobservada,[3 3]);
0018 
0019 [fil,col]=size(Imobservada);
0020 
0021 
0022 nver = fil/N;
0023 nhor = col/N;
0024 
0025 objetoparaoverlapping = rand(nver*M,nhor*N);
0026 
0027 
0028 restaurada=rand([fil,col]); 
0029 
0030 a=(M-N)/2;
0031 
0032 Im2=ampliaconborde(Imobservada,a);
0033 
0034 
0035 
0036 
0037 nlamb=length(lambdas);
0038 
0039 
0040 
0041 % El operador de blurring en el dominio de Fourier
0042 
0043 B=freqz2(b,M,M);
0044 
0045 B=ifftshift(B);
0046 
0047 
0048 
0049 contadorfilas=0; 
0050 
0051 for i=N/2:N:fil
0052    %fprintf('\nFila %d : ',i)
0053    contadorfilas = contadorfilas+1;
0054    contadorcolumnas = 0;
0055 
0056    for j=N/2:N:col
0057       %fprintf('%d, ',j)
0058       contadorcolumnas = contadorcolumnas + 1;
0059  
0060   
0061       observado=Im2(i+a-M/2+1:i+a+M/2,j+a-M/2+1:j+a+M/2);
0062       
0063                   
0064       cub=fft2(observado);
0065 
0066       % Ahora construyo un operador para este bloque
0067 
0068       % Obtengo los coeficientes de un modelo AR no-causal
0069       %
0070       %          a(8)  a(7)  a(6)
0071       %          a(5)   x    a(4)
0072       %          a(3)  a(2)  a(1)
0073       %
0074       % donde la x representa el elemento (i,j) que deseamos estimar a
0075       % partir de los anteriores
0076       
0077       [PSD,operador,coef_ar] = ajusta_bloque_ar8(observado);
0078 
0079 
0080       % Una vez tenemos el operador restauramos el bloque
0081 
0082       [sol]=restaura_bloque(observado,B,operador,M,N,lambdas,criterio_lambda);
0083 
0084 
0085       restaurada(i-N/2+1:i+N/2,j-N/2+1:j+N/2)=sol(a+1:a+N,a+1:a+N);
0086       
0087       if (pinta==1)
0088          imshow(restaurada,[0 256],'notruesize'),pause(0.2);
0089       end
0090            
0091       
0092       objetoparaoverlapping((contadorfilas-1)*M+1:contadorfilas*M,(contadorcolumnas-1)*M+1:contadorcolumnas*M) = sol;
0093       
0094 
0095    end
0096 end
0097 
0098 restaurada = do_overlap(objetoparaoverlapping,M,N,8);
0099 
0100 
0101

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