一種基于gpu的集成成像微圖像陣列快速生成方法
【專利摘要】本發(fā)明提出一種基于GPU的集成成像微圖像陣列快速生成方法,該方法包括Direct3D程序中建立虛擬相機陣列獲取視差圖像陣列和CUDA程序實現視差圖像陣列快速轉換為微圖像陣列兩個過程?;谟嬎銠C圖形庫Direct3D建立簡化的虛擬相機陣列結構對虛擬場景進行渲染,提高生成微圖像陣列所有信息的效率;基于CUDA并行計算架構的特性完成微圖像陣列的快速生成,且?guī)缀鯚o需通過計算機系統(tǒng)總線在CPU與GPU中進行數據的傳輸,因此進一步提高了生成微圖像陣列的效率。通過本發(fā)明的方法,其生成集成成像微圖像陣列的速度比基于CPU的實現提升了數十倍,乃至數百倍,達到了實時動態(tài)集成成像3D顯示的要求。
【專利說明】一種基于GPU的集成成像微圖像陣列快速生成方法
【技術領域】
[0001]本發(fā)明涉及集成成像3D (三維)顯示技術,更具體地說,本發(fā)明涉及一種基于GPU(圖形處理器)的集成成像微圖像陣列快速生成方法。
【背景技術】
[0002]集成成像是ー種重要的3D顯示技術,觀看者可在不佩戴助視眼鏡時觀看到立體圖像。隨著計算機技術的迅速發(fā)展,人們廣泛地使用計算機模擬和處理各種光學過程,并衍生出計算機集成成像技木。該技術首先采用3D建模軟件建立3D場景模型,然后用計算機程序建立相機陣列來模擬微透鏡陣列的成像過程,從而獲取集成成像的片源即微圖像陣列。
[0003]多視點渲染計算機集成成像是ー種用一個相機模擬ー個透鏡元來獲取圖像元的技術,如附圖1所示。該技術通過OpenGL或Direct3D計算機圖形庫的3D渲染流水線來實現對3D場景的渲染以獲取圖像元,最終通過拼接所有的圖像元得到微圖像陣列。由于集成成像中透鏡元的數量巨大,且對3D虛擬場景的渲染次數等于透鏡元的數量,所以計算機渲染過程將耗費大量的時間,難以滿足實時動態(tài)計算機集成成像的要求。
[0004]CUDA (統(tǒng)ー計算設備架構)是NVIDIA公司的并行計算架構。該架構通過充分利用GPU的高性能并行運算能力,可大幅提升特定算法的計算效率。CUDA提供了與Direct3D和OpenGL這兩種計算機圖形庫進行互操作的API (應用程序接ロ),充分利用顯卡自身的高性能并行運算能力對Direct3D或OpenGL中的頂點資源、紋理資源、表面資源等進行后期處理,提高了程序的運行效率。
【發(fā)明內容】
[0005]本發(fā)明提出一種基于GPU的集成成像微圖像陣列快速生成方法,該方法包括Direct3D程序中建立虛擬相機陣列而獲取視差圖像陣列和CUDA程序實現視差圖像陣列轉換為微圖像陣列兩個過程。
[0006]所述Direct3D程序中建立虛擬相機陣列而獲取視差圖像陣列過程,由Direct3D程序的渲染流水線建立虛擬相機陣列對3D虛擬場景進行渲染,獲取的視差圖像陣列的圖像個數遠遠小于微圖像陣列所需圖像元的個數,且無需對獲取的視差圖像進行二次圖像處理,即可獲取具有正、負視差的視差圖像。
[0007]所述虛擬相機陣列,如附圖2所示,采用會聚式立體相機結構,包含個相機,各相機在水平和垂直方向上等間距排列,相鄰相機的間距為ガ,各相機中心位于同一平面上,且各相機有共同目標點隊各相機均采用正交投影幾何模型對3D虛擬場景進行渲染,渲染的視差圖像分辨率均為XX V,確定各相機目標點O所在的參考平面與相機陣列所在平面的距離為ム確定所需微透鏡陣列的參數,包含#z X#/個透鏡元,透鏡元焦距為/,透鏡元節(jié)距為/7 ;所需微圖像陣列也包含#z YJT個圖像元,圖像元分辨率為rXr。
[0008]優(yōu)選地,為了滿足虛擬相機陣列渲染的視差圖像陣列在轉換為微圖像陣列時不丟失信息,相機陣列包含的相機個數#X#、視差圖像的分辨率ZXZ以及相鄰相機的間距j需滿足下式:
【權利要求】
1.一種基于GPU的集成成像微圖像陣列的快速生成方法,其特征在于,該方法包括Direct3D程序中建立虛擬相機陣列獲取視差圖像陣列和CUDA程序實現視差圖像陣列轉換為微圖像陣列兩個過程; 所述Direct3D程序中建立虛擬相機陣列而獲取視差圖像陣列過程,其特征在于,由Direct3D程序的渲染流水線建立虛擬相機陣列對3D虛擬場景進行渲染,獲取的視差圖像陣列的圖像個數遠遠小于微圖像陣列所需圖像元的個數,且無需對獲取的視差圖像進行二次圖像處理,即可獲取具有正、負視差的視差圖像;所述虛擬相機陣列,采用會聚式立體相機結構,包含#X#個相機,各相機在水平和垂直方向上等間距排列,相鄰相機的間距為久各相機中心位于同一平面上,且各相機有共同目標點隊各相機均采用正交投影幾何模型對3D虛擬場景進行渲染,渲染的視差圖像分辨率均為ZX7,確定各相機目標點O所在的參考平面與相機陣列所在平面的距離為Z ;確定所需微透鏡陣列的參數,包含個透鏡元,透鏡元焦距為/,透鏡元節(jié)距為/7 ;所需微圖像陣列也包含iT YJT個圖像元,圖像元分辨率為rXr;相機陣列包含的相機個數IX#、視差圖像的分辨率ZX7以及相鄰相機的間距汐需滿足, , , ,,Y., J}=—.M=x Nr -Y = Mt 1- N rf 所述CUDA程序實現視差圖像陣列轉換為微圖像陣列過程,其特征在于,它是基于CUDA的并行計算架構來實現的;/(?,表示第?行第列視差圖像上第?7行第列的像素,該像素映射到微圖像陣列的第i行第J列的像素位置上,由P (i,力表示;像素映射過程的數學關系為廣 do,其中
2.根據權利要求1所述的一種基于GPU的集成成像微圖像陣列的快速生成方法,其特征在于,CUDA程序實現視差圖像陣列轉換為微圖像陣列過程為三個步驟:第一,在CUDA程序中注冊Direct3D程序中生成的含有視差圖像信息的紋理資源和用于存儲微圖像陣列信息的目標紋理資源,并基于Direct3D與CUDA互操作API將Direct3D程序中的資源映射至CUDA內存地址空間;第二,在CUDA程序中實現并行運算的核函數,核函數的線程結構劃分為a XA個線程塊,每個線程塊又由c Xi/個線程組成,其中C=Ceil CT /a), d=ceil(N/ /b), ceil為向上取整函數符號;依次將各視差圖像的所有像素讀入紋理存儲器并進行線程分配,所有線程均并行地執(zhí)行視差圖像中一個像素至目標紋理資源中對應像素的映射過程,最終就能將視差圖像陣列的所有像素映射至目標紋理資源上;第三,取消Direct3D程序中的資源至CUDA內存地址空間的映射,為下一次像素映射過程做準備。
【文檔編號】G06T7/00GK103440660SQ201310394195
【公開日】2013年12月11日 申請日期:2013年9月3日 優(yōu)先權日:2013年9月3日
【發(fā)明者】王瓊華, 李述利, 鄧歡, 熊召龍 申請人:四川大學