Home > PR > degrada2.m

degrada2

PURPOSE ^

DEGRADA2 crea una imagen degradada test usando una PSF espacialmente

SYNOPSIS ^

function [Id,PSF,H,noise,Blurred]=degrada2(Im,fc,Val_min,lim_frec,vari);

DESCRIPTION ^

   DEGRADA2 crea una imagen degradada test usando una PSF espacialmente
   invariante h (filtro pasa-baja gaussiano con frecuencia de corte normalizada 
   fc, 0<fc<1 -siendo 1 la frecuencia de Nyquist-).
   Ademas, aņade un ruido coloreado isotropo 
   en la banda 0<[f1,f2]<1 con la varianza que se le pida.

   NOTA: Con objeto de permitir la permanencia de seņales de frecuencia mayor 
   que la de corte, introducimos un valor 'val' en la respuesta en
   frecuencia.
   Como normalizamos la PSF para conservar la componente de continua de la
   seņal, el valor final de la respuesta en frecuencia para altas
   frecuencias no es 'val', sino ligeramente superior.
   En cualquier caso, el programa devuelve H (respuesta en frecuencia del
   filtro de emborronamiento), y el usuario puede controlar este valor.
   Seleccionando val=0 no se introduce ninguna modificacion en la
   normalizacion.

    La imagen degradada resultante es:
    Id = conv2(Im,h) + ruido;


    PARAMETROS:

    Im: imagen a degradar
    fcorte: frecuencia de corte de la PSF
    val: parametro para controlar el valor de la respuesta en frecuencia 
         por encima de la frecuencia de corte
    [f1 f2]: Vector con las frecuencias de la banda del ruido coloreado.
    vari: varianza del ruido aditivo.

    DEVUELVE:
    Id:  imagen degradada    
    PSF: filtro emborronamiento utilizado
    H: respuesta en frecuencia H=abs(freqz2(PSF));
    noise: ruido aņadido a la imagen
    blurred: imagen emborronada antes de aņadir el ruido
    
    USO:
    [Imdegradada,PSF,H,noise,Blurred]=degrada2(imagen,fcorte,Val_min,[f1 f2],varianza);

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 %
0002 %   DEGRADA2 crea una imagen degradada test usando una PSF espacialmente
0003 %   invariante h (filtro pasa-baja gaussiano con frecuencia de corte normalizada
0004 %   fc, 0<fc<1 -siendo 1 la frecuencia de Nyquist-).
0005 %   Ademas, aņade un ruido coloreado isotropo
0006 %   en la banda 0<[f1,f2]<1 con la varianza que se le pida.
0007 %
0008 %   NOTA: Con objeto de permitir la permanencia de seņales de frecuencia mayor
0009 %   que la de corte, introducimos un valor 'val' en la respuesta en
0010 %   frecuencia.
0011 %   Como normalizamos la PSF para conservar la componente de continua de la
0012 %   seņal, el valor final de la respuesta en frecuencia para altas
0013 %   frecuencias no es 'val', sino ligeramente superior.
0014 %   En cualquier caso, el programa devuelve H (respuesta en frecuencia del
0015 %   filtro de emborronamiento), y el usuario puede controlar este valor.
0016 %   Seleccionando val=0 no se introduce ninguna modificacion en la
0017 %   normalizacion.
0018 %
0019 %    La imagen degradada resultante es:
0020 %    Id = conv2(Im,h) + ruido;
0021 %
0022 %
0023 %    PARAMETROS:
0024 %
0025 %    Im: imagen a degradar
0026 %    fcorte: frecuencia de corte de la PSF
0027 %    val: parametro para controlar el valor de la respuesta en frecuencia
0028 %         por encima de la frecuencia de corte
0029 %    [f1 f2]: Vector con las frecuencias de la banda del ruido coloreado.
0030 %    vari: varianza del ruido aditivo.
0031 %
0032 %    DEVUELVE:
0033 %    Id:  imagen degradada
0034 %    PSF: filtro emborronamiento utilizado
0035 %    H: respuesta en frecuencia H=abs(freqz2(PSF));
0036 %    noise: ruido aņadido a la imagen
0037 %    blurred: imagen emborronada antes de aņadir el ruido
0038 %
0039 %    USO:
0040 %    [Imdegradada,PSF,H,noise,Blurred]=degrada2(imagen,fcorte,Val_min,[f1 f2],varianza);
0041 
0042 
0043 function [Id,PSF,H,noise,Blurred]=degrada2(Im,fc,Val_min,lim_frec,vari);
0044 
0045 N=size(Im);
0046 
0047 % Extension en pixels del filtro
0048 Numpf = 11;
0049 
0050 [f1,f2] = freqspace(Numpf,'meshgrid');
0051 Hd = ones(Numpf);
0052 r = sqrt(f1.^2 + f2.^2);
0053 Hd(r>fc) = Val_min;
0054 win = fspecial('gaussian',Numpf,2);
0055 win = win ./ max(win(:));  % Make the maximum window value be 1.
0056 PSF = fwind2(Hd,win);
0057 PSF=PSF/sum(sum(PSF));
0058 H=abs(freqz2(PSF));
0059 
0060 % inc=0.0001;
0061 %
0062 % while abs(inc)>0.000001
0063 %      Hd = ones(Numpf);
0064 %      Hd(r>fc) = Val_min+0.1*inc;
0065 %      win = fspecial('gaussian',Numpf,2);
0066 %      win = win ./ max(win(:));  % Make the maximum window value be 1.
0067 %      PSF = fwind2(Hd,win);
0068 %      PSF=PSF/sum(sum(PSF));
0069 %
0070 %      H=freqz2(PSF);
0071 %      vm=min(min(abs(H)))
0072 %
0073 %      inc=Val_min-vm;
0074 %      pause
0075 % end
0076 
0077 % Convolucion de la imagen con el filtro de emborronamiento
0078 % Primero amplia la imagen antes de convolucionar para evitar efectos de
0079 % borde...
0080 Im2 = ampliaconborde(Im,10);
0081 
0082 Im2 = conv2(Im2,PSF,'same');
0083 
0084 Blurred = Im2(11:11+N(1)-1,11:11+N(2)-1);
0085 
0086 [f1,f2] = freqspace(N,'meshgrid');
0087 r = sqrt(f1.^2 + f2.^2);
0088 Hruido=(r>=lim_frec(1))&(r<=lim_frec(2));
0089 tfruido=Hruido.*exp(sqrt(-1)*2*pi*rand(N));
0090 ruido=real(ifft2(fftshift(tfruido)));
0091 varruido=var(ruido(:));
0092 
0093 noise = sqrt(vari)*ruido/sqrt(varruido);
0094 
0095 Id = Blurred + noise;

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