張文志, 楊 森, 柳廣春, 杜夢豪
(1.河南理工大學 測繪與國土信息工程學院,河南 焦作 454150;2.遼寧科技學院 資源與土木工程學院,遼寧 本溪 117004)
隨著科學技術的進步,涌現(xiàn)出物聯(lián)網、云計算等新一代的信息技術,為建設智慧城市、智慧社區(qū)、智慧教室等提供有力的技術支持[1]?;ヂ?lián)網+時代的到來,為高校教育管理,智慧教室建設,教育資源分配帶來了新的機遇和挑戰(zhàn)。課堂教學是師生相互交流、學生接受系統(tǒng)教育的重要環(huán)節(jié)[2]。智能考勤方式,對學生更好獲取專業(yè)知識,推進智慧教室建設有著重要影響。蘇婕,等[3]設計并實現(xiàn)了一種基于近距離通信(NFC, near field communication)智能考勤管理系統(tǒng),使得考勤管理更為高效、準確。嚴士超,等[4]提出了一種基于泛在網技術的實驗室智能門禁考勤管理系統(tǒng)的建設方案。萬旭成[5]利用數(shù)據(jù)庫的遠程通信與管理技術,結合感應式刷卡系統(tǒng)實現(xiàn)校園考勤管理智能控制一體化。田麗,等[6]提出一種基于IPv6的人臉識別考勤管理系統(tǒng),該系統(tǒng)綜合運用物聯(lián)網、人臉識別、IPv6、數(shù)據(jù)分析和Web服務等技術,升級了一個分層的軟件體系架構。方書雅,等[7]提出了一種基于學生人體檢測的無感知課堂考勤方法。目前,以人臉識別技術為代表的生物識別技術與考勤相結合,使考勤方式變得更加多樣。為解決傳統(tǒng)人工考勤易出現(xiàn)的課堂代答到、代課等現(xiàn)象,文章對基于LBPH人臉識別的課堂考勤方法進行研究。采用手機相機拍攝學生課堂圖像,通過Python-OpenCV進行圖像處理,利用LBPH人臉識別算法進行人臉識別,得到出勤學生基本信息。依據(jù)Hough變換和Canny邊緣檢測,劃分教室座位區(qū)間,以此繪制座位格網,使學生與課堂座位相匹配,確定學生所處座位行列號,生成課堂考勤日志。通過實例分析,該方法能夠解決人工考勤帶來的諸多問題,提高課堂考勤效率,為智能化考勤提供新的方法。
人臉識別是將需要識別的人臉與人臉庫中的存儲信息相對應,達到識別效果。OpenCV有三種人臉識別方法,它們分別是基于Eigenfaces、Fisherfaces和Local Binary Pattern Histogram(LBPH)[8]。文章采用LBPH人臉識別方法,通過提取局部特征進行判斷,與Eigenfaces和Fisherfaces兩種方法相比,LBPH方法明顯提高人臉識別率。
(1)LBPH特征提取
原始LBPH是定義在像素的鄰域內,以鄰域中心像素為閾值,將相鄰8個像素的灰度值與其進行比較。若周圍像素值大于中心像素值,則該像素點的位置被標記為1,否則被標記為0。最終可得該鄰域內中心像素點的LBPH值,并用此值反映該區(qū)域的紋理信息,如圖1,LBPH計算原理如式(1)。
圖1 LBPH原理圖
(1)
式中:(xc,yc)代表3×3鄰域的中心元素;ic代表它的像素值;ip代表鄰域內其他像素的值;s為符號函數(shù),該符號函數(shù)見式(2)。
(2)
(2)改進LBPH
基本LBPH算子具有局限性,覆蓋范圍較小,無法滿足更多尺寸和頻率紋理。通過改進后的LBPH算子,能夠使半徑為R的圓形鄰域內,有任意多個像素點,如圖2所示。
圖2 圓形LBPH算子
采用雙線性插值法,可獲得采樣點的像素值,如公式(3)所示。
(3)
(3)LBPH特征匹配
對于人臉圖像,可將其分為若干個子區(qū),在這些子區(qū)區(qū)域內可根據(jù)LBPH值統(tǒng)計其直方圖,并依據(jù)直方圖判別其特征。
(1)圖像預處理
導入拍攝的課堂圖像,對圖像進行尺寸修改,調整合適圖片大小用來人臉識別。由于受光照、成像設備等因素影響,圖像存在隨機噪聲和模糊干擾,需對課堂學生圖像進行去噪。文章采用中值濾波去噪,可有效去除數(shù)字化視頻噪聲,特別是彩色圖像噪聲。同時對圖像進行灰度化處理,去除彩色信息,有利于人臉識別進行。
(2)人臉檢測
通過Haar特征進行人臉檢測,Haar特征能夠用來實時人臉跟蹤,每一Haar特征都描述相鄰圖像區(qū)域的對比模式[9]。對于圖像中的邊、頂點和細線,其都能生成具有判別性的特征,實現(xiàn)人臉檢測。
(3)訓練數(shù)據(jù)
訓練過程,利用人臉識別的train函數(shù)進行。標簽數(shù)組,識別該人臉的ID名稱。根據(jù)ID名稱,確定被識別人姓名。在該過程中,每人劃分相同數(shù)量的數(shù)據(jù)集進行訓練,建立人臉樣本和ID名稱兩個列表。遍歷列表中的圖像,將圖像轉換為數(shù)組并獲取每張圖像ID,最后獲取循環(huán)對象。
(4)基于LBPH人臉識別
LBPH人臉識別方法,可采用置信度評分來衡量所識別人臉與真實人臉之間的差距[10]。用數(shù)值大小表示,0表示完全匹配,說明所識別人臉與原模型之間無差距,置信度評分越高則表明二者間差距越大。
Hough變換直線檢測是將原始圖像坐標系下的一個點,對應參數(shù)坐標系一條直線,同樣參數(shù)坐標系下一條直線也對應原始坐標系下一點。在實際應用中,可采用參數(shù)方程表示,圖像平面上的點則對應到參數(shù)ρ-θ平面上一條曲線,如式(4)所示。
ρ=xcosθ+ysinθ
(4)
Hough變換圓檢測原理:用(a,b,r)表示原始圖像坐標系下,一個圓心為(a,b)、半徑為r的圓。經過一點可作無數(shù)個圓,定義某點的坐標為(xi,yi),該點所用的參數(shù)為(ai,bi,ri),那么經過該點的圓方程如式(5)所示。
(5)
式中:ai、bi為圓心坐標;ri為圓半徑。
Hough變換圓檢測,是對上述的(a,b,r)進行求解。若r確定,點(x,y)又為已知條件,根據(jù)(x-a)2+(y-b)2=r2,則(a,b)的運動軌跡在幾何上變?yōu)橐?x,y)為圓心,r為半徑的圓;若r不確定,(a,b,r)的運動軌跡則變?yōu)橐?x,y)為頂點的圓錐。
(1)高斯濾波降噪
設一像素點位置為(m,n),其灰度值為f(m,n)。用一個高斯矩陣乘以每個像素點及其鄰域,取其帶權重的平均值作為最后的灰度值。
(2)計算梯度值和梯度方向
平滑后圖像在水平和垂直方向分別使用Sobel核進行濾波,以獲得水平方向梯度值gx(m,n)和垂直方向梯度值gy(m,n)。
(3)過濾非最大值
在高斯濾波過程中,邊緣可能被放大。使用統(tǒng)一規(guī)則過濾非邊緣點,使邊緣寬度盡量為1。
(4)上下閥值檢測邊緣
設置兩個閥值,分別為最大閥值和最小閥值。其中大于最大閥值被檢測為邊緣,低于最小閥值被檢測為非邊緣。對于中間的像素點,若與已確定邊緣的像素點鄰接,則判定為邊緣;否則為非邊緣。
對拍攝的課堂圖像進行預處理,掩膜去除背景。將處理后圖像進行Canny邊緣檢測,標定教室座位區(qū)域,刪除教室窗戶等不相干區(qū)域。通過Hough變換直線檢測,選取合適直線,進行座位劃分。在劃分座位區(qū)間過程中,以課堂圖像中走廊開始,向左依次為第一列、第二列、第三列等,該過程部分Python代碼如下所示:
for i in circles[0, :]:
if i[0] > 300 and i[0] < 370 and i[1] > 270 and i[1] < 300:
print(′座位:第一行 第一列′)
elif i[0] > 220 and i[0] < 300 and i[1] > 270 and i[1] <300:
print(′座位:第一行 第二列′)
elif i[0] > 128 and i[0] < 220 and i[1] > 270 and i[1] <300:
print(′座位:第一行 第三列′)
elif i[0] > 94 and i[0] <128 and i[1] > 270 and i[1] < 300:
print(′座位:第一行 第四列′)
elif i[0] > 30 and i[0] < 94 and i[1] > 270 and i[1] < 300:
print(′座位:第一行 第五列′)
else:
None
導入人臉檢測圖,該圖中成功檢測到的人臉,均已用圓形標記。再根據(jù)Hough變換圓檢測,可求得參數(shù),即圓的圓心坐標和半徑。通過對人臉檢測圖進行處理,得出圖像坐標系下,人臉圓個數(shù)即出勤學生人數(shù),以及各個人臉圓的圓心坐標和半徑。對所選取的學生對象,建立學生信息列表,包括學號、姓名、性別等。通過繪制的座位格網圖,將考勤學生人臉識別結果,與對應的人臉圓所處座位格網相匹配。依據(jù)識別學生的標簽ID,確定該識別學生所處座位行列號,實現(xiàn)考勤學生座位匹配。
基于LBPH的智能考勤方法,設計開發(fā)了課堂考勤系統(tǒng),實現(xiàn)了課堂圖像導入、人臉檢測、訓練數(shù)據(jù)、人臉識別、劃分座位格網以及生成課堂考勤日志的功能,具體技術流程如圖3所示。
圖3 技術流程圖
(1)課堂圖像導入
選取學院教室為實驗區(qū)域,將手機固定在教室講臺合適位置,保持高度、焦距大小不變,面向學生正面拍攝課堂圖像并導入,如圖4。
圖4 課堂圖像 圖5 人臉檢測
(2)人臉檢測
對導入的課堂圖像進行預處理工作,包括圖像尺寸修改、灰度化處理、去噪等操作。使用OpenCV中的Haar級聯(lián)數(shù)據(jù),加載OpenCV人臉檢測器,對預處理后圖像進行人臉檢測,并對圖像上檢測到的人臉,繪制人臉圓,如圖5所示。
(3)訓練數(shù)據(jù)
選取多名不同專業(yè)學生為樣本,建立圖像數(shù)據(jù)庫,如圖6所示。調用OpenCV里face模塊中的LBPH方法,可得出所需訓練數(shù)據(jù)文件,并保存到指定路徑。
圖6 圖像數(shù)據(jù)庫
(4)人臉識別
使用OpenCV加載訓練數(shù)據(jù)文件,將圖5中檢測到的人臉圖像單獨裁剪并保存,對裁剪的人臉圖像進行LBPH人臉識別,輸出考勤學生識別結果,如圖7。
圖7 人臉識別
(5)劃分座位格網
在圖像坐標系下,圖像左上角為零點,X軸為圖像矩形上方水平線,Y軸為圖像矩形左邊垂直線,如圖8所示。根據(jù)Hough變換直線檢測原理,檢測座位直線,挑選合適直線,用于劃分教室座位區(qū)間,并繪制座位格網圖,如圖9所示。
圖8 圖像坐標系 圖9 座位格網圖
(6)生成課堂考勤日志
結合學生信息列表,得到識別學生的個人信息,并生成考勤日志,完成課堂考勤工作。系統(tǒng)識別到的為出勤學生,未識別則為缺勤學生,成果統(tǒng)計如圖10所示。
圖10 考勤日志
(1)基于LBPH人臉識別算法,實現(xiàn)了教室學生人臉檢測、學生人臉識別等。根據(jù)Hough變換和Canny邊緣檢測,劃分教室座位區(qū)間,繪制座位格網,并結合人臉識別結果,確定學生座位位置。
(2)基于LBPH的智能考勤方法,采用Python語言開發(fā)了課堂考勤系統(tǒng),該系統(tǒng)具有學生人臉識別、考勤日志生成等功能,較好地完成課堂考勤工作。與傳統(tǒng)人工考勤相比,該方法提高了課堂考勤效率,節(jié)省出更多教學時間,有效解決代答到、代課等問題。