專利名稱:基于2d圖像加速器實現(xiàn)像素疊加的方法
基于2D圖像加速器實現(xiàn)像素疊加的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻處理技術(shù),尤其涉及一種基于2D圖像加速器實現(xiàn)像素疊加的方法。
背景技術(shù):
現(xiàn)在的游戲,不管是2D還是3D的,為了追求透明光影效果,通常都會使用到Alpha-Blending技術(shù)。所謂Alpha-Blending技術(shù),是按照“Alpha”混合向量的值來混合源像素和目標(biāo)像素的一種圖像處理技術(shù)。Alpha混合向量一般表示了圖片的透明度。兩個像素的a混合首先,把源像素和目標(biāo)像素的RGB的紅、綠、藍(lán)三個顏色分量分離。然后把源像素的三個顏色分量分別乘上Alpha的值,并把目標(biāo)像素的三個顏色分量分別乘上Alpha的反值。接下來把結(jié)果按對應(yīng)顏色分量相加,再對最后求得的每個分量結(jié)果除以Alpha的最大值;最后把三個顏色分量重新合成為一個像素輸出。TV BOX (智能電視盒)內(nèi)置android (安卓)操作系統(tǒng),視頻播放采用Overlay (覆蓋)模式進(jìn)行顯示,用戶界面n對應(yīng)的緩存數(shù)據(jù)最終顯示在幀緩存(Frame Buffer,簡稱FB)上,F(xiàn)B覆蓋在Overlay上方,即用戶界面數(shù)據(jù)在視頻數(shù)據(jù)的上方(如帶有前進(jìn)、后退和暫停鍵的對話框用戶界面在視頻的數(shù)據(jù)上方);一般智能電視盒的顯示屏LCD像素點的關(guān)鍵色(Color Key)是設(shè)置為黑色,即黑色(0x0000)作為過濾色,這樣FB上除了用戶界面UI區(qū)域外的其他像素點都為黑色,這樣最后的顯示效果就是能透過FB的黑色區(qū)域看到視頻的圖像。但是當(dāng)用戶界面n區(qū)域中也有像素點為黑色時,也會被過濾掉,這樣用戶界面的數(shù)據(jù)就顯示不出來,為了使黑色的用戶界面n區(qū)域不被當(dāng)做過濾色,也能顯示出來,那么需要用電視盒的CPU對格式是ARGB的n進(jìn)行逐點處理,判斷每個像素點的A分量,如果A分量值不等于0x00,則對像素點的B分量進(jìn)行處理,A分量等于0x00的像素點是不需要顯示出來的,故不作處理。這樣用CPU對n進(jìn)行逐點判斷和運算帶來的問題是CPU耗時較多,特別在n較大(1280*720)用CPU來處理,耗時很長需要120ms左右,相當(dāng)于n刷新只有
8.3fps,這樣導(dǎo)致TV BOX的鼠標(biāo)滑動非??D,滑動不順暢,用戶體驗非常差。現(xiàn)有技術(shù)中提供了一種“進(jìn)行圖像混合的處理方法和處理裝置”,公開號為CN102281381A ;
公開日為2011. 12. 14的中國專利,其處理方法包括通過用戶接口選定第一圖像格式的預(yù)定顏色的色值作為關(guān)鍵色色值;通過所述關(guān)鍵色色值計算所述預(yù)定顏色在第二圖像格式中的色值,作為關(guān)鍵色轉(zhuǎn)換值;根據(jù)所述關(guān)鍵色轉(zhuǎn)換值,獲得第二圖像格式的圖層中的關(guān)鍵色區(qū)域和非關(guān)鍵色區(qū)域,對所述關(guān)鍵色區(qū)域進(jìn)行預(yù)設(shè)的圖像混合運算,獲得所述關(guān)鍵色區(qū)域的處理結(jié)果,并將所述處理結(jié)果和所述非關(guān)鍵色區(qū)域疊加在第一圖像格式的圖層上,獲得圖像混合結(jié)果。該發(fā)明在對不同格式的同一種顏色進(jìn)行處理時,能夠避免換算色值的麻煩,提高處理效率。但該發(fā)明只是針對兩種不同格式的同一種顏色進(jìn)行處理,不能對同種格式的不同種顏色進(jìn)行處理。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題,在于提供一種基于2D圖像加速器實現(xiàn)像素疊加的方法。本發(fā)明是這樣實現(xiàn)的基于電視盒的2D圖像加速器實現(xiàn)像素疊加的方法,包括如下步驟步驟10、配置 2D 圖像加速器的 Alpha-Blending 公式為 Cd’ =Cs+Cd*As/0xff ;其中Cd’表示最后計算出新的顏色值,Cs表示源的顏色值,Cd表示目標(biāo)的顏色值,As表示源的alpha值;步驟20、配置2D圖像加速器的Alpha-Blending的自動飽和功能,所述自動飽和功能為所述公式Cs+Cd*As計算出新的顏色值Cd’ >0xff時,將計算出新的顏色值Cd’置為Oxff ;步驟30、電視盒的用戶界面播放一幀圖像時,該播放的幀圖像為視頻源畫布;在 電視盒中分配一塊緩沖區(qū)buffer,所述緩沖區(qū)大小與視頻源畫布大小一致,在所述緩沖區(qū)中存儲顏色值為0xff000008的數(shù)據(jù),該顏色值即為目標(biāo)的顏色值;步驟40、所述視頻源畫布與所述分配的緩沖區(qū)buffer中顏色值為0xff000008的數(shù)據(jù)進(jìn)行Alpha-Blending處理,將視頻源畫布中的每個像素與顏色值為0xff000008的數(shù)據(jù)根據(jù)公式Cd’ =Cs+Cd*As/0xff和Alpha-Blending的自動飽和功能計算出疊加后像素的顏色值,從而完成像素的疊加過程。進(jìn)一步地,所述步驟40將視頻源畫布中的每個像素與顏色值為OxffOOOOOS的數(shù)據(jù)根據(jù)公式Cd’ =Cs+Cd*As/0xff和Alpha-Blending的自動飽和功能計算出疊加后像素的顏色值具體為將視頻源畫布中的每個像素的RGB的紅、綠、藍(lán)三個顏色進(jìn)行分量分離,將顏色值為0Xff000008的數(shù)據(jù)RGB也進(jìn)行分量分離,將視頻源畫布的各顏色分量和對應(yīng)的顏色值為0xff000008的數(shù)據(jù)RGB的顏色分量根據(jù)公式Cd’ =Cs+Cd*As/0xff計算得到對應(yīng)新的顏色分量,如果新的顏色分量值>0xff時,將新的顏色分量值置為Oxff,最后將三個新的顏色分量重新合成一個疊加后的像素的顏色值。進(jìn)一步地,所述緩沖區(qū)buffer支持的圖像格式為ARGB8888。本發(fā)明具有如下優(yōu)點本發(fā)明在電視盒的播放視頻時,視頻以幀為單位,一幀可以認(rèn)為是一張畫布,該播放的一幀圖像為源畫布,在電視盒中分配一塊緩沖區(qū)buffer,在所述緩沖區(qū)中存儲顏色值為OxfTOOOOOS的數(shù)據(jù),所述視頻源畫布與所述分配的緩沖區(qū)buffer中顏色值為0xff000008的數(shù)據(jù)進(jìn)行Alpha-Blending處理,將視頻源畫布中的每個像素與顏色值為0xff000008的數(shù)據(jù)根據(jù)公式Cd’ =Cs+Cd*As/0xff和Alpha-Blending的自動飽和功能計算出疊加后像素的顏色值,從而完成像素的疊加過程。本發(fā)明用2D圖像加速器取代CPU對ARGB格式的用戶界面UI畫布逐點處理,解決了 CPU開銷大、鼠標(biāo)滑動不順暢的問題;且實現(xiàn)了無需CPU處理,即可使用戶界面區(qū)域的像素點為黑色部分不會被過濾掉,能在視頻上顯示出來。
圖I為本發(fā)明方法流程示意圖。圖2為本發(fā)明電視盒的用戶界面播放的視頻源畫布的示意圖。圖3為本發(fā)明電視盒中分配一塊緩沖區(qū)buffer的示意圖。
圖4為本發(fā)明疊加后的畫布的示意圖。
具體實施方式請參閱圖I所示,基于電視盒的2D圖像加速器實現(xiàn)像素疊加的方法,包括如下步驟步驟10、配置 2D 圖像加速器的 Alpha-Blending 公式為 Cd’ =Cs+Cd*As/0xff ;其中Cd’表示最后計算出新的顏色值,Cs表示源的顏色值,Cd表示目標(biāo)的顏色值,As表示源的alpha值;步驟20、配置2D圖像加速器的Alpha-Blending的自動飽和功能,所述自動飽和功能為所述公式Cs+Cd*As計算出新的顏色值Cd’ >0xff時,將計算出新的顏色值Cd’置為Oxff,這樣避免新的顏色值溢出帶來的顏色跳變的問題(如當(dāng)B分量的顏色值是Oxfe, 加上8后B分量的顏色值直接設(shè)置為Oxff,而不是0x06);步驟30、電視盒的用戶界面播放一幀圖像時,該播放的幀圖像為源畫布;(電視盒播放視頻時,視頻以幀為單位,一幀可以認(rèn)為是一張畫布,該播放的一幀圖像為源畫布)在電視盒中分配一塊緩沖區(qū)buffer,所述緩沖區(qū)大小與視頻源畫布大小一致,支持圖像格式為ARGB8888,在所述緩沖區(qū)中存儲顏色值為Oxff000008的數(shù)據(jù),該顏色值即為目標(biāo)的顏色值(Alpha-Blending 公式中的 Cd);步驟40、所述視頻源畫布與所述分配的緩沖區(qū)buffer中顏色值為0xff000008的數(shù)據(jù)進(jìn)行Alpha-Blending處理,將源畫布中的每個像素與顏色值為0xff000008的數(shù)據(jù)根據(jù)公式Cd’ =Cs+Cd*As/0xff和Alpha-Blending的自動飽和功能計算出疊加后像素的顏色值,從而完成像素的疊加過程。其中將源畫布中的每個像素與顏色值為0xff000008的數(shù)據(jù)根據(jù)公式Cd’ =Cs+Cd*As/0xff和Alpha-Blending的自動飽和功能計算出疊加后像素的顏色值具體為將源畫布中的每個像素的RGB的紅、綠、藍(lán)三個顏色進(jìn)行分量分離,將顏色值為0XfT000008的數(shù)據(jù)RGB也進(jìn)行分量分離,將源畫布的各顏色分量和對應(yīng)的顏色值為0xff000008的數(shù)據(jù)RGB的顏色分量根據(jù)公式Cd’ =Cs+Cd*As/0xff計算得到對應(yīng)新的顏色分量,如果新的顏色分量值>0xff時,將新的顏色分量值置為Oxff,最后將三個新的顏色分量重新合成一個疊加后的像素的顏色值。下面結(jié)合一具體實施例對本發(fā)明作進(jìn)一步說明。I、配置電視盒的2D圖像加速器的Alpha-Blending公式為Cd’ =Cs+Cd*As/0xff ;其中Cd’表示最后計算出新的顏色值,Cs表示源的顏色值,Cd表示目標(biāo)的顏色值,As表示源的alpha值;2、配置2D圖像加速器的Alpha-Blending的自動飽和功能,所述自動飽和功能為所述公式Cs+Cd*As計算出新的顏色值Cd’ >0xff時,將計算出新的顏色值Cd’置為OxfT ;3、如圖2所示,電視盒的用戶界面播放播放一幀圖像時,該播放的一幀圖像為源畫布;該源畫布的前4個像素點的ARGB顏色值分別為第一點ARGB=OxfTOOOOOO,第二點ARGB=Oxff7dl9fa,第三點 ARGB=Oxff000000,第四點 ARGB=Oxfff4f 168 ;如圖 3 所示,在電視盒中分配一塊緩沖區(qū)buffer,所述緩沖區(qū)大小與源畫布大小一致,并支持ARGB格式,在所述緩沖區(qū)中存儲顏色值為OxffOOOOOS的數(shù)據(jù),該顏色值即為目標(biāo)的顏色值;4、將所述源畫布與所述分配的緩沖區(qū)buffer中顏色值為0xff000008的數(shù)據(jù)進(jìn)行Alpha-Blending處理,將源畫布中的每個像素與顏色值為0xff000008的數(shù)據(jù)根據(jù)公式Cd’ =Cs+Cd*As/Oxff和Alpha-Blending的自動飽和功能計算出疊加后像素的顏色值,從而完成像素的疊加過程。其中將源畫布中的每個像素與顏色值為0xff000008的數(shù)據(jù)根據(jù)公式Cd’ =Cs+Cd*As/Oxff和Alpha-Blending的自動飽和功能計算出疊加后像素的顏色值具體為將源畫布中的第一像素點ARGB=OxffOOOOOO的RGB的紅、綠、藍(lán)三個顏色進(jìn)行分量分離,即 ARGB=OxffOOOOOO 進(jìn)行隔位分離 A=Oxff、R=OxOO、G=OxOO、B=OxOO ;將顏色值為Oxff000008的數(shù)據(jù)RGB也進(jìn)行分量分離,即R’ =0x00、G,=0x00、B,=0x08 ;則根據(jù)公式 Cd’ =Cs+Cd*As/0xff,即紅的分量 Cd’ =0x00 (即為 R)+0x00 (即為 R’)*0xff(即為 A) /Oxff=OxOO ;綠的分量 Cd,=0x00 (即為 G) +0x00 (即為 G,) *0xff (即為 A)/Oxff=OxOO ;藍(lán)的分量 Cd’ =0x00 (即為 B)+0x08 (即為 B’)*0xff (即為 A)/0xff=0x08 ;將新的紅的分量0x00,綠的分量0x00,藍(lán)的分量0x08重新合成一個疊加后的像素的顏色值0xff000008 ;將源畫布中的第二像素點ARGB=0xff7dl9fa的RGB的紅、綠、藍(lán)三個顏色進(jìn)行分量分離,即ARGB=0xff7dl9fa進(jìn)行隔位分離A=Oxff、R=0x7d、G=0xl9、B=Oxfa ;將顏色值為0xff000008的數(shù)據(jù)RGB也進(jìn)行分量分離,即R,=0x00、G,=0x00、B,=0x08 ;則根據(jù)公式 Cd’ =Cs+Cd*As/0xff,即紅的分量 Cd’ =0x7d (即為 R)+0x00 (即為 R’)*0xff (即為 A)/0xff=0x7d ;綠的分量 Cd’=0xl9 (即為 G)+0x00 (即為 G’)*0xff (即為 A)/0xff=0xl9 ;藍(lán) 的分量Cd’ =Oxfa (即為B)+0x08 (即為B’)*0xff (即為A)/Oxff=Oxff ;將新的紅的分量0x7d,綠的分量0x19,藍(lán)的分量Oxff重新合成一個疊加后的像素的顏色值0xff7dl9ff ;同理將源畫布中的第三像素點ARGB=OxffOOOOOO,第四像素點ARGB=0xfff4f 168 ;經(jīng)過處理后得到疊加后的像素的顏色值對應(yīng)為0xff000008、0xfff4fl70 ;從而完成像素的疊加過程。以上所述僅為本發(fā)明的較佳實施例,凡依本發(fā)明申請專利范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。
權(quán)利要求
1.基于電視盒的2D圖像加速器實現(xiàn)像素疊加的方法,其特征在于包括如下步驟 步驟10、配置2D圖像加速器的Alpha-Blending公式為Cd’=Cs+Cd*As/0xff ;其中Cd’表示最后計算出新的顏色值,Cs表示源的顏色值,Cd表示目標(biāo)的顏色值,As表示源的alpha值; 步驟20、配置2D圖像加速器的Alpha-Blending的自動飽和功能,所述自動飽和功能為所述公式Cs+Cd*As計算出新的顏色值Cd’ >0xff時,將計算出新的顏色值Cd’置為Oxff ; 步驟30、電視盒的用戶界面播放一幀圖像時,該播放的幀圖像為視頻源畫布;在電視盒中分配一塊緩沖區(qū)buffer,所述緩沖區(qū)大小與視頻源畫布大小一致,在所述緩沖區(qū)中存儲顏色值為0Xff000008的數(shù)據(jù),該顏色值即為目標(biāo)的顏色值; 步驟40、所述視頻源畫布與所述分配的緩沖區(qū)buffer中顏色值為0xff000008的數(shù)據(jù)進(jìn)行Alpha-Blending處理,將視頻源畫布中的每個像素與顏色值為0xff000008的數(shù)據(jù)根據(jù)公式Cd’ =Cs+Cd*As/0xff和Alpha-Blending的自動飽和功能計算出疊加后像素的顏色值,從而完成像素的疊加過程。
2.根據(jù)權(quán)利要求I所述的基于電視盒的2D圖像加速器實現(xiàn)像素疊加的方法,其特征在于所述步驟40將視頻源畫布中的每個像素與顏色值為OxfTOOOOOS的數(shù)據(jù)根據(jù)公式Cd’ =Cs+Cd*As/0xff和Alpha-Blending的自動飽和功能計算出疊加后像素的顏色值具體為將視頻源畫布中的每個像素的RGB的紅、綠、藍(lán)三個顏色進(jìn)行分量分離,將顏色值為0xff000008的數(shù)據(jù)RGB也進(jìn)行分量分離,將視頻源畫布的各顏色分量和對應(yīng)的顏色值為0xff000008的數(shù)據(jù)RGB的顏色分量根據(jù)公式Cd’ =Cs+Cd*As/0xff計算得到對應(yīng)新的顏色分量,如果新的顏色分量值>0xff時,將新的顏色分量值置為Oxff,最后將三個新的顏色分量重新合成一個疊加后的像素的顏色值。
3.根據(jù)權(quán)利要求I所述的基于電視盒的2D圖像加速器實現(xiàn)像素疊加的方法,其特征在于所述緩沖區(qū)buffer支持的圖像格式為ARGB8888。
全文摘要
本發(fā)明提供一種基于電視盒的2D圖像加速器實現(xiàn)像素疊加的方法,1、配置2D圖像加速器的Alpha-Blending公式Cd’=Cs+Cd*As/0xff;2、配置2D圖像加速器的自動飽和功能3、電視盒播放視頻,一幀是一張畫布,處理視頻圖像時,在電視盒中分配一存儲顏色值為0xff000008的數(shù)據(jù)的緩沖區(qū)buffer;4、將視頻源畫布與分配的緩沖區(qū)buffer中顏色值為0xff000008的數(shù)據(jù)進(jìn)行Alpha-Blending處理,來完成像素的疊加過程。本發(fā)明無需CPU處理,可使用戶界面區(qū)域的像素點為黑色部分不會被過濾掉,能顯示出來。TV BOX出現(xiàn)用戶界面時,用戶通過鼠標(biāo)操作比較流暢不會卡。
文檔編號G06T1/00GK102724581SQ201210175958
公開日2012年10月10日 申請日期2012年5月31日 優(yōu)先權(quán)日2012年5月31日
發(fā)明者黃德勝 申請人:福州瑞芯微電子有限公司