999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

雙三次卷積模板插值算法的FPGA實現

2014-03-21 09:59:30陳志杰凌朝東魏騰雄
液晶與顯示 2014年1期

陳志杰,凌朝東,魏騰雄

(華僑大學 信息科學與工程學院,福建 廈門361008)

1 引 言

在很多的場合需要高分辨率的大圖像顯示,現在受限于液晶和信號傳輸,單個液晶屏并不能做的非常大,所以現在一般采用多個液晶屏進行拼接來實現大分辨率大圖像的顯示,為了使不同的原始輸入圖像的分辨率能夠在拼接大屏幕上匹配顯示,就必須對輸入的視頻圖像進行縮放以匹配輸出的分辨率,滿足拼接屏幕的要求[1]。這是插值算法在縮放上的一個應用實例,插值算法的應用很廣泛,除視頻圖像縮放,視頻圖像的旋轉也會用到插值算法。

現代的插值算法包括線性和非線性插值、有理插值、曲面重構和自適應區域插值等,但很多算法都由于過于復雜難于在硬件上實現,在硬件上實現常用的插值算法有最鄰近插值算法,雙線性插值算法,雙三次插值算法等[2]。最鄰近插值簡單且直觀,但得到的圖像質量不高。雙線性內插值法計算量大,具有低通濾波器的性質,使高頻分量受損,所以可能會使圖像輪廓在一定程度上變得模糊[3]。雙三次插值法用16個相鄰點做插值,它消除了最鄰近插值的階梯狀邊界問題,解決了雙線性插值模糊的問題能夠克服以上兩種算法的不足,計算精度高,但計算量大[4-7]。本設計采用雙三次插值算法,但為提高計算效率,對雙三次插值計算進行了離散化處理,變實數運算為整數運算[8]。有效克服雙三次插值算法計算量大的問題。提出了實現雙三次卷積模板算法的硬件電路的實現方法,避免三次方的計算,使次算法能夠在沒有顯著增加硬件資源的同時得到令人滿意的圖像縮放效果。

2 雙三次插值算法

2.1 基函數數學模型

在數值分析中,插值算法可用通式表示為

其中:h(x-xk)為插值基函數,ck為第k 個原函數的值。不同的插值算法只是基函數及選取的插值點個數n不同。如果基函數的最高次冪為三次且在定義域內基函數的一階、二階導數連續,則稱該算法為三次插值算法,若在二維方向上應用該算法即雙三次插值算法。

系統采用Keys提出的三次插值基函數,雙三次插值算法基函數是利用三次多項式h(ω)來逼近理論上最佳插值函數sin(π×ω)/(π×ω),其基函數h(ω)的表達式如下:

2.2 實現過程

圖像為二維信號,所以,圖像縮放的插值算法要在二維方向應用上述算法。先在水平方向,假設所求插值像素點為F,首先,每一行依據上述插值原理,得到4 個臨時插值像素點的像素值F0,F1,F2,F3。

其中:Fk+4i為輸入圖像鄰近16個點的像素值,兩像素點的距離為單位1。然后,以Fi為原函數,在垂直方向依據同樣的原理求得所需插值點F 的值,即

2.3 算法離散化,模板化實現方法

由上述可知計算時需要h(Δx)和h(Δy)這兩個值,如果Δx 和Δy 直接代入基函數進行計算,需要大量的乘法和浮點運算,會占用大量的系統資源,這里采用將h 的值離散化,模板化進行計算。計算每一目標像素灰度值,需要計算出目標像素點和源像素點的水平、垂直距離,然后根據距離帶入公式算出相應的加權系數。

將水平距離和垂直距離Δx,Δy 平均分割為4份,Δx,Δy 都在[0,1]的范圍內,分為[0,1/4],[1/4,1/2],[1/2,3/4],[3/4,1],如果Δx,Δy 的值落入到這4個范圍中的一個,將Δx,Δy 都取這個范圍內的平均值,即如果在[0,1/4]則取1/8,如果在[1/4,1/2]則取3/8,如果在[1/2,3/4]則取5/8,如果在[3/4,1]則取7/8。

在進行水平方向的卷積時需要用到

這個為加權系數,計算一個點的時候需要4個像素的點和這個加權系數進行卷積。按上面的范圍進行計算加權系數,得到水平方向加權系數的4個目標(每個數左移18位,用移位計算在硬件里方便實現):

同理垂直方向

3 插值算法的FPGA 實現

3.1 實現框圖

FPGA 采用的是Lattice的ECP3 系列的芯片,其框圖如圖1所示。

