【问题标题】:How to create Gaussian kernel and use it as filter in opencv如何创建高斯核并将其用作opencv中的过滤器
【发布时间】:2013-02-14 22:59:07
【问题描述】:

我正在使用 OpenCv 开发道路线检测算法,发现了一些引用,但我无法理解它的片段。

你能解释一下我如何在 OpenCv 中实现这样的事情吗?

这是引用:

然后图像由二维高斯核过滤。垂直方向为平滑高斯,其σy根据车道段所需高度(设置为图像中的1m等值)进行调整。水平方向是高斯的二阶导数,其σx根据车道的预期宽度进行调整。

我怎样才能准备这样的内核? getDerivKernel 似乎不允许我设置它的 σx 或 σy。

提前谢谢你。

【问题讨论】:

    标签: java android opencv


    【解决方案1】:

    我相信 OpenCV 有一个功能可以做到这一点。

     Mat getGaussianKernel(int ksize, double sigma, int ktype=CV_64F)
    

    见http://docs.opencv.org/modules/imgproc/doc/filtering.html

    【讨论】:

    • 请问在生成的 Mat 对象中访问数据的正确方法是什么?我尝试了ptr<double>(0)[i] ,但出现编译错误。
    【解决方案2】:

    只需使用GaussianBlur 方法。来自文档:

    sigmaX - X 方向的高斯核标准差。

    sigmaY - Y方向的高斯核标准差;如果 sigmaY 为零, 它被设置为等于 sigmaX,如果两个 sigma 都为零,则它们是 分别从 ksize.width 和 ksize.height 计算(见 “getGaussianKernel”了解详情);完全控制结果 无论将来可能对所有这些语义进行修改,它 建议指定所有 ksize、sigmaX 和 sigmaY。

    【讨论】:

    • 但 GaussianBlur 不允许我指定要使用高斯二阶导数过滤的 Y 方向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 2012-09-21
    • 2021-05-15
    • 2020-08-07
    相关资源
    最近更新 更多