陳紅,于旭茂,聶小燕
(電子科技大學成都學院 信息與通信工程系,四川成都,611731)
隨著信息技術的發展,基于視頻圖像中對感興趣的目標提取,已經逐漸滲透到人們生活的方方面面,吸引越來越多的學者和研究機構參與該領域的研究。基于視頻圖像中對感興趣的目標提取已廣泛應用于監控視頻、人臉識別、車道線識別、安全帽佩戴情況檢測、行星探測等領域。目前,對視頻圖像中感興趣的目標提取的研究方法有很多,如:基于FPGA的實時視頻采集預處理系統設計[1]、基于OpenCV的運動目標檢測與跟蹤[2]、基于Zynq-7000的視頻處理系統框架設計[3]、基于DM642視頻采集處理系統硬件設計[4]。
本文主要研究基于MATLAB GUI界面視頻處理系統設計。通過編寫MATLAB GUI界面的回調函數,以實現視頻處理系統的搭建,用戶在使用過程中無需了解程序是如何編寫的,只需掌握具體操作步驟。
視頻處理系統方案設計框架如圖1所示。該系統主要由4個模塊組成分別為:

圖1 視頻處理系統的方案設計框架
(1)導入并讀取視頻模塊:將視頻導入MTALAB GUI系統;
(2)讀取視頻模塊:讀取視頻信息;
(3)分幀模塊:將視頻通過函數拆解為幀;
(4)分幀圖像處理模塊:對拆解的幀圖像進行二值化、邊緣化、降噪處理;
(5)顯示視頻模塊:將輸出的每一幀顯示在MATLAB GUI界面中。
MATLAB GUI(Graphical User Interface)圖形用戶界面是指采用圖形形式顯示的計算機操作界面,是MATLAB用戶可視化交互式的工具。
1.2.1 界面設計方法
MATLAB GUI界面操作流程如圖2所示,最終通過GUI設計形成兩個文件: 其一,是對GUI中各組件的描述,后綴名為“.fig”文件;其二,是控制GUI組件的程序代碼,后綴名為“.m”文件[5]。該系統界面設計分為引導界面和主界面兩部分,用戶點擊引導界面的“進入”按鈕,即可進入主界面,點擊“退出”按鈕,即可退出系統;當用戶進入主界面后,可以看到該界面分為視頻區域和控制面板區域兩部分,其中視頻區域實現視頻的播放;控制面板區域實現視頻的導入、暫停、繼續、停止等控制操作。

圖2 MATLAB GUI界面操作流程圖
1.2.2 界面美化
在MATLAB軟件背景中,如果只是簡單的背景顏色難免會顯得單調乏味,而在背景的適當位置嵌入優美的背景圖片即可解決這個問題。實現原理是在初始化函數OpeningFcn中建立一個和窗口大小相同的axes并在其中顯示圖片,最終該系統界面優化效果如圖3、4所示。

圖3 視頻處理系統引導界面
該系統包含5個基本視頻處理模塊和其他模塊,每個模塊既相互獨立,又相互關聯。在MATLAB視頻及圖像處理工具箱中[6],通過調用不同的功能函數即可實現不同模塊的不同功能。

