国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MVF和改進八叉樹的屏幕圖像采集方案

2013-08-13 05:07:20勇,郭
電視技術 2013年19期
關鍵詞:八叉樹內存顏色

張 勇,郭 琳

(1.西南石油大學,四川 成都 610000;2.四川職業(yè)技術學院,四川 遂寧 629000)

在遠程視頻監(jiān)控中,視頻快速捕捉與傳輸技術是決定其性能關鍵點之一[1],而隨著計算機功能的不斷強大,多媒體技術特別是數(shù)字圖像技術的不斷發(fā)展,為只依靠軟件技術快速抓取計算機屏幕的監(jiān)控畫面,并將其轉化成可供傳輸與預覽的視頻流資源提供了可能。

目前在遠程實時視頻監(jiān)控軟件系統(tǒng)中,獲取屏幕圖像的方法主要有兩種:創(chuàng)建屏幕設備描述表(Device Context,DC)方法[2]以及 DirectX 中的 DirectShow 方法[3],兩種方法各自具有優(yōu)缺點。屏幕DC方法技術實現(xiàn)比較直接,對應用環(huán)境沒有特殊要求,但是截圖速率低,越來越難以滿足實時性視頻監(jiān)控的需求。DirectShow方法截圖速率高,但是需要DirectX庫支持,在實現(xiàn)上相對于直接Windows設備上下文編程顯得繁雜,為程序開發(fā)和應用帶來不便。在遠程視頻監(jiān)控系統(tǒng)的工程實踐中,為降低傳輸負載,在發(fā)送圖像文件時,后端硬件會進行取高位處理,例如實現(xiàn)24位色到16位色轉換時,分別對R,G,B取高位,由 R8∶G8∶B8 轉變成 R5∶G6∶B5,其優(yōu)點是實現(xiàn)簡單,能保證系統(tǒng)傳輸?shù)膶崟r性需求,缺點是處理后的圖像會出現(xiàn)顏線、圖像輪廓模糊等問題,從而圖像效果出現(xiàn)嚴重失真。

筆者的研究主要是在屏幕DC截圖的基礎上,利用內存映射文件技術MVF(Map View of File),將圖像文件映射到虛擬內存的一塊地址空間,在訪問文件時像訪問內存文件一樣,避免了不必要的I/O操作,加快采集速度,較好地解決了屏幕DC截圖速度慢的缺點。又根據(jù)降低網(wǎng)絡傳輸負載的需求,對所采集到的圖像在統(tǒng)一量化算法初步處理的基礎上建立簡化的八叉樹,對像素點進行裁剪,既降低圖像傳輸數(shù)據(jù)量,又保證圖像成像效果,有效提升遠程實時視頻監(jiān)控軟件系統(tǒng)的工作性能。

1 基于內存映射文件法的屏幕DC截圖法具體設計

1.1 內存映射文件技術簡要介紹

WIN32 API提供了實施文件操作的便捷渠道,也就是內存映射文件。在這里,其準許能夠在WIN32進程的虛擬空間里面留有一定的空間,同時能夠把物理存儲器里面的目標文件向這一個空間進行提交,從而能夠與該虛擬空間進行映射。這樣就能夠通過存取內存數(shù)據(jù)的手段對文件里面的數(shù)據(jù)進行直接操作,就像將它們置于內存里面,在很大程度上使得訪問文件得以簡化,同時能夠使若干進程共享數(shù)據(jù)得以實現(xiàn)。因此,引入內存映射文件能夠在很大程度上使程序效率得以提升[4]。

1.2 優(yōu)化后屏幕DC讀寫屏工作流程設計

對于遠程視頻監(jiān)控軟件系統(tǒng)來說,其主要是在計算機上運行的,是利用軟件手段把那些監(jiān)控圖像在播放的過程中進行截取。由于所截取的為整個視頻信息,因此在這里要求抓取速率一定要保持在24幀/s(f/s)以上,這是由于人可以接受的連續(xù)畫面速度一般是24 f/s以上,要是比該速度小,人眼會觀察到一定的阻滯現(xiàn)象,這也是筆者優(yōu)化讀寫屏速率的其中一個關鍵需求。另一方面,考慮到系統(tǒng)實時處理模式下網(wǎng)絡負載水平,在對圖像進行抓取的過程中,可以按照視頻的刷新率的具體情況,科學合理地對截圖速率進行設置,從而能夠有效控制一定時間內圖像抓取的數(shù)據(jù)量。該操作流程示意圖如圖1所示。

圖1 優(yōu)化后的屏幕DC讀寫屏工作流程原理圖

