網誌分類:未分類 |
圖片
網誌日期:2008-11-15 18:07
《相機的『人面偵測』技術原理》
~~ Ringo Cheung ~~

圖片來源:Popular Science[1]
現在流行的輕便數碼相機很多已配備『人面偵測』(Face Detection, 下稱 FD)技術,而自這技術問世後,愈來愈多的相機品牌也爭相仿傚,技術亦漸趨成熟,由最初的高失敗率和低效率,變成今日的幾乎一矢中的,可算是突飛猛進。
注意,FD 技術和『人面辨識』(Face Recognition, FR)是兩種不同的技術。FR 會將偵測出來的人面與資料庫中大量人物身份的資料作出比較,從而辨認出所屬人面的身份。而 FD 的功能只是在一個有其他雜物或背景的影像中分辨出是否有人的面孔存在。
基本原理
相機中藏有大量人面特徵的資料,例如兩隻眼睛的距離、不同光影下的情況、膚色等等。系統會將當前的畫面和內置的這些資料比較,而這些資料都是取自大量真正的人類面孔和膚色等等。通過比較,相機便能偵測畫面中是否有人類面孔存在[1]。 FD 可以通過不同的原理達成[2],這裡討論以下幾種:
1) 人面的膚色 2) 人面在實時錄像 (real-time video) 中的移動 (motion detection) 3) 邊緣定向對應 (Edge Orientation Matching) 人面的膚色 華盛頓大學的 Jay P. Kapur [3]在他的論文中指出:一個可達成 FD 技術的系統基本上用兩個步驟,一、系統首先在一個彩色影像或照片當中,偵測出是否有任何近似人面膚色的部份。這個過程會利用一個過濾器,而且必須依靠膚色和皮膚質感 (肌理)的資料。二、系統會將這些含有膚色的範圍由整個影像分離出來,再將它變成一個灰階 (gray scale) 影像,然後經由數學形態學 (mathematical morphology[4]) 的處理將影像中有用的資料,例如一些和眼睛、鼻孔、咀巴等等近似的形狀抽取出來,從而辨別人面的存在。

原本的RGB圖像

經處理後的 Hue (左) 及 Saturation (右) 影像

以上兩圖經處理後,屬膚色的地方便被抽取製成 skin map

Skin map 與 原圖像的 gray scale 影像合併

經 “thresholding” 處理後產生的正(左)及負(右)的二元(binary)影像

以上的正負影像經合併處理之後,最後便留下只有人面的局部區域
人面在實時錄像 (real-time video) 中的移動
一、移動偵測 (motion detection):這個方法假設人面在錄像中是會經常移動的。一個錄像 (video) 其實是由一連串的固定影像所組成,例如一秒的錄像可以由24張定格的影像 (image) 所組成。我們可藉由比較兩個連續影像的分別,就可判別出當中有人面的存在。Andrew Kirillov[5] 提供了有關錄像中移動偵測的原理及其 C++ 程式的原始碼。這個在錄像中偵測人面的方法有個很大的限制:錄像中的背景必須是靜止不動的,而且其他物體的移動也會影響偵測的準確度。
二、眨眼 (eye blinking) 的偵測:這個方法利用人必須時刻眨眼的原理,而且當兩隻眼睛一起眨眼時,也能提供人面存在的有力證據。在Patrick Reignier[6] 設計的系統中,在時間上連續的兩個影像 (與 video frame的情況近似) 會相減,相減的結果就是有差別的地方會明顯地出現。如果其中一張有眨眼的話,系統便會偵測出來,連帶人面的位置和大小也可準確地測出。

連續70個影像中的每5個影像
邊緣定向對應 (Edge Orientation Matching)
德國 Fraunhofer Institute for Integrated Circuits 的 Bernhard Fröba 及 Christian Küblbeck 是 FD 技術的權威,他們研發出一種叫 Edge Orientation Matching (EOM,暫譯作『邊緣定向對應』) 的方法去實現實時 (real time) 的 FD[7]。
首先,用作偵測面孔的系統會被數以萬計的真人面孔『訓練』(train),這樣在隨後的操作中系統便可分辨出哪些是人的面孔。另外,一個用以偵測人面的標準面孔模型 (face model) 亦必須預先建立。方法是用 2000 個人面的樣本,經過連串的數學運算,把不必要的元素 (例如人面中的光暗位和肌理) 除去,到最後只剩下一個像浮雕的、以邊緣為主的影像。系統會將這 2000 個經過處理的影像『平均化』,變成一個『平均』的面孔 (average face)。到最後,這個被平均化了的面孔會用數學方法變成一個只用『向量』(vector) 來代表的影像,而這個以向量來代表的影像便是標準面孔模型。

影像被『邊緣化』的過程 (由左至右)

被『平均化』的面孔(左)及標準面孔模型(右)
當系統偵測人面時,上述的標準模型便會疊在影像上,然後進行搜尋,而在每一個影像位置 (x, y) 上,被搜尋的位置會與標準模型比較,從而找出影像中是否有人面存在。
總結
人面偵測技術基本上已日漸成熟,而且已廣泛應用於數碼相機、錄像、保安、人機介面、機械人視覺等等系統當中。由於機場和火車站等等用以保安和緝拿罪犯等實時人面辨識系統的廣泛應用和實際需要,FD 及 FR 技術將繼續向速度及準確度方面改良,用更高效率的算法以配合實際需要。
參考:
[1] Popular Science, http://www.popsci.com/
[2] Robert W. Frischholz. The Face Detection Home Page, http://www.facedetection.com/facedetection/techniques.htm
[3] Jay P. Kapur. Face Detection in Color Images, EE499 Capstone Design Project, University of Washington, Department of Electrical Engineering, Spring 1997.
[4] Wikipedia on Mathematical Morphology. http://en.wikipedia.org/wiki/Mathematical_morphology
[5] Andrew Kirillov. Motion Detection Algorithms, The Code Project. http://www.codeproject.com/KB/audio-video/Motion_Detection.aspx
[6] Patrick Reignier. Vision for Man Machine Interaction, Finding a face by blink detection. ECVNet, 1995. http://www-prima.imag.fr/ECVNet/IRS95/node13.html
[7] Bernhard Fröba and Christian Küblbeck. Robust Face Detection at Video Frame Rate Based on Edge Orientation Features, Department of Applied Electronics, Fraunhofer Institute for Integrated Circuits, Germany, 2002.
JayDen @哲哲 2008-11-26 14:19
靈高2008-11-26 23:44
Fides 2008-11-23 00:50
靈高2008-11-25 00:30
Little Prince 2008-11-16 22:32
靈高2008-11-16 23:35
Vincent 2008-11-16 19:10
現在那個 brand 做 FD 最好呢?
靈高2008-11-16 23:34