本發(fā)明涉及集成成像3D(三維)顯示技術(shù)和計(jì)算機(jī)多核多線程技術(shù),更具體地說,本發(fā)明涉及一種基于CPU(中央處理器)多線程的集成成像3D片源快速生成方法。
背景技術(shù):
集成成像3D顯示技術(shù)是一種裸眼3D顯示技術(shù),無需眼鏡或跟蹤裝置等輔助設(shè)備。傳統(tǒng)的純光學(xué)集成成像3D顯示片源的拍攝難度較大,并且成像質(zhì)量不高,隨著計(jì)算機(jī)技術(shù)的迅速發(fā)展,衍生出了計(jì)算機(jī)集成成像技術(shù)。計(jì)算機(jī)集成成像技術(shù)采用3D建模軟件建立3D場景模型,并搭建相應(yīng)的虛擬目標(biāo)相機(jī)陣列渲染生成視差圖像,然后通過微圖像陣列合成,最終生成集成成像3D片源。
CPU多線程是指基于CPU軟件或者硬件方面實(shí)現(xiàn)多個(gè)線程并行執(zhí)行的技術(shù),更具體的說,是指CPU利用多個(gè)微處理器核心并行地執(zhí)行不同任務(wù)的技術(shù)。因此可以通過多個(gè)線程,利用CPU多核的優(yōu)勢,實(shí)現(xiàn)視差圖像并行的讀取和微圖像陣列的快速合成,從而高效快速地生成集成成像3D片源。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提出一種基于CPU多線程的集成成像3D片源快速生成方法,該方法包括視差視頻的獲取、視差圖像的多線程讀取和微圖像陣列的快速合成三個(gè)過程。本發(fā)明的詳細(xì)流程如附圖1所示。
所述本發(fā)明視差視頻的獲取過程,利用三維建模軟件獲取包含視差信息的視頻。首先,利用三維建模軟件生成虛擬3D場景,建立如附圖2所示的包含R×R個(gè)相機(jī)的虛擬目標(biāo)相機(jī)陣列,其中,水平和豎直方向包含的相機(jī)列數(shù)和行數(shù)都為R。虛擬目標(biāo)相機(jī)陣列包含的相機(jī)個(gè)數(shù)與微圖像陣列中圖像元的像素個(gè)數(shù)相同,且相鄰相機(jī)間距為D,所有相機(jī)具有共同的匯聚點(diǎn)O,匯聚點(diǎn)O所在的平面為中心深度平面,中心深度平面與虛擬目標(biāo)相機(jī)陣列平面平行,且距離為L。其次,拍攝過程采用多正交投影合成法,渲染輸出獲得單幀分辨率為M×N的視差圖像。最后,輸出得到具有垂直方向和水平方向二維視差的視差視頻,以此作為視差圖像的多線程讀取的源文件。
所述本發(fā)明視差圖像的多線程讀取過程,基于計(jì)算機(jī)多線程技術(shù),在CPU中利用不同的微處理器核心并行地訪問視差視頻,讀取并獲得當(dāng)前幀的視差圖像,其過程如附圖3所示。首先,設(shè)置訪問的視差視頻的個(gè)數(shù)為Q個(gè),并將視差視頻編號(hào)為0~Q-1,線程數(shù)目設(shè)置為計(jì)算機(jī)的核數(shù)為G。不同的微處理器核心1~G分別執(zhí)行不同的線程1~G,每個(gè)線程執(zhí)行計(jì)算機(jī)分配的迭代塊D1、D2…DG,按執(zhí)行完的先后順序依次分配隨后的迭代塊DG+1、DG+2…DG+G…Dw。迭代塊的大小即每個(gè)線程單次執(zhí)行的任務(wù)次數(shù)通過指導(dǎo)性的啟發(fā)式自調(diào)度方法確定,聲明最小迭代次數(shù)為T,每個(gè)迭代塊的大小由以下公式計(jì)算得到:
(1)
其中,Cw表示剩余未讀取的任務(wù)次數(shù),Dw是第w個(gè)塊的大小,當(dāng)Dw<T時(shí),取Dw為T,直到完成所有的讀取任務(wù),也即D1+D2+…+Dw=Q。其中,G個(gè)線程并行運(yùn)行,線程之間采取先到先得的任務(wù)分配方式,也即開始時(shí)每個(gè)線程會(huì)分配到較大的迭代塊,隨后分配到的迭代塊大小將逐漸遞減。對(duì)所有的視差視頻依次實(shí)現(xiàn)訪問操作,讀取并獲得當(dāng)前幀的視差圖像,直至Q個(gè)視差視頻當(dāng)前幀的視差圖像均讀取完畢。
所述本發(fā)明微圖像陣列的快速合成過程,同樣基于CPU利用計(jì)算機(jī)多線程技術(shù),并行地將讀取的視差圖像通過像素映射,合成微圖像陣列。設(shè)置生成的微圖像陣列分辨率為S×P,單個(gè)圖像元分辨率為R×R,包含圖像元個(gè)數(shù)H×K,其中水平方向包含圖像元列數(shù)為H,豎直方向包含圖像元行數(shù)為K。具體映射關(guān)系如附圖4所示,I(m, n)C表示序列號(hào)為C的視差圖上第m行第n列對(duì)應(yīng)像素點(diǎn),I'(i, j)表示微圖像陣列上第i行第j列位置對(duì)應(yīng)的像素點(diǎn),像素映射關(guān)系由下式給出:
(2)
其中:
(3)
(4)
(5)
式中,C表示視差圖像的序列號(hào),并且0≤C≤R2-1,C為非負(fù)整數(shù);mod(x, y)函數(shù)表示x對(duì)y求余,round(*)函數(shù)表示對(duì)*四舍五入取整數(shù);m、n、i和j是循環(huán)變量,m屬于0~M-1范圍,n屬0~N-1范圍;i在0~S-1范圍內(nèi),j在0~P-1范圍內(nèi)循環(huán)取整數(shù)值,就能分別將微圖像陣列的每一個(gè)像素點(diǎn)都賦予相應(yīng)的視差圖對(duì)應(yīng)位置的像素值。本發(fā)明中的像素映射過程相互獨(dú)立,對(duì)微圖像陣列的快速合成過程仍采用基于指導(dǎo)性的啟發(fā)式自調(diào)度方法的CPU多線程技術(shù)并行處理,獲得更快的處理速度。其中,聲明像素映射的最小迭代次數(shù)為J,線程數(shù)目仍然為G,使G個(gè)線程并行完成各幀視差圖像像素映射至微圖像陣列對(duì)應(yīng)像素點(diǎn)S×P次,直到完成所有幀對(duì)應(yīng)微圖像陣列的快速合成,實(shí)現(xiàn)了集成成像3D片源的快速生成。
本發(fā)明提出的一種基于CPU多線程的集成成像3D片源快速生成方法。該方法采用基于指導(dǎo)性的啟發(fā)式自調(diào)度方法的多線程技術(shù),充分利用計(jì)算機(jī)多核的優(yōu)勢,實(shí)現(xiàn)了視差圖像的高效讀取和微圖像陣列的快速合成,是一種高效和快速的集成成像3D片源生成方法。
附圖說明
附圖1為一種基于CPU多線程的集成成像3D片源快速生成方法流程圖。
附圖2為本發(fā)明中三維建模軟件獲取視差視頻示意圖。
附圖3為基于指導(dǎo)性的啟發(fā)式自調(diào)度多線程讀取迭代塊任務(wù)示意圖。
附圖4為視差圖像合成微圖像陣列的像素映射關(guān)系。
上述附圖中的圖示標(biāo)號(hào)為:
1中心深度平面,2虛擬目標(biāo)相機(jī)陣列,3虛擬3D場景,4虛擬目標(biāo)相機(jī)陣列匯聚點(diǎn)O,5讀取任務(wù)分塊,6微圖像陣列。
應(yīng)該理解上述附圖只是示意性的,并沒有按比例繪制。
具體實(shí)施方式
下面詳細(xì)說明利用本發(fā)明的一種基于CPU多線程的集成成像3D片源快速生成方法的一個(gè)典型實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步的具體描述。有必要在此指出的是,以下實(shí)施例只用于本發(fā)明做進(jìn)一步的說明,不能理解為對(duì)本發(fā)明保護(hù)范圍的限制,該領(lǐng)域技術(shù)熟練人員根據(jù)上述本發(fā)明內(nèi)容對(duì)本發(fā)明做出一些非本質(zhì)的改進(jìn)和調(diào)整,仍屬于本發(fā)明的保護(hù)范圍。
本發(fā)明提出一種基于CPU多線程的集成成像3D片源快速生成方法,該方法包括視差視頻的獲取、視差圖像的多線程讀取和微圖像陣列的快速合成三個(gè)過程。
所述本發(fā)明視差視頻的獲取過程,利用三維建模軟件獲取包含視差信息的視頻。首先,利用三維建模軟件生成虛擬3D場景,建立如附圖2所示的包含R×R=8×8個(gè)相機(jī)的虛擬目標(biāo)相機(jī)陣列,其中,水平和豎直方向包含的相機(jī)列數(shù)和行數(shù)都為R=8。虛擬目標(biāo)相機(jī)陣列包含的相機(jī)個(gè)數(shù)與微圖像陣列中圖像元的像素個(gè)數(shù)相同,且相鄰相機(jī)間距為D=4mm,所有相機(jī)具有共同的匯聚點(diǎn)O,匯聚點(diǎn)O所在的平面為中心深度平面,中心深度平面與虛擬目標(biāo)相機(jī)陣列平面平行,且距離為L=1030mm。其次,拍攝過程采用多正交投影合成法,渲染輸出獲得單幀分辨率為M×N=854像素×480像素的視差圖像。最后,輸出得到具有垂直方向和水平方向二維視差的視差視頻,以此作為視差圖像的多線程讀取的源文件。
所述本發(fā)明視差圖像的多線程讀取過程,基于計(jì)算機(jī)多線程技術(shù),在CPU中利用不同的微處理器核心并行地訪問視差視頻,讀取并獲得當(dāng)前幀的視差圖像,其過程如附圖3所示。首先,設(shè)置訪問的視差視頻的個(gè)數(shù)為Q=64個(gè),并將視差視頻編號(hào)為0~Q-1=0~63,線程數(shù)目設(shè)置為計(jì)算機(jī)的核數(shù)為G=8。不同的微處理器核心1~G=1~8分別執(zhí)行不同的線程1~G=1~8,每個(gè)線程執(zhí)行計(jì)算機(jī)分配的迭代塊D1、D2…D8,按執(zhí)行完的先后順序依次分配隨后的迭代塊D9、D10…D16…Dw的大小,即每個(gè)線程單次執(zhí)行的任務(wù)次數(shù)通過指導(dǎo)性的啟發(fā)式自調(diào)度方法確定,聲明最小迭代次數(shù)為T=5,每個(gè)迭代塊的大小由以下公式計(jì)算得到:
(1)
其中,Cw表示剩余未讀取的任務(wù)次數(shù),Dw是第w個(gè)塊的大小,當(dāng)Dw<5時(shí),取Dw為5,直到完成所有的讀取任務(wù),也即D1+D2+…+Dw=64。其中,G=8個(gè)線程并行運(yùn)行,線程之間采取先到先得的任務(wù)分配方式,也即開始時(shí)每個(gè)線程會(huì)分配到較大的迭代塊,隨后分配到的迭代塊大小將逐漸遞減。對(duì)所有的視差視頻依次實(shí)現(xiàn)訪問操作,讀取并獲得當(dāng)前幀的視差圖像,直至Q=64個(gè)視差視頻當(dāng)前幀的視差圖像均讀取完畢。
所述本發(fā)明微圖像陣列的快速合成過程,同樣基于CPU利用計(jì)算機(jī)多線程技術(shù),并行地將讀取的視差圖像通過像素映射,合成微圖像陣列。設(shè)置生成的微圖像陣列分辨率為S×P=1920×1080,單個(gè)圖像元分辨率為R×R=8×8,包含圖像元個(gè)數(shù)H×K=240×135,其中水平方向包含圖像元列數(shù)為H=240,豎直方向包含圖像元行數(shù)為K=135。具體映射關(guān)系如附圖4所示,I(m, n)C表示序列號(hào)為C的視差圖上第m行第n列對(duì)應(yīng)像素點(diǎn),I'(i, j)表示微圖像陣列上第i行第j列位置對(duì)應(yīng)的像素點(diǎn),像素映射關(guān)系由下式給出:
(2)
其中:
(3)
(4)
(5)
式中,C表示視差圖像的序列號(hào),并且0≤C≤R2-1,C為非負(fù)整數(shù);mod(x, y)函數(shù)表示x對(duì)y求余,round(*)函數(shù)表示對(duì)*四舍五入取整數(shù);m、n、i和j是循環(huán)變量,m屬于0~M-1=0~853范圍,n屬于0~N-1=0~479范圍;i在0~S-1=0~1919范圍內(nèi),j在0~P-1=0~1079范圍內(nèi)循環(huán)取整數(shù)值,就能分別將微圖像陣列的每一個(gè)像素點(diǎn)都賦予相應(yīng)的視差圖對(duì)應(yīng)位置的像素值。本發(fā)明中的像素映射過程相互獨(dú)立,對(duì)微圖像陣列的快速合成過程仍采用基于指導(dǎo)性的啟發(fā)式自調(diào)度方法的CPU多線程技術(shù)并行處理,獲得更快的處理速度。其中,聲明像素映射的最小迭代次數(shù)為J=15,線程數(shù)目仍然為G=8,使G=8個(gè)線程并行完成各幀視差圖像像素映射至微圖像陣列對(duì)應(yīng)像素點(diǎn)S×P=1920×1080次,直到完成所有幀對(duì)應(yīng)微圖像陣列的快速合成,實(shí)現(xiàn)了集成成像3D片源的快速生成。
至此,采用本發(fā)明提出的一種基于CPU多線程的集成成像微圖像陣列快速生成方法生成一幅集成成像微圖像陣列所消耗的時(shí)間為0.28s,幀率為3.57fps,與基于單線程的實(shí)現(xiàn)相比,該方法提升了75%,顯著地提升了CPU生成集成成像3D片源的速率。