將CreateDIBSection()引入傳統(tǒng)的屏幕DC截圖法里面,利用該函數(shù)能夠構建起存儲DIB位的內存,能夠進行GDI操作。在很大程度上降低了成本,縮短了讀屏消耗時間。對于CreateFileMapping()來說,其主要是負責在文件映射內核對象構建過程中進行使用,所以在具體使用過程中一般將文件創(chuàng)建成內存映射對象。

對于MapViewofFile()來說,其主要是負責將文件里面的數(shù)據(jù)信息向進程的地址空間里面進行映射,而對于UnmapViewOfFile()來說,其主要是負責將文件內存映射解除,然后系統(tǒng)把內存里面的數(shù)據(jù)向磁盤進行回寫。完成上述的操作之后,接著利用CloseHandle()將映射文件關閉,從而將所使用到的內存得到釋放[5]。

2 基于八叉樹顏色量化改進算法設計與實現(xiàn)

在監(jiān)控網(wǎng)絡通信能力一定的基礎上,各像素點的顏色數(shù)據(jù)量愈小,網(wǎng)絡負載壓力就愈低,從而能夠在很大程度上改善系統(tǒng)的有效性,例如,在顏色量化重建過程中,為使圖像最大限度的和原始圖像相接近,筆者在這里主要是通過八叉樹算法進行[6],接下來將對基于八叉樹顏色量化改進算法設計和實現(xiàn)進行闡明。

2.1 構建八叉樹

在上面闡述的采集屏幕圖像過程中,主要得到的是RGB信號,然而要是在基于LUV的色彩空間上進行量化,就可以獲得非常不錯的視覺體驗。但鑒于要在LUV空間里面實施轉換,必須要以非線性運算方式實現(xiàn),這個過程中需要相對較多的系統(tǒng)資源,因此,為充分保證算法具有較高的效率,可以通過RGB顏色空間實現(xiàn)顏色量化。

八叉樹構建過程中,筆者通過升級的八叉樹的存儲結構進行[7],具體見圖2,各節(jié)點的數(shù)據(jù)結構里面。

圖2 簡易八叉樹數(shù)據(jù)結構(截圖)

主要涉及到兩個指針,它們分別指向父節(jié)點與8個子節(jié)點向量,同時涉及到這一個節(jié)點對應的顏色、出現(xiàn)的次數(shù)等幾個方面的內容。并且具備3個成員函數(shù),它們依次是在判斷這一個節(jié)點是不是葉子節(jié)點的過程中進行使用;判斷這一個節(jié)點是不是倒數(shù)第二層的節(jié)點過程中進行使用;將子節(jié)點的R,G,B的顏色值及其顏色出現(xiàn)次數(shù)向父節(jié)點進行累加的過程中使用。該結構能夠在很大程度上使空間與操作效率相互間的關系得到平衡,可以在內存空間相對較小、實時性要求相對偏高的視頻監(jiān)控系統(tǒng)里使用。

在RGB顏色空間對八叉樹進行構建,該環(huán)節(jié)主要涉及到以下幾方面:

1)利用統(tǒng)一量化法進行操作,也就是把R8∶G8∶B8直接取高位,使其成為12位的R4∶G4∶B4,所得到的12位顏色信息當作八叉樹中節(jié)點的坐標值,在這里RGB數(shù)據(jù)從大到小依次與八叉樹里面的淺層以及深層級節(jié)點相對應,這樣多次操作,就能夠充分保證獲得的4層八叉樹。

2)將八叉樹節(jié)點的坐標信息確定下來之后,接著自根節(jié)點開始沿著縱向對八叉樹進行遍歷。要是遍歷的坐標里面沒有八叉樹的節(jié)點,在這種情況下,就能夠將這一個八叉樹節(jié)點生成,否則接著將低于RGB 1位的組合當作節(jié)點坐標,直至訪問到八叉樹的葉節(jié)點為止。需要對八叉樹里面具有的顏色數(shù)進行統(tǒng)計,并且還需要將這一個節(jié)點的顏色出現(xiàn)次數(shù)、RGB值向節(jié)點數(shù)據(jù)結構的字段里面進行累加。

圖像里面各像素都進行上面的兩個流程,一直到其里面的各像素都和八叉樹里面的葉節(jié)點相互對應為止,這樣就構建起八叉樹(見圖3)。

圖3 構建的4層八叉樹簡易結構圖

2.2 八叉樹的裁剪與圖像質量恢復

