本發(fā)明涉及投影融合矯正、圖像渲染、軟件逆向工程等多個(gè)技術(shù)領(lǐng)域。
背景技術(shù):
隨著展示、展覽系統(tǒng)對于投影屏幕的尺寸、分辨率以及投影幕形狀的要求越來越高,投影融合矯正的技術(shù)應(yīng)用越來越普及。
然而,目前投影融合矯正技術(shù)基本都存在軟件需要定制的限制,往往只應(yīng)用在大尺寸視頻播放的軟件上。當(dāng)某個(gè)特定功能的軟件程序(如:實(shí)時(shí)游戲類軟件)應(yīng)用到需要投影融合矯正的環(huán)境時(shí),軟件開發(fā)者在開發(fā)該軟件程序時(shí)必須同時(shí)要掌握投影融合矯正的軟件技術(shù)。
雖然一些投影的廠家在投影硬件輸出上實(shí)現(xiàn)了投影融合功能,但始終無法解決球幕、不規(guī)則幕等異形投影幕的投影融合矯正問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題在于提供一種第三方軟件應(yīng)用在各種投影環(huán)境下投影的融合矯正方案。
本發(fā)明所要解決的技術(shù)問題采用以下技術(shù)方案來實(shí)現(xiàn):
針對第三方軟件的投影融合矯正系統(tǒng),其特征在于:由圖形圖像監(jiān)視系統(tǒng)以及投影融合矯正系統(tǒng)兩個(gè)部分組成,圖形圖像監(jiān)視系統(tǒng)負(fù)責(zé)第三方軟件輸出的圖像實(shí)時(shí)采集與增強(qiáng);投影融合矯正系統(tǒng)負(fù)責(zé)將第三方軟件輸出的圖像根據(jù)投影環(huán)境進(jìn)行融合矯正并輸出到終端投影機(jī)顯示;
圖形圖像監(jiān)視系統(tǒng)從第三方軟件運(yùn)行開始進(jìn)行監(jiān)控,針對創(chuàng)建設(shè)備、創(chuàng)建數(shù)據(jù)交換鏈、創(chuàng)建渲染視窗以及交換鏈后臺數(shù)據(jù)準(zhǔn)備、交換鏈后臺數(shù)據(jù)提交到前臺的多個(gè)關(guān)鍵函數(shù)進(jìn)行攔截,獲取渲染數(shù)據(jù);對渲染數(shù)據(jù)通過gpu進(jìn)行圖形圖像的二次優(yōu)化后重新交還給交換鏈前臺完成最終渲染。
投影融合矯正部分所有的工作都在gpu中進(jìn)行,通過并行運(yùn)算,經(jīng)實(shí)現(xiàn)基于遺傳算法的全景圖像畸變校正、圖片全方向切割、多遍次配準(zhǔn)拼接、圖像融合生成,并將校正、分割、配準(zhǔn)、融入得到相應(yīng)的結(jié)果交給圖形圖像監(jiān)視系統(tǒng),再由圖形圖像監(jiān)視系統(tǒng)交還給第三方軟件交換鏈前臺完成最終渲染。
所述圖形圖像實(shí)時(shí)監(jiān)控系統(tǒng)由針對driectx9監(jiān)控部分、針對driectx11監(jiān)控部分以及圖像增強(qiáng)優(yōu)化部分三部分組成。
所述圖像增強(qiáng)優(yōu)化部分針對兩個(gè)監(jiān)控部分所采集的圖像以雙線性內(nèi)插值算法、圖像增強(qiáng)算法通過gpu進(jìn)行圖像增強(qiáng)以解決部分第三方軟件原始輸出圖像分辨率較低的問題。
所述投影融合矯正系統(tǒng)主要包括圖像矯正模塊、圖像融合模塊,并將結(jié)果傳輸給多臺投影機(jī)終端顯示。
全方位圖像切割:
是將原始圖像的感興趣區(qū)域進(jìn)行規(guī)則化的切割,通過每臺投影機(jī)之間的固定位置,可以算出每個(gè)投影機(jī)的重疊區(qū)域大小,以切割線為邊界,進(jìn)行不同的模式切割,在柱面和球面兩種不同的投影模式下,其切割的位置不同(如圖3)。
并行運(yùn)算分析:
若在h×l尺寸的圖像上均勻進(jìn)行網(wǎng)格劃分,設(shè)每個(gè)格子的基本尺寸a×b,那么圖像被劃分成[h/a]×[l/b]個(gè)矩形子塊,在固定的切割區(qū)域b內(nèi),對各個(gè)子塊進(jìn)行并行切割運(yùn)算。將存儲在gpu紋理存儲器中的圖像進(jìn)行分割,使用opencl指令在gpu中做并行運(yùn)算,提高運(yùn)算速度。
多遍次配準(zhǔn)拼接:
圖像配準(zhǔn)是確定圖片之間的幾何關(guān)系,以便將多幅圖像變換到同一坐標(biāo)系生成全景圖像。本項(xiàng)目采用基于sift的圖像對齊方法,可分為如下五個(gè)步驟:
1)從輸入圖片中檢測sift特征點(diǎn);
2)用k-d樹查找每個(gè)特征點(diǎn)的k個(gè)最近相鄰特征點(diǎn),獲得粗匹配點(diǎn)對;
3)根據(jù)兩兩圖片之間的sift匹配點(diǎn)集用ransac算法計(jì)算出圖片之間的單應(yīng)矩陣(homograph),同時(shí)去除幾何不一致和誤差較大的匹配點(diǎn)對;
4)根據(jù)單應(yīng)矩陣(homography)進(jìn)行圖像對齊,根據(jù)對齊結(jié)果決定是否進(jìn)行再次計(jì)算單位應(yīng)矩陣,獲取精確匹配點(diǎn)集;
5)在獲得精確匹配點(diǎn)集后,采用集束調(diào)整(bundleadjustment)估算出每個(gè)相機(jī)三個(gè)旋轉(zhuǎn)參數(shù)和焦距。
圖像拼接過程的基本流程:首先獲取待拼接的圖像,然后經(jīng)過預(yù)處理(濾波等),再進(jìn)行統(tǒng)一坐標(biāo)變換,將所有圖像序列變換到統(tǒng)一的坐標(biāo)系中,接著進(jìn)行圖像配準(zhǔn)和圖像融合,最終得到全景圖像拼接。
圖像融合生成:
為了實(shí)現(xiàn)兩幅圖像之間的平滑過渡,需要對重疊區(qū)域象素的灰度值進(jìn)行局部線性插值。
其中,i為融合圖像重疊區(qū)域的灰度值,i1前幅圖像重疊部分的灰度值,i2為第二幅圖像重疊部分的灰度值,d為漸變因子,l為兩幅圖像重疊區(qū)域的寬度,ω為插值處到重疊區(qū)域左端的距離。
圖像畸變校正與gpu并行處理:
一)圖像畸變校正
由于投影變形以及大氣折射等因素,最終投影結(jié)果存在變形,為了獲取高質(zhì)量的拼接結(jié)果,需要對變形的圖像進(jìn)行校正。本項(xiàng)目提出了基于遺傳算法全景圖像畸變校正的方法,引入遺傳算法對畸變參數(shù)進(jìn)行優(yōu)化,計(jì)算得出校正后圖像。需要解決的幾個(gè)主要問題如下:
1)適應(yīng)度函數(shù),把適應(yīng)度函數(shù)的定義域從二維正整數(shù)空間擴(kuò)展到二維真實(shí)數(shù)空間中;
2)選擇操作,采用的是輪盤賭的選算法,體現(xiàn)了自然界“優(yōu)勝劣汰,適者生存”的競爭原則;
3)交叉操作,采用了單點(diǎn)交叉算法,使優(yōu)質(zhì)模式相互結(jié)合產(chǎn)生高階、長定義距、高平均應(yīng)度的模式;
4)變異操作,變異概率是決定遺傳算法性能的關(guān)鍵,根據(jù)適應(yīng)度函數(shù),適當(dāng)?shù)姆糯笞儺惛怕剩?/p>
5)停止準(zhǔn)則,采用的是最大進(jìn)化代數(shù)的算法停止準(zhǔn)則。
二)gpu并行處理
并行算法的分類根據(jù)并行的側(cè)重點(diǎn)的不同,主要有一下分類法:
1)根據(jù)運(yùn)算基本對象的不同可分為數(shù)值并行算法和非數(shù)值并行算法;
2)根據(jù)并行進(jìn)程間相互執(zhí)行順序關(guān)系的不同可分為同步并行算法、異步并行算法;
3)根據(jù)個(gè)處理器承擔(dān)的計(jì)算任務(wù)成都的不同可分為細(xì)粒度并行算法、中粒度并行算法和粗粒度并行算法。
本發(fā)明對第三方軟件輸出的圖像進(jìn)行采集并使用gpu高速并行處理,實(shí)現(xiàn)了圖像實(shí)時(shí)的增強(qiáng)、拼接、校正、融合、傳輸功能,針對球面、不規(guī)則面等不同環(huán)境投影面,成功解決了國內(nèi)現(xiàn)有的投影融合矯正技術(shù)展示內(nèi)容單一、擴(kuò)展性差、缺乏實(shí)時(shí)性等問題,讓投影融合技術(shù)真正與軟件開發(fā)分離。
附圖說明
圖1為本發(fā)明系統(tǒng)構(gòu)成圖;
圖2為本發(fā)明圖形圖像實(shí)時(shí)監(jiān)控系統(tǒng)的監(jiān)視模塊的流程;
圖3為本發(fā)明投影融合矯正系統(tǒng)的數(shù)據(jù)加工圖。
具體實(shí)施方式
為了使本發(fā)明實(shí)現(xiàn)的技術(shù)手段、創(chuàng)作特征、達(dá)成目的與功效易于明白了解,下面結(jié)合具體圖示,進(jìn)一步闡述本發(fā)明。
如圖1所示,針對第三方軟件的投影融合矯正系統(tǒng)由圖形圖像監(jiān)視系統(tǒng)以及投影融合矯正系統(tǒng)兩個(gè)部分組成,圖形圖像監(jiān)視系統(tǒng)負(fù)責(zé)第三方軟件輸出的圖像實(shí)時(shí)采集與增強(qiáng);投影融合矯正系統(tǒng)負(fù)責(zé)將第三方軟件輸出的圖像根據(jù)投影環(huán)境進(jìn)行融合矯正并輸出到終端投影機(jī)顯示。
如圖2所示,圖形圖像監(jiān)視系統(tǒng)從第三方軟件運(yùn)行開始進(jìn)行監(jiān)控,針對創(chuàng)建設(shè)備、創(chuàng)建數(shù)據(jù)交換鏈、創(chuàng)建渲染視窗以及交換鏈后臺數(shù)據(jù)準(zhǔn)備、交換鏈后臺數(shù)據(jù)提交到前臺的多個(gè)關(guān)鍵函數(shù)進(jìn)行攔截,獲取渲染數(shù)據(jù);對渲染數(shù)據(jù)通過gpu進(jìn)行圖形圖像的二次優(yōu)化后重新交還給交換鏈前臺完成最終渲染。
如圖3所示,投影融合矯正部分所有的工作都在gpu中進(jìn)行,通過并行運(yùn)算,經(jīng)實(shí)現(xiàn)基于遺傳算法的全景圖像畸變校正、圖片全方向切割、多遍次配準(zhǔn)拼接、圖像融合生成,并將校正、分割、配準(zhǔn)、融入得到相應(yīng)的結(jié)果交給圖形圖像監(jiān)視系統(tǒng),再由圖形圖像監(jiān)視系統(tǒng)交還給第三方軟件交換鏈前臺完成最終渲染。
全方位圖像切割:
是將原始圖像的感興趣區(qū)域進(jìn)行規(guī)則化的切割,通過每臺投影機(jī)之間的固定位置,可以算出每個(gè)投影機(jī)的重疊區(qū)域大小,以切割線為邊界,進(jìn)行不同的模式切割,在柱面和球面兩種不同的投影模式下,其切割的位置不同(如圖3)。
并行運(yùn)算分析:
若在h×l尺寸的圖像上均勻進(jìn)行網(wǎng)格劃分,設(shè)每個(gè)格子的基本尺寸a×b,那么圖像被劃分成[h/a]×[l/b]個(gè)矩形子塊,在固定的切割區(qū)域b內(nèi),對各個(gè)子塊進(jìn)行并行切割運(yùn)算。將存儲在gpu紋理存儲器中的圖像進(jìn)行分割,使用opencl指令在gpu中做并行運(yùn)算,提高運(yùn)算速度。
多遍次配準(zhǔn)拼接:
圖像配準(zhǔn)是確定圖片之間的幾何關(guān)系,以便將多幅圖像變換到同一坐標(biāo)系生成全景圖像。本項(xiàng)目采用基于sift的圖像對齊方法,可分為如下五個(gè)步驟:
1)從輸入圖片中檢測sift特征點(diǎn);
2)用k-d樹查找每個(gè)特征點(diǎn)的k個(gè)最近相鄰特征點(diǎn),獲得粗匹配點(diǎn)對;
3)根據(jù)兩兩圖片之間的sift匹配點(diǎn)集用ransac算法計(jì)算出圖片之間的單應(yīng)矩陣(homograph),同時(shí)去除幾何不一致和誤差較大的匹配點(diǎn)對;
4)根據(jù)單應(yīng)矩陣(homography)進(jìn)行圖像對齊,根據(jù)對齊結(jié)果決定是否進(jìn)行再次計(jì)算單位應(yīng)矩陣,獲取精確匹配點(diǎn)集;
5)在獲得精確匹配點(diǎn)集后,采用集束調(diào)整(bundleadjustment)估算出每個(gè)相機(jī)三個(gè)旋轉(zhuǎn)參數(shù)和焦距。
圖像拼接過程的基本流程:首先獲取待拼接的圖像,然后經(jīng)過預(yù)處理(濾波等),再進(jìn)行統(tǒng)一坐標(biāo)變換,將所有圖像序列變換到統(tǒng)一的坐標(biāo)系中,接著進(jìn)行圖像配準(zhǔn)和圖像融合,最終得到全景圖像拼接。
圖像融合生成:
為了實(shí)現(xiàn)兩幅圖像之間的平滑過渡,需要對重疊區(qū)域象素的灰度值進(jìn)行局部線性插值。
其中,i為融合圖像重疊區(qū)域的灰度值,i1前幅圖像重疊部分的灰度值,i2為第二幅圖像重疊部分的灰度值,d為漸變因子,l為兩幅圖像重疊區(qū)域的寬度,ω為插值處到重疊區(qū)域左端的距離。
圖像畸變校正與gpu并行處理:
一)圖像畸變校正
由于投影變形以及大氣折射等因素,最終投影結(jié)果存在變形,為了獲取高質(zhì)量的拼接結(jié)果,需要對變形的圖像進(jìn)行校正。本項(xiàng)目提出了基于遺傳算法全景圖像畸變校正的方法,引入遺傳算法對畸變參數(shù)進(jìn)行優(yōu)化,計(jì)算得出校正后圖像。需要解決的幾個(gè)主要問題如下:
1)適應(yīng)度函數(shù),把適應(yīng)度函數(shù)的定義域從二維正整數(shù)空間擴(kuò)展到二維真實(shí)數(shù)空間中;
2)選擇操作,采用的是輪盤賭的選算法,體現(xiàn)了自然界“優(yōu)勝劣汰,適者生存”的競爭原則;
3)交叉操作,采用了單點(diǎn)交叉算法,使優(yōu)質(zhì)模式相互結(jié)合產(chǎn)生高階、長定義距、高平均應(yīng)度的模式;
4)變異操作,變異概率是決定遺傳算法性能的關(guān)鍵,根據(jù)適應(yīng)度函數(shù),適當(dāng)?shù)姆糯笞儺惛怕剩?/p>
5)停止準(zhǔn)則,采用的是最大進(jìn)化代數(shù)的算法停止準(zhǔn)則。
二)gpu并行處理
并行算法的分類根據(jù)并行的側(cè)重點(diǎn)的不同,主要有一下分類法:
1)根據(jù)運(yùn)算基本對象的不同可分為數(shù)值并行算法和非數(shù)值并行算法;
2)根據(jù)并行進(jìn)程間相互執(zhí)行順序關(guān)系的不同可分為同步并行算法、異步并行算法;
3)根據(jù)個(gè)處理器承擔(dān)的計(jì)算任務(wù)成都的不同可分為細(xì)粒度并行算法、中粒度并行算法和粗粒度并行算法。