我的图像有点嘈杂,背景不均匀。图像包含更亮的凸点,我需要检测它们。 这是示例图片的链接:
我知道有很多圆形检测算法,但是环境和物体之间的差异太小了。 你有什么建议,如何分割亮点?或者有什么想法可以增加它们之间的强度差异吗?
更新:
OpenCV 环境是 C++。我尝试了具有许多参数的自适应阈值。结果如下:
还不错,但是图像包含很多其他黑点。有时 Blob 的面积和物体的面积很接近,这样我以后就分不清了。
最佳答案
通常,该技术是对图像进行模糊处理,使小尺度的细节变得无关紧要,只保留背景照明中的大尺度差异。然后从原始图像中减去模糊图像以消除不均匀的照明,只留下局部特征可见。
我比较喜欢的工具是ImageMagick,但是在OpenCV中原理是一样的。在这里,我克隆您的原始图像,将其模糊超过 8 个像素,然后从原始图像中减去模糊图像:
convert http://s8.postimg.org/to03oxzyd/example_image.png \( +clone -blur 0x8 \) -compose difference -composite -auto-level out.jpg
这里我模糊了超过 32 个像素,并从原始图像中减去模糊图像:
convert http://s8.postimg.org/to03oxzyd/example_image.png \( +clone -blur 0x32 \) -compose difference -composite -auto-level out32.jpg
关键词:图像处理,USM锐化,不均匀光照。
关于c++ - 检测图像上相当亮的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27891944/