像 zookazam 这样的增强现实

Augment reality like zookazam

  1. zookazam这样的增强现实使用什么算法?

    我认为它分析图像并通过对比找到平面,但我不知道如何。

  2. 在开始使用这样的应用程序之前,我应该阅读哪些主题?

[序言]

这是非常宽泛的主题,并且在当前状态下大部分偏离主题。我重新编辑了您的问题,但为了让您的问题在本网站 rules/possibilities 的

范围内可以回答

您应该更详细地说明您的增强现实是什么:

  1. 应该做

    • 添加 2D/3D 个具有已知网格的对象 ...
    • 改变光照条件
    • adding/removing正文parts/clothes/hairs ...

    一个好主意是提供一些 input/output 您想要实现的示例图像(草图)。

  2. 它有什么输入

    • 视频,静态图像,2D,立体声,3D。对于纯 2D 输入指定什么 conditions/markers/illumination/LASER 模式你必须帮助重建。
    • 输入图像中会有什么?空房间、人物、特定物体等
  3. 指定目标平台

    许多算法受限于内存 size/bandwidth、CPU 电源、特殊 HW 功能等为您的平台添加标签是个好主意。 OS和语文也是不错的补充。

[增强现实的工作原理]

  1. 获取输入图像

    如果你连接到像相机这样的设备,你需要使用它的 driver/framework 或其他东西来获取图像或使用一些常见的 API 它支持。此任务依赖 OS。我在 Windows 上最喜欢的方式是使用 VFW(windows 的视频)API.

    我会从一开始就使用一些静态文件来简化调试和增量构建过程。 (你不需要等待相机和东西在每次构建时发生)。当您的应用程序准备好进行实时视频时,然后切换回相机...

  2. 将场景重构为3D网格

    如果您使用 3D 相机,例如 Kinect,则无需执行此步骤。否则,您需要通过通常基于边缘检测或颜色均匀性的一些 分割 过程来区分对象。

    3D 网格的质量取决于您想要实现的目标以及您的输入。例如,如果您想要逼真的阴影和照明,那么您需要非常好的网格。如果 相机在某些 房间 中是固定的,您可以手动预定义网格(硬编码)并仅计算视图中的对象。此外,对象 detection/segmentation 可以非常简单地通过从当前视图图像中减去空房间图像来完成,因此具有较大差异的像素就是对象。

    您也可以按照 OP 中的建议使用平面而不是真正的 3D 网格,但是这样您就可以忘记更逼真的效果质量,例如光照、阴影、交叉点.. .如果你假设物体是直立的,那么你可以使用房间指标来获得与相机的距离。见:

    • selection criteria for different projections
    • estimate measure of photographed things

    对于纯 2D 输入,您还可以使用照明来估计 3D 网格,请参阅:

  3. 渲染

    只需将场景渲染回某些 image/video/screen... 具有 added/removed 特征。如果你没有过多地改变光照条件,你也可以使用原始图像并直接渲染它。阴影可以通过使像素变暗来实现......为了获得更好的效果,illumination/shadows/spots/etc。通常是从原始图像中过滤掉,然后通过渲染直接添加。见

    渲染过程本身也依赖于平台(除非你是通过内存中的低级图形来完成的)。您可以使用诸如 GDI、DX、OpenGL... 之类的东西,请参阅:

    • Graphics rendering

    您还需要用于渲染的相机参数,例如:

    • Transformation of 3D objects related to vanishing points and horizon line

[基础话题google/read]

  1. 2D

    • DIP数字图像处理
    • 图像分割
  2. 3D

    • 矢量数学
    • 3D场景重建
    • 3D graphics
  3. 手板形式相关

    • 图像采集
    • 渲染