林原++徐亞軍
摘 要本文源于一種無紙化會(huì)議系統(tǒng)的圖形傳輸模塊,根據(jù)設(shè)計(jì)要求,要實(shí)現(xiàn)同屏顯示。在這個(gè)問題上,涉及到圖像傳輸算法優(yōu)化。在優(yōu)化方案中,固定分塊算法是一種常見手段,而本文基于這種算法,提出相應(yīng)改進(jìn),并加以應(yīng)用,滿足設(shè)計(jì)需求。
【關(guān)鍵詞】圖像傳輸 算法同屏顯示
1 會(huì)議系統(tǒng)簡述
1.1 會(huì)議系統(tǒng)架構(gòu)
首先簡述會(huì)議系統(tǒng)功能。此系統(tǒng)采用C/S架構(gòu),由一個(gè)服務(wù)端和多個(gè)客戶端構(gòu)成。使用環(huán)境限定局域網(wǎng),通過socket通信中TCP套接字綁定IP的方式實(shí)現(xiàn)服務(wù)端與客戶端的通信,具體包括圖像文字語音視頻信息的交互,本文著重于圖像傳輸模塊。
1.2 需求分析
在會(huì)議系統(tǒng)的同屏匯報(bào)模式中,所有與會(huì)人員同屏顯示發(fā)言人屏幕。整個(gè)同屏過程相當(dāng)于位圖在局域網(wǎng)中傳輸。考慮到網(wǎng)絡(luò)帶寬及電腦CPU資源占用等因素,希望圖片傳輸模塊盡可能的降低傳輸數(shù)據(jù)量,以保證會(huì)議系統(tǒng)的實(shí)時(shí)性與流暢性。
2 圖像傳輸
2.1 圖像傳輸過程
會(huì)議系統(tǒng)的圖像傳輸模塊流程可以簡要概述為以下幾個(gè)步驟:
2.1.1 發(fā)言人開啟
發(fā)言客戶端開啟屏幕模式后,以0.05s為時(shí)間間隔進(jìn)行圖片截取,截取下來的位圖信息發(fā)送至客戶端。
2.1.2 客戶端判定
若其他人正在發(fā)言則終止操作;若無人發(fā)言,則接收位圖信息。
2.1.3 服務(wù)端繪制
當(dāng)客戶端接收到位圖信息后,發(fā)送給除發(fā)言人之外的其他客戶端;客戶端收到服務(wù)端傳輸位圖信息后,通過雙緩存的方式,將位圖資源寫入緩沖區(qū)并拷貝位圖至畫布,完成同屏圖像傳輸。
2.2 圖像傳輸算法
如2.1所述,在使用中為了保證畫面流暢(20幀以上),設(shè)定傳輸間隔為0.05s,而在實(shí)際使用中,匯報(bào)人屏幕在相隔0.05秒的兩個(gè)時(shí)間節(jié)點(diǎn)內(nèi),變化量可能非常有限,大部分時(shí)間只是鼠標(biāo)的變動(dòng)。如采取整圖傳輸,勢必浪費(fèi)帶寬,因此在向服務(wù)端傳輸前,增加了算法優(yōu)化部分,減小圖像傳輸?shù)臄?shù)據(jù)量。
3 算法優(yōu)化
3.1 固定分塊算法
在圖像傳輸?shù)倪^程中,只需傳輸變化的像素點(diǎn)。在算法優(yōu)化方案中,固定分塊,隔行掃描是一種非常普遍的方案,具體實(shí)施步驟如下:
(1)本地緩存上一個(gè)時(shí)刻的bmp位圖,在下一掃描時(shí)刻,截取新的bmp位圖,將位圖分成若干矩形(一般為3*3,3*4,4*3),并逐一編號(hào)。
(2)對每一個(gè)bmp位圖分塊進(jìn)行掃描,掃描方式為隔行掃描:從第I行(I初始為1)初始點(diǎn)起,對該行每一個(gè)點(diǎn)依次掃描,對照上一個(gè)時(shí)間點(diǎn)的位圖,若發(fā)現(xiàn)異樣點(diǎn)則停止掃描;若整行無異樣點(diǎn),根據(jù)指定的間隔行數(shù)N,對第I行(I=I+N)行進(jìn)行掃描,至I大于該分塊的總行數(shù)。
(3)對發(fā)現(xiàn)異樣點(diǎn)的bmp位圖分塊進(jìn)行傳輸。在客戶端顯示的過程中,將接收的位圖分塊渲染到指定區(qū)域,對于未傳輸?shù)牟糠?,即無變化區(qū)域,與上一時(shí)刻顯示相同。
固定分塊算法在實(shí)際的使用中,由于只傳輸變化分塊,因此相比于整圖發(fā)送,帶寬資源及CPU資源占有率都有降低。但是其分塊方式簡單機(jī)械,在一定程度上限制了算法的優(yōu)越性。
以圖1為例。若整個(gè)矩形為屏幕,圖中橢圓為需要傳輸?shù)膬?nèi)容,屏幕采用3*4的分塊方式。顯然,對于1-12所有分塊,都包含橢圓的像素點(diǎn),因此每個(gè)分塊都要進(jìn)行傳輸,這相當(dāng)于未優(yōu)化。由于變化像素點(diǎn)的位置是隨機(jī)的,固定的分塊難以找到最佳傳輸矩形。因此本文基于固定分塊,隔行掃描的基礎(chǔ)思想,加以改進(jìn),提出一種自適應(yīng)式分塊掃描算法。
3.2 自適應(yīng)分塊算法
這種分塊方式,在初始階段與固定分塊相同,存儲(chǔ)上一時(shí)刻位圖,在下一時(shí)刻到來時(shí),截取位圖。截圖后分塊,其分塊方式要通過掃描進(jìn)行計(jì)算。以下具體介紹其計(jì)算方式:
3.2.1 建立坐標(biāo)系
根據(jù)使用習(xí)慣,X軸向右為正方形,Y軸向下為正方形。同時(shí)設(shè)定掃描間隔行數(shù)N。
3.2.2 對應(yīng)事件
設(shè)置事件1,該行發(fā)現(xiàn)不同像素點(diǎn)為true;事件2,該行未發(fā)現(xiàn)不同像素點(diǎn)為false。
3.2.3 掃描原則
從左上角(0,0)開始,沿X、Y軸正方向掃描。在每一行結(jié)束時(shí)判定掃描事件。當(dāng)發(fā)生事件true時(shí),開始記錄每一個(gè)變化點(diǎn)坐標(biāo);當(dāng)發(fā)生事件false時(shí),進(jìn)入分塊階段,并記錄該行數(shù)I。
3.2.4 矩形選擇
通過步驟3,得到若干變化像素點(diǎn),設(shè)每一個(gè)變化像素點(diǎn)的坐標(biāo)為(Px1,Py1),(Px2,Py2)......通過這些變化像素點(diǎn)求出待傳輸矩形的對角坐標(biāo)(Rrx,Rry)。
Rlx=min(Px1,Px2…)
Rly=min(Py1,Py2…)
Rrx=min(Px1,Px2…)
Rry=min(Px1,Px2…)
3.2.5 整圖掃描
在完成矩形選擇后,從發(fā)生事件2第I行起,間隔N行開始掃描,(此時(shí)I=I+N),依照上述掃描原則,重復(fù)此步驟至掃描整個(gè)位圖,選擇對應(yīng)矩形。
3.2.6 同屏顯示
傳輸對應(yīng)的矩形框,并根據(jù)坐標(biāo)在指定位置繪制傳輸矩形,其他區(qū)域顯示上一時(shí)刻緩沖位圖。
以上介紹了本會(huì)議系統(tǒng)中所采用的自適應(yīng)式分塊算法的基本原理,圖2可以直觀的描述。
4 總結(jié)
本文結(jié)合實(shí)際需求,設(shè)計(jì)出一種根據(jù)變化區(qū)域自行判定傳輸矩形的分塊掃描算法,相比于固定分塊掃描算法更為靈活。該方法特別適用于會(huì)議中PPT講解的同屏傳輸,在PPT講解過程中,大部分情況下屏幕的變動(dòng)僅限于幾個(gè)圖形、一行文字,甚至只有光標(biāo)的移動(dòng),因此待傳輸位圖只占整個(gè)屏幕的幾十甚至幾百分之一,而固定分塊方式,如3*3分塊,每次至少要傳輸1/9屏幕,可以得出,針對本課題所采用的會(huì)議系統(tǒng),本文這種算法改進(jìn)十分有效。
參考文獻(xiàn)
[1]吳棟淦.兩種屏幕圖像捕獲方案的比較[J].計(jì)算機(jī)技術(shù)應(yīng)用,2007(03):9-11.
[2]劉德勝.基于矩形分割的局部渲染技術(shù)在無線圖像通信中的應(yīng)用[J].程度信息工程學(xué)院學(xué)報(bào),2012(27):5-7.
作者單位
北京航空航天大學(xué) 北京市 100191