c++ - 检测图像上相当亮的点

标签 c++ opencv image-processing detection

我的图像有点嘈杂,背景不均匀。图像包含更亮的凸点,我需要检测它们。 这是示例图片的链接:

我知道有很多圆形检测算法,但是环境和物体之间的差异太小了。 你有什么建议,如何分割亮点?或者有什么想法可以增加它们之间的强度差异吗?

更新:

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

enter image description here

这里我模糊了超过 32 个像素,并从原始图像中减去模糊图像:

convert http://s8.postimg.org/to03oxzyd/example_image.png \( +clone -blur 0x32 \) -compose difference -composite -auto-level out32.jpg

enter image description here

关键词:图像处理,USM锐化,不均匀光照。

关于c++ - 检测图像上相当亮的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27891944/

相关文章:

c++ - 如何正确地进行动态内存分配(C++)

c++ - 通过对象比较而不是使用仿函数在集合中查找 C++ 对象

matlab - 不裁剪的图像重映射

python - TypeError:crop()从一到两个位置参数,但是给出了三个

java - 如何使用ImageJ获得绿色 channel ?

c++ - 全局 std::unordered_map com 服务器初始化问题

c++ - 是否可以使用迭代器实现递归算法?

c++ - 几个直方图的平均直方图

python - 如何使用OpenCV和Python对图像进行运动模糊处理?

c# - 图像处理技术 - 直接处理目标图像或虚拟化?