遠距離監視系統:利用立體視覺實做人物的偵測與追蹤
Surveillance System at a Distance: Human Detection and Tracking using Stereo
指導教授:劉震昌 博士 研究生:吳秉荃 日期:中華民國 九十六 年 七 月
摘要
在本篇論文裡,這套監視系統中的攝影機,兩台是固定式攝影機,為我們的主攝影機,用來拍攝整個場景;另一台則是PTZ攝影機,用來拍攝人臉的特寫影像。因為PTZ攝影機擁有能夠放大目標影像的功能,所以可以解決傳統監視系統在擷取影像上人臉太小的問題。
主攝影機的功能是做前景偵測、人體定義。在前景偵測使用立體視覺來達成,人體定義方面則使用一個Kernel來辨識屬於人的前景。而PTZ攝影機的功能主要是人臉追蹤、偵測、擷取和辨識臉部特寫影像,人臉追蹤方面是利用雙攝影機之間座標轉換表格,從主攝影機中人臉的位置來求出PTZ攝影機移動的參數。人臉偵測則是使用小波轉換來偵測,而人臉辨識則是利用主要成分分析來達成。
論文中的系統除了整合現有技術,最主要是實做三攝影機(兩台固定式跟一台移動式攝影機)所建構而成的立體視覺系統,改進了由單一攝影機建構上的不足。由雙攝影機所建立的前景偵測,理論上從影像中所得到的資訊會比單一攝影機來的多。在本系統中,所實做的方法並不會因為得到較多的資訊而忽略了執行效能,跟單一攝影機比較,不相上下。
研究方法概述
一開始會先從兩台AP300攝影機擷取左右影像,接著利用OpenCV所提供的校正工具(Calibration Toolbox)將原始影像校正,校正後的影像需要經過一些前處理,例如Coarse-to-Fine Multi-Resolution Matching Scheme的方法,再來就是匹配的處理,在此我們利用Block Matching Algorithm,原因在於此演算法容易實做且執行效能快速,之後再經過一些形態學(Morphology)的後處理,將前景與背景分開來,並且去除掉不必要的雜訊,利用Histogram Peak可以將場景中多個前景分層,再利用Kernel辨識是此物體為人並且一一追蹤,如果在場景中沒有偵測到人體,則回到最初擷取攝影機影像;如果有偵測到人體的存在,則PTZ會追蹤人體目前在場景中的位置,不僅偵測人體,還會將人體的頭偵測出來,讓PTZ調整追蹤人體至最佳位置,人頭的偵測是利用OpenCV所提供的Haar-Like Feature演算法來達成,接著將偵測到的人臉,利用主要成分分析(PCA)來辨識人臉,最後再將影像儲存至資料庫中。
研究方法流程圖
立體視覺
在科學上,從影像中獲取進而了解或量測可見三維物體表面資訊的研究概稱為電腦視覺。不管人類或動物的視覺系統,都能適應外在變化的劇烈環境,遠在19世紀中,立體影像(Stereopsis)這個觀念已被發覺,雖然在單眼系統也能從環境中獲取到影像的資訊,但在人類的雙眼系統(Binocular Process),卻是從兩張影像模擬三維空間上實際的物體,因此更能改進由單眼系統所不足的資訊。
前景偵測
前景,照字面的意思來講的話,就是指不屬於背景的物體,所以通常在一個影像監視畫面裡的前景,大多是人、車子、動物等等這些會移動的物體,所以在監視系統裡的前景偵測要做的就是把這些會動的物體分離出來。
那要如何做呢?其實它的基本概念很簡單,我們可以想像現在有一張影像,這個影像裡的景物都是靜止不動的,我們先將稱它稱為背景,如果這時假設此影像中出現一個人,我們可以發現此人所在的影像位置把原本的顏色給覆蓋掉了,因為人體本身原本不存在之前的影像中,所以如果我們把背景跟有人體出現影像的像素值拿來相減,就會發現人體身上的像素點有數值,其它像素點的數值都是零,這時將相減後的值以彩色空間來表示的話,就會發現人體是灰色的,其它都是黑色的,這時發現這樣不就是我們要的前景偵測結果嗎。這就是前景偵測的基本概念,利用背景像素值跟前景像素值的差異,來偵測出前景。
利用立體視覺偵測人體與追蹤
人體偵測最主要的目標在對於偵測者能自動的追蹤人體所在位置,其中最重要的步驟則是如何將前景切割(Segmentation)出來以及把他轉換到不同層面(Layer)的視差圖。本章是有關人體偵測方面,介紹如何用立體視覺裡的視差圖實做出從前景中辨識人體的存在。
Pyramid: 攝影機在取得左右影像後,要做之間的對應(Correspondence)之前,我們需要做一些前處理的工作,稱為Coarse-to-Fine Multi-resolution Matching Scheme。
Histogram Peak: 在左右影像做完前處理及匹配演算法之後,接下來則要做後處理的部份,我們利用直方圖的特性完成它。
Human Classification: Center-Surround Rectangular Kernel,一個矩形,那我們要如何去使用它呢,其實觀念很簡單,我們在上一節有提到過,人體是一個類似長方形的物體,表示說如果將這個Kernel罩在人體上的話,會發現人體的前景點會幾乎落在白色的區域,但如果我們把這個Kernel罩在非人體如車子的身上的話,會發現汽車的前景點會有很多部份落在黑色的區域,只要非直立的物體的前景點幾乎都會有部分落到外圍的部份。
人臉的偵測與追蹤
在我們的場景中,當人物進入時,會先經過前景偵測然後確認位置,再經由PTZ移動後將進入的人的臉部拍攝下來,這樣的動作通常只有一張畫面,如果剛好拍攝時人物的臉部向左右轉動的話,很可能只會拍攝到側面,這樣我們特地去抓取臉部特寫就沒有意義了,所以我們系統必須讓人物一進到場景時,就開始追蹤他,直到他離開場景,都必須一直拍攝,這樣至少可以拍到較多張影像,就算有一、二張沒拍好,其它的影像還是可以提供給我們使用。
但是這些拍攝好的影像雖然有包括到臉部的資訊,但是背景的資訊不是我們想要的,所以接下來的工作就是做人臉偵測,把影像中人臉的位置找出來,然後只截取某個小範圍,把多餘沒用的影像資訊去除,就是我們最後要做的事。
利用PCA實作人臉偵測
主成份分析是由K.Pearson 首先提出,再由Hotelling 加以發展的一種統計方法。當在進行研究時會有著許多的資料數據,經常面臨在許許多多可能有相互關係存在的變數中,將如何取捨這些變數的難題。換言之,如何將這許多變數予以減少,使其改成較少幾個相互獨立的線性組合,是研究開始階段的重要工作。主成份分析乃將少數幾個變數予以線性組合,使經由線性組合而得到的成份(Components),其變異數為最大;換句話說,即在不同成份能顯示出最大的個別差異。