首页 文章

OpenCV中颜色分析的图像分割

提问于
浏览
4

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

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

enter image description here

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

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

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

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

2 回答

  • 1

    看看这种可能的方法:
    Efficient Graph-Based Image Segmentation Pedro F. Felzenszwalb and Daniel P. Huttenlocher

    这是你的形象的样子:

    enter image description here

  • 8

    我不是专家,但我真的不知道Watershed算法如何对您的分段问题非常有用 .

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

    这样做应该允许您检测图像中的对象,假设图像包含相对明确定义的对象 . 您可能还会尝试在将图像转换为具有特定阈值的黑白图像后执行分割,从而使背景与对象分离良好 .

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

    UPDATE

    根据您的评论,这是另一种可能对您有用的潜在方法:

    如果您认为对象的颜色大致均匀,您可能会尝试将图像处理为:

    • 去除噪音;

    • 将原始图像映射到缩小的色彩空间(即256或事件16色)

    • 根据像素颜色检测连接的组件,并确定哪些组件足够大

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

    剩下要做的唯一事情就是确定哪个组件是背景 . 这也是有意义的,也可以通过转换为具有特定阈值的黑/白来尝试去除背景 .

相关问题