周曉光,趙仁厚,呂 游,王 晶
(海軍航空大學(xué)教練機(jī)模擬訓(xùn)練中心,遼寧 葫蘆島 125001)
目前飛行模擬器顯示系統(tǒng)多采用柱幕和球幕顯示方式,通過(guò)多通道視景融合成大視場(chǎng)角顯示,可為飛行員提供較為逼真的視景仿真環(huán)境,增強(qiáng)了飛行員飛行模擬訓(xùn)練的沉浸感。飛行模擬器多通道視景融合主要是解決兩個(gè)問(wèn)題:一是幾何校正問(wèn)題,解決圖像非線性失真問(wèn)題,使投影機(jī)所投圖像與柱幕或者球幕相匹配;二是邊緣融合問(wèn)題,解決視景通道間邊緣拼接問(wèn)題,使多通道視景投影重疊區(qū)域過(guò)渡平滑,實(shí)現(xiàn)無(wú)縫鏈接。
目前飛行模擬器多通道視景校正融合方式主要由兩種:一種是購(gòu)置較為昂貴的多通道視景邊緣融合機(jī),以融合卡的方式實(shí)現(xiàn)圖像的校正融合處理,通過(guò)視景融合機(jī)輸出滿足需要的視景圖像,即所謂的硬融合。硬融合優(yōu)點(diǎn)是融合效果好,實(shí)時(shí)性高,但是價(jià)格昂貴。另一種方式是應(yīng)用視景融合軟件,在視景生成系統(tǒng)上應(yīng)用軟件獲取視景圖像并進(jìn)行校正融合處理,在視景生成計(jì)算機(jī)上直接輸出滿足需要的視景顯示圖像,即所謂的軟融合。軟融合的優(yōu)點(diǎn)是簡(jiǎn)單方便,但缺點(diǎn)是會(huì)影響圖像的刷新率。在柱幕投影幾何校正[1-5]、顏色校正[6]、圖像邊緣融合[7-10]方面,國(guó)內(nèi)外相關(guān)學(xué)者作了大量研究,但是在飛行模擬器多通道視景校正融合方面研究較少。飛行模擬器多通道視景校正融合具有自己的特殊性:一是設(shè)備空間限制了基于復(fù)雜設(shè)備的自動(dòng)幾何校正方式的應(yīng)用。飛行模擬器設(shè)備空間較小,顯示幕安裝于密封房體內(nèi),且投影幕面積較大,因此基于相機(jī)-投影機(jī)結(jié)合等自動(dòng)校正方式不適用,提升了幾何校正較為復(fù)雜性;二是視景生成顯示的實(shí)時(shí)性要求降低融合算法復(fù)雜性。目前模擬器視景生成顯示刷新頻率要求一般不小于60幀,視景生成軟件和視景融合軟件均運(yùn)行在視景生成計(jì)算機(jī)上,視景融合軟件要獲取每一幀的圖像數(shù)據(jù)并進(jìn)行融合處理,如果視景融合軟件過(guò)于復(fù)雜,將嚴(yán)重影響視景生成計(jì)算機(jī)的刷新率,甚至出現(xiàn)卡頓的現(xiàn)狀。
針對(duì)某型艦載機(jī)飛行模擬器多通道視景系統(tǒng)研發(fā)需要,本文提出了一種基于網(wǎng)格的非線性幾何校正方法和基于融合函數(shù)的圖像融合方法,方法簡(jiǎn)單,融合效果好,滿足飛行模擬器視景實(shí)時(shí)性要求,適用于飛行模擬器多通道視景校正融合需要。
典型實(shí)像飛行模擬器視景系統(tǒng)如圖1所示,由圖形計(jì)算機(jī)、投影儀、顯示幕組成。圖形計(jì)算機(jī)上裝配有視景生成軟件和數(shù)據(jù)庫(kù),視景生成軟件接受控制端飛行數(shù)據(jù),調(diào)用視景數(shù)據(jù)庫(kù)生成實(shí)時(shí)視景圖像,輸出到投影機(jī)和顯示器。
圖1 飛行模擬器視景系統(tǒng)
根據(jù)飛行模擬器視景系統(tǒng)生成顯示原理,飛行模擬器多通道視景校正融合總體思路將顯示器和投影機(jī)設(shè)置成擴(kuò)展顯示方式,通過(guò)WINDOWS圖形設(shè)備接口模塊獲取視景生成軟件輸出的實(shí)時(shí)圖像,然后對(duì)圖像進(jìn)行幾何校正和邊緣融合處理,然后再由投影機(jī)輸出圖像。顯示器所顯示圖像是非變形的正常視景圖像,而投影機(jī)輸出視景圖像是經(jīng)過(guò)幾何校正和邊緣融合處理的圖像。
為實(shí)現(xiàn)對(duì)飛行模擬器多通道視景幾何校正,本文提出了一種基于網(wǎng)格校正方法。首先對(duì)圖像進(jìn)行柱面投影處理,投影圖像經(jīng)變化后如圖2所示。然后在此基礎(chǔ)上,通過(guò)不斷增加網(wǎng)格控制點(diǎn)對(duì)投影圖像進(jìn)行細(xì)化調(diào)整,如圖3所示,設(shè)置控制點(diǎn)數(shù)量為45個(gè)。在飛行模擬器實(shí)像投影柱面或者球面由于不平滑,常存在局部凹凸區(qū)域,在局部區(qū)域顯示區(qū)域會(huì)存在扭曲現(xiàn)象,因此要進(jìn)行局部圖像的校正投影。
圖2 柱面投影圖像
圖3 網(wǎng)格控制圖像
常見(jiàn)的投影方法主要有等距投影(equirectangular)方法、圓柱投影(cylindrical)方法、直線投影(plane)等。本文采用柱面投影方法進(jìn)行變換。對(duì)于圖像上的一點(diǎn)P(x,y),在柱面圖像上的對(duì)應(yīng)點(diǎn)P(x′,y′),其投影變換公式為[11]
(1)
在每次調(diào)整網(wǎng)格控制點(diǎn)過(guò)程中,需要重新計(jì)算圖像網(wǎng)格點(diǎn)位置。采用三次插值方法計(jì)算網(wǎng)格點(diǎn)位置信息,假設(shè)p0,p1,p2,p3分別是點(diǎn)x0,x1,x2,x3的函數(shù)值,那么位于x1,x2之間的x的函數(shù)值的插值公式如下[12]:
(2)
為實(shí)現(xiàn)兩個(gè)視景通道融合區(qū)域是兩個(gè)道視景的疊加區(qū),亮度加倍,產(chǎn)生白色帶。融合的方法是一個(gè)通道的視景融合區(qū)域圖像進(jìn)行淡出處理,另一個(gè)通道視景融合區(qū)域圖像進(jìn)行淡入處理,使得兩個(gè)通道疊加區(qū)圖像顯示與單通道顯示效果一致。
假設(shè)x為像素列在視景通道融合區(qū)域的位置,g(x)為圖像融合區(qū)域像素值,滿足式(3)條件的f(x)稱為融合函數(shù):
f(x)g(x)+(1-f(x))g(x)=g(x)
(3)
式(3)描述了對(duì)一個(gè)通道的視景融合區(qū)域圖像像素乘以融合函數(shù)f(x),即進(jìn)行淡出處理,對(duì)另一個(gè)通道視景融合區(qū)域圖像像素乘以1-f(x),即進(jìn)行淡入處理,再將兩幅圖像對(duì)應(yīng)的像素值進(jìn)行相加,最終得到輸入圖像的完整信息。
常用的邊緣融合函數(shù)如式4所示[13]
(4)
式中,x為像素列在融合區(qū)的相對(duì)位置;p為影響因子。邊緣融合函數(shù)曲線如圖4所示。
圖4 邊緣融合函數(shù)
視景通道融合區(qū)域圖像進(jìn)行融合處理后,融合區(qū)域呈現(xiàn)灰色的條帶。主要原因是融合處理只是改變了融合區(qū)的圖像像素值,沒(méi)有對(duì)圖像亮度進(jìn)行校正。為增加融合區(qū)圖像亮度,需要構(gòu)建一個(gè)將融合區(qū)像素點(diǎn)影射為亮度值的函數(shù),稱為Gamma函數(shù)。像素點(diǎn)亮度值與像素值值的對(duì)應(yīng)關(guān)系如式4所示。
Y(r,g,b)=(R,G,B)G
其中Y(r,g,b)為亮度值,(R,G,B)為像素值,G為Gamma函數(shù)。在實(shí)際校正過(guò)程中,G的取值一般在1.8~2.2之間。
1)基于WINDOW GDI的屏幕截圖
由于圖像生成軟件比較多,主流的主要是VP,MATTIS等,以及國(guó)內(nèi)自主研發(fā)的視景生成軟件。為確保融合軟件使用方便簡(jiǎn)潔,采用WINDOW GDI對(duì)計(jì)算機(jī)進(jìn)行拷屏獲取圖像的方式,避免了將軟件疊加到各種視景軟件中的繁瑣操作。實(shí)現(xiàn)WINDOWS拷屏功能,最主要的GDI函數(shù)是GetDIBits,其功能是撿取制定位圖的信息,并將其以制定格式復(fù)制到一個(gè)緩沖區(qū),參數(shù)意義如下:
GetDIBits(
hdcScreen,∥設(shè)備環(huán)境句柄
hbmScreen,∥位圖句柄
0,∥制定檢索的第一個(gè)掃描線
(UNIT)bmpScreen.bmHeight,∥ 制定檢索的掃描線數(shù)
lpbitmap,∥ 制定用來(lái)檢索位圖數(shù)據(jù)的緩沖區(qū)的指針
(BITMAPINFO*)&bi,∥該結(jié)構(gòu)體保存位圖的數(shù)據(jù)格式
DIB_RGB_COLORS∥顏色表由紅、綠、藍(lán)三個(gè)直接值構(gòu)成
);
2)基于GLSL的圖像融合處理
GLSL(OpenGL Shading Language),是一種以C 語(yǔ)言為基礎(chǔ)的高階著色語(yǔ)言,它是由OpenGL ARB所建立,提供開(kāi)發(fā)者對(duì)繪制管線更多的直接控制,而無(wú)需使用匯編語(yǔ)言或硬件規(guī)格語(yǔ)言。GLSL編成的最大優(yōu)勢(shì)是將復(fù)雜數(shù)據(jù)處理交給GPU來(lái)做,充分利用專門的圖形硬件所提供的硬件加速來(lái)實(shí)現(xiàn),減輕CPU負(fù)擔(dān),提高計(jì)算機(jī)渲染性能和實(shí)時(shí)性。
OpenGL程序中使用著色器的初始化一般需要依次執(zhí)行以下步驟:
1)點(diǎn)著色器程序的源代碼和片段著色程序源代碼分別寫(xiě)入一個(gè)文件中,一般頂點(diǎn)著色器代碼文件后綴為.vert,片段著色器源代碼文件后綴為.frag;
2)使用glCreateshader()分別創(chuàng)建一個(gè)頂點(diǎn)著色器和一個(gè)片源著色器;
3)使用glShaderSource()分別將頂點(diǎn)/片段著色程序的源代碼字符數(shù)組綁定到頂點(diǎn)/片源著色器對(duì)象上;
4)使用glComplieShader()分別編譯頂點(diǎn)著色器和片源著色器對(duì)象;
5)使用glCreaterProgram()創(chuàng)建一個(gè)著色器程序?qū)ο螅?/p>
6)使用glAttachShader()將頂點(diǎn)和片段照射創(chuàng)建一個(gè)著色程序?qū)ο螅?/p>
7)使用glLinkProgram()分別將頂點(diǎn)和片段著色器和著色程序執(zhí)行鏈接生成一個(gè)可執(zhí)行程序;
8)使用glUseProgram()將OpenGL渲染管道切換到著色器模式,并將當(dāng)前的著色器進(jìn)行渲染。
視景生成軟件使用MANTIS,利用通用圖像生成接口協(xié)議對(duì)視景進(jìn)行輸入控制。
1)網(wǎng)絡(luò)插值點(diǎn)控制
融合軟件網(wǎng)絡(luò)插值點(diǎn)控制如圖5所示,根據(jù)需要可以調(diào)解橫向和縱向網(wǎng)格點(diǎn)數(shù)量,便于進(jìn)行幾何校正。在初始調(diào)整的條件下,可以使用4個(gè)邊緣網(wǎng)格控制點(diǎn),對(duì)融合圖像的投影位置進(jìn)行初始固定,然后根據(jù)需要逐步增加網(wǎng)絡(luò)點(diǎn)數(shù)量。
圖5 融合軟件網(wǎng)絡(luò)插值點(diǎn)
2)邊緣融合帶調(diào)整
調(diào)整融合函數(shù)參數(shù)可以對(duì)融合帶的寬度和淡入淡出效果進(jìn)行調(diào)整,仿真效果如圖6所示。圖中左側(cè)融合帶寬度參數(shù)為0.9,右側(cè)融合帶寬度參數(shù)為0.6,根據(jù)需要科技對(duì)圖像4個(gè)方向進(jìn)行融合帶大小以及淡入淡出效果調(diào)整。
圖6 邊緣融合仿真
3)刷新率
表1給出了不同分辨率條件下視景融合軟件的刷新率,融合軟件設(shè)定的刷新率為60幀,當(dāng)刷新率大于1400*1050時(shí),融合刷新率會(huì)降低。一般在應(yīng)用MANTIS視景驅(qū)動(dòng)軟件進(jìn)行仿真時(shí),圖像分辨率會(huì)設(shè)定為1400*1050,因此融合軟件滿足工程應(yīng)用需求。
表1 融合刷新率
應(yīng)用本融合軟件,開(kāi)發(fā)的飛行模擬器視景系統(tǒng)如圖7所示,從圖中可以看出,幾何校正能力較好,輸出圖像與環(huán)形幕布切合;融合帶融合效果較好,沒(méi)有明顯裂縫或良帶;刷新率滿足訓(xùn)練需要,達(dá)到了飛行模擬器視景系統(tǒng)應(yīng)用需求。
圖7 融合效果圖
針對(duì)飛行模擬器多通道視景校正融合處理需要,本文提出了基于網(wǎng)格的多通道視景投影圖像校正方法,并基于邊緣融合函數(shù)實(shí)現(xiàn)了圖像邊緣融合處理,采用GLSL著色語(yǔ)言設(shè)計(jì)了飛行模擬器多通道視景校正融合軟件,仿真結(jié)果顯示,所提出的飛行模擬器多通道視景校正融合方法具有操作簡(jiǎn)單,融合效果好,實(shí)時(shí)性高等特點(diǎn),滿足飛行模擬器多通道視景投影校正融合需要。