xiuhuwang 发表于 2009-5-25 15:06

研究随机共振的朋友请进,帮忙看一下

利用随机共振对失真的图象进行处理,恢复到好的效果。
我把原始图像I0的灰度图,把大于100的变成白色,其余的为黑色,相当与二值处理了,得到I。
利用随机共振处理这个图像,为图像加不同方差的高斯噪声。对每个不同的方差,产生100副图像,然后平均得到随机共振图像SR_M
其中的控制条件就是I0和SR_M的PSNR值,当最大的时候效果是最好的,这时候输出SR_M。目前我利用下面的程序对图像恢复确实得到了很好的效果,但是这个过程中我加了一步,就是对不同的sigma,得到100副图后,我又加了I,这一步应该没有。可是没有的话又得不到很好的效果。
所以请懂随机共振的朋友帮忙看下,是否有问题。
同时:利用imnoise加gaussian噪声,我把方差都搞到了25,是不是很变态?

程序,附件中也有:
b=25;
Pold=0;   %initial PSNR
Pnew=1;


I0=imread('lenaindaytime.bmp');
I0=rgb2gray(I0);
=size(I0);
figure(1),imshow(I0);


I0=double(I0);
I=I0-100;
figure(2),imshow(I);
% I=double(I);

M=zeros(m,n);


for i0=1:5
    Pold=Pnew;
    b=b+1;         %square deviation
  
    %B
    Bm=mean(mean(I),2);
  
    %S'
    S=fft2(I);
    Sm=mean(mean(S.^2),2);
  
  
 %deta
    deta=b*(1+(1-3^0.5*(Sm/Bm^2))^0.5)^0.5;

    for i3=1:100
        
        %gaussian nosie
        H=imnoise(I,'gaussian',0,b);
        Hmin=min(H(:));
        Hmax=max(H(:));
        H=(H-Hmin)/(Hmax-Hmin);
        H=255.*H;
        H=floor(H);
        for i4=1:m
          for j4=1:n
                if H(i4,j4)>=deta
                    H(i4,j4)=255;
                else
                    H(i4,j4)=0;
                end
          end
        end
        M=M+H;
    end
  
    N=M+I;
    Nmin=min(N(:));
    Nmax=max(N(:));
    N=(N-Nmin)/(Nmax-Nmin);
    N=255.*N;
    N=floor(N);

  
    %MSE
    MSE=mean(mean((I0-N).^2),2);
    % new PSNR
    Pnew=10*log10(255^2/MSE)
  
    %plot sigma=b & PSNR
    figure(3),plot(b,Pnew,'.');
    hold on
end

Nmin=min(N(:));
Nmax=max(N(:));
N=(N-Nmin)/(Nmax-Nmin);
figure(4),imshow(N);



[ 本帖最后由 xiuhuwang 于 2009-5-25 15:08 编辑 ]

llllxxxxtttt 发表于 2010-11-29 17:37

学习中!
页: [1]
查看完整版本: 研究随机共振的朋友请进,帮忙看一下