《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 視頻縮放在FPGA中的應用和實現
視頻縮放在FPGA中的應用和實現
2016年電子技術應用第6期
張 梁,王景存,梅 鏢
武漢科技大學 信息科學與工程學院,湖北 武漢430081
摘要: 針對某顯示系統中監控視頻控制器的實際需求,設計了一種可實現四路視頻信號實時縮放的電路架構。通過權衡幾種常用圖像縮放算法的顯示質量和硬件可行性,選擇用雙線性插值算法實現視頻的縮放,并在FPGA平臺上以雙口RAM資源構建的線緩存作為算法硬件實現,該算法主要由視頻數據緩沖模塊、插值系數產生模塊以及整體控制模塊構成。本設計在滿足視頻縮放質量要求的基礎上,避免了采用過于復雜算法而消耗過多的FPGA資源,有效地解決了視頻縮放時原始圖像信息量丟失導致圖像失真的問題。結果表明,該設計能夠實現任意比例的視頻縮放,實時性高,應用靈活,縮放后顯示效果良好,能夠滿足實際工程的要求。
中圖分類號: TM930.9
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.06.009
中文引用格式: 張梁,王景存,梅鏢. 視頻縮放在FPGA中的應用和實現[J].電子技術應用,2016,42(6):34-37.
英文引用格式: Zhang Liang,Wang Jingcun,Mei Biao. Application and implementation of video scaling algorithm based on FPGA[J].Application of Electronic Technique,2016,42(6):34-37.
Application and implementation of video scaling algorithm based on FPGA
Zhang Liang,Wang Jingcun,Mei Biao
College of Information Science and Engineering,Wuhan University of Science and Technology,Wuhan 430081,China
Abstract: Focusing on the practical requirements of the monitoring video controller in some displaying systems, this paper introduces a circuit architecture which is designed for real time scale of four video signals. Through analyzing the display quality and hardware realizability of several scaling algorithms, selects implement video scaling by bilinear interpolation algorithm and uses line buffers architecture as the core of algorithms implementation based on FPGA. The design mainly consists of the data buffer module, the coefficient generation module and the integrated control module. To meet the quality requirements of video scaling, this design avoids selecting complex algorithms to cause FPGA resources to be consumed excessively, and effectively solves the problem of image distortion caused by the loss of the original image information. The result indicates that the system can realize arbitrary scaling, and its real-time,flexibility and display effect are good, which can meet the application requirements of the actual project.
Key words : video scaling;bilinear interpolation;line buffer;FPGA

0 引言

    隨著數字多媒體技術的不斷發展,數字圖像處理技術廣泛應用于空間探測、生物醫學、監控系統以及工業檢測等許多領域中。數字視頻處理則是基于對視頻中每幀圖像的處理來實現的。數字視頻圖像的縮放是視頻處理中的一個重要組成部分。

    目前視頻縮放系統大多采用視頻縮放的專業芯片設計,應用單一、靈活性差且成本較高[1]。本設計是在FPGA的平臺上,利用雙口RAM資源構建兩個線緩存,在視頻圖像的垂直和水平兩個方向上依次進行實時雙線性插值運算,實現視頻圖像的任意比例縮放,具有實時性好、處理速度快、應用靈活等特點。

1 縮放算法的硬件可行性

1.1 縮放算法的選取

    目前,圖像縮放算法大致可以分為兩大類[2],一類是基于邊緣的圖像縮放算法,它利用了圖像的邊緣信息,能夠很好地還原原始圖像,但該算法計算復雜,運算速度慢,硬件上難以實現;另一類是基于插值的圖像縮放算法,它的算法實現相對簡單,但縮放后可能會產生細節丟失、輪廓模糊等現象。其中,不同的插值算法有不同的精度,插值算法的好壞也直接影響著圖像的失真程度。最常用的插值算法有3種:最近鄰插值、雙線性插值、立方卷積插值,使用立方卷積插值達到的效果是最佳的??紤]到最終算法需要在FPGA上完成,算法的復雜度直接影響FPGA內部的邏輯資源和存儲塊的消耗量,以及處理每個實時像素值所消耗的時鐘周期,本設計選用雙線性插值來完成視頻圖像的縮放。

