OpenCV中的高通滤波

3
为了在OpenCV中创建一个3x3高通滤波器核,我使用以下代码(适用于Android):
Mat kernel = new Mat(3, 3, CvType.CV_32FC1);
float[] data = {0, -1, 0, -1, 4, -1, 0, -1, 0};
kernel.put(0, 0, data);

接下来,我会使用核函数进行过滤:

Imgproc.filter2D(image, image, -1, kernel);

有没有一种在OpenCV中自动生成更大的高通滤波器的方法?
2个回答

6

在OpenCV中实现了许多不同的高通滤波器。你为示例设置的是Laplacian滤波器:

0  1  0
1 -4  1
0  1  0

你可以使用opencv的Laplacian函数,它具有ksize参数。通过操作该参数,您必须能够应用更大的Laplacian卷积核。
如果您对其他高通滤波器感兴趣,opencv还有Canny、Sobel等。

1

虽然我将使用Safir的答案,但我发现一个函数getDerivKernels(),它似乎可以生成核矩阵本身,尽管仅适用于Sobel或Scharr滤波器,且仅适用于特定大小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接