【发布时间】:2019-08-28 06:37:39
【问题描述】:
对于一个项目,我试图从图像中提取相当暗淡的轮廓。在玩 GIMP 时,我找到了一种方法,可以使用半径 1=1 和半径 2=25(甚至更大)的“高斯差”精美地提取和阈值这些轮廓。但是,当尝试在 OpenCV 中重新实现此工作流程时,我的结果不如 GIMP(较暗,较不清晰): Difference in DoG Implementation OpenCV vs. GIMP
我浏览了 GIMPs 源代码,发现在最新版本(我正在使用)中有两种 DoG 实现。我使用的是基于GEGL的非旧版,源代码可以在here找到。
我按照here的实现:
{
Mat g1, g2, result;
GaussianBlur(input, g1, Size(0, 0), gaussian1, gaussian1);
GaussianBlur(input, g2, Size(0, 0), gaussian2, gaussian2);
cv::subtract(g1, g2, result);
return result;
}
如您所见,我的实现和 GEGL 的实现在表面上是相同的,但结果却大不相同。
我已经尝试过使用 cv::equalizeHist() 来增强结果的对比度,但这也没有产生任何可用的东西。
我很乐意感谢您对这里发生的事情的任何想法。 谢谢!
【问题讨论】:
-
是的,我通读了该线程,但据我所知,他们从未找到解决方案。
-
可能依赖于线性 vs.伽玛校正。在 Gimp 中,2.10 的结果(线性 AFAIK)比 2.8 版本的结果(伽马校正)要好得多。 Example
-
感谢您的建议,看起来很有希望,您能详细说明一下吗?我需要重现 Gimp 中发生了什么?
标签: opencv computer-vision gimp