主要内容

imdiffusefilt

图像的各向异性扩散滤波

描述

例子

J= imdiffusefilt (将各向异性扩散滤波应用于图像并返回结果J

例子

J= imdiffusefilt (名称,值使用名称-值对来改变各向异性扩散算法的行为。

例子

全部折叠

将图像读入工作区并显示它。

我= imread (“cameraman.tif”);imshow (I)标题(原始图像的

图中包含一个axes对象。标题为Original Image的axes对象包含一个Image类型的对象。

利用各向异性扩散平滑图像。为了进行比较,还使用高斯模糊平滑图像。调整标准差σ使纹理区域,如草地,在两种方法中被平滑的量相似。

Idiffusion = imdiffusefilt(我);σ= 1.2;Igaussian = imgaussfilt(我,σ);

显示结果。

蒙太奇({Idiffusion Igaussian},“ThumbnailSize”[])标题(使用各向异性扩散平滑(左)vs.高斯模糊(右)

图中包含一个axes对象。标题为“使用各向异性扩散平滑”(左)和“高斯模糊”(右)的轴对象包含一个类型为图像的对象。

各向异性扩散比高斯模糊更能保持边缘的锐度。

读取灰度图像,然后对其应用强高斯噪声。显示噪声图像。

我= imread (“pout.tif”);noisyImage = imnoise(我“高斯”, 0, 0.005);imshow (noisyImage)标题(“嘈杂的图像”

图中包含一个axes对象。标题为noiseimage的axes对象包含一个类型为Image的对象。

计算结构相似指数(SSIM)来衡量噪声图像的质量。SSIM值越接近1,图像与无噪声参考图像的一致性越好。

n = ssim(我noisyImage);disp ([“噪声图像的SSIM值为”num2str (n),“。”])
噪声图像的SSIM值为0.26556。

利用各向异性扩散减小噪声。首先,尝试各向异性扩散滤波器的默认参数,并显示结果。

B = imdiffusefilt (noisyImage);imshow (B)标题(“带默认参数的各向异性扩散”

图中包含一个axes对象。标题为“带默认参数的各向异性扩散”的轴对象包含一个类型为图像的对象。

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)标题(“参数估计的各向异性扩散”

图中包含一个axes对象。标题为“各向异性扩散估计参数”的轴对象包含一个类型为图像的对象。

数控= 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.各向异性扩散滤波图像(右)”

图中包含一个axes对象。标题为“噪声图像”(左)和“各向异性扩散过滤图像”(右)的轴对象包含一个类型为“图像”的对象。

计算自然图像质量评估器(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”和一个数字标量或长度的数字向量NumberOfIterations.的价值GradientThreshold通过将梯度值分类为实际边缘或噪声来控制传导过程。增加的价值GradientThreshold使图像更加平滑。默认值是图像动态范围的10%。您可以使用imdiffuseest的合适值GradientThreshold

在扩散过程中使用的迭代次数,指定为逗号分隔的对,由“NumberOfIterations”一个正整数。您可以使用imdiffuseest的合适值NumberOfIterations

像素与其相邻像素的连通性,指定为逗号分隔的对,由“连接”其中一个价值观是:

  • “最大”-考虑2-D图像的8个最近邻居,3-D图像的26个最近邻居

  • “最低”-考虑2-D图像的4个最近邻居,3-D图像的6个最近邻居

传导方法,指定为逗号分隔的对组成“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页。

扩展功能

版本历史

介绍了R2018a

全部展开