ARToolKit的Marker(barcode码)的ID识别
来源:互联网 发布:ots软件什么意思 编辑:程序博客网 时间:2024/05/17 06:27
以3*3的为例,
012345678
当然需要先在代码中设置
AR_MATRIX_CODE_TYPE matrixCodeType = AR_MATRIX_CODE_3x3_PARITY65;arSetMatrixCodeType(arHandle, matrixCodeType);先说明一下,这种码的0,6,8号位用于确定marker的方向,正方向的情况下,0,6号设置为黑色,8号为白色,这个是不变的。1号位是奇偶校验位。剩下的是数据位,依次为2,3,4,5,7,以这个顺序排序组成的二进制码对应的数字为ID。
在arGetMarkerInfo()函数中,对候选的marker2_num个marker标记进行遍历。对于每次遍历,arGetLine()函数通过将四边形的四条边进行线性拟合,提取到四条直线的交点,确定候选marker的区域。然后进入arPattGetIDGlobal()函数。
arPattGetIDGlobal()函数中主要有两个函数:①arPattGetImage2() ②get_matrix_code()
①上边说的marker内部一共有3*3个小方格,每个小方格代表一位二进制位,在每个小方格中,程序进行了9个不同位置的采样(具体这个9是怎么来的还没咋看懂),取9个采样的灰度值的平均值,最后会得到9个方格对应的9个灰度值,储存在ext_patt[9]中。
②为先确定marker的方向,所以先取四个角上的0,2,6,8号位的灰度值,找出4个中的最大值和最小值,两个值的差如果小于某个阈值(30),则认为不是marker;如果大于阈值,接下来再设置一个阈值thresh=(max-min)/2;以thresh这个阈值将9个灰度值二值化为0或1,最后提取出数据位的码进行解码得到ID。
arPattGetIDGlobal()函数中的第一个函数 arPattGetImage2()中采样点是怎样确定的呢?
① get_cpara( world, local, para );world是手动设置的一个正方形的四个顶点坐标,local是检测到的标记物的四个点的坐标。利用此函数求得标记物的仿射变换矩阵para。
②例如标记物编码区是3 * 3个方格,每个方格采样九个,将这81个采样点在标准正方形中确定坐标,乘上para即可得到此点在捕获的图像帧中对应的坐标,然后进行采样。
- ARToolKit的Marker(barcode码)的ID识别
- ARToolKit 的跟踪步骤
- 自识别标记(self-identifying marker) -(2) 用于相机标定的CALTag介绍
- 自识别标记(self-identifying marker) -(5) 用于相机标定的CALTag图案设计
- 关于artoolkit中ARSimpleNativeCarsProj这一demo的识别图替换后的jni编译步骤
- Barcode 的问题
- ARToolKit里的RT矩阵
- ARToolKit 的simpleLite程序分析
- ARToolKit 的simpleLite程序分析
- 玩了几天的ARToolKit
- Artoolkit的例子simpleVRML详解
- 编译ARToolKit遇到的几个问题
- ARToolKit制作自定义Marker,并导入Unity
- 日记的ARTOOLKIT笔记(1):从流程开始看
- 自识别标记(self-identifying marker) -(3) 用于相机标定的CALTag源码剖析(上)
- 自识别标记(self-identifying marker) -(4) 用于相机标定的CALTag源码剖析(下)
- marker的另一种用法
- ARUCO marker的解释
- LeetCode-697:Degree of an Array (度相同的最小子数组)
- android Location_mode 默认设置不成功
- Google的自己的刷新方法SwipeRefreshLayout
- Elasticsearch中文分词插件IK Analyer安装操作指导(本博第二篇)
- lambda表达式
- ARToolKit的Marker(barcode码)的ID识别
- 计算机的两大设计思想
- [DP]BZOJ 4321: queue2
- Safari移动端 数字被识别成电话号码
- Gitflow工作流程
- 位运算
- 安卓 实现对已知路径文件夹以及文件排序和遍历
- Android开发:控件GridView的使用
- 数组排序之冒泡排序