数字图像处理之复原处理
数字图像处理之傅里叶变换
by方阳
版权声明:本文为博主原创文章,转载请指明转载地址
http://www.cnblogs.com/fydeblog/p/7070055.html
1. 前言
这篇博客主要介绍常见的噪声及其概率密度函数,并用MATLAB复原函数对退化图像进行复原处理。这里复原是指在图像已经有噪声污染的情况下复原,与直接用傅里叶正反变换不一样!
2. 原理说明
(1) 常见噪声:椒盐噪声和高斯噪声
椒盐噪声是指两种噪声,一种是盐噪声,另一种是胡椒噪声。盐=白色,椒=黑色。前者是高灰度噪声,后者属于低灰度噪声。一般两种噪声同时出现,呈现在图像上就是黑白杂点。概率函数两极分化;
高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声;
(2)图像复原是用去卷积函数实现的,用原图像卷积点扩散函数(点扩散函数即是一种运动模糊的算子),然后加入高斯噪声。然后用去卷积来恢复图像,有两种,一种不加入噪声估计,一种加入噪声估计,得到不同的恢复效果;
3. 实现内容
(1) 构造一个矩形方块图像,对其分别加入高斯和椒盐噪声,显示原始图像和噪声图像,及每个图片相对应的直方图。
(2) 任意选择一幅图像,对其使用运动模糊处理,再在模糊图像中加入高斯噪声,使用逆滤波和winner滤波对其进行去退化处理,比较效果,显示原始图像和复原图像。
4. 程序实现及实验结果
(1)噪声对图像直方图的影响
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | f(1000,1000)=0; f=mat2gray(f); [Y,X]= meshgrid (1:1000,1:1000); f(1:500,1:500)=1; f(500:1000,500:1000)=1; I=f; I1=imnoise(I, 'salt & pepper' ,0.02); I2=imnoise(I, 'gaussian' ,0,0.01); figure ; subplot (2,3,1); imshow(I); title ( '原图' ); subplot (2,3,2); imshow(I1); title ( '椒盐噪声后的图像' ); subplot (2,3,3); imshow(I2); title ( '高斯噪声后的图像' ); subplot (2,3,4); imhist(I); title ( '原图直方图' ); subplot (2,3,5); imhist(I1); title ( '椒盐噪声图像的直方图' ); subplot (2,3,6); imhist(I2); title ( '高斯噪声图像的直方图' ); |
运行结果:
(2)逆滤波与winner滤波
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | I_1= imread ( 'cameraman.tif' ); PSF=fspecial( 'motion' ,21,11); I3=imfilter(I_1,PSF, 'conv' , 'circular' ); I3=imnoise(I3, 'gaussian' ,0,0.0001); I4=deconvwnr(I3,PSF); I_1=im2double(I_1); estimated_nsr=0.0001/ var (I_1(:)); I5=deconvwnr(I3,PSF,estimated_nsr); figure ; subplot (2,2,1); imshow(I_1); title ( '原图' ); subplot (2,2,2); imshow(I3); title ( '模糊+噪声' ); subplot (2,2,3); imshow(I4); title ( '逆滤波' ); subplot (2,2,4); imshow(I5); title ( 'winner滤波' ); |
运行结果:
五. 结果分析
(1)从图1可以看出,原图(黑白图)直接是两极分化,加入椒盐噪声后直方图没有变化,因为椒盐噪声也是两极分化,加入高斯噪声可以看出直方图有高斯形状;
(2)从图2可以看出,用逆滤波出来的图像很不理想,用winner滤波出来的图像还行,看出图像恢复,信噪比是不可忽略的因素啊!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?