image-processing - 高斯拉普拉斯算子 : how does it work? (OpenCV)

标签 image-processing opencv filtering background-subtraction

有人知道它是如何工作的以及如何使用 OpenCV 来实现吗? 可以使用 OpenCV 计算拉普拉斯算子, 但结果不是我所期望的。 我的意思是我希望图像在背景区域的对比度大致恒定,但它是黑色的,边缘是白色的。即使在高斯滤波器之后,也有很多噪音。 我使用高斯过滤器过滤图像,然后应用拉普拉斯。 我认为我想要的是通过不同的方式完成的。

最佳答案

高斯拉普拉斯算子是一种边缘检测滤波器;在恒定(“背景”)区域中输出为 0,在有对比度的区域中输出为正或负。你在背景区域看到黑色的原因是因为 OpenCV 只是给你原始输出;您所描述的图像类型(背景为灰色,正/负边缘为黑色或白色)是在将输出缩放到适当范围后生成的。

输出范围根据实际使用的内核而变化,但它总是适合 (-max, +max) 范围在零附近,其中 max 是滤波器内核的最大输出幅度;要获得“典型”输出图像,您需要将其缩放到 (0, 1) 范围(或 (0, 255) 如果您使用的是 8 位图片)。

您可以使用 cvScale 函数执行必要的缩放,使用 1/(2*max) 作为比例因子和 0.5 偏移. (或者对于 8 位图像,使用 255/(2*max) 比例和 128 偏移。)

关于image-processing - 高斯拉普拉斯算子 : how does it work? (OpenCV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2521704/

相关文章:

java - 在java 8可选过滤器中抛出异常是一种不好的做法吗

jQuery DataTables 过滤多个表

javascript - CamanJS 修改的 KineticJS Canvas

java - ImagesService.getServingUrl 中的 URL 持续多长时间

xcode - 为什么我不能编译这个命令行 OpenCV Mac 应用程序?

c++ - 旋转图像时如何填充边框?

python - pandas df 对多列中的部分字符串值进行过滤

python - 如何在 python 中读取原始图像的数据 - 方法

python - 测量图像中扑克牌的高度

c++ - 使用 gcc 5.1 未定义 OpenCV 符号