我正在做的项目是检测宝石图像中的宝石,从而得出要扣除宝石总重量的想法。在这篇论文
之后,我已经在 HSV 颜色空间中完成了图像分割。如果给出如下的原始输入,我遵循的方法是三倍的:IMAGE1
- 使用“黄金”像素阈值我检测到图像中的黄金部分(
IMAGE2下) - 然后我检测图像中的背景/前景,因为已知背景是白色的(
IMAGE3下图) - 前两步输出的交集——
not GOLD && FOREGROUND => STONE(IMAGE4下)
除此之外,我还尝试使用填充算法根据一些已知的种子点来填充金/石头像素。但是由于光照不均匀和图像的精细度,泛光填充并没有产生很好的效果。此外,lo_diff和up_diff值(在OpenCV 实现中)也不是普遍固定的,需要针对每个查询点进行更改。
我也尝试过以简单的形式使用模板匹配,但查询图像中模板出现的复杂性导致该方法并非每次都适用。如果石头类型不规则,那么模板匹配会给出不稳定的结果。
与前两种方法相比,HSV 颜色空间中的分割产生了更好且更普遍适用的结果。但正如前面提到的 4 个示例图像的结果所示,这也有其自身的局限性,比如
- 在第二张图像中,由于照明不佳,所有背景都(错误地)被检测为前景。
- 在第一张图像中,由于左上角(非常)轻微的照明问题,检测到的区域被放大了。
- 在最后 2 个结果中可以看到类似的噪声问题。
有没有更好的方法来解决这个问题?有人可以建议对当前方法进行一些改进吗?
也欢迎提出全新方法的建议。除了图像处理之外,是否有可能针对该问题实施机器学习方法?有人可以在这个方向上给出任何具体的指示吗?
