《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 視頻縮放在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亚洲国产精品_日韩亚洲一区二区
欧美日韩福利| 一区二区在线观看视频在线观看| 久久国产88| 一本久道久久综合婷婷鲸鱼| 亚洲福利视频网站| 亚洲欧洲99久久| 99精品视频一区| 亚洲高清一二三区| 雨宫琴音一区二区在线| 国产欧美一区二区三区在线老狼 | 午夜精品久久久久久久久久久久| 一区二区三区四区精品| 一区二区三区免费观看| 一本到高清视频免费精品| 夜夜嗨av色一区二区不卡| 亚洲免费观看| 日韩午夜中文字幕| 夜夜狂射影院欧美极品| 一本色道久久综合狠狠躁的推荐| 99re6这里只有精品| 日韩视频免费| 在线亚洲欧美视频| 国产精品99久久久久久久久| 亚洲视频1区2区| 亚洲一区亚洲二区| 午夜精品久久久| 欧美自拍偷拍午夜视频| 久久精品国产亚洲一区二区三区| 欧美中文字幕| 91久久精品美女| 99成人在线| 亚洲欧美国产va在线影院| 午夜免费久久久久| 久久国产精品99久久久久久老狼| 欧美自拍偷拍| 巨乳诱惑日韩免费av| 免费亚洲婷婷| 欧美日韩午夜激情| 国产精品国产三级国产aⅴ无密码| 国产精品毛片a∨一区二区三区| 国产精品亚洲视频| 国产一区二区在线观看免费播放| 伊人伊人伊人久久| 99国内精品| 亚洲欧美综合一区| 91久久精品国产91性色tv| 一区二区三区四区五区精品视频 | 久久高清福利视频| 亚洲三级免费电影| 亚洲网站在线观看| 久久精品国产久精国产一老狼| 女主播福利一区| 国产精品久久7| 国内揄拍国内精品少妇国语| 亚洲国产一区二区视频| 亚洲少妇最新在线视频| 欧美一区二区三区在线看| 亚洲精品久久久久久一区二区| 亚洲视频一区二区在线观看| 欧美一区二区视频网站| 欧美韩日一区二区| 国产精品一区二区久久精品| 亚洲大胆人体视频| 亚洲天堂视频在线观看| 久久精品国产一区二区三区免费看| 亚洲乱码国产乱码精品精天堂| 亚洲欧美一区二区三区极速播放| 久久午夜精品| 欧美午夜在线一二页| 国产一区再线| 亚洲精品日韩一| 欧美在线观看视频一区二区| 在线视频日韩| 久久婷婷麻豆| 国产精品久久久久久久久久久久久久 | 亚洲天堂av综合网| 久久久天天操| 欧美三区在线视频| 曰韩精品一区二区| 亚洲一级黄色av| 亚洲精品一二| 久久久久国产一区二区三区四区| 欧美精选一区| 在线播放日韩| 性欧美1819sex性高清| 中日韩高清电影网| 麻豆精品视频在线| 国产日产亚洲精品| 99亚洲伊人久久精品影院红桃| 亚洲国产精品第一区二区| 午夜精品久久久久久久| 欧美日韩成人在线观看| 狠狠综合久久| 午夜精品免费在线| 国产美女精品在线| 日韩手机在线导航| 亚洲黄页一区| 久久久福利视频| 国产精品日韩在线观看| 99热在线精品观看| 日韩视频不卡| 免费久久久一本精品久久区| 国产一区二区三区久久 | 先锋影音久久久| 亚洲免费在线观看视频| 欧美日韩国产一级| 亚洲国产成人精品女人久久久| 亚洲第一黄色| 久久精品视频免费播放| 国产精品尤物福利片在线观看| 亚洲天堂成人| 亚洲男同1069视频| 欧美午夜理伦三级在线观看| 亚洲精品影视在线观看| 日韩小视频在线观看专区| 欧美xart系列在线观看| 影音欧美亚洲| 久久国产日本精品| 久久久久久网址| 国产一区二区在线免费观看| 性欧美激情精品| 久久精品二区亚洲w码| 国产区日韩欧美| 午夜精品久久久久久久白皮肤| 国产精品网站视频| 亚洲一区二区三区视频播放| 欧美激情第五页| 亚洲黄色免费| 亚洲免费电影在线| 欧美激情一区二区三区在线| 亚洲欧洲在线免费| 一本久久青青| 国产精品xvideos88| 一区二区三区精品视频在线观看| 亚洲在线一区二区| 欧美视频中文字幕| 99国内精品久久| 亚洲在线观看免费| 国产精品视频成人| 午夜欧美大片免费观看| 久久国产精品一区二区| 国产亚洲精品福利| 久久成人亚洲| 欧美jjzz| 一区二区欧美视频| 午夜久久黄色| 国产亚洲精品bv在线观看| 亚洲福利精品| 欧美高清在线视频| 日韩一级成人av| 午夜激情亚洲| 国产一区二区精品久久99| 亚洲激情在线观看| 欧美精品日韩综合在线| 一本色道久久综合亚洲精品不卡| 亚洲欧美日韩一区二区在线| 国产亚洲欧美在线| 亚洲精品久久久久久久久久久久久 | 久久精品欧美日韩| 在线看国产日韩| 日韩一区二区福利| 国产精品免费视频xxxx| 欧美一级专区免费大片| 美日韩在线观看| aa级大片欧美| 久久riav二区三区| 在线看国产一区| 亚洲天堂激情| 国内精品一区二区| 一本色道久久综合| 国产欧美日韩中文字幕在线| 亚洲国产成人av| 欧美色123| 欧美在线观看视频一区二区三区| 欧美精品一区二区三区久久久竹菊| 亚洲一区二区三区精品动漫| 麻豆精品在线观看| 中文精品在线| 裸体丰满少妇做受久久99精品| 99精品欧美一区二区蜜桃免费| 久久精品亚洲一区| 亚洲免费高清| 久久综合久久综合久久| 一区二区欧美精品| 免费看的黄色欧美网站| 亚洲一区三区视频在线观看| 欧美成人一区二免费视频软件| 亚洲主播在线播放| 欧美精品三级日韩久久| 久久精品二区| 国产精品久久久久久久久| 亚洲激情电影中文字幕| 国产毛片精品国产一区二区三区| 亚洲美女诱惑| 狠狠干综合网| 亚洲综合色丁香婷婷六月图片| 亚洲丶国产丶欧美一区二区三区| 性久久久久久久| 亚洲另类视频| 美女成人午夜|