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