网站首页 > 技术文章 正文
项目简介:仅需C++语言基础,本课程将基于OpenCV实现一个将3D模型显示在现实中的小例子,学习基于Marker的AR技术,既简单又有趣。
实验楼为本项目提供了在线练习环境https://www.shiyanlou.com/courses/545,在PC端登录即可练习本项目。
一、课程说明
1.1 让我们谈谈AR
还记得去年(15年)微软发布的hololens宣传视频(Youtube)吗?
我想一图胜千言,没接触过AR的同学一定马上就知道AR是什么了。
开发者版已经发售了,现在可以自己写个小程序体验下AR的魅力。
1.2 课程简介
本课程会实现一个简化版基于Marker的AR小程序,往现实中放入一个“吃人妖怪”(ogre)。就是载入一个会动的3d模型。由于实验环境用不了摄像头,所以我们用视频来替代。
什么是Marker?
目前AR技术大致可以分为 基于标记(Marker Based) 和 非基于标记(Markerless) 这两大类:Marker一般来说就是一个定位用的小标记,多数都是正方形的,像这样
我们平时在应用商店下载的ar应用多半都是基于Marker的,定位比较方便容易。Markerless的就像是Hololens那种,不过Hololens更优越的地方在于它配备了深度传感器,天然具备了感受z轴的能力呢,在缺乏深度传感器的情况下还是得依靠图形学与计算机视觉的知识来定位,对算法的要求要更高。
为什么是简化版?
笔者认为以最少最简单的步骤达到目的,这对娱乐向教程来说是坠吼的。想要了解更多AR知识?课程的最后会给出参考资料与推荐资源。
吃人妖怪?
sinbad是ogre图像引擎的看板娘,我们使用这个引擎来显示3d模型,会提供现成的代码文件供使用,不用担心额外的学习成本。
最后的成果长这样。踩着魔鬼的步伐在光滑的地面摩擦,摩擦。。至于为什么这么黑。。笔者会再努力下解决这个问题。
1.3 本课程适用用户
本课程主娱乐向,所以对基础没什么要求,也不需要事先学习 opencv,大部分内容都会做注释,take it easy ,基本要求也就如下
有C++基础
1.4 知识点
本课程的实验中我们将学习并实践以下知识点:
C++ 语言基础语法
AR 基本概念
基于 Marker 的 AR 技术
OpenCV 程序开发
1.5 环境安装
首先安装一下 opencv 和 cmake
sudo apt-get update
sudo apt-get install libopencv-dev python-opencv cmake
下载需要的数据包并将其作为工作目录
wget http://labfile.oss.aliyuncs.com/courses/545/AR_tutorial_1.zip
uzip AR_tutorial_1.zip
cd AR_tutorial_1
数据包包含完整代码,就先把代码文件放一边吧。
mv marker.cpp marker.cpp.backup
二、基本原理
Maker based 是现今很流行的实现AR技术的方式,其中使用的标记种类也是看的人眼花缭乱的 0 0
大家见的最多的还是方块块的那种。下面就是一般检测方块块标记时的方法步骤:
首先对图像进行颜色阈值的处理,提取出大致的轮廓线
使用多边形近似提取出是四边形的轮廓
提取marker中的信息(可以认为是marker的id),对信息进行校验和纠错来得确认该marker的id
做姿态估计(pose estimation),就是确认目标物体的方位指向,反过来说也是确认了相机相对目标物体的方位指向。
本实验会跳过marker编解码与提取id的内容。在第四步的姿态估计中会涉及一个摄像机标定的问题。
什么是摄像机标定?
简单点理解,不同摄像机拍出来的效果是不一样的,比如这种:
每台摄像机都有自己的参数,比如焦距,透镜畸变参数等,称作内参数。这就需要用到摄像机标定技术通过该摄像机拍摄的视频或者图像来计算摄像机的内参数,处理输入图像时需要参考这些参数进行消畸,姿态估计也需要用到这些内参数。
本实验中摄像机的内参数文件会直接给出,不用再去做标定了。同时给出摄像机标定的代码文件和标定用的棋盘图片供同学在自己机子上做实验。
三、实验步骤
本项目的详细步骤和代码详解,请在实验楼查看并在线完成。您也可以关注实验楼微信号(ID:shiyanlou-com),获取海量技术教程。
猜你喜欢
- 2025-01-13 6个惯性传感器和1个手机实现人体动作捕捉、定位与环境重建
- 2025-01-13 SilhoNet:一种用于3D对象位姿估计和抓取的RGB方法
- 2025-01-13 新审视三维物体姿态估计的模板对新物体的通用性和对遮挡的稳健性
- 2025-01-13 爱可可老师24小时热门分享(2020.6.14)
- 2025-01-13 AIoT从原型到产品更简单!谷歌Coral平台面向全球发行
- 2025-01-13 汉振分享 | 刚性物体6D位姿估计方法简述
- 2025-01-13 西安电子科技大学学子获ECCV计算机视觉单模型6D姿态估计挑战赛冠军
- 2025-01-13 3D人体姿态估计方法 MHFormer:Multi-Hypothesis Transformer
- 2025-01-13 每日AI论文推荐:实时人体跌倒检测:基于轻量级姿...
- 2025-01-13 9个最流行的人体姿态估计模型
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)