gpt4 book ai didi

c++ - 如果阈值不够好,如何检测 opencv (c++) 中的异常?

转载 作者:搜寻专家 更新时间:2023-10-30 23:53:10 24 4
gpt4 key购买 nike

我有这样的灰度图像:

enter image description here我想检测此类图像的异常情况。在第一张图片(左上角)上我想检测三个点,在第二张图片(右上角)上有一个小点和一个“雾区”(在右下角),在最后一张图片上,有也是图像中间某处的一个小点。

正常的静态阈值处理对我来说效果不佳,而且 Otsu 的方法始终是最佳选择。有没有更好、更强大或更智能的方法来检测这样的异常情况?在 Matlab 中,我使用了 Frangi Filtering(特征值过滤)之类的东西。任何人都可以建议好的处理算法来解决这样的表面异常检测吗?

编辑:添加了另一张带有明显异常的图像:

enter image description here

使用@Tapio 的顶帽过滤和对比度调整。由于 @Tapio 为我们提供了如何增加表面异常对比度的好主意,就像我一开始问的那样,我向大家提供了一些我的结果。我有这样的图像: enter image description here

这是我如何使用顶帽过滤和对比度调整的代码:

kernel = getStructuringElement(MORPH_ELLIPSE, Size(3, 3), Point(0, 0));
morphologyEx(inputImage, imgFiltered, MORPH_TOPHAT, kernel, Point(0, 0), 3);
imgAdjusted = imgFiltered * 7.2;

结果在这里:

enter image description here

还有一个问题是如何从最后一张图片中分割出异常??因此,如果有人知道如何解决它,那就接受吧! :) ??

最佳答案

您应该看看底帽过滤。它被定义为原始图像与图像的形态闭合之间的差异,它使小细节(例如您正在寻找的细节)变得耀眼。

first image pair

second image pair

third image pair

我调整了对比度,使两个图像都可见。在查看强度时,异常更加明显,并且更容易分割。

让我们看一下第一张图片:

segmentation accuracy needed

由于我使用的可视化工具造成的缩放,直方图值并不代表现实。但是相对距离确实如此。所以现在阈值范围更大了,目标从 window 变成了谷仓门。

全局阈值(强度 > 15):

After global thresholding

Otsu 的方法在这里效果不佳。它将所有小细节分割到前景。

通过形态学开运算去除噪声后:

After morphological opening

我还假设黑点是您感兴趣的异常。通过将阈值设置得较低,您可以包含更多表面细节。例如,第三张图片在我看来没有任何特别有趣的特征,但这供您判断。就像 m3h0w 所说的那样,知道如果您的眼睛难以判断某些东西对于计算机来说可能是不可能的,这是一种很好的启发式方法。

关于c++ - 如果阈值不够好,如何检测 opencv (c++) 中的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42480594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com