代码之家  ›  专栏  ›  技术社区  ›  Alon Gubkin

人体的宽度和高度

  •  0
  • Alon Gubkin  · 技术社区  · 14 年前

    如何识别图像中人体的高度和宽度?

    3 回复  |  直到 14 年前
        1
  •  4
  •   Brad    14 年前

    你需要一些参考点。一张简单的照片是不行的,除非你知道相机的设置(位置,变焦,镜头变形等),以及人相对于相机的位置。

    如果你有一个参照物(比如背景中的网格或者其他东西),那么你可以测量网格并从那里开始。听起来不像你需要的。

        2
  •  2
  •   Cerin    14 年前

    为了扩展其他人所说的内容,您可以将这个复杂的任务分解为几个(仍然困难的)组件。

    1. 识别包含人类的像素的平方。

    2. 确定包含参考对象的像素的平方,您知道它的实际尺寸。(例如可乐罐、尺子等)

    3. 识别两个对象之间的三维关系,以便将参考对象的像素转换为与人类像素相同的比例。

    4. 使用以下公式计算人体尺寸:

      human.real_height=human.pixel_height*reference.real_height/reference.pixel_height

    当然,这一过程远不是万无一失的,而且仍然相当困难,但它应该提供一个合理的近似值。我对现有的工具包没有太多了解,但您可以从 OpenCV ,具有python绑定。此外,还有 SIFT algorithm 这是一种有趣的技术,可能在这里有效,但我认为只有一个C实现。

    如果只使用一张图像,第三步可能是最困难的。人们通过立体透视提取3D图像数据(即我们用双眼的图像来“推断”深度),但即使这样,也不是万无一失的,因为颜色和阴影会让我们失望。我可以想象使用单个图像是可能的,但可能更容易出错。这是一个活跃的研究领域,所以我会查阅有关计算机视觉的书籍,以更好地了解当前的实际情况。

        3
  •  1
  •   darioo    14 年前

    正如布拉德指出的那样,除非照片是在可控条件下拍摄的,否则这是不可行的。如果没有,那么你可能就走运了,因为 forced perspective 即使是最好的算法,也能检测人类的身高和宽度。