引言:探索AR的神奇世界,我們將從二維碼的誕生談起。在這個科技的海洋中,二維碼是如何幫助AR實現數據獲取與位姿識別的呢?讓我們一起揭開這層神秘的面紗!
一、二維碼的由來
二維碼是將數據存儲在圖形中的技術,在1994年由騰弘原(Masahiro Hara)發明。這里還有一個趣聞,騰弘原在發明二維碼后放棄了申請專利,他說了這么一句話:“這種技術其實隨便找個網絡工具就能實現,所以這么簡單的東西,我就不收專利費啦。”,這也是二維碼得以廣泛應用的原因之一。
于1999年,加藤博一等人率先將AR技術與二維碼聯系起來,結合二維碼技術,開發了ARToolKit這一AR工具,這一工具在當今仍被廣泛使用。讓我們切回主題,談一談二維碼是如何在AR中得到應用的。
二、二維碼的工作原理
二維碼可以為AR提供兩樣信息:ID和位姿,接下來讓我們一一介紹
1.ID識別
首先,我們需要約定二維碼的尺寸:
二維碼存在 40種尺寸,也就是二維碼每行/列中的小方塊的個數,在官方文檔中,尺寸又被命名為 Version。尺寸與 Version存在線性關系:Version 1是 21×21的矩陣,Version 2是 25×25的矩陣,每增加一個 Version,尺寸都會增加 4。 接下來,我們會為二維碼劃分區域,并編碼:
二維碼的各部分都有自己的作用,基本上可被分為定位、功能數據、數據內容三部分:
1)定位區域:
定位圖形:用于標記二維碼矩形的大小;用三個定位圖案即可標識并確定一個二維碼矩形的位置和方向
定位圖案分隔符:用白邊框將定位圖案與其他區域區分;
校正圖形:只有在 Version 2及其以上才會需要,用于矯正二維碼的形變
2)功能數據:
格式信息:存在于所有尺寸中,存放格式化的數據
版本信息:用于 Version 7以上,需要預留兩塊 3×6的區域存放部分版本信息;
3)數據內容:剩余部分存儲二值化的數據內容,例如黑色方塊代表1,白色方塊代表0,此外數據內容還包括補齊符、糾錯碼、結束符等
接下來是識別:
輸入圖像,通過相機捕獲圖像
圖像二值化,通過圖形算法將圖像進行二值化處理,即將圖像變為黑白兩色的圖像
提取具有一定面積的連續區域
提取矩形區域的輪廓
對矩形區域內部的圖案進行解析,識別標識內容
由此,相機可以“認出”二維碼及二維碼的內容,將二維碼的功能數據中的ID提取出來,這些ID可以是網站,可以是一個登錄申請,也可以是激活設備某個功能的字符串
2.位姿識別
此外,二維碼也可幫助AR設備進行位姿識別,什么是位姿識別呢?就是讓設備知道自己和二維碼之間的距離和相對的姿態關系,也即二維碼離我多遠?二維碼是左右傾斜、還是前后俯仰?
位姿識別過程與ID識別類似,不過不同之處是,在提取各區域的輪廓后,位姿識別最需要的信息,是二維碼區域4個角的頂點坐標(Xi,Yi)。
首先,我們用示意圖表示攝像機的坐標系、圖像坐標系(攝像機拍攝的平面圖形的坐標系)、標識坐標系(二維碼在現實中所在的坐標系)
我們通過相機拍攝到的圖像坐標系的點(Xi,Yi),與相機內置的矯正矩陣K,可以求得旋轉變換矩陣R與平移向量t,其中,R表示二維碼相對相機發生的旋轉,t表示二維碼相對相機發生的平移
大致求解流程如下:
結合對二維碼在圖像坐標系的4個頂點所得的4項公式,我們便可求得矩陣R與t,得到二維碼的旋轉方位與平移方位,也可由此利用二維碼實現各式的AR應用。
三、各式各樣的二維碼
以上是對二維碼工作原理的簡單介紹,而在實際生活中,二維碼的形態也在不斷更迭,除了我們日常見到的二維碼,現在已經出現了防遮擋二維碼、紅外隱形二維碼、隨機點二維碼、微透鏡片二維碼等,這些新型二維碼,也可以和AR結合,幫助我們更好地與現實世界的物體進行交互。
參考文獻
[1]:版權聲明:本文為CSDN博主「琦小蝦」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。 原文鏈接:二維碼生成原理及解析代碼
[2]:《增強現實(AR)技術權威指南》
審核編輯 黃宇
-
Ar
+關注
關注
24文章
5083瀏覽量
169257 -
二維碼
+關注
關注
7文章
411瀏覽量
26401
發布評論請先 登錄
相關推薦
評論