AR流程
那么,这些技术背后的原理是什么?本文会从图像处理、特征检测、特征点匹配、图像变换匹配和追踪算法等方面给你进行深入浅出的技术展现,让AR识别技术不再成为难以逾越的技术壁垒。最后也会跟大家聊聊,天猫营销平台技术,是如何探索新技术在营销领域的运用,与商业进行紧密结合的。
AR技术从来不是单独的一门学科领域,它是众多技术学科集成在一起的一个应用方向。如图所示,除了一些图像处理基础及AR硬件相关算法外,它所依托的最重要两个领域是计算机视觉和机器学习,而这背后就人工智能这个大领域。我们会以计算机视觉理论作为基础,来讲讲AR的技术。
1. 基础知识准备
首先科普两个基础知识,我们先来说说图像的表示和色彩模型。
二维图像模型,定义一个二维图像的模型表示成z = I(x, y),x、y为二维图像上的像素点坐标值,z为此像素点的色彩值,如果使用的是RGB色彩模型,那z值就是以红、绿、蓝三个值定义的数据,比如红色为(255,0,0)。一般图片处理很多采用单通道即灰度值,那就是0~255之间的一个表示灰度的值,彩色图片也可以由一定公式变换到灰度空间里。后续的图像算子操作(如卷积等)均是在此模型上进行相信数值计算。这个模型很简单,下面要介绍的一个模型就有点难了。
计算机视觉的最重要模型:透视照相机模型,也叫小孔摄像机模型。这个模型来源于真实世界的成像原理,从古人发现的小孔成像、到凸透镜成像、一直到人眼成像结构的发现。
人们从发现的原理中受到启发,确立了由4个坐标系组成的透视照相机模型。它描述了现实世界的物体从世界坐标系、相机坐标系、图像坐标系到像素坐标系之见转换的位置关系,并对应到多个矩阵的计算上。AR算法所用到的计算机视觉技术,很多都是现实世界的物体与图像平面上的变换(这里一般称为单应性变换,后文会用到),所以这个模型就成为了AR算法中最基本的模型,大家心里要这个概念。
AR算法的核心技术:识别追踪
AR算法有很多不同种类,其中目前在手机端使用的最重要的就是识别和追踪。基本上,去年以来的所有在手机APP上宣称的AR功能都离不开此技术。
如图我厂去年的一些营销活动,“全民扫钱”领优惠券、扫实物瓶子出现相关3D动画,识别标记图片找红包等,都使用了图像的识别或者追踪技术。
AR识别追踪的流程
AR识别追踪,根据所需识别的图像内容,大致分为两个技术流派:Marker based AR 以及MarkerLess AR。Marker识别是使用一个较简单的标识,通常是正方形并且四边都清晰可辨。这类识别算法相对简单,通常用模板匹配算法解决,效果也不错,此方面经典实现可以参考早期ARToolKit引擎的Marker识别流程。
随着进一步发展,人们逐渐喜欢用更复杂的图像来代替Marker,简单的识别技术已经不适应现有需求。于是就出现了更复杂更通用的MarkerLess AR的识别,我们下面主要说的就是这种技术。
MarkerLess AR的识别追踪主要分为特征点检测、图片识别和追踪(姿态估计)三个步骤。图片识别的过程又分为特征点匹配和图片相似度度量两步。
特征检测
图像局部特征检测作为计算机视觉领域的热点内容,这十几年里研究进展不断。考察此技术的大致发展历史,是从简单的角点特征提取一直到尺度不变、旋转不变的特征提取算法。图像的角点特征是最容易被检测出来的,但是,在不同尺度不同大小分辨率的图像上会不稳定,比如在小图片中找到的角点不一定在同一张图片的小尺寸图片上检测得出来。
另外,图片发生旋转后特征区域的角度发生变化,也造成了检测不出原图对应的特征点。所以,我们来说一个经典的尺度不变特征检测(SIFT)算法,它通过引入尺度不变性和旋转不变性,解决了以上两个问题。
SIFT算法之经典,不仅在于它已经写成了教科书的经典段落,每个学图像处理或计算机视觉的人都会去完整的经历一遍它的原理;更在于这十几年里不断涌现的新的特征检测算法,都可能或多或少的借鉴了它的整体框架和思路。
怎么引入尺度不变性呢?SIFT引入了尺度空间的概念,将一张图片通过高斯卷积操作生成多个尺度的图片,这些不同尺度因子的图片给人的直观感受就是清晰度不同。然后加入多分辨率框架,每次都降采样宽高为原图的1/2。
然后同层相邻图片进行差分操作,就生成了高斯差分金字塔(DoG),如上右图所示。为啥使用DoG尺度空间作为特征点的搜索空间呢?因为人们发现高斯拉普拉斯(LoG)函数的极值点相对于其他的特征提取函数能够产生更加稳定的图像特征,而DoG和LoG非常相似并且DoG的处理速度比LoG快多了,于是就使用了DoG作为特征提取函数。
在DoG金字塔中,我们采用区域搜索算法去寻找最大值或最小值点(如上图)。对于每个点,考察其邻域点:周围的8个点及其上下相邻尺度的18个点,共26个点。一个点如果在这26个领域点中是最大值或最小值,就认为该点是图像在对应尺度下的一个特征点。全部检测完后,会使用一些算法去除其中不好的或者边缘的特征点,以增加特征点提取的稳定性。
为了获得特征的旋转不变性,SIFT通过计算特征点周围邻域像素的梯度方向并统计出方向累积直方图,把其中累计值最大的方向定为该特征点的主方向。后面的特征点描述就会把坐标轴旋转为特征点主方向,所以在发生旋转的图片上也会同原图片中的特征描述一致。这样,就具备了旋转不变性。
对检测出的特征点,根据点周围邻域像素的梯度方向形成特征描述子。如上图示,计算出特征点Keypoint周围16*16的window中每一个像素梯度,并使用高斯下降函数降低远离中心的权重。在每个4*4的1/16象限中,通过加权梯度值加到直方图8个方向区间中的一个,计算出梯度方向直方图。每个特征点的描述子大小为4*4*8=128维,归一化之后可以去除光照影响。
我们可直观感受下,上图中一张图片通过SIFT所提取的特征点信息。图中每个箭头代表一个检测到的特征点,箭头的起始位置为特征点坐标,方向为特征点主方向,长度为所检测到的尺度空间。以上是简要的SIFT算法原理描述,详细实现细节感兴趣的可以参考论文(Lowe, 2004)。
图片识别
特征点匹配就是一个高维特征空间的搜索近似最近邻点的问题。如果是用最简单的线性匹配,那么速度远远达不到性能要求。这时候我们就必须用构建高维特征空间的数据结构算法。最经典有效的当属KD树及KMeans树两种结构及对应算法。
首先KD树算法我们来举个例子,假设有特征点样本集:{(2,3), (5,4), (9,6), (4,7), (8,1), (7,2)},那么使用KD树生成算法,构建出如下的二叉树,特征点匹配的问题就转化成了二叉树查找。
假如有待查找点P(2.1, 3.1),如上图所示。那么搜索的过程就是先从(7,2)点开始进行二叉查找。由于第一层标记为考察X轴数据,于是待查找点与目前节点(7,2)的X轴数据比较:(2.1 < 7),选择走左子树到达(5,4),重复使用相同算法到达叶节点(2,3),就是所要求的最近邻特征点。以上只是简单而不精确的描述,实际查找算法会更复杂,因为要有回溯的过程避免遗漏路径上层子树区域内可能存在的更近距离点。
实际的KD树生成及查找算法请看相关论文(Muja et al., 2014)。
另一个很实用的最近邻查找方案是KMeans树,它和KD树查找的原理相似。区别在于,KD树是二叉树,每个节点背后对应一个样本点。而KMeans树为K叉树,使用KMeans聚类算法将特征点集分为K类,然后每类移入下一层负责分别生成下一层子树,每个节点保存的是聚类中心点等相关信息。直到叶子节点的数据量小于等于K为止,构建完成K叉树后,使用类似KD树的查找算法从Root节点开始搜索,直到找到最近邻点。K叉树如下图所示,详细相关算法可参考论文(Muja et al., 2014)。
特征点匹配的直观效果,如上图。每条蓝色线段两端连接着的是两张图片上对应的匹配点。
两张图片上的特征点匹配完成后,就需要进行下一个步骤:两图像间的相似度度量。前面普及过一个透视照相机模型,大家还有印象么?描述不同拍摄位置同一图片之间的变换,我们称之为单应性变换。如图所示的H变换。
我们使用无需相机标定的查找单应性H的算法,通过匹配的点集来得到两张图片中最佳单应性变换H,详细可参考OpenCV中的findHomography方法。然后根据得到的H,考察两图片中的匹配点集,哪些符合此单应性变换H,哪些不符合。据此,得出图片的匹配相似度量,超过预先设定阈值就认为两图片相似,即识别成功。
AR识别追踪
追踪的过程就是估计被摄物体3D姿态及3D引擎渲染对应虚拟物体姿态的过程。每一次的追踪,都依赖于前述的特征点提取、匹配、及计算单应性变换。得到单应性变换,就等于得到了被摄物体3D现实坐标点集与二维屏幕成像坐标点集。通过得到的匹配点集以及标定获得的摄像机内参数,使用求解透视N点问题的算法,就可以求出摄像机外参数,即摄像机实时姿态,随即便可估算出被摄物体3D姿态。
最后一步,使用3D引擎渲染被摄物体上的3D虚拟物体,并且把虚拟物体的姿态根据上面估计出的实际物体的姿态矩阵进行变换。如下图所展现的,虚拟与真实物体的联动,实际上就是实现增强现实的体验。
技术驱动商业变革
全民扫品牌,让广告变得更有趣
AR技术用在营销场景下,为消费者带来的扫码体验将是崭新的,遥想一群人拿着手机在街上扫描LOGO观看AR动画的盛况,简直是物物皆传播,无处不营销。与此同时,乘着内容营销的风口,众多品牌汇聚所带来的集群效应,也将进一步连接品牌与平台,实现双方价值的最大化。
图 99聚星节聚划算&哈根达斯扫Logo营销Banner
去年9.9期间,国内外160余个一线品牌参加了天猫营销平台&聚划算的品牌LOGO AR互动。几乎你身边能看到的品牌,用聚划算客户端扫一扫,都会出现酷炫的AR效果,同时消费者还可以领取品牌方发出的不同面额的现金红包。此玩法以AR这种科技手段为媒介,将用户、品牌、天猫营销平台三者进行有机结合。
消费者:通过聚划算App体验每个品牌带来的AR创意,同时可以获得自己喜爱品牌的现金红包。
品牌方:通过AR视频来表达自己的品牌理念及新品趋势告知给消费者,同时获取自己的线下目标客户信息。
天猫营销平台:从之前的告诉消费者什么品牌在参聚,变为消费者通过AR互动知道这个线下品牌在参聚,同时即使该品牌不在参聚状态下,消费者也可以通过扫LOGO获取该品牌活动,订阅该品牌,获得其参聚资讯。
2016.9.4-9.9期间,部分优质品牌方和聚划算全面线上线下联动,将品牌LOGO,聚字LOGO全面投到地铁、灯箱、建筑地标等,消费者扫LOGO即可获得由品牌方及聚划算提供丰厚红包及礼品。
那么,在以上业务场景构建完毕后,为了完成业务需求,提升用户体验,我们必须对AR算法原理进行深入考察,并实现能够很好应用于以上业务场景下的AR功能。