圖1 FPGA 實現的原理圖Fig.1 Block diagram of FPGA implementation

如圖1所示,數據進入到FPGA 后進行水平方向的插值計算,水平方向計算完,由于計算垂直插值時需要用到圖像相鄰的4行數據,所以將水平方向插值計算結果的數據送入外部的存儲器進行存儲,然后從外部存儲器中讀出數據進行垂直方向的插值。

3.2 行卷積的實現

根據上面的分析,行卷積的實現為取相鄰的4個像素點與相應的模板進行卷積計算得到結果。所以行卷積的計算就是如何取得相鄰的4個像素點和如何取得相應的模板。在一行上4個相鄰的像素點需要同時取得,這樣才能提高計算速度,為了同時得到4個相鄰的像素點,輸入緩存用4個雙口RAM,在視頻圖像進入FPGA 時,將一行的數據同時寫入4個RAM 中,同時讀取時4個RAM取相鄰地址的數據,就得到了一行中4個相鄰的像素點。而相應的模板需要根據縮放的比例來進行計算得到。圖2為行卷積實現的框圖。

需要根據縮放比例計算出目標像素點對應到源像素點的位置,這個用scale factor 模塊來實現,知道目標像素點對應到源像素點的位置就能得出需要的模板。縮放比例用一個16.16的定點小數來實現,高16位表示整數部分,低16位表示小數部分。計算時采用累加來實現,每一次都加上縮放比例,這樣就能得到相鄰的4個像素點和相應的模板。其modelsim 的仿真結果如圖3所示,仿真時采用放大1.6 倍時一行圖像數據的情況。

圖2 行卷積實現原理圖Fig.2 Block diagram of line convolution implementation

圖3 scale_factor的仿真波形Fig.3 Waveform of scale_factor simulation

其中line為目標圖像對應到源圖像的整數部分的值,x_distance為對應到源圖像的小數的值,這樣根據整數部分可以得到相鄰的4個像素點,根據距離可以得到相應的模板。其中x_distance小數部分為左移16 位的結果。根據上面的計算可以得到卷積的像素點和模板,然后將得到的數據送入乘加器就能得到行卷積的計算結果。乘加器用Lattice芯片上的硬件乘加器進行實現,硬件乘加器的速度能夠滿足要求。

對行卷積整體仿真時,利用matlab采集一整幅圖片的像素點,將圖片的像素點轉化成RGB的格式,用十六進制存在文本中,然后利用modelsim 對文本的讀寫功能,產生一個模擬的VGA時序視頻信號,信號包括時鐘信號、行同步信號、場同步信號、數據使能信號和數據信號。將這幾個信號在testbeach中生成,給行卷積的模塊,將行卷積的計算結果通過modelsim 對文本的操作寫入到文本當中,將得到的仿真文本的數據和matlab仿真數據進行比對,做到兩個仿真結果的數據是一樣的,說明硬件描述語言對算法的行卷積能夠實現。

3.3 外部存儲器

系統支持1 080p高清視頻,1 080p視頻的分辨率為1 920×1 080,如果當視頻的幀率為60 Hz時,RGB每位采用8bit,這樣一幀圖像的大小為1 920×1 080×24bit約為2M×24bit,進行處理時為了提高計算效率采用乒乓操作,所以一幀需要的存儲為4M×24bit,所以采用一片512M 的,數據寬度為16bit的DDR3 就能滿足圖像緩存的需要。DDR3的寫入速度非常快,比視頻的像素流快,所以,我們不可能來一個像素寫入一個值,這樣操作繁瑣,這就有必要在前面做一個像素的緩存器,如果視頻圖像的一行像素數據存入到緩存中時,將緩存中的數據一起寫入到DDR3。

DDR3控制器利用現有的IP 核來實現。其實現框圖如圖4所示。

圖4 DDR3控制器實現框圖Fig.4 Block diagram of DDR3controller

主要包括4個FIFO,4個FIFO 分別為發生請求讀寫DDR 時,將請求讀寫ddr的地址放入fifo中。ddr_init模塊主要是負責ddr的初始化,ddr_ctrl_state主要負責處理DDR 進行讀寫的狀態控 制,ddr3_sdram_mem_top 是Latticed 的DDR3的IP核。

其中ddr_ctrl_state的內部是設計一個狀態機,來實現ddr的讀寫控制狀態,其狀態轉移圖如圖5所示。

以下是各個狀態所表示的含義:

上電相關狀態:

S_POWER_UP表示上電開始狀態。

圖5 DDR 的狀態轉移圖Fig.5 State diagram of DDR ctroller

S_CHIP_CONFIG 表示芯片配置狀態。

