【达人帮忙】图像加噪处理,显示图像不正常
根据一篇文献上的方法来增加低对比度图像的对比度,增强显示效果。但是程序执行后,第一副图显示正常,第二幅图显示的是全白色,通过查看矩阵,明显显示问题,矩阵没有问题。
这种问题该怎么解决?谢谢
同时,若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 的帖子
问题解决了是因为imshow在处理double类型数据时,大于1的都是白色
我修改了一下最后面就可以了
Imin=min(I(:));
Imax=max(I(:));
I=(I-Imin)/(Imax-Imin);
figure(2);
imshow(I);
页:
[1]