雷锋网按:本文作者qqfly,上海交通大学机器人所博士生,本科毕业于清华大学机械工程系,主要研究方向机器视觉与运动规划,会写一些好玩的内容在微信公众号:Nao(ID:qRobotics)。本文由雷锋网独家首发。
过完一个很长的寒假,终于又开学了。
昨天在图书馆刷 RL 教材的时候看到一个有趣的 app,叫做「唐纳德涂鸦」(Android:Donald Draws Executive Doodles;IOS:Trump Executive Order)。
大概功能就是可以将用户自定义的内容(图片、涂鸦、文字等)放在 D.T. 总统的决策书上,并生成动图。
一看到这个 app 我就感到眼前一亮,它综合了今年科技界最火的 AR 技术和政治界(与段子界)最火的 D.T. 总统。
『这个 app 会火!』
正如 app 作者所说的那样:"This app is gonna make the United States of Amemeica GREAT again!"
我之前在AR原理演示一文中曾有涉及过实现 AR 的方法,既然代码都还在,我就随手也做了一个 "qqfly Draws"。
首先,我需要有一段视频素材。于是,我从身后的书架上随手拿起一本「数码微距摄影之美」:
同时,放了一张 A4 纸在书面上,用于标记绘图区域。
然后,在书架前就录了段视频,拍摄的场景大概是这样的:
有了视频素材后,就是识别每帧图像中的绘图区域。
这个可以使用各种方法,我采用的方法是:先人工标记第一帧图像中的绘图区域(四个角点),之后用 Kanade-Lucas-Tomasi(KLT) 算法对这四个角点进行跟踪定位,大概效果如下:
每帧图片中的角点都标记出来了
之后要做的就是计算每两帧之间的单应性矩阵(Homography matrix)
这个利用图像帧两两之间的四个共同点(也即上述标记点)即可算出。
之后,我们只需要将所需要填充的内容转换成图片后,填充如第一幅图,其他图像则对应乘以上述单应性矩阵即可。
大概效果是这样的:
当然,如果每次填充的不是固定图片,而是一系列图片的话,就可以在上面放上动画或视频,大概效果是这样的:
也可以是这样的:
要实现这个功能还是比较简单的,各位小伙伴可以回去自己试试,代码可以参考Coursera上宾大的机器人学系列公开课第四课(Robotics: Perception)。
当然,如果有些小伙伴不会编程的话,我也可以给你提供一个更加简单、更加稳定可靠的方法:
差不多一个意思,请自备ipad
当然,我这个也只是简单玩玩,如果真要把 AR 做好的话,还是得靠做 SLAM 的各位小伙伴们。
其他脑洞大开的动手系列: