imdiffusefilt
图像的各向异性扩散滤波
描述
例子
利用各向异性扩散实现保边平滑
将图像读入工作区并显示它。
我= imread (“cameraman.tif”);imshow (I)标题(原始图像的)
利用各向异性扩散平滑图像。为了进行比较,还使用高斯模糊平滑图像。调整标准差σ
使纹理区域,如草地,在两种方法中被平滑的量相似。
Idiffusion = imdiffusefilt(我);σ= 1.2;Igaussian = imgaussfilt(我,σ);
显示结果。
蒙太奇({Idiffusion Igaussian},“ThumbnailSize”[])标题(使用各向异性扩散平滑(左)vs.高斯模糊(右))
各向异性扩散比高斯模糊更能保持边缘的锐度。
利用各向异性扩散进行边缘感知降噪
读取灰度图像,然后对其应用强高斯噪声。显示噪声图像。
我= imread (“pout.tif”);noisyImage = imnoise(我“高斯”, 0, 0.005);imshow (noisyImage)标题(“嘈杂的图像”)
计算结构相似指数(SSIM)来衡量噪声图像的质量。SSIM值越接近1,图像与无噪声参考图像的一致性越好。
n = ssim(我noisyImage);disp ([“噪声图像的SSIM值为”num2str (n),“。”])
噪声图像的SSIM值为0.26556。
利用各向异性扩散减小噪声。首先,尝试各向异性扩散滤波器的默认参数,并显示结果。
B = imdiffusefilt (noisyImage);imshow (B)标题(“带默认参数的各向异性扩散”)
nB = ssim(我,B);disp ([使用默认各向异性扩散的SSIM值为num2str (nB),“。”])
使用默认的各向异性扩散的SSIM值为0.65665。
图像仍然受到噪声的影响,因此需要改进滤波器。选择二次传导方法,因为图像的特征更多的是宽的均匀区域,而不是高对比度的边缘。方法估计最佳梯度阈值和迭代次数imdiffuseest
函数。显示结果图像。
[gradThresh, numIter] = imdiffuseest (noisyImage,“ConductionMethod”,“二次”);C = imdiffusefilt (noisyImage“ConductionMethod”,“二次”,...“GradientThreshold”gradThresh,“NumberOfIterations”, numIter);imshow (C)标题(“参数估计的各向异性扩散”)
数控= ssim (C);disp ([二次各向异性扩散的SSIM值为num2str (nC)“。”])
二次各向异性扩散的SSIM值为0.88135。
在得到的图像中,噪声不太明显。SSIM值更接近于1,这证实了图像的质量已经提高。
执行三维边缘感知降噪
加载一个有噪声的三维灰度MRI体积。
负载mristack
利用各向异性扩散对体积进行边缘感知降噪。为了防止大脑中低对比度的特征过于平滑,将默认的迭代次数减少到5次。这样做的好处是去除的噪音更少。
diffusedImage = imdiffusefilt (mristack,“NumberOfIterations”3);
为了更详细地比较噪声图像和滤波图像,显示两者的第十切片。
imshowpair (mristack (:: 10), diffusedImage (:,: 10),“蒙太奇”)标题(“噪声图像(左)vs.各向异性扩散滤波图像(右)”)
计算自然图像质量评估器(NIQE)在卷中所有切片上的平均得分。NIQE评分提供了一种不需要参考图像的图像质量定量测量方法。较低的NIQE分数反映了较好的感知图像质量。
nframes =大小(mristack, 3);m = 0;d = 0;为I = 1:nframes m = m + niqe(mristack(:,:, I));d = d + niqe(diffusedImage(:,:,i));结束mAvg = m / nframes;dAvg = d / nframes;disp ([“噪声音量的NIQE评分为”num2str (mAvg),“。”])
噪声音量的NIQE评分为5.7794。
disp ([使用各向异性扩散的NIQE评分为num2str (dAvg),“。”])
采用各向异性扩散的NIQE评分为4.1391。
NIQE评分与观察到的滤波后图像的降噪效果一致。
输入参数
我
- - - - - -图像过滤
二维灰度图像|三维灰度体积
要过滤的图像,指定为二维灰度图像的大小米——- - - - - -n或三维灰度体积大小米——- - - - - -n——- - - - - -k.
请注意
要将各向异性扩散滤波应用于彩色图像,请使用imdiffusefilt
在每个颜色通道上独立。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:imdiffusefilt(我“NumberOfIterations”4、“连接”,“最小”)
对图像进行各向异性扩散我
,使用4次迭代和最小的连通性。
GradientThreshold
- - - - - -梯度阈值
数字标量|数值向量
渐变阈值,指定为逗号分隔的对,由“GradientThreshold”
和一个数字标量或长度的数字向量NumberOfIterations
.的价值GradientThreshold
通过将梯度值分类为实际边缘或噪声来控制传导过程。增加的价值GradientThreshold
使图像更加平滑。默认值是图像动态范围的10%。您可以使用imdiffuseest
的合适值GradientThreshold
.
NumberOfIterations
- - - - - -的迭代次数
5
(默认)|正整数
在扩散过程中使用的迭代次数,指定为逗号分隔的对,由“NumberOfIterations”
一个正整数。您可以使用imdiffuseest
的合适值NumberOfIterations
.
连接
- - - - - -连接
“最大”
(默认)|“最低”
像素与其相邻像素的连通性,指定为逗号分隔的对,由“连接”
其中一个价值观是:
“最大”
-考虑2-D图像的8个最近邻居,3-D图像的26个最近邻居“最低”
-考虑2-D图像的4个最近邻居,3-D图像的6个最近邻居
ConductionMethod
- - - - - -传导方法
“指数”
(默认)|“二次”
传导方法,指定为逗号分隔的对组成“ConductionMethod”
而且“指数”
或“二次”
.指数扩散倾向于高对比度的边缘而不是低对比度的边缘。二次扩散更倾向于宽区域而不是小区域。
参考文献
[1]佩罗纳,P.和J.马利克。"利用各向异性扩散的尺度空间和边缘检测"IEEE®模式分析与机器智能汇刊.1990年7月,第12卷第7期,第629-639页。
[2]格里格,G., O.库布勒,R.基基尼斯,F. A.乔尔斯。MRI数据的非线性各向异性滤波。IEEE医学影像汇刊.第11卷第2期,1992年6月,第221-232页。
扩展功能
线程环境
在后台使用MATLAB®运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。万博1manbetx有关更多信息,请参见在线程环境中运行MATLAB函数.
版本历史
介绍了R2018aR2022b:万博1manbetx支持基于线程的环境
imdiffusefilt
现在支持万博1manbetx基于线程的环境。
另请参阅
imdiffuseest
|imfilter
|imgaussfilt
|imguidedfilter
|locallapfilt
|imnlmfilt
|specklefilt
(医学影像工具箱)
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。