• 
    

    
    

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

      基于H.264算法的嵌入式視頻采集及編碼優(yōu)化分析

      2022-06-28 03:18:16黃如兵
      關(guān)鍵詞:編碼器嵌入式像素

      黃如兵

      (安徽職業(yè)技術(shù)學(xué)院 信息工程學(xué)院,安徽 合肥 230011)

      近年來(lái),隨著嵌入式技術(shù)的發(fā)展,嵌入式芯片的穩(wěn)定性、擴(kuò)展性得到了大力提高,有關(guān)嵌入式監(jiān)控系統(tǒng)的研究成為熱點(diǎn)?;谇度胧降谋O(jiān)控系統(tǒng)已廣泛應(yīng)用于國(guó)防安全、救災(zāi)搶險(xiǎn)、安防監(jiān)控、海航探索等領(lǐng)域[1-3]。崔秀芳等人基于嵌入式樹(shù)莓派底板實(shí)現(xiàn)了便攜式漁船監(jiān)控系統(tǒng)設(shè)計(jì)[4]。彭磊、唐浩漾等人實(shí)現(xiàn)監(jiān)控系統(tǒng)中的大十字搜索及菱形搜索判定運(yùn)動(dòng)估計(jì)算法優(yōu)化[5-6]。李博文等設(shè)計(jì)了嵌入式Linux視頻監(jiān)控系統(tǒng),實(shí)現(xiàn)視頻的遠(yuǎn)程傳輸[3]。

      幀間預(yù)測(cè)的運(yùn)動(dòng)估計(jì)算法在圖像編碼中占據(jù)至少1/2的編碼時(shí)間和時(shí)間復(fù)雜度,運(yùn)動(dòng)估計(jì)中塊匹配算法(BAM)的優(yōu)化和研究尤為重要,常用的有全搜索算法、三步法、四步法、菱形搜索算法等,這些算法采用運(yùn)動(dòng)矢量中心偏移方式進(jìn)行計(jì)算,搜索會(huì)陷入局部最優(yōu)化。本文根據(jù)H.264編碼標(biāo)準(zhǔn),提出了x264編碼器基于嵌入式平臺(tái)的算法優(yōu)化方法,在編碼器運(yùn)動(dòng)估計(jì)中采用改進(jìn)的DIA搜索模式,將優(yōu)化后的x264編碼器移植至嵌入式系統(tǒng),編寫(xiě)上層應(yīng)用程序,完成基于H.264的嵌入式監(jiān)控系統(tǒng)設(shè)計(jì)。改進(jìn)的x264編碼器編碼效率更高,代碼簡(jiǎn)練,系統(tǒng)應(yīng)用良好。

      1 監(jiān)控系統(tǒng)的軟硬件結(jié)構(gòu)

      嵌入式系統(tǒng)一般有嵌入式硬件結(jié)構(gòu)和嵌入式軟件結(jié)構(gòu)組成,嵌入式硬件結(jié)構(gòu)主要有ARM硬件電路、視頻采集模塊、網(wǎng)絡(luò)傳輸模塊組成,監(jiān)控平臺(tái)硬件結(jié)構(gòu)如圖1所示。嵌入式軟件結(jié)構(gòu)主要由底層嵌入式硬件結(jié)構(gòu)、嵌入式操作系統(tǒng)、嵌入式應(yīng)用程序組成,嵌入式軟件結(jié)構(gòu)中的上層應(yīng)用可調(diào)用操作系統(tǒng)接口,再調(diào)用內(nèi)核驅(qū)動(dòng),完成程序功能。

      圖1 嵌入式視頻采集及編碼系統(tǒng)硬件結(jié)構(gòu)

      系統(tǒng)采用USB攝像頭連接硬件電路,圖像采集程序調(diào)用Linux系統(tǒng)的Video for Linux(V4L)接口,V4L是Linux操作系統(tǒng)下的視頻采集接口(API)。V4L2是V4L改進(jìn)升級(jí)版接口,V4L2接口使用更靈活,對(duì)底層硬件支持更豐富,在Linux操作系統(tǒng)底層驅(qū)動(dòng)中需要選擇UVC標(biāo)準(zhǔn)的攝像頭驅(qū)動(dòng),并將驅(qū)動(dòng)編譯入內(nèi)核,才能通過(guò)UVC攝像頭實(shí)現(xiàn)圖像采集。視頻圖像采集通過(guò)調(diào)用Linux操作系統(tǒng)內(nèi)核的V4L2接口函數(shù)實(shí)現(xiàn)[2],采集到的YUV422格式圖像數(shù)據(jù),存放于內(nèi)存中,后期由H.264編碼壓縮處理。

      2 H.264編碼技術(shù)

      攝像頭基于V4L2將視頻圖像采集并存放于緩存空間,原始數(shù)據(jù)需要通過(guò)視頻圖像編碼處理后才具備壓縮率高、質(zhì)量好的特點(diǎn),從而減少數(shù)據(jù)量,節(jié)省傳輸帶寬。H.264編碼算法具有較高的壓縮率、網(wǎng)絡(luò)傳輸適應(yīng)性良好等特點(diǎn)。

      2.1 H.264編碼算法

      H.264采用視頻編碼層(VCL)壓縮視頻圖像數(shù)據(jù),采用網(wǎng)絡(luò)抽象層(NAL)打包和傳輸編碼壓縮后的數(shù)據(jù)。H.264編碼器結(jié)構(gòu)可分為:基于宏塊的幀內(nèi)預(yù)測(cè)、圖像的幀間預(yù)測(cè)、DCT變換及量化、無(wú)損熵編碼,H.264編碼器工作原理如圖2所示。

      圖2 H.264編碼器工作原理

      2.2 x264編碼器

      x264是一個(gè)使用廣泛的開(kāi)源H.264視頻編碼函數(shù)庫(kù),系統(tǒng)可采用H.264編碼器的基本檔次編碼方式,確保系統(tǒng)具有較強(qiáng)的實(shí)時(shí)性。x264編碼器的主要模塊算法實(shí)現(xiàn)情況如下。

      1)圖像幀內(nèi)預(yù)測(cè)。

      在幀內(nèi)預(yù)測(cè)中,Y為亮度分量,采用4×4宏塊、16×16宏塊大小方式進(jìn)行預(yù)測(cè),2種規(guī)格的預(yù)測(cè)模式分別有9種和4種;U、V為色度分量,采用了8×8宏塊大小進(jìn)行預(yù)測(cè),該規(guī)格的預(yù)測(cè)模式有4種。

      ① 16×16亮度預(yù)測(cè)模式。

      16×16宏塊預(yù)測(cè)方式有4種,分別是:模式0:垂直預(yù)測(cè)、模式1:水平預(yù)測(cè)、模式2:DC模式預(yù)測(cè)、模式3:平面模式預(yù)測(cè),如圖3所示。

      圖3 16×16亮度預(yù)測(cè)模式

      其運(yùn)算如式(1)~(6)所示,其中模式0的垂直模式算式如(1),模式1的水平模式算式為(2),模式2的DC模式算式為(3)~(5),模式3的平面模式算式為(6)。

      pr(x,y)=p(x,-1),x,y=0,1,…,15,

      (1)

      pr(x,y)=p(-1,y),x,y=0,1,…,15,

      (2)

      pr(x,y)=

      x,y=0,1,…,15,

      (3)

      x,y=0,1,…,15,

      (4)

      x,y=0,1,…,15,

      (5)

      平面模式的預(yù)測(cè)公式如式(6),即

      pr(x,y)=Clip1((a+b·(x-7)+c·(y-7)+16)>>5).

      (6)

      ② 4×4亮度預(yù)測(cè)模式。

      H.264標(biāo)準(zhǔn)編碼中大小為16×16規(guī)格的塊可進(jìn)一步分割成16個(gè)大小為4×4的小模塊,其中4×4的子模塊預(yù)測(cè)模式有9種,模式2為DC模式,其他8種預(yù)測(cè)模式如圖4所示。

      (a)像素鄰近點(diǎn)編號(hào) (b)8個(gè)方向預(yù)測(cè)模式

      ③ 8×8色度預(yù)測(cè)模式。

      色度分量采用8×8塊方式預(yù)測(cè),有4種預(yù)測(cè)模式,其預(yù)測(cè)方式與亮度分量中的16×16宏塊的預(yù)測(cè)方式一致。

      2)圖像幀間預(yù)測(cè)。

      幀間預(yù)測(cè)采用已編碼的圖像來(lái)預(yù)測(cè)下一幀編碼的圖像,采用基于宏塊和像素的運(yùn)動(dòng)估計(jì)技術(shù)(ME)和運(yùn)動(dòng)補(bǔ)償技術(shù)(MC),來(lái)減少時(shí)域上的冗余信息,從而進(jìn)一步壓縮圖像數(shù)據(jù)。H.264編碼的幀間預(yù)測(cè)塊尺寸使用了1/4精度的運(yùn)動(dòng)矢量。

      ① 樹(shù)狀結(jié)構(gòu)的運(yùn)動(dòng)補(bǔ)償。

      幀間預(yù)測(cè)需要將宏塊劃分成樹(shù)狀結(jié)構(gòu),16×16的亮度宏塊可劃分為:16×16塊結(jié)構(gòu),8×16塊結(jié)構(gòu),16×8塊結(jié)構(gòu);8×8塊結(jié)構(gòu)塊可以進(jìn)一步分割成8×4塊結(jié)構(gòu)、4×8塊結(jié)構(gòu)以及4×4小塊結(jié)構(gòu)。

      ② 高精度運(yùn)動(dòng)矢量。

      為了提高矢量運(yùn)算精確度,編碼器采用1/4精度來(lái)運(yùn)算運(yùn)動(dòng)矢量??捎烧麛?shù)像素值按照插值算法計(jì)算得到1/2像素點(diǎn)的值,再通過(guò)1/2像素點(diǎn)的值及整數(shù)點(diǎn)值根據(jù)插值算法得到1/4像素點(diǎn)值。插值運(yùn)算采用六階濾波器插值算法計(jì)算,插值運(yùn)算方法如圖5所示。

      圖5 H.264中1/2像素插值運(yùn)算

      圖中“h”像素和“b”像素運(yùn)算,可使用6抽頭濾波器(1,-5,20,20,-5,1)插值運(yùn)算,濾波插值算法為

      b1=(E-5F+20G+20H-5I+J),

      (7)

      h1=(A-5C+20G+20M-5R+T),

      (8)

      b=(b1+16)>>5,

      (9)

      h=(h1+16)>>5.

      (10)

      圖中像素“j”,可以通過(guò)6個(gè)鄰近水平位置或者6個(gè)鄰近垂直位置的像素根據(jù)插值算法運(yùn)算得到,同理,可計(jì)算出1/4像素點(diǎn)的值,像素“j”的運(yùn)算式為

      j1=cc-5dd+20h+20m-5ee+ff,

      (11)

      j=(j1+512)>>10.

      (12)

      3)DCT變換及量化。

      H.264編碼中對(duì)4×4塊進(jìn)行DCT變換,提取矩陣中的直流分量,組建4×4矩陣后,再進(jìn)行Hadamard變換。H.264采用標(biāo)準(zhǔn)量化,F(xiàn)Q是輸出量化系數(shù),y是矩陣Y的轉(zhuǎn)換系數(shù),QP是量化步長(zhǎng)。量化過(guò)程為

      (13)

      4)熵編碼。

      進(jìn)行DCT變換后進(jìn)一步去除了相關(guān)數(shù)據(jù)的冗余信息,再經(jīng)熵編碼實(shí)現(xiàn)數(shù)據(jù)的無(wú)損壓縮,H.264中熵編碼方式主要有CAVLC 和CABAC兩種,CAVLC是自適應(yīng)變長(zhǎng)編碼方式,主要用于H.264基本檔次編碼中;CABAC是自適應(yīng)二進(jìn)制算術(shù)編碼方式,在H.264標(biāo)準(zhǔn)的主要檔次編碼中采用熵編碼數(shù)據(jù)后再送入去塊濾波器濾波,進(jìn)而降低塊效應(yīng)和振鈴效應(yīng)。

      3 編碼器改進(jìn)與優(yōu)化

      根據(jù)ARM-Linux嵌入式平臺(tái)特性,優(yōu)化編碼器算法、適當(dāng)降低算法復(fù)雜度,能有效提高編碼速度,提高系統(tǒng)視頻編碼傳輸?shù)膶?shí)時(shí)性,針對(duì)x264實(shí)現(xiàn)了編碼器參數(shù)設(shè)置優(yōu)化、編碼器算法優(yōu)化,針對(duì)嵌入式平臺(tái)實(shí)現(xiàn)了編譯器優(yōu)化。

      3.1 x264編碼器代碼優(yōu)化

      1)為提高x264編碼實(shí)時(shí)性,屏蔽B幀預(yù)測(cè)方式,并根據(jù)macroblock模塊函數(shù)代碼,修改并優(yōu)化了I幀預(yù)測(cè)模式,去除了對(duì)4×4塊的支持,從而降低了算法復(fù)雜度,提高系統(tǒng)編碼的實(shí)時(shí)性。

      2)針對(duì)平臺(tái)特性,在幀間預(yù)測(cè)代碼中注釋了1/4像素精度運(yùn)算代碼,深度研究了HEX六邊形搜索、DIA菱形搜索、ESA連續(xù)消除法、UMHexagonS不均勻的多六邊形搜索算法并優(yōu)化。

      3)代碼簡(jiǎn)化,去除了AVI、MP4格式代碼部分,減少分支判斷運(yùn)算耗時(shí);在代碼中去除B幀參考相關(guān)內(nèi)容,例如函數(shù)if(h->fenc->i_type == X264_TYPE_BREF)、x264_macroblock_bipred_init()初始化等函數(shù)均可去除。

      3.2 優(yōu)化改進(jìn)DIA搜索算法

      采用改進(jìn)的DIA搜索模型,首先通過(guò)在水平與垂直方向搜索更多的點(diǎn),以便提高搜索精度。搜索過(guò)程分為2步,第一步按17個(gè)點(diǎn)構(gòu)成六邊形-正方形-菱形鉆石模型搜索,第二步按照上一步搜索結(jié)果,匹配 SAD 最小值位置,從而確定新中心,再以六邊形、正方形、鉆石模型搜索,計(jì)算SAD最小的點(diǎn),匹配到對(duì)應(yīng)像素點(diǎn)后停止搜索。算法搜索過(guò)程如圖6所示,具體步驟如下:

      圖6 改進(jìn)的DIA搜索模型

      ① 使用當(dāng)前點(diǎn)為中心,搜索中心點(diǎn)及周邊16個(gè)點(diǎn),計(jì)算并確定標(biāo)準(zhǔn)SAD最小值,即最佳點(diǎn)所在位置。

      ② 以①中確定的SAD最小值位置最佳點(diǎn)為中心,按照六邊形或大菱形進(jìn)行搜索,進(jìn)一步搜索計(jì)算,將最小匹配最佳點(diǎn)分為Ⅰ、Ⅱ、Ⅲ 3個(gè)類(lèi)別。如圖6中,中心點(diǎn)為Ⅰ類(lèi),中環(huán)連線上各點(diǎn)為Ⅱ類(lèi),外圍六邊形上各點(diǎn)為Ⅲ類(lèi)。

      ③ 若最小匹配的最佳點(diǎn)為Ⅰ類(lèi),該位置的點(diǎn)就是中心點(diǎn),則停止搜索。

      ④ 若最小匹配最佳點(diǎn)為Ⅱ類(lèi),根據(jù)最佳點(diǎn)的所處位置進(jìn)一步通過(guò)六邊形模板和正方形模板搜索,直到該點(diǎn)為中心點(diǎn)時(shí)停止搜索。

      ⑤ 若最小匹配點(diǎn)為Ⅲ類(lèi),直接選用大鉆石模板,反復(fù)搜索匹配中心位置,最后通過(guò)小菱形搜索精細(xì)定位,搜索到某點(diǎn)為Ⅰ類(lèi),即中心點(diǎn)時(shí)停止搜索。

      3.3 編譯器參數(shù)優(yōu)化

      結(jié)合ARM平臺(tái)實(shí)現(xiàn)交叉編譯,將編譯器的優(yōu)化等級(jí)調(diào)到-O3選項(xiàng),可以實(shí)現(xiàn)代碼層面的高級(jí)別優(yōu)化;在編譯階段添加-g、-Wall選項(xiàng),編譯后去除調(diào)試信息,進(jìn)一步縮減了代碼量。下載x264的源碼,修改x264源碼中的config.mak文件,指定編譯選項(xiàng):AR=arm-linux-arrc、ARCH=ARM、SYS=LINUX、RANLIB=arm-linux-ranlib、CC=arm-linux-gcc、STRIP=arm-linux-strip,執(zhí)行make實(shí)現(xiàn)編譯,編譯后的libx264.a、libx264.so庫(kù)函數(shù)為應(yīng)用程序提供應(yīng)用接口。

      3.4 編碼程序設(shè)計(jì)

      編碼程序?qū)⒉杉蟠娣庞趦?nèi)存的YUV圖像數(shù)據(jù)進(jìn)行編碼壓縮,編碼程序設(shè)計(jì)流程如圖7所示。

      圖7 H.264編碼程序流程

      3.5 優(yōu)化結(jié)果分析

      為了進(jìn)一步測(cè)試算法改進(jìn)前后在不同運(yùn)動(dòng)劇烈程度中的表現(xiàn)情況,選取了hallmonitor、my_laboratory兩種不同劇烈程度的視頻序列作為測(cè)試序列。根據(jù)ARM平臺(tái)特性,通過(guò)對(duì)x264編碼器代碼優(yōu)化、幀間預(yù)測(cè)搜索算法優(yōu)化、編譯器參數(shù)等方面進(jìn)行優(yōu)化。使用優(yōu)化改進(jìn)的DIA搜索模型,將交叉編譯后的編碼器及應(yīng)用程序移植到嵌入式ARM平臺(tái)進(jìn)行測(cè)試。測(cè)試序列使用my_laboratory和hallmonito進(jìn)行測(cè)試,將編碼器優(yōu)化前后的性能數(shù)據(jù)進(jìn)行對(duì)比,優(yōu)化前后的效果通過(guò)指標(biāo)參數(shù)分析:優(yōu)化后的編碼幀率性能得到提升,優(yōu)化后圖像信噪比PSNR略微下降,圖像質(zhì)量基本得到保證,但運(yùn)動(dòng)估計(jì)時(shí)間得到有效降低,編碼速度得到了大幅度提高。表1為針對(duì)ARM平臺(tái),原編碼器及優(yōu)化后編碼器的性能對(duì)比情況。

      表1 編碼測(cè)試分析

      4 結(jié)語(yǔ)

      本文設(shè)計(jì)了基于H.264編碼算法的嵌入式視頻采集及編碼系統(tǒng),該系統(tǒng)基于ARM-Linux平臺(tái),通過(guò)V4L2接口實(shí)現(xiàn)視頻圖像采集程序設(shè)計(jì)。視頻圖像的編碼基于H.264編碼實(shí)現(xiàn),根據(jù)嵌入式ARM架構(gòu)的特性,針對(duì)x264編碼器,提出了x264編碼器基于嵌入式平臺(tái)的算法優(yōu)化方法,采用改進(jìn)的DIA搜索模式實(shí)現(xiàn)了編碼器運(yùn)動(dòng)估計(jì)搜索優(yōu)化,優(yōu)化后的編碼器更適用于嵌入式ARM平臺(tái)上,編碼效率良好。通過(guò)測(cè)試驗(yàn)證,基于H.264編碼算法完成了視頻圖像編碼系統(tǒng)設(shè)計(jì),系統(tǒng)具有更高的編碼壓縮效果,壓縮效率有明顯提高,系統(tǒng)運(yùn)行穩(wěn)定、實(shí)時(shí)性高、組網(wǎng)靈活、可擴(kuò)展性強(qiáng)。

      猜你喜歡
      編碼器嵌入式像素
      趙運(yùn)哲作品
      藝術(shù)家(2023年8期)2023-11-02 02:05:28
      像素前線之“幻影”2000
      “像素”仙人掌
      基于FPGA的同步機(jī)軸角編碼器
      搭建基于Qt的嵌入式開(kāi)發(fā)平臺(tái)
      基于PRBS檢測(cè)的8B/IOB編碼器設(shè)計(jì)
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
      高像素不是全部
      CHIP新電腦(2016年3期)2016-03-10 14:22:03
      JESD204B接口協(xié)議中的8B10B編碼器設(shè)計(jì)
      電子器件(2015年5期)2015-12-29 08:42:24
      多總線式光電編碼器的設(shè)計(jì)與應(yīng)用
      建德市| 九台市| 湖南省| 济南市| 万全县| 兴文县| 香港| 堆龙德庆县| 常州市| 庄河市| 石首市| 托里县| 积石山| 枣庄市| 错那县| 伊通| 峨边| 洛浦县| 班玛县| 固安县| 绥江县| 柘城县| 潞西市| 开平市| 鸡泽县| 长治县| 正宁县| 芜湖市| 任丘市| 台前县| 高密市| 安徽省| 区。| 德州市| 华容县| 原阳县| 龙口市| 类乌齐县| 天长市| 门源| 昆山市|