【问题标题】:Image segmentation with very small dataset具有非常小的数据集的图像分割
【发布时间】:2020-06-22 22:39:41
【问题描述】:

给定一个背景上的拼图图像(取决于任务的难度),识别上面的拼图数量并对图像上的每个拼图进行分类(对于每个拼图,说明它有多少个半岛和海湾)

背景可以是红色

或彩色

我设法使用 opencv 解决(或几乎解决)这个问题的简单版本(红色背景)(otsu 阈值处理 -> 扩张 -> 一些平滑卷积 -> findContours,然后将轮廓传递给某个分类器)

但是当我尝试解决一个复杂的版本时,我遇到了严重的困难。这个


是迄今为止我使用 otsu thresholding 和 erode + dilate 取得的最好成绩。看来,这种阈值方法对于硬背景效果不佳。

我的数据集非常小(少于 10 张图像),所以我想它不可能使用一些深度学习分割技术。但是我可以使用一些预训练的模型吗? 这是我的第一个简历问题,所以我对此知之甚少。我有点想不通,请您帮助我。

谢谢!

【问题讨论】:

  • 在您的第二张图片上。检查您感兴趣的 Blob 的大小。与其他“噪音”相比,它们显得相当大。你为什么不根据面积过滤你的斑点?过滤器不会给你一个完美的分割,因为你的一些 blob 被破坏了,但它是一个很好的近似值。此外,您可以在过滤掉较小的 blob 后尝试合并 blob 位!
  • 通过 cv2.inRange() 在几乎恒定的颜色背景(如您的第一个示例)上使用颜色阈值来阈值您的图像,而不是 OTSU 阈值。使用形态来清理较小的区域。如果您需要删除更小或更大的区域,则获取轮廓并按区域过滤。
  • 具有恒定背景的图像很容易解决,但对于彩色图像则似乎很难。
  • 另外,在第二张图像上,尝试中值/平均滤波器,然后进行 HSV 转换。按照建议,通过在 V 通道上搜索高值像素来执行阈值处理,然后执行区域过滤。这应该给你一个很好的分割掩码。顺便说一句,我喜欢你的用户名。这是我醒来时的第一感觉。

标签: python opencv deep-learning computer-vision image-segmentation


【解决方案1】:

我认为您需要使用基于形状的匹配。例如,您为每个旋转角度和比例计算每个形状的梯度,您将通过一些小步骤来计算。然后训练神经网络检测器。
实现实例检查:https://github.com/meiqua/shape_based_matching

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-08
    • 2022-01-21
    • 2021-05-20
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多