蔡美嫦(華南理工大學 廣州學院,廣州510813)
隨著越來越多的學生到圖書館學習而圖書館的座位并未增加,出現(xiàn)了較多的書本(或其他物品)占座現(xiàn)象,導致座位入座率降低。近年來,許多高校對圖書館座位共享開展了研究,而物體識別、跟蹤是其中的一項關(guān)鍵技術(shù)。此外,該共享系統(tǒng)也可以用于自助餐廳座位選擇、火車站候車選擇座位等領(lǐng)域。該共享系統(tǒng)主要包括判斷座位是否有人、座位無人的時長和給出可用座位有哪些3個步驟。如果能大規(guī)模使用該系統(tǒng),將會給學生入座帶來極大的便利。
OpenCV是采用C/C++語言編寫的,可以應(yīng)用在Linux/Windows/Mac等操作系統(tǒng)上的開源的計算機視覺庫。OpenCV的設(shè)計目標是執(zhí)行速度盡量快,主要關(guān)注實時應(yīng)用。因為OpenCV是采用優(yōu)化過的C代碼編寫的,所以他能夠充分地利用多核處理器的優(yōu)勢。另外,OpenCV的一個目標是構(gòu)建一個簡單易用的計算機視覺框架,以幫助開發(fā)人員更便捷地設(shè)計更復雜的計算機視覺相關(guān)程序。OpenCV包含500多個函數(shù),覆蓋了計算機視覺的許多應(yīng)用領(lǐng)域,如工廠產(chǎn)品檢測、醫(yī)學成像、機器人等。OpenCV還提供了Python、Ruby、MATLAB以及其他語言的接口。
本文研究基于OpenCV的座位共享系統(tǒng)技術(shù),其工作流程如圖1所示。首先在圖書館的自修區(qū)裝攝像頭監(jiān)控自修區(qū),然后依次進行圖像采集、圖像預(yù)處理,接著判斷座位是否有人,如果座位無人則進行座位無人時長判斷,經(jīng)過以上步驟即可給出座位信息。該共享系統(tǒng)是使用OpenCV 2.4.9,在Linux環(huán)境下使用QtCreator進行編程實現(xiàn)。
首先,將拍攝的自習室圖像進行灰度化處理,即把RGB彩色圖像轉(zhuǎn)換成灰度圖像,進行初步處理,為后面的步驟做準備。此處使用OpenCV中的轉(zhuǎn)換函數(shù):
cvtColor(currentBGRFrame,currentGaryFrame,COLOR_BGR2G RAY);
其中currentBGRFrame表示輸入的彩色圖像,currentGaryFrame表示輸出的灰度圖像。
輸入的彩色圖像和經(jīng)過灰度變換的自修室監(jiān)控圖如圖2和圖3所示。由于經(jīng)過灰度處理后還需要對圖像進行去噪處理,所以采用中值濾波的效果會相對理想。

圖1 位置共享系統(tǒng)工作流程

圖2 輸入彩色圖像

圖3 輸出灰度圖像
由于自修室的空間較大,事先框選出座位的位置即設(shè)置感興趣區(qū)域(ROI,region of interest),可以專注和簡化工作過程,提高接下的座位有無人判斷的精度。定義ROI區(qū)域有兩種方法:
1)使用表示矩形區(qū)域的Rect:
imageRIO=image(Rect(x,y,width,heigh));
其中x,y分別為指定矩形左上角的坐標,width,heigh分別為矩形的長和寬。
2)指定感興趣行或列的范圍(Range):
imageROI=image(Range(,),Range(,));
其中Range是指從起始索引到終止索引(不包括終止索引)的一段連續(xù)序列。
本共享系統(tǒng)采用第一種方法。
在對圖像進行感興趣區(qū)域(ROI)定義后,就可以開始檢測ROI區(qū)域內(nèi)是否有人,本共享系統(tǒng)使用三幀差法,通過判斷ROI區(qū)域有無動態(tài)物體來推測座位是否有人。主要步驟如下:
1)首先在監(jiān)控視屏中按先后順序定義任意連續(xù)3幀圖片的灰度圖為pre_2_gray_frame,pre_1_gray_frame,current_gray_frame。
2)前面兩幀的灰度圖的差為:
pre_frame_difference=pre_1_gray_frame-pre_2_gray_frame后面兩幀的灰度圖的差為:
current_frame_difference=current_gray_frame-pre_1_gray_frame
3)取絕對值:
abs_frame_difference=abs(pre_frame_difference);其中abs()函數(shù)的作用是返回整型參數(shù)的絕對值。
4)位深改變:

圖4 判斷座位有無人效果圖
abs_frame_difference.convertTo (abs_frame_difference,CV_8UC1,1,0);
如圖4所示,只要檢測到有運動物體,就會有黃色框框著。由此可以判斷該位置有人。三幀差法的優(yōu)點是實時性高。但是應(yīng)對光驟變能力較弱,目前還在改進中。
本文研究了OpenCV在人物識別、跟蹤的具體應(yīng)用,在Linux系統(tǒng)中使用OpenCV2.4.9和QtCreator通過C++語言實現(xiàn)了對監(jiān)控攝像頭監(jiān)控到的自修室情況進行分析。經(jīng)過多次實驗測試,總體識別效果滿意,有一定的實用性。但是對于顏色相近的運動物體識別能力和應(yīng)對光驟變能力還有待提高。目前我們的工作是進一步完善該系統(tǒng),并實現(xiàn)在手機上實時查看圖書館自修室座位情況。