• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于HDLC協(xié)議的圖像實時壓縮傳輸技術研究

      2018-03-08 08:52:45張修建梁偉偉
      計算機測量與控制 2018年2期
      關鍵詞:碼流碼率緩沖區(qū)

      張修建,梁偉偉,王 兵,趙 茜,靳 碩

      (1.北京航天計量測試技術研究所,北京 100076;2.華北計算技術研究所,北京 100083)

      0 引言

      視頻泛指將一系列靜態(tài)影像以電信號方式加以捕捉、紀錄、處理、儲存、傳送與重現(xiàn)的各種技術,隨著通信技術的不斷發(fā)展和網(wǎng)絡帶寬的快速增長,視頻不斷應用于各種傳統(tǒng)及新興行業(yè)中[1]。而視頻信息自身具備的直觀性和易被視覺接受的特點,使其不斷引入航天、航空、無人機和機器人等需要實時監(jiān)控的行業(yè)中,方便現(xiàn)場環(huán)境和作業(yè)對象的實時遠程監(jiān)控。

      圖像傳輸具有數(shù)據(jù)量大,實時性要求高的特點,尤其在無線傳輸中更容易受到外界環(huán)境的干擾,為了降低傳輸過程中的誤碼率,提高傳輸鏈路的可靠性,設計了一種基于HDLC協(xié)議的傳輸鏈路。高速通信協(xié)議HDLC 是一個在同步網(wǎng)上傳輸數(shù)據(jù)、面向比特的數(shù)據(jù)鏈路控制協(xié)議。它具有差錯檢測功能強大、實時和同步傳輸、可靠性高等特點[2]。

      為了在圖像傳輸過程中降低誤碼率,并且保證其實時性,本文著重設計了符合項目要求的編碼模式、壓縮算法和發(fā)送協(xié)議,實現(xiàn)了視頻壓縮裝置的開發(fā)和實現(xiàn)。

      1 視頻壓縮傳輸裝置原理

      視頻壓縮傳輸裝置的原理如圖1中所示,主要分為硬件設計和軟件設計。軟件是視頻壓縮裝置實現(xiàn)實時壓縮和碼流平穩(wěn)傳輸?shù)暮诵?,在支持視頻采集的硬件電路上,設計了視頻采集、H.264編碼、碼流封裝和HDLC發(fā)送等模塊,各功能模塊在DSP/BIOS調度機制的作用下統(tǒng)一協(xié)作,共同實現(xiàn)視頻的實時壓縮和碼流的平穩(wěn)傳輸功能。

      視頻壓縮裝置的硬件是基于數(shù)字信號處理器(DSP)和可編程門陣列(FPGA)進行設計的,圖2為視頻壓縮裝置硬件結構圖。DSP主要完成復合視頻解碼器的初始化、視頻參數(shù)設置和視頻的實時壓縮; FPGA主要完成時序控制、通信協(xié)議實現(xiàn)和碼流等數(shù)據(jù)的傳輸;整機工作時可同時最多接入4路視頻信號的采集。

      圖2 視頻壓縮傳輸裝置硬件結構圖

      2 軟件設計

      軟件設計是整個裝置實現(xiàn)視頻實時壓縮和碼流HDLC傳輸?shù)暮诵?,采用C語言和匯編語言設計完成,主要運行在DSP內,實現(xiàn)視頻采集、H.264編碼、碼流封裝和HDLC發(fā)送等功能,在FPGA的進一步時序配合下,完成數(shù)據(jù)到下級控制器的傳輸。

      2.1 視頻采集設計

      參照圖1可以看出,視頻壓縮裝置接收攝像頭輸出的PAL制模擬視頻信號,在DSP內的視頻采集功能模塊的控制下, 調用復合視頻解碼器將視頻信號解碼成復合ITU-R 656格式的視頻信號;同時通過預置參數(shù)的作用,保證捕獲到的圖像特征如大小、幀場模式等,符合后端壓縮編碼器的輸入圖像信號要求。

      在視頻采集的設計上,采用實時操作系統(tǒng)DSP/BIOS提供的FVID類驅動模型實現(xiàn)。FVID模型主要由FVID_create、FVID_control、FVID_alloc、 FVID_exchange和FVID_delete函數(shù)構成,提供模塊化的讀寫應用函數(shù),可以更加友好、高效地實現(xiàn)視頻抓取和視頻存儲空間的分配,通過簡單的應用程序調用,即可輕松實現(xiàn)視頻的循環(huán)采集。圖3顯示的是單幀圖像的采集過程。

      圖3 單幀圖像的采集原理

      采集參數(shù)設置是通過參考并設計FVID類驅動模型中的FVID_frame和VPORTCAP_Params結構體實現(xiàn)的,F(xiàn)VID_frame結構體中主要包含的是YUV圖像信號格式的亮度和色度信息,VPORTCAP_Params結構體包含了捕獲的視頻信號的詳細信息,如行數(shù)、列數(shù)、YUV結構、場頻、捕獲模式設置、水平視頻數(shù)據(jù)是否放縮、水平色度數(shù)據(jù)濾波、奇偶場列的開始和結束位置、FIFO的門限值等信息。設備驅動根據(jù)配置參數(shù)計算緩沖區(qū)的大小并分配緩沖區(qū),且至少要為每個FVID通道分配3個緩沖區(qū),以確保視頻圖像的捕獲和顯示的連續(xù)性。視頻捕獲前,須正確設置VPORTCAP_Params結構體中的相關參數(shù),以保證獲取符合任務要求的視頻信號。

      圖像采集的具體過程由FVID模型中的相關函數(shù)實現(xiàn)。其中,F(xiàn)VID_create函數(shù)建立一個FVID通道對象并初始化,F(xiàn)VID_control函數(shù)發(fā)送控制命令配置復合解碼器和采集視頻數(shù)據(jù),F(xiàn)VID_alloc函數(shù)申請采集空間, FVID_exchange函數(shù)通過交換空間采集新的一幀圖像。

      2.2 編碼器結構及壓縮算法設計

      視頻壓縮裝置的編碼器采用H.264標準設計,作為新一代壓縮標準的H.264,相比以前的標準(如MPEG-4、H.263等),在保證相同圖像質量的前提下,可以節(jié)約50%的碼率,而且對網(wǎng)絡傳輸表現(xiàn)出更好的適應性[3],是當下主流的視頻編碼標準。

      H.264采用混合編碼技術,在整數(shù)DCT變換、可變大小的多模式宏塊、環(huán)路濾波、運動補償、高效的運動估計算法等方面引入新技術,通過每個模塊的小的技術改進,帶來了系統(tǒng)整體性能的提升,使運動圖像壓縮技術上升到了一個更高的階段。本本采取編碼器結構優(yōu)化和壓縮算法優(yōu)化等技術途徑,保證壓縮的實時性和正確性。

      2.2.1 編碼器結構設計

      視頻壓縮裝置的編碼器采用混合編碼框架設計,提供了輸入圖像的寬高、關鍵幀的間隔、碼率和幀率等控制參數(shù),編碼器參數(shù)結構定義如下:

      typedef struct

      {

      unsigned int nWidth; //圖象的寬

      unsigned int nHeight; //圖象的高

      unsigned int nIFrame; // 關鍵幀的間隔

      int bDeblockingFilter; //環(huán)路濾波的標志

      unsigned int nQualityCtrlMode; //質量模式

      unsigned int nQP;//量化參數(shù)的設置 0-51

      unsigned int nFPS;//幀率(frame/s)

      unsigned int nBitRate;//碼率(bit/s)

      unsigned int nFlag;//5bit編碼標志位

      } YTH264PARAM;

      圖4 視頻編碼器結構圖

      2.2.2 壓縮算法設計

      視頻壓縮裝置的多處包含決定編碼功能和效率的復雜算法。本文只對關鍵算法進行簡單介紹。幀內預測用來清除空間冗余,幀間預測用來清除時間冗余,變換和量化用來消除頻率冗余,環(huán)路濾波用于消除量化噪聲。

      幀內預測算法充分利用圖像的空間相關性, 利用圖像塊周圍的像素來進行幀內預測, 提高了編碼效率, 從而減少編碼輸出的碼率。H.264視頻編碼標準在幀間預測模式中增加了很多關鍵技術來提升壓縮性能,在此不再贅述。

      為了進一步節(jié)省圖像傳輸碼率,需要對圖像信號進行壓縮,一般采用變換編碼來消處圖像信號中的相關性及減少圖像編碼的動態(tài)范圍。變換編碼將圖像時域信號通過數(shù)學工具變換成頻域信號,在頻域中,圖像信號能量重新分布,且能量大多集中在低頻區(qū),相對時域信號,碼率會有較大下降。根據(jù)統(tǒng)計和經(jīng)驗得知,平坦區(qū)域或內容緩慢變化區(qū)域占據(jù)一幅圖像的絕大部分,而細節(jié)區(qū)域或內容突變區(qū)域則占小部分。這樣,空間域的圖像變換到頻域,即所謂的變換域,會產出相關性很小的一些變換系數(shù),并可對其進行壓縮編碼。視頻編碼中變換編碼的數(shù)據(jù)源,包括兩種:一是圖像數(shù)據(jù)本身,二是圖像殘差。H.264 把運動估值和幀內預測的殘差結果從時域變換到頻域,使用了類似于4x4 離散余弦變換 DCT(Discrete Cosine Transform)的整數(shù)變換,而不是采用8x8 DCT的浮點數(shù)變換。這種方法的優(yōu)點在于:在編碼器和解碼器中允許精度相同的變換和反變換,便于使用簡單的定點運算方式。在 H.264 中,同時采用整數(shù)運算,提高圖像壓縮的實時性[5]。

      量化編碼是把DCT系數(shù)除以一個常量,經(jīng)過量化后的結果是量化步長的整數(shù)倍或為更多的零值,從而達到了壓縮的目的。在反量化時,由于量化過程取整或四舍五入,而無法完全恢復原DCT系數(shù),從而產生一定的失真。量化的原理公式如公式1所示,反量化的原理公式如公式2所示。由于一般的可編程平臺沒有提供專用的除法指令,所以視頻編碼標準在量化與反量化的實際應用過程中,采用了查表或移位的方式來實現(xiàn),量化步長越小,等級越多,則碼流大小等級越豐富。

      公式1

      F'(x,y)=q(x,y)*Q

      公式2

      另外,H.264中的Deblocking Filter還能夠根據(jù)圖像內容做出判斷,對由于塊效應產生的像素值跳變進行平滑,對每個 4×4 塊邊界都要進行濾波操作,以此達到平滑濾波邊界的目的。這樣可以消除經(jīng)過反量化和變換后,重建圖像中由于預測誤差產生的塊效應,即塊邊緣處的像素值跳變,從而一來改善圖像的主觀質量,二來減少預測誤差。

      2.2.3 碼率控制設計

      碼率控制算法一般是通過調整DCT變換系數(shù)的量化參數(shù),來實現(xiàn)達到控制輸出碼流速率的目的。在本文設計的H.264視頻編碼中,我們的碼率控制算法主要在GOP層、Frame層以及基本單元層3個層次上進行。

      GOP層碼率控制的主要任務是根據(jù)當前的比特率、幀率、緩存區(qū)充滿度、傳輸速度以及GOP幀數(shù)、幀類型來計算每個GOP的目標比特數(shù),并且得到各個GOP的初始量化參數(shù)。其中當前GOP目標比特根據(jù)網(wǎng)絡帶寬,幀頻以及GOP中幀的數(shù)目分配。

      Frame層控制的主要任務是根據(jù)已編碼幀實際消耗的比特數(shù)和GOP層計算得到的目標比特數(shù),將前兩者比特數(shù)的差值反應到當前幀的目標比特數(shù),對當前幀的目標比特數(shù)進行調整,以便調整該幀的量化參數(shù)。具體可分為兩步:第一步是考慮緩存容量限制,第二步熬了網(wǎng)絡帶寬、幀頻、GOP中剩余可分配的比特等限制。

      基本單元一般是指一幀或者一個宏塊。若基本單元層是一幀,那么該層碼率控制的主要任務就是根據(jù)當前幀的目標比特數(shù)對該幀的量化參數(shù)進行調整。若基本單位層是宏塊,那么該層碼率控制的主要任務就是在該幀目標比特數(shù)確定的前提下,根據(jù)每個宏塊的圖像復雜度,進一步調整該宏塊的量化參數(shù)。同時,為了滿足視覺的平滑性,要保證該基本單元層的量化參數(shù)和前一個基本單元層量化參數(shù)的差值不能太大。一般來說,選擇的基本單元越大,獲得的PSNR越大,但是比特輸出的波動也會變大。反之,選擇的基本單元越小,比特輸出相對平穩(wěn),但是獲得的PSNR將會變小。

      3 軟件實現(xiàn)

      本軟件采用多任務系統(tǒng),采用DSP/BIOS線程調度機制進行任務的管理[6],設計多個線程同時運行,如圖5所示,每個線程有獨立的指令流,完成一個獨立的功能模塊,允許優(yōu)先級高的線程搶占優(yōu)先級低的線程,線程間可通信和同步處理,通過環(huán)形緩沖區(qū)進行數(shù)據(jù)的訪問和存取。

      圖5 多線程運行原理圖

      3.1 視頻采集與編碼線程設計

      在此線程中,基于圖4的視頻采集原理,設計了可同時采集4路輸入視頻的采集架構?;诋a品化設計要求,對于每一路視頻進行靈活控制,可直接壓縮編碼,也可以根據(jù)CPU分配的時間片,在特定的時間片內進行壓縮編碼。根據(jù)使用需求,設計了兩種視頻壓縮模式:單路切換監(jiān)控模式和4路并行監(jiān)控模式。在實際工作應用場景中,可靈活配置視頻壓縮裝置的視頻監(jiān)控路數(shù)和單路的視頻監(jiān)控時間。

      送入編碼器的視頻經(jīng)壓縮處理后形成H.264碼流,在標準的H.264碼流頭部加入特殊的識別標志、序列號、碼流大小等關鍵信息進行封裝,形成具有獨特識別標識的碼流,保證碼流在傳輸過程中的安全,方便解碼軟件的分析和播放。H.264碼流暫存環(huán)形緩沖區(qū)中,等待后續(xù)的發(fā)送和HDLC傳輸。

      3.2 碼流發(fā)送線程設計

      當DSP/BIOS運行發(fā)送線程時,暫存環(huán)形緩沖區(qū)中的H.264碼流按包發(fā)送并進行HDLC傳輸,單包的數(shù)據(jù)量過大,積累的碼流數(shù)據(jù)量過多,解碼出來的圖像卡頓;單包的數(shù)據(jù)量過小,每次接收到的碼流數(shù)據(jù)量少,會導致解碼的圖像花屏,因此,在理想情況下,每幀圖像壓縮形成的碼流,需要及時地傳輸?shù)浇獯a端進行解碼播放,才能保證視頻播放的連續(xù)性。

      為了HDLC同步傳輸?shù)倪B續(xù)性,在不發(fā)送H.264碼流的空隙時間段內,循環(huán)發(fā)送4個字節(jié)的無效數(shù)據(jù),提高了視頻壓縮裝置的整體數(shù)據(jù)發(fā)送速率,并把無效數(shù)據(jù)重復有效數(shù)據(jù)的概率降低到2×10-10數(shù)量級,避免了有效數(shù)據(jù)在解碼端的錯誤丟棄,保證了視頻的質量和流暢播放。

      3.3 環(huán)形緩沖區(qū)設計

      在主程序中,視頻編碼線程與碼流發(fā)送是兩個獨立的線程,它們之間的數(shù)據(jù)共享是通過環(huán)形緩沖區(qū)來完成的。由于是長時間運行,通常對內存的使用有很高的要求,分配頻繁,釋放內存容易產生內存碎片,必然會影響軟件長期運行的穩(wěn)定性,在這種情況下,使用像動態(tài)環(huán)形隊列這種內存性能比較好的數(shù)據(jù)結構就非常合適[7]。用環(huán)形隊列的緩沖區(qū),解決多個線程同時讀寫緩沖區(qū)的問題,同時根據(jù)數(shù)據(jù)的重要性可選擇添加互斥訪問保護機制。一般來講,隊列FIFO,從底部添加數(shù)據(jù),從頂部彈出數(shù)據(jù)。添加新元素的那一端被稱作隊尾nTail,而彈出元素的那一端被稱作隊首nHead。環(huán)形隊列的特點是:不需要進行動態(tài)的內存釋放和分配,使用固定大小的內存空間反復使用。在實際的隊列插入和彈出操作中,是不斷交叉進行的,當push操作時,tail會增加,而當pop操作時,head會增加。

      1)如果push的速度快的時候,有可能追上head,這個時候說明隊列已經(jīng)滿了,不能再進行push的操作了,需要等待pop操作騰出隊列的空間。

      2)如果pop的操作快的時候,使得head追上tail,這個時候說明隊列已空了,不能再進行pop操作了,需要等待

      push進來數(shù)據(jù)。

      4 結論

      本文以該技術背景為前提給合在航天領域視頻監(jiān)測的應用,探索并實現(xiàn)了基于HDLC協(xié)議的圖像實時壓縮傳輸系統(tǒng)設計。視頻采集與編碼線程和碼流發(fā)送線程之間的數(shù)據(jù)共享通過對環(huán)形緩沖區(qū)來完成的,視頻采集與編碼線程輸出碼流到環(huán)形緩沖區(qū)中,在DSP/BIOS線程調度機制下,碼流發(fā)送線程從緩沖區(qū)中取出一定字節(jié)大小的碼流進行發(fā)送,按照HDLC傳輸協(xié)議送至通信鏈路中,然后通過UDP協(xié)議送入主機進行解碼播放。

      在實際測試環(huán)境下,輸入視頻的分辨率為352*288,視頻壓縮傳輸裝置以25幀/s的實時速率壓縮編碼,以512kbps的碼率寬帶輸出碼流,經(jīng)過中轉后送入主機實時解碼播放。通過對幀頭時間標簽的計算得出壓縮與處理環(huán)節(jié)的平均總延時為170ms,4路視頻的平均切換時間為65ms;采用ITU-T提供的測試序列,計算得出重建圖像序列平均峰值信噪比PSNR值為37.83dB;連續(xù)運行5小時內無圖像丟幀,并能夠準確的表達劇烈突變的運動,達到了預期的設計目的和控制效果。

      [1] 張紀寬,彭 力,陳志勇.動態(tài)復雜背景下的智能視頻監(jiān)控系統(tǒng)設計與實現(xiàn)[J].計算機測量與控制, 2016, 24(7):100-104.

      [2] 張文博,左 勇,徐浩然.支持HDLC協(xié)議的紫外通信系統(tǒng)設計[J].光通信技術,2012,36(9):53-56.

      [3] 金艷梅.高速視頻會議系統(tǒng)H.264編碼的優(yōu)化[J].蘭州理工大學學報,2015,41(3):108-111.

      [4] 柳 春,廉東本.H.264編解碼算法在視頻會議中的應用[J].計算機系統(tǒng)應用,2015,24(4):144-147.

      [5] 安向陽,沈庭芝. 基于DSPTMS320DM642的H.264視頻編碼的實現(xiàn)和優(yōu)化[J]. 微計算機信息, 2005(20):128-130.

      [6] 彭啟琮,管 慶.DSP集成開發(fā)環(huán)境——CCS及DSP/BIOS的原理與應用[M]. 北京:電子工業(yè)出版社,2004.

      [7] 詹 英,吳春明,王寶軍.基于RCSW的數(shù)據(jù)流速度異常檢測算法研究[J].電子學報,2012,40(4):674-680.

      猜你喜歡
      碼流碼率緩沖區(qū)
      嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設計與實現(xiàn)
      分布式碼流實時監(jiān)控與錄制系統(tǒng)的設計與實現(xiàn)
      電視技術(2021年8期)2021-10-21 08:19:48
      數(shù)字電視TS碼流協(xié)議簡要分析
      視聽(2021年8期)2021-08-12 10:53:42
      基于狀態(tài)機的視頻碼率自適應算法
      計算機應用(2018年7期)2018-08-27 10:42:40
      基于場景突變的碼率控制算法
      X264多線程下碼率控制算法的優(yōu)化
      計算機工程(2015年8期)2015-07-03 12:19:56
      關鍵鏈技術緩沖區(qū)的確定方法研究
      多光譜圖像壓縮的聯(lián)合碼率分配—碼率控制方法
      宇航學報(2014年2期)2014-12-15 02:49:06
      一種比較ASN.1碼流差異的方法
      基于梯度的CCSDS壓縮碼流控制算法研究
      電視技術(2014年19期)2014-03-11 15:37:52
      博湖县| 云安县| 延庆县| 皮山县| 洪江市| 海丰县| 宁德市| 寻甸| 通州市| 陇西县| 徐水县| 辉南县| 上栗县| 明光市| 广德县| 德惠市| 临漳县| 台南市| 西乡县| 台前县| 西畴县| 水城县| 桂林市| 泗阳县| 蒲城县| 广安市| 新宁县| 潼南县| 毕节市| 嘉祥县| 永安市| 隆德县| 凤台县| 仁布县| 余江县| 马公市| 高青县| 孟村| 滕州市| 察哈| 三都|