1.2 雙線性插值算法的原理

    雙線性插值,又稱為雙線性內插。在數學上,雙線性插值是由兩個變量插值函數的線性插值擴展,利用了需要處理的原始圖像像素點周圍4個像素點的相關性,通過雙線性算法計算而得出[3]。

    若用(x,y)表示期望位置,用Q(x,y)表示期望輸出的像素值,I(x,y)表示輸入像素值,與位置(x,y)相鄰的4個點為(x1,y1)、(x1,y2)、(x2,y1)、(x2,y2),如圖1所示。先在x方向上進行線性插值,得到:

    wdz1-gs1-2.gif

wdz1-t1.gif

式中:I(R1)和I(R2)是4個像素值中兩兩在水平方向上的插值結果。

    再對式(1)和式(2)得到的兩個在水平方向上的插值結果進行垂直方向上的插值

    wdz1-gs3-4.gif

    這樣Q(x,y)就是期望位置所要的像素值,雙線性插值法計算量大,但縮放后的圖像質量高,由于雙線性插值具有低通濾波器的性質,使高頻信號受損,可能會使圖像在輪廓上有一定的模糊。

    考慮到FPGA內部豐富的存儲塊,設計將視頻數據以行為單位交替寫入兩個由雙口RAM構成的線緩存中,通過縮放比例合理控制讀寫地址,先進行相鄰4個像素的垂直線性插值,然后對得到的兩個結果進行水平方向插值。

2 FPGA實現

2.1 功能模塊的劃分

    FPGA選用的是ALTERA公司的Cyclone IV系列EP4CE30F23C6,共有28 848個Les,66個M9K,132個9位乘法器,完全滿足設計需要。整個系統主要由視頻數據的采集、剪切、旋轉、基于ddr2的數據緩沖、縮放、拼接以及視頻的輸出構成。整個監控系統的實現框圖如圖2所示。

wdz1-t2.gif

    監控系統是將4個裝載在特定位置的170°廣角攝像頭采集的實時圖像進行翻轉、剪切、縮放、拼接成一幅實時的監控畫面。4個模擬攝像頭采集的PAL復合視頻信號經TW2867采樣輸出為108 M的4路復用總線的數字信號BT.656,在FPGA中根據每個視頻不同的ID號分解出4路后,經過適當的剪裁,將奇偶場交叉存儲在ddr2的4個物理區域,實現視頻的去隔行功能,得到逐行排列的視頻流,便于后續模塊的處理。其中左攝像頭采集的視頻需要順時針旋轉90°、右攝像頭采集的視頻需要逆時針旋轉90°,實現的方法是把一幀圖像分解為若干小塊,以塊為單位,從ddr2中突發讀出旋轉前的視頻數據,進行旋轉排列,然后再以塊為單位突發寫入ddr2的另外一塊區域,直至整幀圖像處理完畢。存儲在外部Flash中的圖片菜單等資源會在上電完成后自動寫入ddr2的某一區域,供后續模塊調用。

    輸出時,從對應的ddr2區域中讀出視頻數據,存入線緩存后經過雙線性插值縮放模塊,與ddr2中讀出的圖片菜單拼接成一幅實時監控畫面??紤]到后續ADV7171的輸入是BT.656格式的視頻數據,前面存儲到ddr2時已通過幀存機制實現了去隔行功能,這里需將處理后的逐行視頻流隔行處理[4],為后續轉換做好準備。具體做法是以27 M(位寬16 bit)的速率從拼接模塊中讀取數據,每幀圖像取出所有奇數行(或者所有偶數行),下一幀圖像取出所有偶數行(或者所有奇數行),交替進行,將取出的奇偶行以27 M(位寬8 bit)的速率給輸出模塊,輸出模塊將奇偶場的YUV422有效視頻數據加上必要的消隱組成標準的BT.656格式視頻數據,經ADV7171編碼成復合視頻輸出至顯示屏。 

    由于篇幅有限,本文只對整體架構流程粗略介紹,下文將著重對縮放算法的實現過程進行描述。

2.2 縮放算法的硬件實現

    雙線性插值縮放算法硬件實現總體框圖如圖3所示,該設計主要包括3大部分,分別為數據緩沖、系數與像素值的計算以及整體控制。

