(一)知识点
①EPF滤波总述
②高斯双边
③非局部均值滤波
(二)API
①bilateralFilter() 【高斯双边】
void cv::bilateralFilter(InputArray src,
OutputArray dst,
int d,
double sigmaColor,
double sigmaSpace,
int borderType = BORDER_DEFAULT
)
参数解释(来源于(16条消息) bilateral filter双边滤波器的通俗理解_pan_jinquan的博客-优快云博客_bilateralfilter 太慢InputArray src: 输入图像,可以是Mat类型,图像必须是8位或浮点型单通道、三通道的图像。
OutputArray dst: 输出图像,和原图像有相同的尺寸和类型。
int d: 表示在过滤过程中每个像素邻域的直径范围。如果这个值是非正数,则函数会从第五个参数 sigmaSpace计算该值。 (一般取0、1、2、3)
double sigmaColor: 颜色空间过滤器的sigma值,这个参数的值月大,表明该像素邻域内有越宽 广的颜色会被混合到一起,产生较大的半相等颜色区域。 (这个参数可以理解为值域核 的
),(一般取大一点100)
double sigmaSpace: 坐标空间中滤波器的sigma值,如果该值较大,则意味着越远的像素将相互 影响,从而使更大的区域中足够相似的颜色获取相同的颜色。当d>0时,d指定了邻域大小 且与sigmaSpace无关,否则d正比于sigmaSpace. (这个参数可以理解为空间域核的) 一般理解为高斯双边的核窗口大小(越大,计算越多)
int borderType=BORDER_DEFAULT: 用于推断图像外部像素的某种边界模式,有默认值BORDER_DEFAULT.
②fastNlMeansDenoisingColored() 【彩色图像的非局部均值滤波】
void fastNlMeansDenoisingColored( InputArray src, OutputArray dst,
float h = 3, float hColor = 3,
int templateWindowSize = 7, int searchWindowSize = 21
参数解释(来源于(16条消息) 【OpenCV】学习OpenCV3——常见的图像变换(2)_不断进步的咸鱼的博客-优快云博客
h: 决定过滤器强度。h 值高可以很好的去除噪声,但也会把图像的细节抹去。(取 10 的效果不错)
hColor: 与h相同,但用于颜色分量。 对于大多数图像,等于10的值将足以消除彩色噪点并且不 会扭曲颜色
templateWindowSize: 用于计算权重的模板补丁的像素大小,取奇数(推荐值为 7)。
searchWindowSize:窗口的像素大小,用于计算给定像素的加权平均值。更大的 searchWindowsSize-更长的降噪时间。取奇数(推荐值为 21)
③fastNlMeansDenoising() 【应用于灰色的非局部均值滤波】
void fastNlMeansDenoisingColored( InputArray src, OutputArray dst,
float hColor = 3,
int templateWindowSize = 7, int searchWindowSize = 21
参数:除了没有h,其他均与彩色的参数含义一样。
(三)代码展示
(四)运行效果