使用OpenCV进行Gabor边缘检测

3
在OpenCV中,我使用 Imgproc.getGaborKernel(...) 获取用于图像处理的Gabor核,这是一个9x9的矩阵。我有原始图像的灰度矩阵。(我甚至不确定核应该是图像的大小还是一个小片段,但我相当确定是一个小核)。
请问如何将两者进行卷积并获取卷积的输出结果? 我正在尝试组合一个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数值


一些代码会很有帮助,以及Gabor核本身。 - mbrenon
你能发一下你得到的10x10 Gabor核吗? - Máthé Endre-Botond
1个回答

2

您需要对核进行归一化处理。

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


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