S_CONIG_END 表示等待芯片配置完成狀態。

S_IDLE表示系統空閑等待狀態。

讀DDR 相關狀態:

S_RD_RQ0表示讀DDR,讀取FIFO 得到位置數據。

S_RD_RQ1表示讀DDR,讀取FIFO 得到位置數據。

S_RD_RQ2表示讀DDR,讀取FIFO 得到位置數據。

S_RD_RQ3表示讀DDR,讀取FIFO 得到位置數據。

S_WAIT_RD_RQ 表示需要幾個時鐘(m2~m4),從FIFO 中讀出位置參數。

S_DDR_RD_CMD 表示位置參數準備好,對DDR IP寫入讀命令和相應地址。

S_WAIT_RD_END 表示等待DDR 將數據讀完。

寫DDR 相關狀態:

S_WR_RQ0表示寫1端口數據狀態。

S_WR_RQ1表示寫2端口數據狀態。

S_WR_RQ2表示寫3端口數據狀態。

S_WAIT_WR_RQ 表示需要幾個時鐘(m2~m4),從FIFO 中讀出位置參數。

S_DDR_WR_CMD 表示位置參數準備好,對DDR IP寫入讀命令和相應地。

S_WAIR_WR_END 表示等待DDR 將數據寫完。

3.4 列卷積的實現

列卷積的計算方法和行卷積的計算方法相同,其實現框圖如圖6所示。只是列卷積時需要得到相鄰四列的像素值,這個可以通過每次從DDR3中讀出相鄰的四列放入4 個RAM 中,這樣從每一個RAM 中可以得到相鄰四列的4個像素值。

其中DDR 數據讀取控制模塊主要是根據圖像插值算法的需要從DDR 中讀出相鄰的4 行,分別放入到4 個RAM 中,然后通過控制RAM的地址來讀取列相鄰的4 個像素點。同時系數讀取控制器也根據需要讀出相應的列插。

圖6 列卷積實現框圖Fig.6 Block diagram of column convolution implementation

3.5 資源使用情況

此算法是在Lattice ECP3-17EA 來實現的,圖7為實現此算法的資源的情況,從圖片中可以看出這個算法占用的資源不是很多,所以在此FPGA 芯片上實現此算法還是可行的。

3.6 結果與討論

做試驗時,先用matlab 將算法用軟件來實現,將仿真得到的結果保存。通過硬件描述語言實現后,用modelsim 仿真,同樣利用modelsim的讀寫功能,對一張圖片進行仿真,結果保存在文件里,將matlab得到的結果和modelsim 得到的仿真結果進行比較,可以發現兩個結果是完全一樣的。說明用硬件語言實現了該算法。

圖7 FPGA 資源的使用情況Fig.7 Use of FPGA resources

將雙三次插值算法改成模板方法實現,省去了很多的浮點計算,使其在硬件上耗費更少的資源。將圖像看成二維的,先計算水平的插值,再算垂直的插值,這樣在硬件上也可以減少資源,水平和垂直同時計算,一次要取臨近的16個點,然后進行16個乘加運算,而先水平后垂直,一次只需取4個點,需要4個乘加運算,相當于需要兩次的4個乘加運算。這樣可以減少乘加器的數量。

4 結 論

雙三次插值算法能夠得到令人滿意的圖像縮放效果,但因其算法復雜,硬件上實現很少應用,而本文通過分析雙三次插值的基本原理,提出了將圖像分為二維來進行計算,先水平后垂直實現雙三次插值算法的硬件實現思路。同時將計算過程離散化,化浮點計算為整數計算,避免了三次方的計算。通過實驗可以發現,利用FPGA 實現雙三次卷積模板算法可以比實現雙三次插值算法節約硬件資源。同時可以得到不錯的圖像效果,適合工程的應用。

[1] Xiang Z Q,Zou X C,Liu Z L.An high quality image scaling engine for large-scale LCD[C].ICSP2006 Proceedings,Wuhan,China:ICSP,2006.

[2] 王增發,孫麗娜.CFA 圖像實時插值在FPGA 上的應用[J].液晶與顯示,2013,28(4):615-619.Wang Z F,Sun L N.Application of CFA images interpolation algorithm in FPGA real-time system [J].Chinese Journal of Liquid Crystals and Displays,2013,28(4):615-619.(in Chinese)

[3] 孫紅進.FPGA 實現的視頻圖像縮放顯示[J].液晶與顯示,2010,25(1):130-133.Sun H J.FPGA realization of video lmage zooming display[J].Chinese Journal of Liquid Crystals and Displays,2010,25(1):130-133.(in Chinese)

