第一章 簡介
1.4 論文結構
本論文接下來的第二章會先介紹本研究所引用參考到的文獻。第三章會介紹 系統的流程、系統所使用的方式、參數等等。第四章詳細的說明了實驗的流程、
環境等,以及實驗的結果、數據、分析。最後第五章是結論與未來展望。
第二章
文獻探討
要做到教室內學生的觀察,首先在前處理時,要在一段影片中分割出一個一 個的學生,再對學生的動作去做分析。至於要如何分析學生的動作,這有許多教 育研究學者提出了不同的觀點。本篇論文除了一般電腦視覺影像處理的技術之外,
同時也做了一些教育觀察法的分析與研究。本章將分成四個部份來探討過往文獻。
分別是:教育研究、人物的分割與多攝影機的校正、人物肢體辨識、過去影像處 理技術討論四個大方向。
2.1 教育研究
在分割出學生、辨識出人的肢體動作之後,比較重要的一點是:在一節課這 麼長的時間裡,我該觀察學生什麼?Wendy L. Bjorklund 和 Diana L. Rehling 在 [Wed10]做的統計研究指出,不論學生自己認或或是觀察者實際觀察到的使學習 狀況變差情形有下列幾種:遲到早退、傳紙條、飲食、睡覺、與鄰座同學聊天等。
而學生在課堂上舉手又特別重要。學生舉手有可能是因為聽不懂教師的授課、對 教師授課有疑問等。這些情況都有可能會打斷教師目前的上課,讓課堂中斷。顯 然學生舉手是一個非常重要的因素。因此,本研究會著重在學生上課舉手為主。
另外還有一個議題是:該如何觀察學生?吳怡君[1]、紀宜岑[2]中都利用了 時間取樣觀察法,[5]這份文件中提到了各種觀察法。時間取樣顧名思義是在每 固定一個時間對觀察者做一個取樣。好處是可以知道觀察者長時間下來的動態,
但缺點是若有突發事件,會造成無法觀察到。但如果改成使用事件取樣觀察法,
針對特殊的事件去做記錄的話,或許就可以另外記錄一些比較特別的事件。另外,
鄭玉玲在[6]中提到「在工作中」的觀察表格,如何決定觀察順序等等的。在本 研究中,會固定一段時間對學生做掃瞄記錄。同時,也會記錄下一些課堂上影響 課堂進行的突發事件。同時結合了上述的時間取樣觀察法與空間取樣觀察法。綜 合二種觀察法的優點讓系統能夠更好分析學生行為。
2.2 人物的分割與多攝影機的校正
Weiming Hu 等人於[Wei06]中提到可以找人物的垂直投影去判斷人物。相較 於其他的事物,人在站立時 motion 垂直的投影將會是一個比較特別的 feature。
至於多攝影機校正的部份,先前的研究較少是以人當主角,比較多研究者拍 攝停車場的畫面,利用車子的移動方向進行多攝影機的校正。例如 Lalit Gupta 和 Suwei Ma[Lal01]以及 Xiaogang Wang 等人[Xia09]的論文中提出了不用很精準 的校正就可以測量車流。其實是應用了時間的要素,觀察車子 motion 的移動。
2.3 人物肢體辨識
人物肢體辨識從早年開始已有許多人發表過相關的論文。說起人物的肢體辨 識,其實範圍蠻廣的,小範圍的從手勢的辨識、頭部動作辨識,到大範圍的上半 身動作、全身動作辨識等分別需要不用的技術去達成。
一、 手部動作辨識
手部辨識方面,過去的研究大多是針對手語為主。由於聽障人士在口說語言 上溝通有許多困難。目前已有研究發展出一套語音辨識系統,把語音當作是輸入 資料,因此,許多人也希望使用手語當作輸入資料。也因為這種想造福大眾的想 法,再加上彩色影像的普及,開始有了多許多手語辨識的研究,而這些研究也是 以手部動作為中心。
在 Lalit Gupta 與 Suwei Ma 在[Lal01]中,利用手部輪廓線的斜率、曲率等當 作特徵;Qing 等人在[Qin08]也提到用各種不同的 Haar-Like feature 做為特徵,進 而去辨識手勢。不過這二種方法都是依手的細部形狀去辨識手的姿勢,若手有一
Jina Jina Lee 和 Stacy C. Marsella 針對了頭部動作辨識也做了研究[Jin10]。該 研究結合了自然語言,研究人在說話時因各種不同的語氣、字句所附加的各種頭 部動作,並使用 HMM 去學習各種頭的動作與 feature 關係。另外,Sargin, M.E.
等人在[Sar08]中,同時也認為人在講話的各種不同的語句音調會影響頭的旋轉角 度、動作。因此,利用了頭的中軸在三度空間中的尤拉角(Euler's angles)與聲韻 學的關係,分析各種語句所對應的頭部動作。
三、 肢體相對位置辨識
有別於前面研究利用形狀、輪廓等針對細部的頭、手的辨識,較大的肢體動 作較沒有辦法利用這些細微的 feature。以舉手做為例子:每個人舉手的高度、角 度甚至手的長度等等,都是會影響利用形狀、輪廓來辨識的正確率的。因此,如 果能夠利用肢體各個部位的相對位置來辨識,準確率相對來說將會有顯著的差 別。
J. Han 等人於[Han09]中即是利用這個概念來實作。該研究先擷取出頭、手 的位置後,再利用頭、手的相對位置去判斷人目前是什麼動作。該研究還特別引 入的 active learning。由於頭、手在整張影像所占的比例相對於其他物件是比較 少的。因此在 training 時,若能夠依比例調整,提高頭手部份的權重,或許對資 料 training 上會比較有用。另外 Weiming Hu 等人發表的[Wei06]也有提到全身人 物的辨識。David A. Sadlier 等人於[Dav05]中也提到了運用人臉、衣服、手、脖 子等地方的顏色相對位置分佈來擷取 feature。
四、 Human Detection
在[Nav05]中,首次提出使用 Histogram of Oriented Gradient(HOG)的概念進 行人物的辨識。在早期曾有使用 Haar feature 做人臉或是上半身的辨識。但由於 各種人的身體形狀姿勢可能依地區、性別、人物旋轉等有所差別,因此在這部份 一直無法達到非常高的正確率。而使用 HOG 去計算各個 cell 與 block 的 gradient 差異時,剛好對於些為差異的形狀有較高的容忍度,雖然沒有直接套用 Fuzzy model,但卻可以讓 training model 有 fuzzy 的效果。[Nav05]中測試了許多在單純 背景下的人物偵測,在調整過一些 HOG 參數後都可以到很好的效果。
2.4 過去影像處理技術討論
在這一節中比較了過去一些影像處理的技術與色彩取樣方式
一、 Color Space
在目前的影像顏色表示法中,除了最基本的 RGB color space 之外,HSI 與 YCrCb 二種 color space 也是常被人所使用的。本研究主要使用 HSI color space。
在之前的研究提出許多偵測膚色的方法[Han09]、[Yu09]。其中[Yu09]提到,使用 YCrCb 與 HSI 是較好擷取出膚用的 color model。因此,接下來針對 HSI 與 YCrCb color space 做介紹與比較。
(一) HSI Color Space
這個 Color Space 是用三個 band 去描述一個顏色,分別是:色相(H, hue)、
飽合度(S, saturation)與強度(I, intensity)。色相即是色度,例如某個東西是紅色、
黃色等等。飽合度為該顏色所加上了多少的白光的值,也因此,飽合度越高的顏
分母為 0 時,無法計算出 Hue 值。分母為 0 的點為灰色系(即R = G = B)。因此,
在碰到灰色系顏色時,要另外特別處理。
而 Yu-Ting Pai 等人在[Yu09]提到膚色的 Hue distribution 有一定的機率分佈 於-5~30 之間,是較穩定的方法。
(a) (b)
圖 2-1 Hue 值分佈剛好成雙峰 (a)原始圖片 (b)對應的 hue 值
0 20000 40000 60000 80000
0 3160 91121152182213244274305335
pixels
Hue Value
圖 2-2 [Yu09]提到的 Hue distribution
(a)
(二) YCrCb Color Space
YCrCb 由亮度元素 Y 和紅、藍色系的色彩強度 Cr Cb 組合而成。其轉換公 式如下:
[𝑌 𝐶𝑟 𝐶𝑏
] = [ 0.299 0.587 0.114 0.500 −0.4187 −0.0813
−0.1687 −0.3313 0.500 ] [𝑅
𝐺 𝐵
]
不過在 Cr 與 Cb 因為在自然光影像(照片 or 一般生活影像,非人工繪製圖片) 中,有較集中的特性。不論怎麼樣的自然照片都固定在中間,所以並無法使用(圖 2-3)。
而在本實驗中,Hue 值分佈剛好落在二個主要的雙峰分佈中(圖 2-1(a))。其 值較小的約為皮膚顏色範圍,其值大的約為背景色範圍。圖 2-2 恰巧符合本實驗 所需的數值。因此,本實驗使用 Hue 這個 band 當作是主要分析顏色的 color space。
第三章
的份量。接著就是顏色資訊,在研究中特別使用 k-means clustering 方法,針對 hue 這個 band 做分類。Database of Seat Information
(一) K-means Clustering
在[Yu09]中提到膚色的 Hue 的範圍,其 2 個標準差的誤差值(約 95%的 機率)會落在 hue 值-5~30 中。在背景色會在畫面中占較大的比例的前提下,
我們過濾出前幾大的分色區塊。剩下來的一些雜色即有可能是學生所穿的 衣服的顏色。
不同於一般的 k-means 演算法,本研究使用了 Dynamic k-means 方式。
由於傳統的 k-means 是固定一個 k 值。但在本實驗分色時,若固定 k 值可能 會使得膚色區域過大。因此本研究特別使用了 Dynamic k-means,一開始並 不固定 k 值,讓分出來的色塊範圍能夠更符合所需。
本研究在一開始依據過往經驗,選擇𝑘 = 5做為起始。若為系統初始化
Set K value by
database
Hue band image Last 10 times
K-means clustering data
Already
Set data center value
Run k-means clustering
Stable?
No
Yes
Increase / decrease K End of k-means clustering
圖 3-2 Dynamic k-means clustering 流程圖
時,第一個 k 值指定為[Yu09]中提到的中心位置;若非系統初使化狀態,k 值會依前一次執行 k-means 的結果,指定上次的 k 值當作本次的 k 值。並依 目前影像中大於某個 threshold 的數量的 hue 值當做每一個類別的中心,剩 下若尚未決定中心的點即在剩下的 hue 值中隨機分配。接著執行 k-means 的演算法調整中心值。
接下來會測試中心 hue 值是否穩定,我們假定一開始已知膚色的 hue 值大概範圍,目前的 k 經過 k-means 後造成膚色的中心值偏離過大,代表 目前的 k 值太大需要增加減少 k 值。若中心值變動不大,特別是膚色的中 心值不太變動,則代表目前為穩定狀態,可以結束分類。
若達到穩定狀態即停止修改中心。但這個方法執行時間會較久,因此 研究者修改了 k-means 中穩定狀態的定義。若各類中心的 hue 值跳動太大,
有可能是 assign 的不好或是 k 值過大或過小,因此需要增加或減少 k 值。
借此不斷修改 k 值一直到系統穩定為止,即可達到最佳分類。
分完的不同 k 的範圍,會有一類最接近膚色的範圍的(hue-5~30)。用此 可以過濾出膚色,準備與接下來的其他資訊結合。
圖 3-3 K-means clustering 結果
(二) Temporal Difference Detection
(三) Upper-body Detection
由於為了更精確的框出人物的位置,本研究使用 Ada boost 的方式來做 上半身偵測。其中 Ada boost 是 OpenCV 所提供的函式庫。會在畫面中依不 同大小的視窗做偵測,並依設計的一些條件淘汰後取出最後的上半身候選
由於為了更精確的框出人物的位置,本研究使用 Ada boost 的方式來做 上半身偵測。其中 Ada boost 是 OpenCV 所提供的函式庫。會在畫面中依不 同大小的視窗做偵測,並依設計的一些條件淘汰後取出最後的上半身候選