首页 > 代码库 > OpenCV笔记(十二)—自定义线性滤波器

OpenCV笔记(十二)—自定义线性滤波器

在《OpenCV笔记(七)》中,写了四种线性滤波的方法:箱式滤波器、高斯滤波器、中值滤波器和双边滤波器。

在OpenCV中,我们可以使用filter2D函数自定义kernel进行线性滤波。

void filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel, Point anchor=Point(-1, -1), double delta=0, int borderType=BORDER_DEFAULT)

参数ddepth为dst的深度,如果为负,则和src的相同。也可以由src.depth()获得。

kernel可以以Mat的形式定义。这里kernel是单通道的浮点类型,显然如果src有三个通道,则三个通道所对应的kernel都是一样的。如果我们要处理对src的不同的通道运用不同的kernel,可以先对src使用split,分成若干个单通道的Mat,再分别用filter2D函数进行处理。

delta是完成像素对核的卷积运算之后,再额外加到dst的一个常数项参数。

 

OpenCV笔记(十二)—自定义线性滤波器