从现有模型创buildOpenCV Haar分类器

我想制作一个识别螺丝的应用程序。 每个螺丝的尺寸和形状都有一个标准,并且有一些软件可以提供每个螺丝的360 3d模型(例如Autocad)

我想知道是否有任何方法来采取现有的模型(一些扩展),并从中创build一个Haar classifier

如果不清楚的话,我不想拍出每一个模特的数千张照片。 我想以某种方式重用现有的模型

谢谢

Solutions Collecting From Web of "从现有模型创buildOpenCV Haar分类器"

简而言之:我不认为这是可能的,除非你能够根据不同的照明条件逼真地渲染你的3D模型。

Haar和LBP分类器确实使用了某种纹理信息,所以纯粹的形状信息是不够的。 (所以,对于这种方法,HoG可能会或可能不会更合适)

对于haar分类器培训,您可以使用不同的材质和光照条件以各种姿势呈现您的3D模型。 您需要使用背景图片作为负面样本,并将背景图像用作渲染后的螺丝的背景(但您也可以使用opencv_createsamples工具将螺丝合并到背景中)。

因此,根据您现实或适当的方式呈现screews,您可以使用它们进行培训。 请记住,实际上,相同types的两个螺丝看起来不完全一样,长度可能会有less量变化(取决于生产质量),并且可能存在变形或“噪音”,如毛刺可能存在不同于完美的模型,也许你不得不考虑在你的渲染。

此外,请记住,haar和lbp级联分类器如果仅从单个姿势(如正面或轮廓面,而不是同时)覆盖一个类,则可以最好地工作,这样可以减less使用三维模型。

有时,3D模型可以与倒angular匹配结合使用,以将其与2D模型进行比较。

哈尔分类器在2D图像上运行,用于训练和识别。 它需要一组归一化的正二维图像(带螺丝)和一组归一化的负二维图像(无螺丝)来训练分类器。 因此,如果这是您的问题,则无法直接使用3D模型进行训练。 当然,您可以使用3D模型渲染2D图像,但是由于我在问题的末尾理解了您的意见,所以这不是您想要的。

此外,根据您的实际任务,哈尔分类器不太可能成为首选方法。 一些重要的问题是:你能分割图像中的螺丝吗? 图像中可能有几个螺丝? 这是一个分类任务,或者你知道图像中存在哪种螺丝types? 你需要本地化吗?还是只需要承认? 您的螺丝钉可能的姿势受到限制(或者由于分割可能会事先进行标准化)?

请注意,哈尔分类器是为了“学习”具有相似姿势的类的不同实例的外观变化(像不同人的正面或多或less的面部检测),而不是用于处理完全不同的同一对象的姿态,即使在二维,甚至不谈论3D。 所以它可能只适用于非常有限的情况。

更新:一些提示带领您进入正确的方向:

  1. 如果您可以分割螺丝,并想尝试一种简单的方法,请尝试将其视为二维问题(假设螺丝不直立),并根据图像时刻进行标准化。

  2. 如果您可以分割螺丝并将其视为二维/三维问题(投影到二维图像的三维模型),您可以查看我的(现在老的)关于基于3D的生成视图的高效外观匹配的研究模型。

  3. 如果您无法分割螺丝,并且知道图像中存在哪种types的螺丝,您可以查看来自工业机器视觉库的所谓几何图案匹配,例如Halcon的基于形状的匹配。 它也提供类似于CAD的数据的培训。

  4. 如果您不能分割螺丝,而且您不知道图像中存在哪种types的螺丝,则可以为分类任务训练深度卷积neural network,然后使用3.进行validation和定位。