【问题标题】:Detecting blobs of uniform colour with openCV使用openCV检测颜色均匀的斑点
【发布时间】:2014-08-20 18:53:20
【问题描述】:

我正在开发一个程序来检测用于遥感的分割场(即,每张图像中不止一种颜色/场类型,其中图像对应于一个农民拥有的土地)并且一直在努力寻找解决方案通过读取图像并使用聚类算法对它们进行分色,然后分析呈现的颜色和形状以尝试“评分”每张图像并确定是否存在不止一种类型的字段。我的程序运行得相当好,尽管它仍然无法检测到很多明显的分裂。

到目前为止,我一直只使用 c++ 中的标准库来执行此操作,但我认为现在我应该使用 openCV 或其他东西,我想知道从哪些技术开始。我看到有一些图像分割和斑点检测算法,但我不确定它们是否适用,因为字段之间的边界往往模糊或对比度低。以下是我希望我的程序检测为“拆分”的一些示例图像:

(真彩色陆地卫星)

http://imgur.com/m9qWBcq

http://imgur.com/OwqvUvs

对于如何以不同的方式解决这个问题有什么想法吗?谢谢!

【问题讨论】:

标签: opencv computer-vision


【解决方案1】:

1) 转换为 HSV 并取 H 或灰度形式。如果图像是高分辨率的,则应用中值滤波器来平滑字段:P。

2) 提取直方图并找到所有峰值。这些峰表示不同颜色的字段。

3) (A) 现在您可以在这些峰值周围使用简单的阈值,然后找到梯形或类似形状的精确边缘。

--或--

(B) 找到峰值周围的精确边缘,即最大值 x 的峰值,找到 (x - dx) 到 (x + dx) 范围内的边缘,其中 dx 是一个小值,可以通过实验找到。

4) 现在您可以提取不同级别/峰值的轮廓数。

我没有添加代码,因为没有指定语言并且所有这些结构都可以在 OpenCV 中轻松使用。学习很有趣。欢迎进一步询问。快乐编码。

【讨论】:

    【解决方案2】:

    尝试在MserFeatureDetector 中实现MSER algorithm

    原来的算法是针对灰度图片考虑的,我对彩色版本没有很好的经验,所以尝试对原始帧做一些预处理,根据我们的需要生成灰度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      相关资源
      最近更新 更多