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。
产生的图像中噪声不太明显。而更接近于1的SSIM值,则证实了图像质量的提高。
执行3d边缘感知降噪
加载一个有噪声的3d灰度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或3d灰度体积大小米——- - - - - -n——- - - - - -k。
请注意
要将各向异性扩散滤波应用于彩色图像,使用imdiffusefilt
在每个颜色通道上独立。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
名称-值参数
指定可选参数对asName1 = 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] Gerig, G., O. Kubler, R. Kikinis,和F. A. Jolesz。“MRI数据的非线性各向异性滤波。”IEEE医学影像汇刊。1992年6月,第11卷第2期,221-232页。
扩展功能
线程环境
在后台使用MATLAB®运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
。
这个函数完全支持基于线程的环境。有关更多信息,请参见在基于线程的环境中运行MATLAB函数。
版本历史
介绍了R2018aR2022b:支持基于线程的环境
imdiffusefilt
现在支持基于线程的环境。
另请参阅
imdiffuseest
|imfilter
|imgaussfilt
|imguidedfilter
|locallapfilt
|imnlmfilt
|specklefilt
(医学影像工具箱)
MATLAB命令
你点击了对应这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令即可运行该命令。Web浏览器不支持MATLAB命令。
你也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国网站(中文或英文),获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。