【问题标题】:detect quite brighter spots on the image检测图像上相当亮的点
【发布时间】:2015-03-09 15:02:02
【问题描述】:

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

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

更新:

OpenCV 环境是 C++。我尝试了具有许多参数的自适应阈值。结果如下:

还不错,但图像包含很多其他黑点。并且有时斑点区域与物体接近,所以我以后无法区分。

【问题讨论】:

标签: c++ opencv image-processing detection


【解决方案1】:

一般来说,该技术是模糊图像,使小尺度细节变得无关紧要,只保留背景照明的大尺度差异。然后从原始图像中减去模糊图像以消除不均匀的照明,只留下可见的局部特征。

我首选的工具是 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

关键词:图像处理、模糊蒙版、不均匀照明。

【讨论】:

  • 好久没看到这个了!这也称为非锐化掩蔽。做得很好! en.wikipedia.org/wiki/Unsharp_masking
  • @KurtPfeifle - 忘了!我还同时做一百万件其他事情,所以如果我没有立即投票给马克的答案而冒犯了你,那么我道歉。
  • 马克,谢谢你的回答。这是一种简单有效的斑点检测方法。
  • @MarkSetchell 仅供参考,您使用“关键字:”的方法是discussed on Meta
【解决方案2】:

要增加图像对比度,您可以查看直方图均衡技术。

根据图像直方图,它将重新分配图像的像素强度值,使低对比度区域可以获得更高的对比度。然后对图像执行强度阈值操作可能会产生更好的结果。供参考看看: http://en.wikipedia.org/wiki/Histogram_equalization

这个操作也有OpenCV实现:

void equalizeHist(InputArray src, OutputArray dst)

还有教程:​​http://docs.opencv.org/doc/tutorials/imgproc/histograms/histogram_equalization/histogram_equalization.html

【讨论】:

  • 直方图均衡不起作用。这是一个全球性的转变。此外,图像通常具有相同的对比度,因此直方图均衡可能无法按预期方式工作。具体来说,它唯一会做的就是让那个轻微的白点更白,但在对比度方面,背景也不可避免地会被推到更白的一端。建议使用本地和自适应转换。
猜你喜欢
  • 2020-11-02
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-03
相关资源
最近更新 更多