wdz1-t3.gif

2.2.1 數據緩沖

    縮放模塊與ddr2之間采用FIFO的數據交互方式。由于該算法至少需要兩行數據才能進行運算,因此首先將輸入的視頻數據進行緩存,且需緩存兩行視頻數據。設計采用兩個線緩存來緩存兩行數據,每個線緩存由3個雙口RAM組成,由于輸入的數據是YUV422格式的,所以第一個雙口RAM存儲Y分量,每行有720 B,深度為1 024;第二個和第三個雙口RAM交替存儲UV分量,U和V都是360 B,故深度選為512。設計中采用兩個狀態機分別控制數據流入和流出線緩存,始終保證一個線緩存中有一行完整的數據,另一個線緩存的寫地址大于讀地址,確保將要處理的像素值提前寫入線緩存。

    從線緩存讀數據時,每個像素值由3個雙口RAM的輸出拼接,也就是UV分量的同一值會被讀取兩次,實現了YUV422到YUV444的轉換,方便后續模塊的處理。

2.2.2 插值系數的產生

    在進行縮放計算時,首先需要確定期望輸出的視頻分辨率,通過原始輸入和期望輸出的分辨率確定縮放的比例,如下式所示:

    wdz1-gs5.gif

    式中,xscaler是水平方向縮放比例,yscaler是垂直方向縮放比例,t_width和t_heigth分別表示期望輸出圖像的水平和垂直方向上的像素點個數;s_width和s_height分別表示原始輸入圖像的水平和垂直方向上的像素點個數。

    假設待插值點在縮放后的圖像中的坐標為(m,n),雙線性插值算法的計算公式如下:

     wdz1-gs6.gif

wdz1-t4.gif    式中,a、b、c、d分別相鄰4個像素點(左上、右上、左下、右下)的像素值。由于FPGA無法處理浮點數,故在代碼中需將水平和垂直縮放比例乘以256倍,最終得到的y需要向右移位8位,即為插值的期望像素值。

2.2.3 整體控制

    縮放算法的整體控制流程如圖4所示,由于縮放模塊的前后數據流是跨時鐘域的,設計采用FIFO進行交互,確保兩端的FIFO不會超過設定的閾值即可保證數據的正常傳輸。兩個線緩存具有相同的讀寫地址,對其進行寫操作時利用片選信號,實現兩個線緩存的乒乓操作,可以保證讀取到的視頻數據為同一行的數據[5]。

    當線緩存的寫地址至少領先讀地址10個單位時,后續模塊會讀取線緩存中的值并計算,在讀的過程中會實現坐標的轉換。比如原始圖像一行是720個像素值,期望輸出的圖像一行是800個像素點,每讀取一個數據,讀取地址累加一次,當每讀完9個數據時,地址不變,重復讀取第9個數據,這樣就實現了列坐標的轉換。行坐標的轉換類似,比如期望輸出的行數少于原始圖像的行數,根據縮小的比例,讀線緩存的使能信號會失能直到前置FIFO中的新一行的數據覆蓋掉線緩存中未被處理的一行數據,實現了行坐標的變換。

    由于一個時鐘無法完成過多的計算,且水平插值需要垂直插值的結果參與運算,故采用流水線操作將公式分解為3步,如式(6)所示,每一步的計算過程完全一樣,設計中做成通用模塊,只需修改對應的參數,實例化即可。插值計算功能框圖如圖5所示,其中a,b是像素值輸入端口,如果是垂直插值模塊,指的是兩個線緩存的上下值;如果是水平插值,指的是垂直插值處理后相鄰的兩個輸出值。a_coff和b_coff分別是插值系數,呈取反關系。scale_en_in是使能信號,c是處理后的輸出值。

wdz1-t5.gif

3 仿真與驗證

    本設計的解碼芯片為TW2867,編碼芯片為ADV7171,存儲器DDR2的型號是MT47H64M16,共兩片。在Quartus12.1開發平臺上使用Verilog HDL對各邏輯模塊進行設計。

    經驗證得到本縮放模塊占用FPGA內部主要邏輯資源情況如表1所示,其中Dedicated Logic指的是邏輯單元中實現寄存器,即時序邏輯所占的部分。

