摘自mathwork,记录以便查阅Bilateral filtering of images with Gaussian kernels - MATLAB imbilatfilt - MathWorks 中国
基于高斯核得双边滤波算法(一种边缘保持降噪算法)
基本调用方法:
J = imbilatfilt(I)
J = imbilatfilt(I,degreeOfSmoothing)
J = imbilatfilt(I,degreeOfSmoothing,spatialSigma)
J = imbilatfilt(___,Name,Value)
支持对RGB和灰度图的滤波
举例:
I = imread('cameraman.tif');
imshow(I)
取一个patch,计算其方差,作为滤波参数,然后滤波:
patch = imcrop(I,[170, 35, 50 50]);
patchVar = std2(patch)^2;
DoS = 2*patchVar;
J = imbilatfilt(I,DoS);
imshow(J)
title(['Degree of Smoothing: ',num2str(DoS)])
发现上述图对条纹状伪影去除效果不明显。调整spatialSigma从默认1到2:
K = imbilatfilt(I,DoS,2);
imshow(K)
title(['Degree of Smoothing: ',num2str(DoS),', Spatial Sigma: 2'])
注意:R2018a及以上版本支持该函数