吳迪
摘要:本文提出了一種基于單攝像頭的3D圖像構(gòu)建系統(tǒng)的解決方案。系統(tǒng)硬件以ARM11處理器S3C6410為數(shù)據(jù)處理核心,并配備CMOS圖像采集單元和紅外傳感單元;以嵌入式Linux操作系統(tǒng)作為系統(tǒng)軟/硬件管理調(diào)度和協(xié)調(diào)控制中心,并采用ARM11處理器自帶的3D硬件加速器和OpenGL ES軟件圖形開發(fā)庫相結(jié)合的方式實(shí)現(xiàn)3D加速,構(gòu)建了3D快速建模系統(tǒng)。
關(guān)鍵詞:嵌入式系統(tǒng) ARM-Linux 3D構(gòu)建技術(shù)
中圖分類號:TP368 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)01-0208-02
Research on 3D Image Constructing System Based on S3C6410
WU Di
Abstract: In this paper, we propose a solution of 3D image constructing system based on single camera. We use ARM11 processor S3C6410 as the core of data processing which equipped with CMOS image capture unit and infrared sensor unit. In addition, we use Linux operation system as the core of management and coordination control platform for this system. By a combination of using 3D hardware accelerator in ARM11 processor and the graphics development library of OpenGL ES software it realizes 3D acceleration and constructs a rapid 3D modeling system.
Key words: Embedded System; ARM-Linux; 3D Constructing Technology
1 研究背景及意義
3D技術(shù)正悄悄改變著人們的生產(chǎn)、生活和娛樂方式,3D打印、3D游戲、3D全息投影、3D電影等多維技術(shù)正在走進(jìn)我們的生活;在工業(yè)領(lǐng)域,3D技術(shù)已經(jīng)嵌入到了工業(yè)設(shè)計(jì)、虛擬現(xiàn)實(shí)、電影電視、行為識別、航空檢測領(lǐng)域等方面[1]。在過去由于技術(shù)的限制人們無法通過3D的方式記錄當(dāng)下復(fù)雜世界中萬物的變化,而如今隨著科學(xué)技術(shù)的飛速發(fā)展,人們迫切需要記錄和重現(xiàn)現(xiàn)實(shí)世界的真實(shí)感觀,3D圖像構(gòu)建技術(shù)正掀起一場洶涌浪潮。
因此,如何通過二維影像采集設(shè)備快速而準(zhǔn)確地通過計(jì)算處理得到物體的有效三維數(shù)據(jù)信息,并通過3D技術(shù)重建物體得到3D實(shí)物已成為當(dāng)下國內(nèi)外最熱門的研究項(xiàng)目。
2 研究現(xiàn)狀與思路
國內(nèi)外對于3D圖像重構(gòu)技術(shù)的研究已成為時(shí)下的熱點(diǎn)問題。麻省理工學(xué)院媒體實(shí)驗(yàn)室Hiroshi Ishii教授設(shè)計(jì)了一個(gè)3D實(shí)時(shí)重建表面。它可以精細(xì)地復(fù)制一雙運(yùn)動著的手,而且3D的假手中還拖著一個(gè)小球,看上去和小球在真手上運(yùn)動一樣。此外,它還可以以遠(yuǎn)程的方式來復(fù)制模型、地圖、物件等;微軟研究院日前在官網(wǎng)上公布,他們正在研究一項(xiàng)在便攜設(shè)備上使用3D圖像重構(gòu)技術(shù)的項(xiàng)目,基于3D掃描技術(shù)的便攜設(shè)備支持用戶利用設(shè)備上的RGB攝像捕捉,將物理實(shí)體轉(zhuǎn)換成高質(zhì)量3D模型,另外它還支持3D打??;深圳街景也采用3D重構(gòu)技術(shù),使用激光點(diǎn)云掃描結(jié)合360。實(shí)景影像的方式,對街道兩旁的建筑等實(shí)景進(jìn)行數(shù)據(jù)采集,再進(jìn)行可視化的場景還原建模,即得到3D數(shù)據(jù)。
3D目標(biāo)重構(gòu)是攝像機(jī)成像的逆過程,主要有兩種實(shí)現(xiàn)方法,包括主動方法和被動方法。主動方法是利用激光掃描儀對場景內(nèi)目標(biāo)進(jìn)行掃描,以得到3D目標(biāo)表面信息。被動方法的實(shí)現(xiàn)過程如下:首先,對多視環(huán)境進(jìn)行拍攝,得到多視圖像;然后,對多視圖像進(jìn)行特征提取,根據(jù)特征點(diǎn)間的相應(yīng)關(guān)系進(jìn)行匹配,得到特征點(diǎn)在3D空間的相應(yīng)坐標(biāo);最后,對3D點(diǎn)進(jìn)行連接,得到表示目標(biāo)表面的網(wǎng)格。這種被動方法的重構(gòu)過程能夠自動完成,通過多視圖像直接恢復(fù)目標(biāo)表面顏色、形狀和運(yùn)動參數(shù)等信息,對硬件的限制較小,是3D目標(biāo)重構(gòu)的主要方法,其應(yīng)用范圍頗為廣泛。除上述兩種方法外,另外還有3種目標(biāo)和場景建模方法,如下:
1)基于圖像的繪制
該方法依賴準(zhǔn)確的相機(jī)位置或者自動立體匹配直接從輸入影像中創(chuàng)建3D環(huán)境中的視覺。其缺點(diǎn)是缺乏幾何數(shù)據(jù)、需要大量的近距離空間影像、建模結(jié)果易受環(huán)境影響。
2)基于圖像的建模
該方法利用場景圖像來建立場景的幾何模型,包括幾何物體的空間形狀、物體表面的材質(zhì)屬性以及反射模型、光源和物體相互作用產(chǎn)生的光照和陰影等。按照計(jì)算機(jī)圖形學(xué)的渲染流程將模型送入渲染流水線,重新渲染出目標(biāo)物體。其優(yōu)點(diǎn)是數(shù)據(jù)量小,而且對于簡單的場景可實(shí)現(xiàn)快速模型重建;缺點(diǎn)是難以對整個(gè)場景進(jìn)行3D建模。
3)基于距離的建模
該方法直接獲取目標(biāo)的3D幾何信息,能夠直接得到光線或者圖像投影。
該系統(tǒng)的研究思路是采用圖像和距離相結(jié)合的方式構(gòu)建3D快速建模系統(tǒng),該方式符合復(fù)雜大型目標(biāo)3D重建的工程需求[2]。
3 系統(tǒng)硬件架構(gòu)
該系統(tǒng)選擇具有ARM1176JZF-S內(nèi)核的處理器S3C6410作為嵌入式硬件核心,它是具有32位RISC內(nèi)核的低成本、低功耗、高性能的微處理器[3]。S3C6410內(nèi)部采用哈佛結(jié)構(gòu)、8級流水,并具有64/32-bit內(nèi)部總線,其內(nèi)部集成了多個(gè)功能強(qiáng)大的硬件加速器,如:3D圖形加速器,能夠?qū)崿F(xiàn)移動圖像處理、顯示控制與圖像縮放[4]。因此,在處理器的選型上該系統(tǒng)選擇了具有3D引擎的ARM11處理器S3C6410作為硬件核心,基于ARM+Linux的硬/軟件架構(gòu)實(shí)現(xiàn)對系統(tǒng)大規(guī)模復(fù)雜應(yīng)用程序的集成調(diào)度和協(xié)調(diào)控制。
該系統(tǒng)硬件設(shè)計(jì)由ARM11核心板和底板兩方面構(gòu)成。核心板的NAND Flash數(shù)據(jù)存儲器采用三星公司的256MB的K9F2G08芯片,SDRAM電路采用兩片512MB的K4X51163PE芯片實(shí)現(xiàn)。底板電路是基于外圍功能單元的接口電路,包括電源、串口、紅外發(fā)射電路、底板與核心板的接口電路以及LCD顯示單元和CMOS圖像傳感單元。系統(tǒng)硬件設(shè)計(jì)方案圖1所示。
圖1 系統(tǒng)硬件架構(gòu)
4 系統(tǒng)設(shè)計(jì)方案
該系統(tǒng)采用ARM11架構(gòu)和CMOS攝像頭,基于圖像變換的思想設(shè)計(jì)實(shí)現(xiàn)3D圖像構(gòu)建系統(tǒng)[5]。ARM處理器控制紅外發(fā)射器以一定的頻率向外輻射紅外線,同時(shí)控制CMOS攝像頭接收從物體反射回來的信號。ARM處理器比對基準(zhǔn)信號與接收信號并進(jìn)行運(yùn)算,得出在每個(gè)像素點(diǎn)上CMOS攝像頭與被測物體之間的距離信息,并構(gòu)成3D立體空間信息[6]。系統(tǒng)工作流程如圖2所示:
由于僅采用軟件方式實(shí)現(xiàn)3D圖形加速不能夠滿足系統(tǒng)對圖像處理的實(shí)時(shí)性要求,因此采用軟/硬件相結(jié)合的方法加速圖像處理,通過硬件圖形加速器件實(shí)現(xiàn)由嵌入式軟件實(shí)現(xiàn)的功能。在該方案中加入了硬件圖形加速,選擇S3C6410芯片內(nèi)集成的多媒體3D加速器[7]。它可以應(yīng)用GPU(Graphics Processing Unit,圖形處理單元)來幫助處理器完成3D圖形的顯示工作。
軟件方面采用軟件優(yōu)化的方式改善嵌入式系統(tǒng)中圖形圖像的處理性能,這里采用特定風(fēng)格編寫C代碼并采用效率更高的匯編程序?qū)D形圖像的顯示任務(wù)C程序進(jìn)行重寫。結(jié)合3D圖形硬件加速,在軟件部分添加了3D圖形函數(shù)庫OpenGL ES(OpenGL for Embedded Systems)圖形函數(shù)庫,它是OpenGL 3D API的子集,是針對嵌入式的3D圖形標(biāo)準(zhǔn),并支持硬件加速[8,9]。圖形加速方案的實(shí)現(xiàn)原理為:OpenGL ES圖形庫為上層應(yīng)用程序提供API,實(shí)現(xiàn)圖形的簡單處理,向下通過幀緩存驅(qū)動程序訪問幀緩沖設(shè)備,配置圖形加速的時(shí)序和模式寄存器,并調(diào)用加速驅(qū)動程序啟動圖像處理器的加速功能實(shí)現(xiàn)圖形加速[10]。
EGL是OpenGL ES和底層Native平臺視窗系統(tǒng)之間的接口,首先要?jiǎng)?chuàng)建EGL實(shí)例,然后配置OpenGL的運(yùn)行環(huán)境,最后獲取當(dāng)前OpenGL ES畫布并顯示繪制結(jié)果。OpenGL ES創(chuàng)建流程如圖3所示:
圖3 OpenGL ES創(chuàng)建流程
5 結(jié)語
本文結(jié)合嵌入式處理器S3C6410支持3D硬件加速的自身特點(diǎn),提出了一種3D圖像構(gòu)建系統(tǒng)的解決方案。該系統(tǒng)采用嵌入式處理器S3C6410+CMOS攝像頭+紅外發(fā)射單元的硬件架構(gòu),基于S3C6410片內(nèi)3D硬件圖形加速器與OpenGL ES 3D圖形函數(shù)庫,以軟/硬件相結(jié)合的方式加速圖像處理,采用圖像和距離相結(jié)合的思想并基于圖像變換方法實(shí)現(xiàn)3D圖像構(gòu)建。
參考文獻(xiàn):
[1] 覃琴,周麗霞.基于ARM和FPGA的3D打印機(jī)控制系統(tǒng)設(shè)計(jì)[J].伺服控制,2015(2):49-50.
[2] 張旭光.基于OpenGL的3D建模與編程[J].今日科苑,2008(14).
[3] 華清遠(yuǎn)見嵌入式培訓(xùn)中心.嵌入式 Linux 應(yīng)用程序開發(fā)標(biāo)準(zhǔn)教程[M].北京:人民郵電出版社,2009.
[4] Mark Mitchell, Jeffrey Oldham, Alex Samuel. Advanced Linux Programming[M].America: New Riders Publishing, 2001.
[5] 顏無瑕, 劉傳才. 三次透視投影變換圖像拼接[J].光學(xué)精密工程,2015,23(9):2724-2731.
(下轉(zhuǎn)第214頁)
(上接第209頁)
[6] 代壽剛. 基于ARM+FPGA的單攝像頭3D重構(gòu)系統(tǒng)設(shè)計(jì)[D].長春:吉林大學(xué),2013.
[7] Ashley Stevens. 3D手機(jī)游戲圖像加速器[J].中國集成電路,2003(8).
[8] 楊鍵,陳利學(xué),龔捷.基于OpenGL的三維圖形繪制和3D建模[J].軟件導(dǎo)刊,2009(7).
[9] 吳斌.OpenGL編程實(shí)例與技巧[M]. 北京: 人民郵電出版社,1999.
[10] Richard S Wright, Jr Benjamin Lipchak. OpenGL超級寶典[M].3版.徐波,譯. 北京:人民郵電出版社,2005.