主要内容

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对象。标题为noisimage的axes对象包含一个类型为Image的对象。

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

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

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

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

图包含一个axes对象。标题为“各向异性扩散(Anisotropic Diffusion with Default Parameters)”的axis对象包含一个类型为image的对象。

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。

产生的图像中噪声不太明显。而更接近于1的SSIM值,则证实了图像质量的提高。

加载一个有噪声的3d灰度MRI体积。

负载mristack

使用各向异性扩散对体积进行边缘感知降噪。为了防止大脑中低对比度特征的过度平滑,从默认次数5减少迭代次数。这样做的代价是去除的噪声更少。

diffusedImage = imdiffusefilt (mristack,“NumberOfIterations”3);

要详细比较噪声图像和过滤后的图像,可以显示两者的第十切片。

imshowpair (mristack (:: 10), diffusedImage (:,: 10),“蒙太奇”)标题(“噪声图像(左)vs.各向异性扩散滤波图像(右)”)

图包含一个axes对象。标题为noisimage(左)vs.各向异性-扩散-过滤图像(右)的axis对象包含一个类型为Image的对象。

计算自然图像质量评估器(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或3d灰度体积大小——- - - - - -n——- - - - - -k

请注意

要将各向异性扩散滤波应用于彩色图像,使用imdiffusefilt在每个颜色通道上独立。

数据类型:||int8|int16|int32|uint8|uint16|uint32

名称-值参数

指定可选参数对asName1 = 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] Gerig, G., O. Kubler, R. Kikinis,和F. A. Jolesz。“MRI数据的非线性各向异性滤波。”IEEE医学影像汇刊。1992年6月,第11卷第2期,221-232页。

扩展功能

版本历史

介绍了R2018a

全部展开

Baidu
map