主要内容

imnlmfilt

非局部是指图像的滤波

描述

例子

J= imnlmfilt (对灰度或彩色图像应用非局部基于均值的滤波器并返回生成的图像J

例子

J= imnlmfilt (名称,值使用名称-值对更改非本地均值过滤器的行为。

JestDoS) = imnlmfilt (___也返回平滑度,estDoS,用于估计去噪后的像素值。

例子

全部折叠

读取灰度图像。

我= imread (“cameraman.tif”);

将方差为0.0015的零均值高斯白噪声添加到图像中imnoise函数。

noisyImage = imnoise(我“高斯”, 0, 0.0015);

通过非局部均值滤波去除图像中的噪声。的imnlmfilt函数根据图像中噪声的标准差估计平滑程度。

[filteredImage, estDoS] = imnlmfilt (noisyImage);

显示噪声图像(左)和非局部均值滤波图像(右)作为蒙太奇。显示估计的平滑度,estDoS,在图标题中。

非局部均值滤波器从输入图像中去除噪声,但保留了强边缘的清晰度,如人的轮廓和建筑物的轮廓。该功能还平滑纹理区域,如图像前景中的草,与噪声图像相比,导致更少的细节。

蒙太奇({noisyImage, filteredImage})标题(['预估平滑度'“estDoS = 'num2str (estDoS)])

图中包含一个axes对象。标题为Estimated Degree of Smoothing, estDoS = 11.4833的axes对象包含一个类型为image的对象。

读一幅彩色图像。

imRGB = imread (“peppers.png”);

向图像中添加均值为零、方差为0.0015的高斯白噪声imnoise函数。显示噪声RGB图像。

noisyRGB = imnoise (imRGB,“高斯”, 0, 0.0015);imshow (noisyRGB)

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

将有噪声的RGB图像转换为L*a*b颜色空间,使非局部均值滤波器平滑感知上相似的颜色。

noisyLAB = rgb2lab (noisyRGB);

从噪声背景中提取一个均匀的L*a*b patch,计算噪声标准差。

投资回报率=(210年,24岁,52岁,41);补丁= imcrop (noisyLAB roi);

在这个L*a*b补丁中,计算到原点的欧氏距离,edist.然后,计算的标准差edist来估计噪声。

patchSq =补丁。^ 2;edist =√sum (patchSq, 3));patchSigma =√var edist (:)));

设置”DegreeOfSmoothing”值应大于补丁的标准差。用非局部均值滤波方法对有噪声的L*a*b*图像进行滤波。

DoS = 1.5 * patchSigma;denoisedLAB = imnlmfilt (noisyLAB,“DegreeOfSmoothing”、DoS);

将过滤后的L*a*b图像转换为RGB颜色空间。显示过滤后的RGB图像。

denoisedRGB = lab2rgb (denoisedLAB,“出”“uint8”);imshow (denoisedRGB)

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

比较来自噪声RGB图像(左)和来自非本地均值过滤RGB图像(右)的相同补丁。

roi2 =(178、68110110);蒙太奇({imcrop (noisyRGB roi2) imcrop (denoisedRGB roi2)})

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

输入参数

全部折叠

要过滤的图像,指定为二维灰度图像的大小——- - - - - -n或大小相同的二维彩色图像——- - - - - -n3。的大小必须大于或等于21 × 21。

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

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:J = imnlmfilt(我‘DegreeOfSmoothing 10);

平滑度,用逗号分隔的一对表示“DegreeOfSmoothing”一个正数。随着这个值的增加,结果图像的平滑度J增加。如果不指定“DegreeOfSmoothing”,则默认值为从图像估计噪声的标准差。有关更多信息,请参见默认平滑度

搜索窗口大小,指定为逗号分隔的对“SearchWindowSize”一个奇值正整数,年代.对像素相似邻域的搜索仅限于年代——- - - - - -年代像素周围的区域。SearchWindowSize按时间线性影响性能。SearchWindowSize不能大于输入图像的大小,

比较窗口大小,指定为逗号分隔的对,由“ComparisonWindowSize”一个奇值正整数,c.的imnlmfilt函数计算相似度权重c——- - - - - -c小区周围的像素。ComparisonWindowSize必须小于或等于SearchWindowSize.有关更多信息,请参见估计去噪像素值

输出参数

全部折叠

非局部是指经过过滤的图像,返回为与输入图像大小和数据类型相同的二维灰度图像或二维彩色图像,

估计的平滑程度,返回为正数。如果您指定DegreeOfSmoothing,然后imnlmfilt返回相同的值estDoS.否则,imnlmfilt返回预估的默认平滑度默认平滑度

提示

  • 为了平滑RGB图像中感知接近的颜色,将图像转换到CIE L*a*b*颜色空间使用rgb2lab在应用非局部均值滤波器之前。要查看结果,首先将过滤后的L*a*b*图像转换为RGB颜色空间使用lab2rgb

  • 的数据类型,然后以数据类型执行计算.否则,将以数据类型执行计算

算法

全部折叠

默认平滑度

的默认值。“DegreeOfSmoothing”从图像估计噪声的标准差。为了估计标准差,imnlmfilt用J. Immerkær提出的3 × 3滤波器对图像进行卷积[2].当是彩色图像的默认值吗“DegreeOfSmoothing”是噪声在信道上的平均标准差。

估计去噪像素值

非局部均值滤波算法估计去噪后的像素值p使用这些步骤。

  1. 对于一个特定像素,,在搜索窗口中计算像素值之间的加权欧氏距离c——- - - - - -c窗户周围的比较p而且.对于彩色图像,在欧氏距离计算中包括所有通道。

    权值是一个递减的指数函数,其衰减速率由的平方决定“DegreeOfSmoothing”.当图像有噪声时,“DegreeOfSmoothing”的大小,并且所有像素都有助于欧氏距离计算。当图像的噪声很小时,“DegreeOfSmoothing”的值很小,只有具有相似值的像素才有助于欧氏距离的计算。

    结果是一个数值标量,表示的邻域之间的相似性p和附近的

    请注意

    在A. Buades等人的实施中。[1],两个比较窗口之间的欧氏距离与大小的高斯核进行卷积c——- - - - - -c.这种卷积赋予比较窗口中心附近像素值之间的欧氏距离更多的权重。的imnlmfilt函数为了计算效率省略了这一步。

  2. 中的每个其他像素重复此计算年代——- - - - - -年代搜索窗口,求像素之间的加权欧氏距离p每一个像素。结果是年代——- - - - - -年代的邻域之间的相似性矩阵p以及搜索窗口内的其他社区。

  3. 归一化相似矩阵。

  4. 利用归一化相似矩阵中的权重,计算中像素值的加权平均值年代——- - - - - -年代围绕像素的搜索窗口p.的去噪值p

参考文献

Buades, A., B. Coll和J.-M。莫雷尔。一种非局部图像去噪算法。2005年IEEE®计算机视觉与模式识别会议.第二卷,2005年6月,第60-65页。

[2] Immerkær, J。“快速噪声方差估计。”计算机视觉与图像理解“,.1996年9月,第64卷第2期,第300-302页。

扩展功能

版本历史

介绍了R2018b

全部展开

Baidu
map