wdz1-b1.gif

    圖6為通過Quartus自帶的仿真工具SignalTap對分辨率為720×576的視頻放大為800×600進行仿真得到的雙線性插值縮放算法的仿真圖。圖中, rdaddress是線緩存的讀地址,scale_col是期望輸出的行像素個數,可以看到在每9個像素中,讀地址會在最后一個像素處保持不變。rd_not_read_data為低電平時,線緩存的寫入和讀取是同時進行的,wraddress是線緩存的寫地址,始終大于rdaddress。上面五行a、b、a_coff、b_coff、c分別對應垂直插值的縱向像素值、插值系數及輸出,下面五行對應水平插值的各參數。 

wdz1-t6.gif

    圖7為拍攝的實物效果圖,圖7(a)是將4路攝像頭采集的實時圖像分別壓縮,水平方向和垂直方向各縮小一半后拼接而成。圖7(b)是將第二路攝像頭采集的圖像顯示出來,沒經過縮放。由于攝像頭采用的是170°廣角攝像頭,圖像4角的黑色是正?,F象。通過效果圖可知,本設計方案測試效果良好,適合于實時監控系統的圖像采集。

wdz1-t7.gif

參考文獻

[1] 趙艷軍,何其銳,施錫濤.基于DVI和FPGA的視頻疊加器設計[J].電子技術應用,2011,37(6):31-35.

[2] 張俊華,陳建華,王逍,等.基于邊緣移動匹配法的圖像插值[J].計算機工程與應用,2003,39(6):73-75,134.

[3] Donald Hearn,等.計算機圖形學.蔡士杰等譯[M].北京:電子工業出版社,2007.

[4] 韓彬,于瀟宇,張雷鳴.FPGA設計技巧與案例開發詳解[M].北京:電子工業出版社,2014.

