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