一、获取代码方式
获取代码方式1:
完整代码已上传我的资源:【图像去噪】基于matlab各向异性滤波图像去噪【含Matlab源码 1894期】
获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。
备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);
二、各向异性滤波图像去噪简介
图像滤波和去噪是图像处理中非常基础和重要的技术, 常用的方法是采用一种滤波器, 在滤除图像噪声的同时, 尽可能地保留图像中的结构和纹理等信息不被破坏.传统方法中的高斯、中值等滤波, 虽然能够去除噪声, 但是图像的细节如边缘信息等也被同时滤除.双边滤波虽然可以兼顾去噪和保留边缘的特性, 但是计算极其耗时, 制约了它的实用性.各向异性扩散滤波是一种兼顾去噪和保留图像边缘的方法, 它模拟热量传递原理, 在同质区域热量可以扩散, 而在非同质区域 (存在边缘的位置) 热传递减弱.但是该方法需要设置一个迭代次数的参数, 判定何时终止扩散处理.如果迭代次数过少, 噪声滤除不完全, 迭代次数过多, 容易导致图像本身的边缘细节信息丢失.因此, 如何得到一个自动选择迭代终止的条件, 对滤波效果非常重要.文献[3]利用梯度阈值, 构建了一个随着时间变化逐渐递减的函数作为迭代终止准则, 但为了得到自适应参数, 每次迭代时需要保留边缘信息;利用原始图像和去噪图像之间的保真程度作为终止条件, 但去噪不充分.本文通过分析各向异性扩散滤波中, 扩散函数和扩散常数对滤波效果的影响, 利用压缩图像中判别压缩质量好坏的峰值信噪比作为迭代终止条件, 在有效去除图像噪声的同时, 能够保持图像的边缘信息不被过度滤除, 为图像滤波和去噪研究提供参考.
1 各向异性扩散滤波
Perona等提出的各向异性扩散滤波, 采用的是一种扩散处理的方式, 即在同质平坦区域使噪声逐步平滑, 当遇到非同质的边界区域时, 则抑制平滑, 其数学表达为
(2) 式可以根据图像的局部信息控制扩散强度, 图像的边缘保留以及噪声滤除就是通过扩散函数来控制的.常用的两个扩散函数如下:
图1 图像梯度与扩散函数乘积的分布曲线
其中K为扩散常数.从扩散函数的表达式可以看出, K值在很大程度上决定了同质区域和非同质区域的界线, 对滤波效果的影响很大.令Φ表示扩散函数和梯度的乘积关系, 有
对于二维图像滤波, 可以使用4邻域上的扩散滤波, 分别代表在东南西北4个方向上扩散, 滤波过程的表达式为
三、部分源代码
clear;clc
s = phantom(512) + randn(512);
num_iter = 15;
delta_t = 1/7;
kappa = 20;
option = 2;
ad = anisodiff2D(s,num_iter,delta_t,kappa,option);
figure, subplot 121, imshow(s,[]), subplot 122, imshow(ad,[])
四、运行结果
五、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
[5]莫绍强.基于各向异性扩散滤波的图像去噪研究[J].内蒙古师范大学学报(自然科学汉文版). 2017,46(01)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除