遠距離監視系統:人物的偵測與追蹤

Surveillance System at a Distance: Human Detection

指導教授:劉震昌 博士    研究生:鄭智鴻    日期:中華民國  九十五     

摘要

 過去傳統的監視系統因為使用廣角攝影機,所拍攝到的影像幾乎都是模糊不清,無法看清楚所拍攝到的人的臉部。所以為了改進這個缺點,我們設計了一個雙攝影機的即時監視系統來拍攝臉部特寫影像。

    在本篇論文中,這套監視系統中的攝影機,一台是固定式攝影機,為我們的主攝影機,用來拍攝整個場景,另一台則是PTZ攝影機,用來拍攝人臉的特寫影像。因為PTZ攝影機擁有能夠放大目標影像的功能,所以可以解決傳統監視系統在擷取影像上人臉太小的問題。

    主攝影機的功能是做前景偵測、人體定義。在前景偵測使用Kalman filter來達成,人體定義方面則使用一個kernel來辨識屬於人的前景。而PTZ攝影機的功能主要是人臉追蹤、偵測和擷取臉部特寫影像,人臉追蹤方面是利用雙攝影機之間座標轉換表格,從主攝影機中人臉的位置來求出PTZ攝影機移動的參數。人臉偵測則是使用膚色來偵測。

    論文中的系統除了整合現有技術,我們也提出了一些新技術。在人體定義所使用的kernel方面,我們改進成一個可調整大小的kernel並可達到多人的人體定義。在攝影機座標轉換表格方面我們多加入了Zoom的攝影機參數,和使用這個表格來追蹤人臉。在人臉偵測方面合併使用影像特徵來偵測人臉所在的位置。

 

研究方法概述

    首先使用Kalman filter [4]來做前景背景分離,這個方法主要概念是當物體出現時,我們去預測被覆蓋掉背景的pixel值,然後在利用簡單的frame subtraction就可以計算出哪些點是屬於前景的點。

        接下來我們在對我們估算出來的前景去做人體或非人體的辨識,我們首先使用一個我們制定的kernel來對每前景點作一個區域的分數計算,主要是利用人在場景中為直立的狀態來判斷是人的時候kernel分數會最高。

        建立calibration table,簡單的說就是建立一個masterslave camera之間座標轉換的table,以供查表使用。這個表格每一個點都有三個數值,分別為pantiltzoom,透過這些攝影機參數我們可以知道當物體在master camera的某個位置時,PTZ攝影機需要轉多少角度才能使鏡頭拍到我們要的物體。

        所以當前景確定是人體時,便將kernel中心座標回傳給系統,這時靠查表就可以知道PTZ攝影機轉動到現在人體所在的位置需要多少水平移動、垂直移動、和縮放的倍率了。

        最後,我們把擷取到的影像用skin locus [7]的膚色偵測演算法偵測出可能為膚色的部份,再加上其他影像處理做修正來找出影像中人臉位置。整個系統的運作流程如圖1.8所示。

 

研究方法流程圖

 

Kaman filter

        Kalman filter主要概念是假設說系統狀態的最佳資訊可以靠預測來獲得,若將它應用在前景偵測上的話,就是說我們可以靠著預測出像素點在t時間時可能的數值,然後把預測出來的數值當成一個基準值,我們就可以靠著這個基準值來判斷這個像素點是否可能是前景。而且Kalman filter還能夠不斷根據實際的像素值一直做修正的動作,跟Background Subtraction一樣有著背景更新的功能,所以不會因為明暗度的變化而偵測錯誤。

 

Human Classification

    我們使用一個中心被長方形圍繞的kernel (如下圖) 來做為辨識人體用的工具。因為人體是一個類似長方形的物體,表示說如果將這個kernel罩在人體上的話,會發現人體的前景點會幾乎落在白色的區域,但如果我們把這個kernel罩在非人體如車子的身上的話,會發現汽車的前景點會有很多部份落在黑色的區域,所以只要非直立的物體的前景點幾乎都會有部分落到外圍的部份。

Calibration table

        在我們場景裡,我們要建立的是一台固定的攝影機跟一台可移動和縮放的PTZ攝影機之間的座標轉換,下圖是攝影機畫面,固定的攝影機()PTZ攝影機(),根據圖4.30可以了解到我們要建立的攝影機之間的座標轉換表格就是當物體出現在master攝影機時,PTZ攝影機可以移動到物體所在的位置,並縮放到一個固定的倍率,使得物體在PTZ畫面中看起來大小差不多。而這個表格每一個位置都有三個數值,分別為pan(水平移動)tilt(垂直移動)zoom(縮放倍數),透過這些攝影機參數我們可以知道當物體在master攝影機的某個位置時,PTZ攝影機需要轉多少角度才能使鏡頭拍到我們要的物體。

 

人臉的追蹤與偵測

    在追蹤的部份,我們使用簡單的方法,因為進入場景的人物一直在移動,所以每當做完Human Classification後都會得到新的kernel中心座標,所以我們一直根據新的座標去查表然後一直下指令給PTZ攝影機讓它一直移動到人臉的新位置,每移動一次就做擷取影像的動作,一次擷取三張。

        人臉偵測的演算法,比較常見的就是利用膚色來判斷人臉的部份,所以我們的系統也是使用skin locus膚色模型來做處理。要使用skin locus模型要首先將影像中的每一個像素點顏色轉換到NCC (Normalized Color Coordinates),如圖1。顏色空間轉換到這個空間有一個好處,因為將原本的RGB顏色數值正規化,所以比較不會受到明暗度變化的影響,而且攝影機畫面中藍色的顏色比較少,所以我們只使用rg這兩變數,這樣的話比起其他三維空間的顏色模型更容易使用,計算量也較少。而skin locus就是在這個rg空間上的一段區域,如圖2。只要影像上的點經過轉換落在skin locus的範圍內的話,我們就可以判斷它可能是膚色。

      

                                                       1   rg空間                                   2 skin locus區域