<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的Alpha半透明圖像疊加算法硬件實(shí)現(xiàn)

          基于FPGA的Alpha半透明圖像疊加算法硬件實(shí)現(xiàn)

          作者: 時間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

          摘要:文中在FPGA上采用純verilog邏輯實(shí)現(xiàn)了半透明圖像疊加算法,即驗(yàn)證了算法的正確性,同時針對FPGA不善于處理浮點(diǎn)運(yùn)算的弊端,采用了的方法,進(jìn)一步提高了運(yùn)算速度,實(shí)現(xiàn)了透明系數(shù)可調(diào),半透明圖像疊加的,在顯示領(lǐng)域具有很大的實(shí)用價值。

          本文引用地址:http://www.ex-cimer.com/article/201609/303572.htm

          關(guān)鍵詞:半透明算法;;;

          Alpha透明算法被廣泛應(yīng)用于圖像處理,2D游戲,3D游戲圖像混合和渲染等領(lǐng)域。在涉及到時由于計(jì)算量比較大,PC處理速度較慢,圖像半透明疊加效果無法實(shí)時呈現(xiàn)。本文采用了FPGA并行處理的思想,同時對邏輯中設(shè)計(jì)到的浮點(diǎn)運(yùn)算進(jìn)行了,極大的提高了運(yùn)算速度,實(shí)現(xiàn)了圖像的半透明疊加效果的。可以在高清圖像顯示領(lǐng)域中實(shí)現(xiàn)視頻和半透明滾動字幕的疊加,以及多路視頻的實(shí)時疊加處理。

          1 Alpha算法

          Alpha通道是一個8位的灰度通道,該通道用256灰度來記錄圖像中透明度信息、定義透明、不透明和半透明區(qū)域,其中黑表示全透明,白表示不透明,灰表示半透明。

          Alpha混合算法公式:

          a.jpg

          R(A)、G(A)、B(A)分別代表圖像A的RGB分量的原色值,R(B)、G(B)、B(B)分別代表圖像B的RGB分量的原色值,R(C)、G(C)、B(C)分別代表混合后圖像C的RGB分量的原色值。

          alpha為圖像的透明度系數(shù),取值為0—1,1為完全透明,0為完全不透明,改變這個值可以得到一個漸變的效果。

          透明度alpha的計(jì)算。顏色在本質(zhì)地上是光的產(chǎn)物,可以把透明度理解為玻璃的透光性。例如一個alpha=0.2的顏色,可以將其想象為透光率為80%的彩色玻璃。透過這塊玻璃看去,由于80%的光都透過了,因此留下來的顏色只剩20%,即所謂系數(shù)為0.2的alpha。

          2 Matlab驗(yàn)證效果

          現(xiàn)在通過Matlab來進(jìn)行兩幅圖片疊加驗(yàn)證。

          將alpha設(shè)為0.4和0.6的顏色進(jìn)行疊加。這時相當(dāng)于疊加了兩塊玻璃,一塊透光率為60%,另一塊為40%。一道光束穿過,經(jīng)過60%透光率玻璃時,光線強(qiáng)度剩下80%,再經(jīng)過40%透光率玻璃時,光線進(jìn)一步被削弱,只剩下60%*40%=24%。這意味著合成的圖片有24%的透明性。

          a1.jpg

          b.jpg

          兩幅圖片的分辨率都是1 024*768,疊加后處理效果圖如下:

          c.jpg

          由效果圖可以看出,實(shí)現(xiàn)了海鷗在藍(lán)天白云中飛翔的半透明效果。由于藍(lán)天白云圖片alpha為0.4,海鷗圖片alpha為0.6,所以海鷗透明度明顯高于藍(lán)天白云。隨著藍(lán)天白云alpha值的提高,透明度也會提升,相反海鷗透明度會隨之降低。

          雖然實(shí)現(xiàn)了半透明疊加效果,但由于圖片分辨率過高,Matlab要對每個像素點(diǎn)的RGB三通道分別進(jìn)行alpha算法公式運(yùn)算,最后輸出合成圖片,用了大約0.75 s的時間。對視頻圖像無法做到實(shí)時處理的效果。因此,考慮用FPGA硬件設(shè)計(jì)來實(shí)現(xiàn)此算法。

          3 FPGA硬件實(shí)現(xiàn)

          本設(shè)計(jì)硬件采用的市面上常用的開發(fā)板,主控芯片是ALTERA公司的Cycelone IV,并帶有VGA,百兆網(wǎng)口,RS232串口等一系列接口。FPGA內(nèi)部產(chǎn)生兩幅圖片同時進(jìn)行半透明化疊加,并且通過開發(fā)板上的按鍵來控制alpha系數(shù),從而實(shí)現(xiàn)調(diào)節(jié)兩幅圖片的之間的透明度,最后在VGA顯示器進(jìn)行顯示。

          3.1 邏輯設(shè)計(jì)整體框圖

          整體框圖包括3個模塊,alpha_control模塊、vga_display模塊和vga_driver模塊

          alpha_control模塊:通過外部按鍵控制alpha半透明參數(shù),實(shí)現(xiàn)兩幅疊加圖片之間透明度實(shí)時轉(zhuǎn)換。

          vga_display模塊:由于FPGA內(nèi)部的memory容量有限,無法存儲高分辨圖片,因此通過此模塊生成兩幅圖片,并實(shí)現(xiàn)半透明圖片的疊加,然后送到VGA顯示器進(jìn)行實(shí)時顯示。

          vga_driver模塊:驅(qū)動VGA[5]工作在預(yù)定的分辨率下,這里驅(qū)動顯示器工作在1024*768@65MHz的分辨率下。

          d.jpg

          3.2 VGA驅(qū)動原理

          VGA驅(qū)動本質(zhì)就是在一定工作頻率下,產(chǎn)生準(zhǔn)確的時序關(guān)系包括:VS-垂直同步信號,HS-水平同步信號,消隱信號之間的關(guān)系。

          在VGA顯示過程中,完成一行掃描所要的時間為水平掃描時間,完成一幀掃描所需要的時間稱為垂直掃描時間。每掃描完一行用行同步信號進(jìn)行同步;掃描完所有行后用場同步信號進(jìn)行同步。本文設(shè)計(jì)采用的是1024*768@65MHz模式。依據(jù)時序標(biāo)準(zhǔn),每顯示行包含1344個點(diǎn),其中1024為顯示有效區(qū),320點(diǎn)為消隱區(qū),每行的行同步脈沖低電平寬度為136個像素點(diǎn);同理每場有806行,有效行為768,其中場同步脈沖低電平寬度為6行。

          e.jpg

          如上圖所示,每一場的掃描都包含若干個行掃描,如此往復(fù)循環(huán)。

          3.3 Alpha算法verilog實(shí)現(xiàn)

          為了實(shí)現(xiàn)快速運(yùn)算,這里將透明比例按2的N次冪來分級(Alpha=1/256),同時進(jìn)行了移位算法,式(1)、式(2)、式(3)變?yōu)橐韵鹿剑?/p>

          f.jpg

          g.jpg
          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();