在裁減過程中,主要是通過下面的兩個條件取舍深度一樣的節(jié)點,也就是最少或最多像素的節(jié)點。對于前者來說,其能夠最大限度地降低圖像的誤差,然而在對圖像細節(jié)方面的支持不足;對于后者來說,其能夠在相對較大的光滑范圍里面形成帶狀效應,然而能夠有效地保持圖像里面的細節(jié),從而實現(xiàn)反走樣的效果[8]。在遠程監(jiān)控過程中,圖像的層次感與輪廓在很大程度上決定著圖像的視覺效果,應該最大限度地降低圖像的誤差,所以,在對深度一樣的節(jié)點進行裁減的過程中,筆者主要是通過將最小像素的節(jié)點刪去,以誤差擴散的方式保證圖像細節(jié)。

八叉樹裁減主要是以其顏色數(shù)是不是比256色高當作裁減結束的標準。當比256色高的時候,就從最小像素點的節(jié)點位置進行裁減,直至顏色數(shù)在249~256區(qū)域內為止,這樣才可以與調色表的設計要求相符合。

裁減的時候應該首先看第三層的節(jié)點數(shù)是不是比256高,要是比256高,就應該將4層的全部葉節(jié)點向其父節(jié)點里面進行合并,同時還應該適當?shù)牟脺p。接著開展從下到上的裁減操作。在這里主要是將顏色次數(shù)出現(xiàn)最小的最底層父節(jié)點的子節(jié)點刪除[9],一直至滿足上述條件為止。具體通過下面的操作流程進行:

1)第一步,從根節(jié)點處對八叉樹進行遍歷,得到最底層的父節(jié)點;

2)第二步,將該種節(jié)點向一個鏈表里面進行存儲,同時根據(jù)節(jié)點的顏色數(shù)從高到低進行邏輯排序;

3)第三步,將該種節(jié)點子節(jié)點的顏色數(shù)與RGB的對應的值進行累加;

4)第四步,這種情況下,鏈表尾部為顏色出現(xiàn)最少的最底層的父節(jié)點,然后將該類父節(jié)點的全部子節(jié)點都刪除,這樣該類父節(jié)點就成為葉節(jié)點,其父節(jié)點則變?yōu)榈讓拥母腹?jié)點,多次進行這幾個步驟,一直到八叉樹的顏色數(shù)比257小,才結束操作。

