OpenCV中颜色分析的图像分割

Ton*_*yRo 5 opencv image-segmentation watershed

我正在开展一个项目,要求我:

查看包含相对明确定义的对象的图像,例如

在此输入图像描述

并挑选出一些空间(无论是RGB,HSV等等)的n-most(它是通用的,可能是1,2,3等等)突出物体的颜色并将其返回.

我正在研究将像这样的图像分割成独立对象的方法.一旦完成,我的印象是,找到段的轮廓并分析它们的平均或质心颜色等并不是特别困难......

我简要介绍了Watershed算法,它似乎可以工作,但我不确定如何为不确定数量的blob生成标记图像.

分割这样一个图像的最佳方法是什么,如果它正在使用Watershed,那么生成整数的相应标记图像的最佳方法是什么?

Mik*_*scu 1

我不是专家,但我真的不明白分水岭算法如何对您的分割问题非常有用。

根据我对此类问题的有限经验/接触,我认为可行的方法是尝试使用滑动窗口方法进行分割。基本上,这需要使用设定大小的窗口遍历图像,并尝试确定窗口是否包含背景与对象。您将需要尝试不同的窗口大小和步骤。

这样做应该允许您检测图像中的对象,假设图像包含相对明确的对象。您还可以尝试在将图像转换为黑白后使用特定阈值执行分割,这样可以很好地分离背景与对象。

通过滑动窗口识别对象后,您可以尝试使用您提到的方法之一来确定最突出的颜色。

更新

根据您的评论,这是另一种可能适合您的潜在方法:

如果您认为对象的颜色基本一致,您可能会尝试将图像处理为:

  1. 消除噪音;
  2. 将原始图像映射到缩减的色彩空间(即 256 或事件 16 色)
  3. 根据像素颜色检测连通分量并确定哪些连通分量足够大

您还可能受益于将图像重新采样为较低的分辨率(即,如果图像为 1024 x 768,您可能会将其减小到 256 x 192),以帮助加快算法速度。

剩下要做的唯一一件事就是确定哪个组件是背景。在这种情况下,尝试通过使用特定阈值转换为黑/白来去除背景可能是有意义的。