我正试图找到一种可接受的复杂性的有效方式
自从我进入图像处理世界已经有3个星期了,我已经读过很多算法(筛选,蛇,更多蛇,与傅里叶相关等),以及我不知道从哪里开始的启发式算法哪一个对我想要达到的目标来说是“最好的”。考虑到感兴趣的图像数据集是一个非常大的图像数据集,我甚至不知道我是否应该使用在OpenCV中实现的一些算法,或者我是否应该实现我自己的算法。
概述:
提前谢谢。
编辑 - 有关数据集的更多信息
每个数据集由共享相同
的80K产品图像组成显然,每个数据集中的所有图片看起来与产品本身几乎完全相同。为了使事情更加清晰,我们只考虑“监视数据集”:
集合中的所有图片看起来几乎都是这样的:
(再次,除了手表本身)。我想提取表带和表盘。事实上,有许多不同的手表风格,因此形状。从我到目前为止所读到的,我认为我需要一种模板算法,允许弯曲和拉伸,以便能够匹配不同风格的带子和表盘。
不是创建三个不同的模板(表带的上半部分,表带的下半部分,表盘),而是仅创建一个并将其分成3个部分是合理的。这样,我就可以充分相信每个部分都是按照预期的方式相互检测到的。表盘下方不会检测到表盘。
从我遇到的所有算法/方法中,活跃的形状模型似乎是最有希望的。不幸的是,我没有设法找到一个下降实现,我不能确信这是最好的方法,以便继续自己写一个。
如果有人能指出我应该寻找的东西(算法/启发式/图书馆/等),我会非常感激。如果您认为我的描述有点模糊,请随时提出更详细的说明。
答案 0 :(得分:8)
从你所说的,乍一看就出现了一些事情:
HOwever,看着您的样本图像,基于纹理的分割技术可能效果更好 - 手表表盘,表带和背景明显不同于纹理/粗糙度,这可能是一种理想的分离方式。
通过特征变换可以很容易地找到部分的粗糙度(在SO上解释一下,检查那里提供的研究论文的链接),然后可以在输出上应用均值漂移滤波器特征变换。这将使区域根据纹理明显分开。通过SVD实现金字塔式Mean Shift和查找特征值都是在OpenCV中实现的,因此除非您能够优化自己的代码,否则就速度和效率而言,更好(更容易)使用内置函数(如果存在)。
答案 1 :(得分:3)
我想我会解决问题。我会使用手表中的一组强大功能将目标图像“拼接”到模板上,而不是寻找表盘。第一块表在表盘上有一组白色方块,第二块手表有许多白色圆圈。我希望每种类型的手表: