文档帮助中心文档
非局部是指图像的滤波
J = imnlmfilt(I)
J = imnlmfilt(I,Name,Value)
[J,estDoS] = imnlmfilt(___)
例子
J= imnlmfilt (我)对灰度图像或彩色图像应用非局部均值滤波器我并返回生成的图像J.
J= imnlmfilt (我)
J
我
J= imnlmfilt (我,名称,值)使用名称-值对更改非本地均值筛选器的行为。
J= imnlmfilt (我,名称,值)
名称,值
[J,estDoS= imnlmfilt(___)也返回平滑度,estDoS,用于估计去噪后的像素值。
[J,estDoS= imnlmfilt(___)
estDoS
全部折叠
读取灰度图像。
I = imread(“cameraman.tif”);
将0.0015方差的零均值高斯白噪声添加到图像中imnoise函数。
imnoise
noisyImage = imnoise(I,“高斯”, 0, 0.0015);
通过非局部均值滤波去除图像中的噪声。的imnlmfilt函数根据图像中噪声的标准差估计平滑程度。
imnlmfilt
[filteredImage,estDoS] = imnlmfilt(noisyImage);
显示噪声图像(左)和非局部均值过滤图像(右)作为蒙太奇。显示估计的平滑度,estDoS,在图标题中。
非局部均值滤波器从输入图像中去除噪声,但保留了强边缘的清晰度,如人物和建筑物的轮廓。该函数还平滑纹理区域,例如图像前景中的草,与噪声图像相比,导致更少的细节。
蒙太奇({noisyImage, filteredImage})标题(["估计平滑度",'estDoS = 'num2str (estDoS)])
读一幅彩色图像。
imRGB = imread(“peppers.png”);
将均值为零,方差为0.0015的白高斯噪声添加到图像中imnoise函数。显示有噪声的RGB图像。
noisyRGB = imnoise(imRGB,“高斯”, 0, 0.0015);imshow (noisyRGB)
将噪声RGB图像转换为L*a*b颜色空间,使非局部均值滤波器平滑感知上相似的颜色。
noisyLAB = rgb2lab(noisyRGB);
从噪声背景中提取一个均匀的L*a*b patch来计算噪声标准差。
ROI = [210,24,52,41];patch = imcrop(noisyLAB,roi);
在这个L*a*b补丁中,计算到原点的欧氏距离,edist.然后,计算的标准差edist来估计噪声。
edist
patchSq = patch.^2;edist = sqrt(sum(patchSq,3));patchSigma = sqrt(var(edist(:)));
设置'DegreeOfSmoothing”值应高于补丁的标准差。使用非局部均值滤波对有噪声的L*a*b*图像进行滤波。
DegreeOfSmoothing”
DoS = 1.5*patchSigma;噪声实验室= imnlmfilt(噪声实验室,“DegreeOfSmoothing”、DoS);
将过滤后的L*a*b图像转换为RGB颜色空间。显示过滤后的RGB图像。
降噪drgb = lab2rgb(降噪drgb,“出”,“uint8”);imshow (denoisedRGB)
比较噪声RGB图像中的一个补丁(左)和非本地均值过滤RGB图像中的同一个补丁(右)。
Roi2 = [178,68,110,110];蒙太奇({imcrop (noisyRGB roi2) imcrop (denoisedRGB roi2)})
要过滤的图像,指定为大小的2-D灰度图像米——- - - - - -n或大小的二维彩色图像米——- - - - - -n3。的大小我必须大于等于21 × 21。
数据类型:单|双|int8|int16|int32|uint8|uint16|uint32
单
双
int8
int16
int32
uint8
uint16
uint32
的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家.
的名字
价值
Name1, Value1,…,的家
J = imnlmfilt(I,'DegreeOfSmoothing',10);
DegreeOfSmoothing
平滑度,指定为由逗号分隔的对组成“DegreeOfSmoothing”一个正数。随着这个值的增加,平滑的结果图像J增加。如果您没有指定“DegreeOfSmoothing”,则默认值为从图像估计噪声的标准差。有关更多信息,请参见默认平滑度.
“DegreeOfSmoothing”
SearchWindowSize
21
搜索窗口大小,由逗号分隔的对组成“SearchWindowSize”一个奇值正整数,年代.对像素进行相似邻域的搜索仅限于年代——- - - - - -年代像素周围的区域。SearchWindowSize在时间方面线性地影响性能。SearchWindowSize不能大于输入图像的大小,我.
“SearchWindowSize”
ComparisonWindowSize
5
比较窗口大小,指定为逗号分隔的对,由“ComparisonWindowSize”一个奇值正整数,c.的imnlmfilt函数计算相似度权重c——- - - - - -c围绕像素的邻域。ComparisonWindowSize必须小于或等于SearchWindowSize.有关更多信息,请参见估计去噪像素值.
“ComparisonWindowSize”
非局部是指过滤后的图像,返回为与输入图像大小和数据类型相同的二维灰度图像或二维彩色图像,我.
估计的平滑度,返回为正数。如果你指定DegreeOfSmoothing,然后imnlmfilt中返回相同的值estDoS.否则,imnlmfilt返回估计使用的默认平滑度默认平滑度.
为了平滑RGB图像中感知上接近的颜色,使用将图像转换为CIE L*a*b*颜色空间rgb2lab在应用非局部均值过滤器之前。要查看结果,首先将过滤后的L*a*b*图像转换为RGB颜色空间,使用lab2rgb.
rgb2lab
lab2rgb
的数据类型我是双,然后以数据类型进行计算双.否则,以数据类型执行计算单.
的默认值“DegreeOfSmoothing”是从图像估计噪声的标准偏差。要估计标准差,imnlmfilt用J. Immerkær提出的3 × 3滤波器对图像进行卷积[2].当我是彩色图像,默认值为“DegreeOfSmoothing”是信道上噪声平均的标准差。
非局部均值滤波算法估计像素去噪后的值p使用这些步骤。
对于一个特定的像素,问,在搜索窗口中,计算像素值之间的加权欧式距离c——- - - - - -c比较窗口周边p而且问.对于彩色图像,在欧几里得距离计算中包括所有通道。
权重是一个递减的指数函数,其衰减速率由的平方决定“DegreeOfSmoothing”.当图像有噪声时,“DegreeOfSmoothing”是大的,所有像素都有助于欧几里得距离计算。当图像噪声很小时,“DegreeOfSmoothing”的值很小,只有具有相似值的像素才可以进行欧氏距离计算。
的邻域之间的相似性的数值标量p附近的社区问.
请注意
在A. Buades等人的实现中。[1],两个比较窗口之间的欧几里得距离与大小的高斯核进行卷积c——- - - - - -c.这种卷积赋予了比较窗口中心附近像素值之间的欧氏距离更多的权重。的imnlmfilt函数为提高计算效率省略了这一步。
中的每个其他像素重复此计算年代——- - - - - -年代搜索窗口,求像素之间的加权欧氏距离p每一个像素点。结果是年代——- - - - - -年代相似度矩阵,表示邻域之间的相似度p还有搜索窗口里的其他街区。
归一化相似矩阵。
使用归一化相似矩阵中的权重,计算中像素值的加权平均值年代——- - - - - -年代围绕像素搜索窗口p.的去噪值p.
[1]布德斯,A., B.科尔,j - m。莫雷尔。图像去噪的非局部算法2005年IEEE®计算机视觉与模式识别计算机学会会议.第二卷,2005年6月,第60-65页。
[2] Immerkær;“快速噪声方差估计”计算机视觉与图像理解“,.第64卷第2期,1996年9月,第300-302页。
imbilatfilt|imdiffusefilt|imguidedfilter|locallapfilt
imbilatfilt
imdiffusefilt
imguidedfilter
locallapfilt
您有这个示例的修改版本。要使用编辑打开此示例吗?
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
选择一个网站,在可用的地方获得翻译的内容,并查看当地的活动和优惠。根据您所在的位置,我们建议您选择:.
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
联系当地办事处