发布网友 发布时间:2022-04-22 23:57
共2个回答
热心网友 时间:2023-07-12 14:30
俺茶饭不思,辗转反侧多年,程序如下:
%高斯噪声下的滤波
image=imread('bacteria.tif');
[m,n]=size(image);
image1=imnoise(image,'Gaussian',0,0.002); %加高斯噪声
image1=double(image1); %将uint8转换成双精度
figure,imagesc(image1),colormap(gray) %显示滤波前的图像
%Sigma滤波
image2=image1;
for i=3:m-2
for j=3:n-2
temp=image1(i-2:i+2,j-2:j+2);
q=std(temp(:));
max=image1(i,j)+2*q;
min=image1(i,j)-2*q;
temp1=zeros(5,5);
temp2=temp;
t=0;
for r=1:5
for s=1:5
if temp2(r,s)<=max & temp2(r,s)>=min
temp1(r,s)=temp2(r,s);
t=t+1;
else
temp1(r,s)=0;
end
end
end
tem=sum(temp1(:))/t;
image2(i,j)=tem;
end
end %做5×5的模板,计算模板的标准差σ,置信区间为当前像素值的±2σ范围。将模板中落在置信范围内的像素的均值替换原来的像素值
figure,imagesc(image2),colormap(gray) %显示滤波后的图像
加分!
热心网友 时间:2023-07-12 14:30
具体的内容(算法)没有细看,
看到你的运行错误,是说(你的那个if语句中):
MATLAB里面与、或操作应当是
&、|
而不是
&&、||