宝石图像中的宝石检测

信息处理 图像处理 计算机视觉 Python opencv 图像分割
2022-02-24 04:58:05

我正在做的项目是检测宝石图像中的宝石,从而得出要扣除宝石总重量的想法。在这篇论文
之后,我已经在 HSV 颜色空间中完成了图像分割如果给出如下的原始输入,我遵循的方法是三倍的:IMAGE1

  • 使用“黄金”像素阈值我检测到图像中的黄金部分(IMAGE2下)
  • 然后我检测图像中的背景/前景,因为已知背景是白色的(IMAGE3下图)
  • 前两步输出的交集—— not GOLD && FOREGROUND => STONEIMAGE4下)

该图说明了这些步骤: 流程图 可以找到一些示例图像及其相应的结果:

除此之外,我还尝试使用填充算法根据一些已知的种子点来填充金/石头像素。但是由于光照不均匀和图像的精细度,泛光填充并没有产生很好的效果。此外,lo_diffup_diff值(在OpenCV 实现中)也不是普遍固定的,需要针对每个查询点进行更改。

我也尝试过以简单的形式使用模板匹配,但查询图像中模板出现的复杂性导致该方法并非每次都适用。如果石头类型不规则,那么模板匹配会给出不稳定的结果。

与前两种方法相比,HSV 颜色空间中的分割产生了更好且更普遍适用的结果。但正如前面提到的 4 个示例图像的结果所示,这也有其自身的局限性,比如

  • 在第二张图像中,由于照明不佳,所有背景都(错误地)被检测为前景。
  • 在第一张图像中,由于左上角(非常)轻微的照明问题,检测到的区域被放大了。
  • 在最后 2 个结果中可以看到类似的噪声问题。

有没有更好的方法来解决这个问题?有人可以建议对当前方法进行一些改进吗?
也欢迎提出全新方法的建议。除了图像处理之外,是否有可能针对该问题实施机器学习方法?有人可以在这个方向上给出任何具体的指示吗?

0个回答
没有发现任何回复~