xiuhuwang 发表于 2009-5-21 00:30

【达人帮忙】图像加噪处理,显示图像不正常

根据一篇文献上的方法来增加低对比度图像的对比度,增强显示效果。
但是程序执行后,第一副图显示正常,第二幅图显示的是全白色,通过查看矩阵,明显显示问题,矩阵没有问题。
这种问题该怎么解决?谢谢
同时,若I=double(I)在imshow(I)前面的话,第一张图也显示全白。
所以我后面把矩阵化整,但是同样得不到正确结果。

a=0;      %PSNR
b=0.3;
Pold=0;   %initial PSNR
Pnew=0;
h=0;      %Bm
k=0;      %Sm
n=0;

I=imread('lene1.bmp');
I=rgb2gray(I);
=size(I);
figure(1);
imshow(I);
I=double(I);

M=zeros(m,n);


while Pold<=Pnew
   
    Pold=Pnew
   
    b=b+0.01
   
    for i=1:m
      for j=1:n
            h=h+I(i,j);
      end
    end
    Bm=h/m/n;
    %S'
    for i=1:1:m
      for j=1:1:n
            k=k+I(i,j)^2;
      end
    end
    Sm=k/m/n;
    deta=b*(1+(1-3^0.5*(Sm/Bm^2))^0.5)^0.5

    for i1=1:20
      H=randn(m,n);
      H=b.*H;
      Hmin=min(H(:));
      Hmax=max(H(:));
      H=(H-Hmin)/(Hmax-Hmin);
      for i2=1:m
            for j2=1:n
                if H(i2,j2)>=deta
                  H(i2,j2)=255;
                else
                  H(i2,j2)=0;
                end
            end
            M=M+H;
      end
    end
    M=M./20;
    N=M+I;
    Nmin=min(N(:));
    Nmax=max(N(:));
    N=(N-Nmin)/(Nmax-Nmin);
    N=255.*N;      
   
    % new PSNR
    for i3=1:m
      for j3=1:1:n
            a=a+(N(i,j)-I(i,j))^2;
      end
    end
    Pnew=10*log10(255^2*m*n/a);
   
    N=floor(N);
    I=N;    %reset I
end

figure(2);
imshow(I);

xiuhuwang 发表于 2009-5-21 01:22

回复 楼主 xiuhuwang 的帖子

问题解决了
是因为imshow在处理double类型数据时,大于1的都是白色
我修改了一下最后面就可以了
Imin=min(I(:));
Imax=max(I(:));
I=(I-Imin)/(Imax-Imin);
figure(2);
imshow(I);
页: [1]
查看完整版本: 【达人帮忙】图像加噪处理,显示图像不正常