使用filter2D创建自定义线性滤波器

1、函数原型
void filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel, Pointanchor=Point(-1,-1), double delta=0, int borderType=BORDER_DEFAULT )
该函数可使用任意自定义卷积核在输入图像上进行卷积运算,而且可以实现就地转换(In-place operation is supported)。
2、参数分析

src:源图像
dst:目标图像
ddepth:dst的深度,若为负值(如-1),则表示其深度与源图像相等
kernel:用来遍历图像的核
anchor:核的锚点的相对位置,其中心点默认为(-1,-1)
delta:在卷积的过程中,该值会加到每个像素上。默认情况下,这个值为0。
BORDER_DEFAULT:像素插值方法,这里为默认值,详细可以参照borderInterpolate()方法。

3、卷积核&锚点

卷积核:卷积核本质上是一个大小固定、由数值参数构成的数组,一个特殊卷积所实现的功能是由其卷积核的形式决定的。

锚    点:数组的参考点(anchor point,也叫锚点)通常位于数组(卷积核)的中心。

举    例:下图描述了一个以数组中心为参考点的3X3的卷积核,-4所在为锚点。若要计算图像上某个点的卷积值,则将卷积核的锚点定位到图像上的那个点,让核的其它元素覆盖图像中的相应的像素点。将图像上的点与卷积核对应相乘后再求和,并将这个结果放在图像上锚点的相对位置上。通过在图像上扫描卷积核,对图像的每个点重复此操作。

                                                                                                                                          

4、应用举例

使用Gabor滤波器对原图像(src)进行滤波操作得到滤波后的图像(src_filted)

Mat getGaborFeature(Mat src, int theta, int lambd, int KernelSize) 
{
	Mat src_filted;
	src_filted.create(src.size(), src.type());
	Mat GK = getGaborKernel(Size(KernelSize, KernelSize), 2 * CV_PI, (theta * CV_PI) / 8, lambd, CV_PI / 2, CV_32F);
	filter2D(src, src_filted, -1, GK, Point(-1,-1));
	return src_filted;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线性滤波器是一种常用的图像处理技术,它通过对图像的每个像素及其周围像素进行加权求和来生成输出像素值。Python中可以使用OpenCV库来实现线性滤波器。其中,常见的线性滤波器有均值滤波器和高斯滤波器。 均值滤波器是一种简单的线性滤波器,它将每个像素的值替换为其周围像素的平均值。这种滤波器可以用于图像平滑处理,减少噪声的影响。 高斯滤波器是一种基于高斯函数的线性滤波器,它可以有效地平滑图像并保留更多的细节。与均值滤波器不同,高斯滤波器会对周围像素进行加权求和,使得离中心像素更近的像素具有更高的权重。 在Python中,可以使用OpenCV的函数cv2.filter2D来进行线性滤波。该函数的参数包括输入图像、输出图像的深度、滤波核(即滤波器)以及锚点的位置。 下面是使用均值滤波器和高斯滤波器进行图像处理的示例代码: 使用均值滤波器: ```python import cv2 image = cv2.imread("input.jpg") # 读取输入图像 filtered_image = cv2.blur(image, (3, 3)) # 使用均值滤波器进行滤波滤波核大小为3x3 cv2.imwrite("output.jpg", filtered_image) # 保存输出图像 ``` 使用高斯滤波器: ```python import cv2 image = cv2.imread("input.jpg") # 读取输入图像 filtered_image = cv2.GaussianBlur(image, (3, 3), 0) # 使用高斯滤波器进行滤波滤波核大小为3x3 cv2.imwrite("output.jpg", filtered_image) # 保存输出图像 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值