裁減之后會在一定程度上產生圖像層次感不足、輪廓明顯等諸多問題,為有效處理這些問題,筆者同時在顏色量化處理的前提條件下配置相應的負反饋系統(tǒng),在這里主要是利用Floy-Steinberg誤差擴散算法進行,根據(jù)適當?shù)谋壤龑⑾袼氐牧炕`差向鄰接像素進行擴散,從而使其有所補償。該算法具有諸多優(yōu)勢,例如處理及時、運算簡單等,因此在實時性的遠程實時監(jiān)控系統(tǒng)里面具有較高的適用性。

3 實現(xiàn)效果

為了測試優(yōu)化后屏幕DC法的截圖效率,在同一軟硬環(huán)境下,利用設計的屏幕圖像采集。軟件工作基本流程如圖4所示。

截取正在播放的Flash文件的連續(xù)的監(jiān)控畫面,并通過軟件合成。用AVI格式的視頻流檢測所采集到的畫面的連續(xù)性。軟件做了4次捕捉實驗,每次捕捉的尺寸不同,每次連續(xù)捕捉1000幀,捕捉1幀所需要的平均時間見表1。

如表1所示,可以清晰地比較出屏幕DC和優(yōu)化屏幕DC二種截圖法的效率。在傳統(tǒng)DC屏幕截圖法中,即使是在尺寸比較小的時候(例如200×200),抓取每一幀的時間是0.0625 s,也就是說1 s抓取16幀,其效率仍沒有滿足24幀/s(f/s)。結合文件內存映射技術后的屏幕DC法,截取尺寸在330×240以內時,基本上可以做到每秒鐘抓取24幀以上,所以在一定的條件下,用基于MVF改進的屏幕DC截取法可以抓取監(jiān)控屏幕中連續(xù)播放的視頻圖像,這樣就完全可以滿足監(jiān)控畫面的實時連續(xù)播放的需求。

圖4 屏幕圖像采集軟件工作基本流程(截圖)

表1 實驗測試視頻幀抓取時間表

同時為了檢驗對所截取的監(jiān)控圖像的量化效果,特別是檢驗圖像經(jīng)過顏色量化以后在層次感、顆粒感與輪廓變化上給人的視覺感受,筆者選擇如圖5a所示的原圖進行靜態(tài)圖像實驗,分別對原圖做了統(tǒng)一量化處理、改進后的八叉樹裁減處理、最后誤差擴散處理,由圖5可知改進的八叉樹算法在顏色的數(shù)據(jù)量減為原來的1/3的情況下,能夠有效減少在顏色漸變區(qū)域存在的帶狀現(xiàn)象,顏色更有層次感,在經(jīng)過Floyd-Steinberg誤差擴散處理后,圖像增加了顆粒感,同時帶狀現(xiàn)象也進一步弱化,從而進一步提高視覺效果。

4 結論

圖5 顏色量化算法效果實現(xiàn)對比圖

筆者針對傳統(tǒng)屏幕DC法在采集圖像上速率的不足,結合內存映射文件法設計了在技術上實現(xiàn)較為直接,能夠適應各種視頻源文件,應用于遠程視頻監(jiān)控屏幕資源采集的技術方案。同時通過對原始八叉樹算法時效性的改進,再配以改進的Floyd-Steinberg誤差擴散處理技術改善了對采集的屏幕圖像顏色量化降低顏色數(shù)據(jù)量時所產生的帶狀現(xiàn)象、顏色失真等問題。但是筆者設計的方案所對應的軟件系統(tǒng)目前的工作平臺是Windows系統(tǒng),因其不是實時操作系統(tǒng),所以軟件在實時抓取連續(xù)播放視頻圖像時,每秒鐘實際的截取幀數(shù)可能會小于設置的幀數(shù),所以可以考慮將本文所設計方法移植到實時的操作系統(tǒng)上(例如VxWorks),從根本上解決軟件系統(tǒng)運行速度的可靠性瓶頸問題。另外筆者是通過對所采集的圖像進行量化處理,降低圖像顏色的數(shù)據(jù)量來降低實時監(jiān)控系統(tǒng)的網(wǎng)絡負載,對通信網(wǎng)絡的數(shù)據(jù)吞吐量的提高沒有實際的幫助,所以也可以通過簡化底層通信機制,盡可能避免為提高網(wǎng)絡可靠性所進行的冗余處理,優(yōu)化網(wǎng)絡通信的協(xié)議棧等方式增大系統(tǒng)的負載規(guī)模。

[1]鄭世寶.智能視頻監(jiān)控技術與應用[J].電視技術,2009,33(1):94-96.

[2]胡春安,歐陽城添.Windows編程中的圖像輸出[J].浙江工業(yè)大學學報,2006,34(5):546-549.

[3]張立榮,石峰.基于DirectShow的遠程視頻監(jiān)控系統(tǒng)的設計與實現(xiàn)[J].電視技術,2005,29(3):91-93.

[4]徐世波,郭愛菁.基于大型圖片的文件讀取方法的研究與探討[J].計算機應用與軟件,2009,26(6):126-140.

[5]李小根,王宗敏,黃志全.基于內存映射文件技術快速繪制大場景流域模型[J].計算機應用與研究,2009,26(2):527-528.

[6]廖峨眉,胡建平.基于八叉樹顏色量化的OpenGL實現(xiàn)[J].信息技術,2010(5):165-167.

[7]呂廣憲,潘懋,宋揚,等.基于多級線性結構和規(guī)則分塊的虛擬八叉樹[J].計算機工程,2007,33(23):3-5.

[8]KANG H C,KAI T W,CHIN C C,et al.Exploiting hardware accelerated occlusion queries for visibility culling[J].IEICET Transactions on Fundamentals,2005(7):2007-2014.

[9]GUO Baolong,F(xiàn)U Xiang.A modified octree color quantization algorithm[EB/OL].[2013-02-25].http://www.researchgate.net/publication/224695366_A_Modified_Octree_Color_Quantization_Algorithm.

猜你喜歡
八叉樹內存顏色
三維十字鏈表八叉樹的高效檢索實現(xiàn)
“春夏秋冬”的內存
當代陜西(2019年13期)2019-08-20 03:54:22
認識顏色
特殊顏色的水
和顏色捉迷藏
兒童繪本(2015年8期)2015-05-25 17:55:54
基于內存的地理信息訪問技術
散亂點云線性八叉樹結構在GPU中的實現(xiàn)
基于密集型區(qū)域的八叉樹劃分算法
科技傳播(2012年2期)2012-06-13 10:03:26
一種基于GPU實現(xiàn)的自適應八叉樹紋理繪畫算法
圖學學報(2010年4期)2010-07-07 06:52:20
上網(wǎng)本為什么只有1GB?
色达县| 招远市| 体育| 新闻| 沂水县| 鹿泉市| 腾冲县| 开阳县| 汉寿县| 台东县| 乳源| 五大连池市| 福清市| 武川县| 榆树市| 抚州市| 田东县| 崇阳县| 芜湖市| 河津市| 扎兰屯市| 巍山| 易门县| 晋宁县| 长乐市| 水富县| 杭州市| 凤庆县| 沁水县| 锦屏县| 本溪市| 当阳市| 砚山县| 南汇区| 隆安县| 玉门市| 罗山县| 商城县| 大姚县| 汉寿县| 青浦区|