[5] 陳全兵,習友寶.基于雙線性內插算法的多路視頻縮放設計[J].電視技術,2015,39(1):43-46.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
伊人久久大香线| 夜色激情一区二区| 欧美日韩另类综合| 蜜桃久久av一区| 欧美影院在线播放| 亚洲已满18点击进入久久| 99国内精品| 99香蕉国产精品偷在线观看| 亚洲人成网站在线播| 亚洲成在线观看| 久久精品一区| 亚洲国产黄色片| 亚洲福利专区| 亚洲国产精品成人久久综合一区| 欧美在线免费观看| 欧美在线视频观看免费网站| 欧美一区二区三区免费视频| 亚洲欧洲av一区二区| 午夜一区在线| 久久大逼视频| 亚洲电影第1页| 亚洲国产日韩在线一区模特| 亚洲人成久久| 日韩亚洲视频在线| 亚洲色无码播放| 亚洲免费视频在线观看| 性久久久久久久| 久久久久国产精品一区| 鲁大师成人一区二区三区| 欧美二区在线播放| 欧美日韩91| 国产精品久久午夜夜伦鲁鲁| 国产精品日韩欧美一区二区| 国产毛片久久| 在线欧美视频| 一区二区欧美精品| 亚洲一级在线观看| 欧美在线欧美在线| 亚洲人www| 亚洲宅男天堂在线观看无病毒| 亚洲欧美中文字幕| 久久精品在线视频| 欧美激情一区二区三级高清视频 | 国产精品一区久久久久| 激情婷婷久久| 99re8这里有精品热视频免费| 亚洲免费视频一区二区| 亚洲激情成人| 亚洲免费视频观看| 久久中文字幕一区| 欧美特黄一区| 狠狠色狠狠色综合人人| 日韩一区二区电影网| 欧美资源在线观看| 一区二区三区黄色| 久久精品综合网| 欧美日韩精品福利| 国产一在线精品一区在线观看| 最新国产精品拍自在线播放| 欧美国产日韩一二三区| 久久黄色级2电影| 欧美电影免费观看高清| 国产精品视频久久一区| 亚洲成色最大综合在线| 亚洲影院免费| 亚洲人线精品午夜| 欧美在线视频网站| 欧美日韩国产91| 国产一区二区三区日韩| 一区二区三区四区在线| 最新日韩精品| 久久国产精品久久久| 欧美日韩一区二区在线观看| 一区二区在线不卡| 亚洲欧美日韩区| 亚洲色在线视频| 免费美女久久99| 国产午夜亚洲精品理论片色戒| 夜夜嗨av一区二区三区四季av| 亚洲成人直播| 欧美一区二区三区日韩| 欧美日韩在线精品| 136国产福利精品导航| 午夜久久99| 亚洲欧美第一页| 欧美久久综合| 在线免费精品视频| 欧美一区二区三区免费看| 亚洲综合成人婷婷小说| 欧美精品videossex性护士| 国内精品美女在线观看| 亚洲欧美日韩综合| 亚洲欧美国产另类| 欧美色欧美亚洲另类七区| 亚洲激情国产| 亚洲欧洲精品一区二区| 久久久久久久综合日本| 国产欧美一区二区三区在线老狼| 99这里只有久久精品视频| 日韩一级黄色大片| 欧美大色视频| 亚洲成色精品| 亚洲国产美女| 日韩一级视频免费观看在线| 亚洲黄色三级| 欧美一区二区免费| 欧美日韩国产黄| 亚洲国产精品一区二区三区| 久久精品视频导航| 久久国产精品99国产| 国产精品一区二区久久久| 制服丝袜亚洲播放| 亚洲自拍高清| 国产精品久久二区| 亚洲午夜在线观看视频在线| 亚洲一区999| 欧美午夜一区二区福利视频| 亚洲美女av网站| 亚洲最黄网站| 欧美日韩一区二区三| 99re6热只有精品免费观看 | 日韩一级在线| 欧美日韩国产麻豆| 亚洲看片网站| 亚洲香蕉网站| 国产精品久久久久三级| 亚洲字幕在线观看| 久久丁香综合五月国产三级网站| 国产美女精品视频| 欧美在线一二三区| 久久午夜国产精品| 在线欧美日韩精品| 亚洲精品小视频在线观看| 欧美精品久久一区二区| 99精品国产热久久91蜜凸| 亚洲一区二区毛片| 国产精品免费一区二区三区在线观看 | 亚洲剧情一区二区| 亚洲午夜日本在线观看| 国产精品成人一区二区网站软件| 亚洲一级影院| 久久久www| 亚洲国产精品热久久| 正在播放亚洲一区| 国产乱码精品一区二区三区五月婷 | 亚洲欧美日韩天堂一区二区| 久久精品国产精品亚洲| 精久久久久久久久久久| 亚洲精品影院在线观看| 欧美日韩久久精品| 亚洲自拍偷拍视频| 老鸭窝91久久精品色噜噜导演| 亚洲国内精品在线| 亚洲免费在线视频| 国产综合久久| 亚洲麻豆av| 国产精品久久网站| 久久精品国产99国产精品| 欧美精品日韩三级| 亚洲免费一区二区| 欧美大片91| 亚洲视频观看| 久久尤物电影视频在线观看| 亚洲精品精选| 久久国产精品久久国产精品| 91久久久久久国产精品| 亚洲欧美日韩精品久久亚洲区 | 欧美99久久| 亚洲婷婷综合久久一本伊一区| 久久久久一区二区三区四区| 亚洲青涩在线| 久久国产精品99精品国产| 91久久亚洲| 久久精品国产免费看久久精品 | 亚洲伦理中文字幕| 欧美一区二区视频在线观看| 亚洲国产一区二区精品专区| 欧美亚洲三级| 亚洲人www| 久久久女女女女999久久| 夜夜嗨一区二区三区| 久久影视三级福利片| 一二三区精品| 女生裸体视频一区二区三区| 亚洲综合欧美| 欧美激情综合五月色丁香| 亚洲欧美日韩在线高清直播| 欧美人成在线视频| 久久国产精品久久精品国产| 欧美日韩情趣电影| 亚洲二区在线观看| 国产精品永久免费视频| 一区二区日韩伦理片| 精品福利免费观看| 欧美一区二区三区视频| 亚洲美女av网站| 欧美aⅴ一区二区三区视频| 午夜在线不卡| 国产精品久久中文| 日韩小视频在线观看|