3

在 OpenCV 中,我检索了一个用于图像处理的 Gabor 内核,它是一个 9:9 矩阵,使用:

Imgproc.getGaborKernel(...)

我有一个原始图像的灰色矩阵。(我什至不确定内核应该是图像的大小还是只是一小段,我相当确定小内核)

如何对两者进行卷积并获得卷积的输出?

我正在尝试将 Gabor 小波滤波器放在一起进行边缘检测。

编辑:就矩阵的卷积而言,它看起来像opencv“filter2d”方法是用来做它的,并且可以在Android OpenCV api的Imgproc类中找到。

但是,当我进行卷积并将其放到屏幕上时,它只是一个黑色图像。

Size size = new Size(9,9);
Mat gaborKernel = Imgproc.getGaborKernel(size, 3.0, -Math.PI/4, Math.PI, 10.0, Math.PI*0.5, CvType.CV_64F);
Imgproc.filter2D(intermediate, output, -1, gaborKernel);
Bitmap temp = Bitmap.createBitmap(intermediate.cols(), intermediate.rows(), Config.ARGB_8888);
Utils.matToBitmap(output, temp);

我做了一个系统输出来查看这些值,并且所有值都非常小,如下所示。

Gabor 值逐行

4

1 回答 1

2

你需要标准化你的内核。

只需遍历内核矩阵,计算值的总和。然后再次循环以将每个值除以总和。这可确保您的内核不会改变整体亮度。

于 2012-12-16T22:24:39.587 回答