[4] 張阿珍,劉政林,鄒雪城,等.基于雙三次插值算法的圖像縮放引擎的設計[J].微電子學與計算機,2007,24(1):49-51.ZHANG A Z,LIU Z L,ZOU X C,et al Design of image scaling engine based bicubic interpolation algorithm[J].Microelectronics &Computer,2007,24(1):49-51.(in Chinese)

[5] 王會鵬,周利莉,張杰.一種基于區域的雙三次圖像插值算法[J].計算機工程,2010,36(19):216-218.Wang H P,Zhou L L,Zhang J.Region-based bicubic image interpolation algorithm [J].Computer Engineering,2010,36(19):216-218.(in Chinese)

[6] Li Y H,Zhen J,Li J H,et al.The hardware realization of the bicubic interpolation enlargement algorithm based on FPGA[C]//Third International Symposium on Information Processing,Qingdao,China:ISIP,2010:277-281.

[7] Nuno-Maganda M A,Arias-Estrad M O.Real-time FPGA-based architecture for bicubic interpolation:An application for digital image scaling[C]//Proceedings of the 2005 International Conference on Reconfigurable Computing and FPGAs,Puebla City,Mexico:Computer Society,2005:31-42.

[8] 高成敏,陳良,林永和.雙三次卷積模板算法[J].計算機工程與應用,2009,45(17):151-154.Gao C M,Chen L,Lin Y H.Bicubic convolution template algorithm[J].Computer Engineering and Applications,2009,45(17):151-154.(in Chinese)

[9] 樊博,王延杰,孫宏.FPGA 實現高速實時多端口圖像處理系統的研究[J].液晶與顯示,2013,28(4):620-625.Fan B,Wang Y J,Sun H.High speed real-time multiport image algorithm in FPGA real-time system[J].Chinese Journal of Liquid Crystals and Displays,2013,28(4):620-625.(in Chinese)

主站蜘蛛池模板: 成人在线综合| 国产精品区视频中文字幕| 极品国产一区二区三区| 国产自在线播放| 99er这里只有精品| 久久国产成人精品国产成人亚洲| 欧美日韩国产一级| 国产精品99久久久| www.亚洲国产| 午夜视频日本| 在线视频精品一区| 国产高清在线精品一区二区三区| 国产呦视频免费视频在线观看| 国产无码性爱一区二区三区| 国产色网站| 丁香婷婷久久| 91蝌蚪视频在线观看| 久精品色妇丰满人妻| 免费又黄又爽又猛大片午夜| 日韩精品一区二区三区大桥未久 | 国内精品手机在线观看视频| 色综合久久综合网| 波多野吉衣一区二区三区av| 欧美国产日韩在线播放| 欧美激情二区三区| 日本不卡视频在线| 激情综合图区| 亚洲精品少妇熟女| 国产女人在线| 精品国产免费观看| 女高中生自慰污污网站| 国产精品自拍露脸视频 | 中文字幕无码中文字幕有码在线 | 久久情精品国产品免费| 免费jizz在线播放| 97在线公开视频| 亚洲码在线中文在线观看| 无码中文AⅤ在线观看| 亚洲人成网站在线观看播放不卡| 9cao视频精品| 3344在线观看无码| 国产日韩精品欧美一区喷| 久久久久久久久18禁秘| 热re99久久精品国99热| 日韩福利视频导航| 日韩视频福利| 特黄日韩免费一区二区三区| 超清无码一区二区三区| 久久精品日日躁夜夜躁欧美| 亚洲成人高清在线观看| 精品国产一区二区三区在线观看| 精品视频91| 国产福利大秀91| 五月激激激综合网色播免费| 久草视频中文| 高潮毛片免费观看| av一区二区三区高清久久| 久久久久夜色精品波多野结衣| 久久婷婷国产综合尤物精品| 中国毛片网| 国产精品va免费视频| 亚洲精品无码抽插日韩| 日本亚洲成高清一区二区三区| 99视频精品在线观看| 无码一区二区三区视频在线播放| 全部免费毛片免费播放| 国产精品丝袜在线| 国产91无毒不卡在线观看| 欧美国产日韩另类| 少妇精品网站| 欧美亚洲国产精品第一页| 成AV人片一区二区三区久久| 无码国内精品人妻少妇蜜桃视频| 午夜视频日本| 久久精品国产电影| 日韩成人午夜| 91麻豆国产视频| аv天堂最新中文在线| 国产精品视频公开费视频| 无码精品福利一区二区三区| h网站在线播放| 日韩精品一区二区三区免费在线观看|