米 波,賀鋒濤
(西安郵電大學 電子工程學院,陜西 西安 710061)
當代社會中,視頻圖像采集系統(tǒng)應用越來越廣泛,從工業(yè)控制到工業(yè)檢測,從醫(yī)學的圖像處理到計算機智能機器人的視覺識別等等。隨著3G時代的到來,4G網絡的開啟,以視頻聊天為基礎的視頻通信、網絡通信的主要傳輸基本元素更加偏向以視頻傳輸為主。在此大背景、大趨勢下,視頻系統(tǒng)如何才能在滿足低功耗的基本要求下,把接收到的大量的視頻流信息及時快速的顯示出來成為迫切問題。本文以STM32F107為主芯片,在相同硬件基礎之上,對大量視頻流信息進行了視頻流圖像更新方法的研究,并提出了基于STM32視頻流圖像更新的解決方案。
視頻流產生的基本原理是人體視覺的暫留現象和圖像的動態(tài)更新兩個因素共同作用的結果??茖W研究表明,視頻流動畫效果的產生需要每秒24副圖像動態(tài)更新才能完成。也就是說,每產生一秒的視頻流需要24副圖像。那么在具體的應用中,就要計算實際的數據量。以當前的比較主流的320×240TFT LCD液晶屏為例(以下同例),一秒的實際的數據量應為24×320×240=1843200,其中由于TFT LCD液晶是以像素點進行工藝制成,每個像素點在數據對應上是一個字節(jié)(詳細請參閱相關TFT LCD液晶數據手冊),那么通過計算應該為1843200 個 字 節(jié),即 1800KB=1.75MB。而STM32F107主芯片的工作頻率為72MHz,也就是說0.024S(1.75/72)內完整的刷新一秒內的數據量。但是由于液晶在顯示的過程中還需要對圖像信息維持(即圖像在顯示的過程中,圖像每刷新過后,由于材質的因素,一旦沒有信號則圖像信息就會消失),所以需要不斷的刷新進行數據維持,而且不同材質工藝制作維持時間不同。以經驗值0.02S來計算,最后可以得出,要在一秒內以這樣的數據量進行計算,那么在一秒內需要對液晶屏幕至少要進行22次的刷新。這個計算結果雖然在常用的視頻流使用中不會造成很大的影響(觀察者進行觀察時不會有明顯視頻延時的感覺),但是在中大型視頻流系統(tǒng)和視頻流加速放映時,視頻流遲滯,圖像模糊,重影等等現象就比較嚴重。
針對此問題,本文提出基于STM32視頻流圖像更新的解決方案。
硬件平臺主要以STM32F107為主芯片;液晶屏,以3.5寸320×240TFT LCD液晶屏;其他硬件有STM32F107最小系統(tǒng)電路;SD卡,由于數據量比較大,將大量數據儲存在SD中;若干按鍵。主要的硬件原理圖,如圖1所示:
圖1 主要硬件原理圖
軟件平臺主要使用keil for ARM ,JTAG下載器。
通過上述的原理描述和實際的應用發(fā)現,在每一秒與每一秒之間的數據顯示中,液晶顯示的部分區(qū)域是不會變化或者很少變化的。能否在數據進入液晶顯示之前,進行數據的分析,對不同的數據進行特殊處理,從而達到減少送入液晶顯示的數據壓力(即直接的減少了),間接的減少了主處理器用于圖像更新數據計算時間。具體方案如下:
(1)首先,對整個顯示圖像進行顯示區(qū)域的分割,以常用分割為例,分為8個區(qū)域,如圖2所示。為了便于計算可以采用等面積分割,但是在實際中可以根據不同的需要進行菱形分割,三角分割等等。
圖2 對圖像進行顯示區(qū)域的分割
(2)進行圖像對比。通過前面的原理,可以得知,一秒更新24圖像,但是在對比一秒內前后兩幅圖像中的相同區(qū)域中,可以進行隨機抽取的方法,來加快對比的時間和效率,而且在兩副圖像變化的時間內,由于人體視覺的暫留現象和液晶工藝的原因,輸出到液晶的圖像消失的時間相對于圖像的更新是比較長的,對分割好的圖像塊中的部分像素點,進行隨機性的抽取,來對比同一位置的圖像是否有更新,從而代替對整塊圖像的完全更新。根據實際得到隨機抽取的比例值80%左右即可。
(3)數據優(yōu)化。由于在圖像對比的過程中,主要是針對兩幅圖之間進行對比的,該步驟將其應用到整個24副圖像中,即若前兩個兩幅圖的對比重復率超過80%,那么第三副圖像與第二副圖像對比重復率只要檢測70%,第四幅圖與第三幅圖對比重復率只要檢測60%...,以此類推就可以得到一些實際經驗性的逐級檢測的加權系數。通過不同的加權系數的設置來對該圖像刷新進行快速的加速顯示。
主要的設計流程圖如圖3所示:
圖3 主要設計流程圖
通過程序流程圖可以得知,在程序設計中,多次調用圖像分割后的隨機抽取函數對比結果的有效性是與分割大小有直接關系的。而且更為關鍵的是,一秒內圖像更新的數據量大大的降低。以一個分割八塊的圖像為計算:在最不理想情況下,即每個圖像分割后同等位置的八塊圖像的重復率都要小于80%,此時一秒內的每幅圖基本不相同。這種動態(tài)圖像更新過程中,圖像與圖像之間突然變化,是不可能的。其原因為,圖像變化是連續(xù)的,不斷更新的。那么該數據量的計算為:
C=(320×240/8)×8×1×24=1843200=1800KB
即為此基本原理中所得到的數據量。
在最理想情況下,即每個圖像分割后同等位置的八塊圖像的重復率都大于80%,此時其一秒內每幅圖都基本相同,也就是說視頻流一秒內沒變化。那么該數據量計算為:
C=(320×240/8)×8×(0.8+0.7+0.6+0.5×21)=967680=945KB
通過前后兩個值進行對比可以很明顯的看到數據量的變化。
而且以上兩種都是很極端的情況,同時在此計算中并沒有考慮到分塊前后計算量的變化。表1和表2是實際得到數據,經過keil for ARM斷點調試得出。
表1 不進行數據分割下對比
通過兩種方法的對比計算,此方案確實可行而且還大大的加快的主芯片使用效率。
本方案與原來視頻流的每一幀的圖像刷新方法相比,對視頻流中每一幀圖像重復顯示部分的更新操作大大減少。主要的原理是視頻流連續(xù)輸出時,必然有一部分的圖像數據不會變化,只是對圖像變化的部分進行圖像的顯示更新,并將圖像處理理論中關于圖像分割處理的基本思想遷移到實際的應用中。具體的使用該方法是應遵從先分割(處理),再計算的思想,這樣的好處是充分利用人體視覺的暫留現象和液晶工藝需要數據維持等因素,以求減少計算圖像的面積,從而達到減少液晶顯示模塊占用處理器整個工作的時間的目的。雖然本文提供了數據和基本的方法,但是還有一些不足之處,數據適用性需要進一步的驗證,以便做更好的計算模型,得到更加準確的計算結果。
[1]王炳乂.面陣CCD圖像采集與多接口傳輸系統(tǒng)[D].成都:電子科技大學,2009.
[2]談衛(wèi)星.全彩色LED顯示屏系統(tǒng)的設計與實現[D].杭州:杭州電子科技大學,2011.
[3]ZHANG XiaoFeng,ZHANG CaiMing,TANG Wen-Jing,et al.Medical image segmentation using improved FCM[J].Science China:Information Sciences,2012(5):1052-1061.
[4]JIA Jianhua ,JIAO Licheng ,CHANG Xia .Image Segmentation via Mean Shift and Loopy Belief Propagation[J].Wuhan University Journal of Natural Sciences,2010(1):43-50.
[5]黃智偉,于紅利,寧志剛,等.基于STM32F417的圖像采集系統(tǒng)設計[J].單片機與嵌入式系統(tǒng)應用,2012(10):48-51.
[6]覃松,李冰.JPEG圖像解碼器在STM32上的應用研究[J].單片機與嵌入式系統(tǒng)應用,2013(5):14-16.