我有这样的灰度图像:如何检测opencv(C++)中的异常如果阈值不够好?
我想检测这种图像的异常。在第一幅图像(左上角)上,我想检测三个点,在第二个(右上角)上有一个小圆点和一个“雾区”(右下角),最后一个在图像中间的某处也是一个小点。
正常的静态tresholding对我来说没有问题,大津的方法总是最好的选择。有没有更好,更强大或更智能的方法来检测这种异常?在Matlab中,我使用了类似Frangi Filtering(特征值过滤)的东西。任何人都可以建议好的处理算法来解决像这样的表面上的异常检测问题吗?
编辑:添加另一个图像具有显着的异常:
使用@Tapio的顶帽过滤和对比度adjustement。 由于@Tapio为我们提供了一个很好的主意,就像我在开始时问的那样,如何增加表面上的异常对比度,我向你们提供了一些结果。我曾经和这样的形象:
这里是我的代码,我如何使用高顶礼帽过滤和对比adjustement:
kernel = getStructuringElement(MORPH_ELLIPSE, Size(3, 3), Point(0, 0));
morphologyEx(inputImage, imgFiltered, MORPH_TOPHAT, kernel, Point(0, 0), 3);
imgAdjusted = imgFiltered * 7.2;
其结果是在这里:
有仍然质疑如何从最后的图像中分割出异常?所以如果有人有想法如何解决它,只要把它! :) ??
计算灰度图像的平均值。高于平均值某个百分比的像素可以被声明为异常值 –
@JeruLuke:这是一个“模式识别介绍”级别的答案,但对大津方法和特征值过滤的参考告诉我,我们并没有在看那个。 – MSalters
您能否提供更多关于我应该关注的技巧以及如何进行模式识别?我是否也应该考虑一些“机器学习”的东西? – jok23