<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

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

本文引用地址:http://dyxdggzs.com/article/201609/303572.htm

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

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

1 Alpha算法

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

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為圖像的透明度系數,取值為0—1,1為完全透明,0為完全不透明,改變這個(gè)值可以得到一個(gè)漸變的效果。

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

2 Matlab驗證效果

現在通過(guò)Matlab來(lái)進(jìn)行兩幅圖片疊加驗證。

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

a1.jpg

b.jpg

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

c.jpg

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

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

3 FPGA硬件實(shí)現

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

3.1 邏輯設計整體框圖

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

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

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

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

d.jpg

3.2 VGA驅動(dòng)原理

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

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

e.jpg

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

3.3 Alpha算法verilog實(shí)現

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

f.jpg

g.jpg
上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>