In=Im
for a=1:4
for i=2:m-1
for j=2:n-1
if Im(i,j)==1
if Im(i-1,j) + Im(i-1,j+1) +Im(i,j+1) + Im(i+1,j+1) + Im(i+1,j) + Im(i+1,j-1) + Im(i,j-1) + Im(i-1,j-1) <=3
In(i,j)=0
end
end
if Im(i,j)==0
if Im(i-1,j) + Im(i-1,j+1) +Im(i,j+1) + Im(i+1,j+1) + Im(i+1,j) + Im(i+1,j-1) + Im(i,j-1) + Im(i-1,j-1) >=7
In(i,j)=1
end
end
end
end
Im=In
end
你是要用什么滤波器呢 ,我这里有一个程序,用均值和中值两种方法:g=imread('E:\1.jpg') %读入图像的具体位置,
v=imnoise(g,'salt &pepper',0.1)
subplot(2,2,1)
imshow(g)
title('orginal image')
subplot(2,2,2)
imshow(v)
title('noise image')
[h,w]=size(v)
n=9
f=double(v)
a=ones(n,n)
y=f
for i=1:h-n+1
for j=1:w-n+1
a=f(i:i+(n-1),j:j+(n-1))
s=sum(sum(a))
y(i+(n-1)/2,j+(n-1)/2)=s/(n*n)
end
end
subplot(2,2,3)
imshow(uint8(y))
title('noise reduction by average filter')
x=f
for i=1:h-n+1
for j=1:w-n+1
c=f(i:i+(n-1),j:j+(n-1))
e=c(1,:)
for u=2:n
e=[e,c(u,:)]
end
mm=median(e)
x (i+(n-1)/2,j+(n-1)/2)=mm
end
end
subplot(2,2,4)
imshow(uint8(x))
title('noise reduction by median filter')
图像去噪步骤:
1. 打开Matlab 编程环境;
2. 利用’imread’ 函数读入包含噪声的原始图像数据;
3. 利用’imshow’ 显示所读入的图像数据;
4. 以3X3 大小为处理掩模,编写代码实现中值滤波算法,并对原始噪声
图像进行滤波处理;
5. 利用’imshow’ 显示处理结果图像数据;
6. 利用’imwrite’ 函数保存图像处理结果数据。
频域平滑滤波步骤
1. 打开Matlab 编程环境;
2. 利用’imread’ 函数读入图像数据;
3. 利用’imshow’ 显示所读入的图像数据;
4. 将图像数据由’uint8’ 格式转换为’double’ 格式,并将各点数据乘以
(-1)x+y 以便FFT 变换后的结果中低频数据处于图像中央;
5. 用’fft2’ 函数对图像数据进行二维FFT 变换,得到频率域图像数据;
6. 计算频率域图像的幅值并进行对数变换,利用’imshow’ 显示频率域图
像;
7. 在频率图像上去除滤波半径以外的数据(置0);
8. 计算频率域图像的幅值并进行对数变换,利用’imshow’ 显示处理过的
频域图像数据;
9. 用’ifft2’ 函数对图像数据进行二维FFT 逆变换,并用’real’函数取其实
部,得到处理过的空间域图像数据;
10. 将图像数据各点数据乘以(-1)x+y;
11. 利用’imshow’ 显示处理结果图像数据;
12. 利用’imwrite’函数保存图像处理结果数据。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)