本發(fā)明涉及FPGA視頻處理技術領域,具體涉及一種基于FPGA的視頻流字符疊加處理系統(tǒng)及處理方法。
背景技術:
隨著視頻技術的廣泛應用,視頻字符疊加技術也得到了空前發(fā)展。視頻字符疊加是在視頻圖像的特定位置顯示字符信息,提供輔助提示信息。目前,實現視頻字符疊加通常采用單片機實現,單片機根據輸入的視頻同步信號控制字符在特定位置顯示。這種方法多用于處理模擬視頻信號,硬件電路比較復雜,由于同步時序要求嚴格,單片機實現可靠性差。專用的字符疊加芯片的出現簡化了電路設計,使用方便,但使用專用芯片不容易實現多字符疊加,靈活性差。
采用大容量外部存儲器件也可以實現視頻字符疊加。使用外部存儲緩存視頻數據,利用DSP或單片機讀取外部存儲,經字符疊加處理后覆蓋原始視頻數據。這種方案要求整個系統(tǒng)中必須包含大容量外部存儲器件,而且字符疊加處理過程一般在毫秒量級,不能滿足實時視頻處理要求。
FPGA視頻處理技術已經廣泛應用于眾多領域,如國防安全、航空航天,安防監(jiān)控和醫(yī)療器械等。雖然,已經出現了多種類型的數字視頻字符疊加專用芯片,但是,出于減小功耗、整體尺寸和提高可靠性考慮,以FPGA為控制核心的設計中很少使用字符疊加專用芯片。現有FPGA字符疊加方法顯示位置固定,疊加字符與視頻數據沒有關聯,顯示效果生硬,由于長時間在固定位置顯示字符,縮短了顯示器的工作壽命。
技術實現要素:
本發(fā)明要解決現有FPGA字符疊加方法長時間在固定位置顯示字符導致顯示器的工作壽命短、及顯示效果生硬的技術問題,提供一種基于FPGA的視頻流字符疊加處理系統(tǒng)及處理方法。
為了解決上述技術問題,本發(fā)明的技術方案具體如下:
一種基于FPGA的視頻流字符疊加處理系統(tǒng),包括:
監(jiān)測原始視頻流數據行列坐標位置、尋找字符疊加位置的行列位置監(jiān)測模塊;
存儲在FPGA片上的字符位圖信息、根據字符選擇參數輸出字符信息的字符ROM模塊;
根據透明度參數、亮度參數和視頻數據計算疊加后像素碼值的字符透明度計算模塊;
根據透明度參數、亮度參數和視頻數據計算疊加后像素碼值的背景透明度計算模塊;
使用計算后的像素碼值替換原有像素碼值的字符疊加模塊;
使用計算后的像素碼值替換原有像素碼值的背景疊加模塊;
根據超時參數計時、打開或關閉字符疊加信息的超時消隱模塊。
一種基于FPGA的視頻流字符疊加處理方法,包括以下步驟:
步驟1、帶有行場同步信號的原始視頻流數據進入行列位置監(jiān)測模塊,開啟行列計數,當行列計數值達到疊加起始坐標參數后,觸發(fā)字符疊加過程,并通知字符透明度計算模塊開始取字符計算;
步驟2、字符ROM模塊根據當前行列計數值和字符選擇參數計算當前字符的基地址和偏移地址值,從字符ROM模塊中讀取出當前字符位圖信息,每次只讀取一行字符位圖信息;若讀取出的字符位圖信息數據為要顯示的字符,則進入字符透明度計算模塊,否則進入背景透明度計算模塊;
步驟3、字符透明度計算模塊或背景透明度計算模塊根據公式,取原始視頻流數據中對應像素點的像素碼值,根據字符透明度參數和字符亮度參數,計算疊加后的像素碼值,傳遞給字符疊加模塊或背景疊加模塊;
步驟4、字符疊加模塊或背景疊加模塊需要緩存視頻流數據等待計算過程結束后,將計算后的疊加像素碼值替換原位置像素碼值;
步驟5、超時消隱模塊監(jiān)測字符疊加過程是否已經超時,控制字符疊加過程開啟或關閉。
在上述技術方案中,字符ROM模塊寬度等于字符位圖寬度,深度為所有字符高度之和;所有字符高度相同,占用字符ROM模塊空間相同。
在上述技術方案中,所述字符透明度計算模塊或背景透明度計算模塊根據公式Dout=(α×Din+(256-α)×Dchar)/256計算疊加后的像素碼值,其中Dchar、α分別為字符或背景的亮度和透明度信息,Din為輸入像素碼值,Dout為輸出像素碼值。
本發(fā)明的有益效果是:
本發(fā)明提供的一種基于FPGA的視頻流字符疊加處理系統(tǒng),在FPGA片設置了字符ROM模塊,開辟少量存儲空間用于存儲顯示過程中所需的所有字符信息,無需使用大容量外部存儲器件,利用FPGA的乘法器資源和流水線處理技術,實現在視頻流上實時疊加透明度可變的字符信息。通過字符透明度計算模塊和背景透明度計算模塊調整透明度和亮度方式可清晰顯示字符。通過增加超時消隱模塊控制字符疊加過程開啟或關閉,降低長時間顯示固定字符對顯示器件的損害。
本發(fā)明提供的一種基于FPGA的視頻流字符疊加處理方法無需大容量外部存儲器件,能夠在視頻流數據上完成實時疊加字符,動態(tài)調整疊加字符內容和位置,通過調整透明度和亮度方式可清晰顯示字符,通過超時字符消隱方式可減少長時間顯示固定字符對顯示器件造成損害。
附圖說明
下面結合附圖和具體實施方式對本發(fā)明作進一步詳細說明。
圖1為本發(fā)明的基于FPGA的視頻流字符疊加處理方法流程圖;
圖2為本發(fā)明的字符疊加計算過程示意圖;
圖3為本發(fā)明的字符ROM模塊中字符1的存儲示意圖。
具體實施方式
下面結合附圖對本發(fā)明做以詳細說明。
一種基于FPGA的視頻流字符疊加處理系統(tǒng),包括:監(jiān)測原始視頻流數據行列坐標位置、尋找字符疊加位置的行列位置監(jiān)測模塊;存儲在FPGA片上的字符位圖信息、根據字符選擇參數輸出字符信息的字符ROM模塊;根據透明度參數、亮度參數和視頻數據計算疊加后像素碼值的字符透明度計算模塊和背景透明度計算模塊;使用計算后的像素碼值替換原有像素碼值的字符疊加模塊和背景疊加模塊;根據超時參數計時、打開或關閉字符疊加信息的超時消隱模塊。所述字符ROM模塊是開辟在FPGA片上的存儲模塊,只存儲顯示過程中需要的字符位圖信息。根據使用需求,預先生成字符位圖,每像素點采用1bit標識,數據1表示字符,數據0表示空白背景;為提高ROM讀取效率,字符ROM模塊寬度等于字符位圖寬度,深度等于所有字符高度之和;所有字符高度相同,占用字符ROM模塊空間相同,根據字符選擇參數,通過基地址和地址偏移方式可以快速靈活的查找字符信息,進而實現視頻中字符內容更新。
如圖1所示:一種基于FPGA的視頻流字符疊加處理方法,具體步驟如下:
步驟1、帶有行場同步信號的原始視頻流數據進入行列位置監(jiān)測模塊,開啟行列計數,當行列計數值達到疊加起始坐標參數后,觸發(fā)字符疊加過程,并通知字符透明度計算模塊開始取字符計算;特別地,每幀圖像字符疊加的起始坐標可以不相同,進而實現視頻中字符運動效果。
步驟2、字符ROM模塊根據當前行列計數值和字符選擇參數計算當前字符的基地址和偏移地址值,從字符ROM模塊中讀取出當前字符位圖信息,每次只讀取一行字符位圖信息;若讀取出的字符位圖信息數據為1(數據1表示字符),則進入字符透明度模塊,否則進入背景透明度計算模塊;
步驟3、字符透明度計算模塊根據公式Dout=(α×Din+(256-α)×Dchar)/256,取原始視頻流數據中對應像素點的像素碼值,根據字符透明度參數和字符亮度參數,帶入公式利用FPGA的乘法器資源計算疊加后的像素碼值,傳遞給字符疊加模塊;
其中Dchar、α分別為字符的亮度和透明度信息,Din為輸入像素碼值,Dout為輸出像素碼值;特別地,當α=0時,字符完全不透明,α=256時,字符完全透明;每幀圖像字符亮度和透明度信息可以不相同,進而實現字符顯示效果動態(tài)變化。
步驟4、背景透明度計算模塊工作過程與字符透明度計算模塊相似,根據公式Dout=(α×Din+(256-α)×Dchar)/256,取原始視頻流數據中對應像素點的像素碼值,根據字符透明度參數和字符亮度參數,帶入公式利用FPGA的乘法器資源計算疊加后的像素碼值,傳遞給背景疊加模塊;特別地,背景范圍可以不僅限于字符背景,通過調整背景坐標范圍,可以擴大為覆蓋更大區(qū)域的背景;
其中Dchar、α分別為背景的亮度和透明度信息,Din為輸入像素碼值,Dout為輸出像素碼值;特別地,當α=0時,背景完全不透明,α=256時,背景完全透明;每幀圖像背景亮度和透明度信息可以不相同,進而實現字符顯示效果動態(tài)變化。
步驟5、由于透明度計算和讀取字符ROM模塊需要占用多個時鐘周期,字符疊加模塊或背景疊加模塊需要緩存視頻流數據等待計算過程結束后,將計算后的疊加像素碼值替換原位置像素碼值;
步驟6、超時消隱模塊獨立于字符疊加過程,監(jiān)測字符疊加過程是否已經超時,控制字符疊加過程開啟或關閉,FPGA開啟計數器,若計數值超過超時參數,則關閉字符疊加過程;計數過程中可復位計數值,重新開始計數,則避免字符消隱;在字符消隱時,計數過程停止,等待消隱使能信號失效,則開啟字符疊加過程;特別地,通過控制消隱使能信號和超時計數參數,可實現疊加字符閃爍功能。
其中,字符(或背景)透明度計算模塊運算過程如圖2。為提高FPGA運算效率,減少資源占用,整理計算公式Dout=(α×Din+(256-α)×Dchar)/256得到Dout=Dchar+(α×(Din-Dchar))/256。將原公式兩次乘法運算減為只需一次乘法。除法運算由于除數為256,可以通過右移8位實現,避免使用復雜的除法器資源。運算過程為:比較視頻輸入像素碼值Din和字符(或背景)亮度值Dchar大小,避免減法運算和加法運算中出現負數;將|Din-Dchar|和字符(或背景)透明度值α送入乘法器模塊,需要等待數個時鐘周期得到乘積結果;乘積結果右移8bit送入加法器;加法器根據比較器標志計算得出疊加后像素碼值即輸出像素碼值Dout。每幀圖像的字符(或背景)透明度和亮度值以及字符內容和位置在幀有效期間不變,兩幀之間的值可以變化,進而實現字符的變化和多種動態(tài)顯示效果。
其中,字符ROM模塊中存儲視頻顯示過程中所需的所有字符位圖信息。字符1的存儲形式如圖3,字符寬度8,高度16,每個像素點用1bit存儲標識,數據1表示字符,數據0表示空白背景。字符基地址等于字符選擇參數與字符高度乘積,偏移地址等于與疊加其實行的偏移行數,每次讀取一行字符位圖信息。
顯然,上述實施例僅僅是為清楚地說明所作的舉例,而并非對實施方式的限定。對于所屬領域的普通技術人員來說,在上述說明的基礎上還可以做出其它不同形式的變化或變動。這里無需也無法對所有的實施方式予以窮舉。而由此所引伸出的顯而易見的變化或變動仍處于本發(fā)明創(chuàng)造的保護范圍之中。