OpenCV中用于颜色分析的图像分割
我正在从事一个项目,该项目要求我: 查看包含定义相对清晰的对象的图像,例如 然后选择某个空间中n-most(它是通用的,可以是1、2、3等等)突出对象的颜色(无论是RGB、HSV还是其他),然后返回它 我正在寻找将这样的图像分割成独立对象的方法。一旦完成,我的印象是,找到线段的轮廓并分析它们的平均颜色或质心颜色等不会特别困难 我简要地研究了分水岭算法,它似乎可以工作,但我不确定如何为数量不确定的斑点生成标记图像OpenCV中用于颜色分析的图像分割,opencv,image-segmentation,watershed,Opencv,Image Segmentation,Watershed,我正在从事一个项目,该项目要求我: 查看包含定义相对清晰的对象的图像,例如 然后选择某个空间中n-most(它是通用的,可以是1、2、3等等)突出对象的颜色(无论是RGB、HSV还是其他),然后返回它 我正在寻找将这样的图像分割成独立对象的方法。一旦完成,我的印象是,找到线段的轮廓并分析它们的平均颜色或质心颜色等不会特别困难 我简要地研究了分水岭算法,它似乎可以工作,但我不确定如何为数量不确定的斑点生成标记图像 分割此类图像的最佳方法是什么?如果使用分水岭,生成相应整数标记图像的最佳方法是什么
分割此类图像的最佳方法是什么?如果使用分水岭,生成相应整数标记图像的最佳方法是什么?我不是专家,但我真的不知道分水岭算法如何对分割问题非常有用 从我对此类问题的有限经验/接触来看,我认为应该尝试滑动窗口分割方法。基本上,这需要使用设置大小的窗口遍历图像,并尝试确定窗口是否包含背景与对象。您需要尝试不同的窗口大小和步骤 这样做应该允许您检测图像中的对象,假定图像包含相对定义良好的对象。您还可以尝试在将图像转换为黑白后执行分割,使用特定的阈值可以很好地分离背景和对象 一旦您通过滑动窗口识别了对象,您可以尝试使用您提到的方法之一确定最突出的颜色 更新 根据您的评论,以下是另一种可能适合您的方法: 如果您认为对象的颜色基本一致,您可以尝试处理图像以:
剩下要做的唯一一件事就是确定哪个组件是背景。在这一点上,也可以尝试通过转换为具有特定阈值的黑/白来进行背景删除。检查这种可能的方法:
下面是它在您的图像上的外观:
我的预期方法是以某种方式按颜色分割对象,然后分割对象以确保消除重叠,即确保没有“斑点”被触摸。最后,对图像进行阈值分割,将所有对象从背景中分离出来,找到轮廓,然后在原始轮廓上循环,找到某个空间中的平均颜色。这可能不是最好的办法。就在我写这篇文章的时候,它似乎太冗长了!减少颜色空间并搜索区域您建议减少哪些颜色空间?我认为这种方法有其优点,但似乎降低到灰度可能会造成太大的信息损失,即多个颜色在0-255的范围内变得太相似。关于缩小颜色空间和搜索区域的方法有什么好的教程吗?我建议使用黑/白(2位)-而不是灰度(通常是8位或12位)。不同之处在于,2位基本上是图像的布尔开/关表示,用于区分较亮区域和较暗区域。它可以非常有效地检测某些图像中的感兴趣区域。此外,就明显的信息损失而言,降低模糊性也是非常有效的。对你来说,信息丢失实际上可能对你检测物体/颜色的实际目标非常有帮助。