圖4 視頻處理系統主界面
將視頻導入視頻處理系統。其基本原理是通過對話框獲取用戶的輸入,并返回路徑和文件名字符串,然后對獲取的視頻數據進一步處理。其實現方法為調用uigetfile函數創建文件名和處理對話框,然后獲取文件名信息。需要注意的是,僅當文件存在時才成功返回。如果用戶選擇了一個不存在的,就會顯示錯誤信息。
對導入的視頻進行讀取。視頻讀取的內容包含:視頻文件名、視頻文件路徑以及視頻總幀數等。隨著MATLAB軟件的不斷創新,如今可以滿足多種視頻文件的讀取,其中常用的視頻讀取函數包含Aviread函數和VideoReader函數,由于Aviread函數只能讀取avi格式的視頻文件,而VideoReader函數可以讀取多格式視頻文件,因此為滿足不同用戶的需求,該系統選用VideoReader函數讀取視頻文件。
視頻的本質是由靜止的畫面組成,這些靜止的畫面被稱為幀[7]。當幀率大于15幀/秒時,連續播放的圖像就會形成視頻。概括來說,視頻是每一幀圖像經過連續播放而形成的視覺效果。由于幀的本質是一張圖片,所以對圖片的二值化、邊緣化、降噪處理方法也應用于視頻處理中。該系統采用逐幀提取的方式實現視頻的分幀。通過調用for循環函數將連續的幀圖像拆分為每一幀圖像。
分幀圖像處理是該視頻系統的核心模塊,主要目的是采用不同的方式提取視頻中感興趣的目標,滿足不同用戶的需求。
2.4.1 分幀圖像二值化
在數字圖像處理中,二值化圖像不僅可以使圖像變得簡單,還可以凸顯出感興趣的目標輪廓。圖像的二值化是指將圖像上的像素點的灰度值通過閾值化處理設置為0或255[8],其中灰度值為0的像素點所組成的集合為背景區域,灰度值為255的像素點所組成的集合為目標區域,最終使圖像呈現出黑白效果的過程。其中閾值化處理的關鍵取決于閾值的選擇,通常閾值的選擇方式有Otus(最大類間方差自動閾值法)、迭代法和最小誤差法。三種方式的原理和實現方法如下:
(1)Otus(最大類間方差自動閾值法)[9]:其基本思想是根據灰度特性將圖像分為背景和目標兩部分,然后計算目標和背景的類間方差;最后對比每個方差的大小。若類間方差越大,則說明錯分的概率越小,因此,需要選擇其中類間方差最大的值,并將其設置為閾值。主要實現的函數有graythresh()和im2bw()。
(2)迭代法:基本思想是將閾值的初始值設置為圖像最大和最小灰度值的平均值,根據初始閾值將圖像分為目標和背景,求灰度值的平均值 ,然后判斷新的平均值是否等于如果初始閾值相等,則閾值為新的平均值; 否則,將閾值設為目標和背景的平均灰度值之和的一半,繼續迭代,直到計算出閾值。
(3)最小誤差法[10]:最小誤差法,也稱為KITTLER算法,是一種對直方圖進行閾值分割的方法。 基本思想是假設灰度圖像由目標和背景組成并滿足高斯混合分布,分別計算目標和背景的均值和方差,根據最小分類得到最小誤差目標函數。目標函數最小時的閾值為最佳閾值。經過測試發現,三種閾值分割方法得到的二值化圖像大致相同,但迭代法和最小誤差法運行速度過慢,因此為減輕系統負擔,本文采用Otus法進行閾值分割。
2.4.2 分幀圖像邊緣化
在計算機視覺與機器視覺中,為減少數據量,并去除不相關的信息,保留圖像主要語義與形狀信息,需要對圖像進行邊緣化處理。圖像邊緣化是指其周圍像素點變化不連續的像素點的集合[11],即圖像中亮度明顯且急劇變化的地方。其基本思想是通過計算像素點的梯度,反映圖像灰度分布,通過局部微分技術,獲得邊緣檢測算子。常見的邊緣算子有Canny邊緣檢測算子、Roberts邊緣檢測算子、Laplacan邊緣檢測算子和Sobel邊緣檢測算子等[12]。由于Roberts邊緣檢測算子和Laplacan邊緣檢測算子定位精確度高Laplacan,但對噪聲敏感;Sobel邊緣檢測算子抗噪聲好,但計算量大而且定位精度不高。而Canny邊緣檢測算子具有提取效率高、抗噪能力強和邊緣定位準確等優點,因此該系統采用Canny邊緣檢測算子和函數edge()結合的方式實現分幀圖像邊緣化。
2.4.3 分幀圖像降噪
由于視頻在采集的過程中難免會受到光線、傳感器、攝影機等綜合因素的影響,造成圖像含有噪點,質量較差,需要對圖像進行降噪處理,才可以獲取清晰的目標。圖像的降噪處理又稱為濾波。常用的濾波器有均值濾波器、拉普拉斯濾波器、中值濾波器和最大值/最小值濾波器等。本文采用中值濾波器。
中值濾波是基于排序統計理論的一種非線性信號處理技術[13]。不僅可以消除雜散的孤立點,還可以有效的保留圖像的邊緣信息。其基本原理是將其每個像素點的值用該點領域中各點的中間值代替,讓周圍像素點灰度值的差比較大的像素點與周圍像素點的灰度值接近,從而實現消除孤立點的噪聲。主要實現的函數是medfilt2()函數。
由于圖片的本質是由像素點組成的集合,因此采用坐標軸函數axes()和inshow()函數實現圖片的顯示。而視頻的本質是連續播放的圖片,因此在坐標軸中逐幀播放分幀圖片即可實現視頻的顯示。
(1)打開視頻文件
采用uigetfile()函數,通過對話返回路徑和文件名字符串。主要實現代碼片段如下:
[filename ,pathname]=uigetfile({'*mp4';'*.avi';'*.*';},''打開視頻');
(2)暫停與繼續
在視頻播放過程中,往往需要暫停視頻并觀察某一幀的變化,此時需要采用uiwait()和uiresume()函數,其基本原理是當程序執行到uiwait函數時,程序會暫停等待,直到遇到uiresume函數,才會停止等待繼續執行程序。
(3)停止
由于圖像的顯示是通過for循環逐幀輸出,因此停止視頻的本質是終止for循環。其實現步驟是:首先,定義全局變量flag的初始值為0;然后,當停止按鈕按下時,flag的值變為1;最后,在for循環中調用if語句檢測flag的值,若flag的值為1,則調用break函數跳出循環,若flag的值為0,則繼續執行循環。
(4)清除數據
當視頻播放完成時,需要對控件的數據進行清理。在MATLAB GUI界面中只需更改axes的相關屬性。主要代碼實現如下:
axes(handles.axes); cla ;axis on; box on;
其中cla:清除坐標區,axis on:關閉坐標軸;box on:關閉圖像的邊框。
(5)退出系統
該系統采用提問對話框,當用戶點擊退出系統按鈕時,在用戶界面會自動跳出退出系統對話框,如圖5所示,用戶只需點擊確定按鈕即可實現退出系統。

圖5 退出系統對話框
視頻處理系統操作過程如下:在控制面板區域中選擇點擊“打開視頻文件”按鈕,選擇需要處理的視頻文件,然后在視頻區域中依次選擇“播放視頻”按鈕、“二值化處理”按鈕、“邊緣化處理”按鈕和“去噪處理”按鈕,即可分別顯示處理后的結果,如圖6所示。

圖6 視頻處理系統處理結果
該系統通過導入視頻,采用MATLAB軟件可實現視頻分幀處理,對每一幀進行二值化處理,邊緣化處理,降噪處理,設計交互式GUI界面,可直接顯示處理后的視頻。實驗結果顯示,經過處理的視頻擁有較好的視覺效果。