一副图像加高斯噪声之后,通过100次相加求和的方法除噪声,其matlab实现以及遇到的问题:源代码:
I=imread('C:Users1.png');
J=imnoise(I,'gaussian',0,0.02); %对图像进行加噪声
subplot(1,2,1),imshow(I); %显示图像
subplot(1,2,2),imshow(J);
K=zeros(270,669);
for i=1:1:100 %循环100对图像加噪声然后累加
J=imnoise(I,'gaussian',0,0.02);
J1=im2double(J);
K=K+J1;
end
K=K/100; %求图像的平均
figure;imshow(K); %显示处理过的图像
出现的问题:
Error using +
Matrix dimensions must agree.
解释:矩阵的维数必须一致 出错原因:这是由于运算符(=
+ - / * 等)两边的运算对象维数不匹配造成的,典型的出错原因是错用了矩阵运算符。matlab 通过“.”来区分矩阵运算和元素运算。
size(K)
size(J1)
就会得到不同的维度,因此需要将维度调制统一;
正确的代码如下:
I=imread('C:Users1.png');
J=imnoise(I,'gaussian',0,0.02); %对图像进行加噪声
subplot(1,2,1),imshow(I); %显示图像
subplot(1,2,2),imshow(J);
K=zeros(270,669);
%创建与原图像一样维数的全0矩阵
J1=im2double(J);
K=ones(size(J1));
for i=1:1:100 %循环100对图像加噪声然后累加
J=imnoise(I,'gaussian',0,0.02);
J1=im2double(J);
K=K+J1;
end
K=K/100; %求图像的平均
figure;imshow(K); %显示处理过的图像
小问题,码代码出来给自己看,以后一定注意,细节错误不要再犯。