求MATLAB代码图像去噪的

求MATLAB代码图像去噪的,第1张

Im=Icc

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’函数保存图像处理结果数据。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11096568.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存