【问题标题】:gabor edge detection with OpenCV使用 OpenCV 进行 Gabor 边缘检测
【发布时间】:2012-10-17 02:20:16
【问题描述】:

在 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 内核本身。
  • 你能把你得到的 10x10 gabor 内核贴出来吗?

标签: android image-processing opencv matrix


【解决方案1】:

您需要规范化您的内核。

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

【讨论】:

    猜你喜欢
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 2017-01-02
    • 1970-01-01
    相关资源
    最近更新 更多