使用OpenCV进行gabor边缘检测

时间:2012-10-26 19:39:37

标签: android image-processing opencv matrix

在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 values row by row

1 个答案:

答案 0 :(得分:2)

您需要规范化内核。

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