張紫東,馬春燕,陳燕,姚坤,李根,郭然
(太原理工大學(xué)電氣與動力工程學(xué)院,山西 太原 030024)
2020 年伊始,新型冠狀病毒席卷全球,面對新型傳染性疾病,中國政府積極應(yīng)對,很快國內(nèi)疫情就得到了有效控制。即便如此,常態(tài)化的防疫工作仍是必須的[1]。疫情防控的首道防線就是人體體溫檢測,快速、精準(zhǔn)測溫成為了新冠疫情防控的重要排查依據(jù)。受公共場所復(fù)雜檢測環(huán)境影響,對于人體體表溫度的檢測目前主要依靠測試者手持紅外測溫設(shè)備對被測者進行點對點測溫,該測溫方法模式固定,普遍存在測溫距離短、測溫響應(yīng)不靈敏等缺點。采用紅外熱成像傳感器對人體或其他生物測溫的高度可靠性在很多文獻已有提及,文獻[2]提及華中師范大學(xué)設(shè)計了一款基于高分辨率溫度傳感器MLX90640 的測溫系統(tǒng),這款測溫系統(tǒng)雖然穩(wěn)定性很高,但缺乏對被測目標(biāo)的追蹤;在文獻[3]中提及應(yīng)用OpenMV 開源視覺模塊的目標(biāo)識別與跟蹤,但沒有對目標(biāo)溫度進行采集。
本文所設(shè)計的人臉跟蹤紅外熱成像測溫系統(tǒng),能同時采集溫度信息和人臉信息,實現(xiàn)雙重認證,應(yīng)用于公共場所,把信息連接到門禁控制器,及時地排查溫度異常人員。為了解決由目標(biāo)的運動而導(dǎo)致的面部區(qū)域溫度未檢測到的問題,采用OpenMV 機器視覺模塊,加持兩自由度云臺,實現(xiàn)了對被測者的面部捕捉以及跟蹤,有效地提高了測溫的準(zhǔn)確性。非接觸式追蹤動態(tài)人臉的紅外熱成像測溫系統(tǒng)的開發(fā)研究,在智能監(jiān)控領(lǐng)域有較大的推廣應(yīng)用價值。
為實現(xiàn)精確測溫,系統(tǒng)主要包括紅外熱成像溫度數(shù)據(jù)采集部分、目標(biāo)跟蹤云臺部分與圖像顯示部分。系統(tǒng)以O(shè)penMV 機器視覺模塊為基礎(chǔ),開源圖像處理模塊使用STM32H743 芯片為控制核心并以O(shè)V7725傳感器為攝像頭模組。測溫部分采用MLX90640 熱電堆傳感器進行溫度信息采集,經(jīng)MCU 將溫度數(shù)據(jù)處理后實時經(jīng)SPI 通信總線傳輸給LCD 屏幕,顯示被測者的紅外熱圖像。人臉跟蹤云臺部分,在OV7725 傳感器收集的數(shù)字圖像的前提下,經(jīng)圖像處理算法處理捕捉人臉,再通過PID 算法控制云臺舵機跟蹤人臉運動。系統(tǒng)硬件組成如圖1 所示。

圖1 系統(tǒng)硬件組成
紅外陣列傳感器測定被探測目標(biāo)與背景輻射的紅外線差異,就能得到不同的紅外圖像[4]。
MLX90640 是一款高分辨率、低功耗、低成本的32*24 像素紅外陣列傳感器,采用4 腳TO39 封裝以及I2C 兼容的數(shù)字接口。MLX90640 包含768 個熱紅外像素點,每個像素的行和列表示為PIX(i,j),i表示行號(1~24),j作為其列數(shù)(1~32)。MLX90640 數(shù)據(jù)像素區(qū)域的分布圖如圖2 所示。其正常工作溫度范圍-45 ℃~85 ℃,測溫范圍在-45 ℃~300 ℃,集成了環(huán)境溫度傳感器和VDD 電壓檢測傳感器,這些內(nèi)部傳感器的輸出都儲存在內(nèi)部RAM 中。通過I2C 數(shù)據(jù)接口,可以訪問存儲于內(nèi)部RAM 中的紅外陣列、芯片環(huán)境溫度以及VDD 實時數(shù)據(jù)。MLX90640 傳感器的測量速率最高可達64 Hz,但是由噪聲與刷新速率的關(guān)系可知刷新速率越高,噪聲越高[5]。因此,本方案規(guī)范在其16 Hz 的刷新率下使用。

圖2 MLX90640 像素分布圖
視場是由熱電堆傳感器接收到50%的輻射信號來確定的,并且和傳感器的主軸線相關(guān),如圖3 所示,越靠近主軸線,熱電堆傳感器所獲得的輻射信號越多,測溫靈敏度也就越高。MLX90640 有兩種視場(Field of View,FOV)可以選擇,分別是FOV 為110°×75°的BAA 版本和FOV 為55°×35°的BAB 版本。紅外熱傳感器分辨率為32*24 像素,則可以理解為從鏡頭發(fā)射出32*24=768 條激光來探測溫度,其中線夾角α為相鄰兩條激光線的夾角,線夾角=視場角/(行或者列像素-1),則BAA 版本的水平方向與垂直方向的線夾角分別為3.548°和3.261°,相對應(yīng)的BAB 版本的線夾角分別為1.774°和1.522°。設(shè)被測物體尺寸用D表示,最遠探測距離用S表示,相鄰測線夾角用α表示,則有式(1):

圖3 視場測量

假設(shè)額頭的長度為12 cm,代入式(1),則其被BAA 版本和BAB 版本探測到的最遠距離為1.05 m和2.26 m,結(jié)合使用場景,本系統(tǒng)選擇MLX90640 的BAB 版本。
人臉檢測與追蹤云臺硬件包括以下三個部分,云臺的控制器,OV7725 傳感器和控制舵機。
1.2.1 控制器
控制器是一個以STM32H743 單片機為核心的機器視覺模塊OpenMV,集成OV7725 圖像傳感器,在Python 圖像識別算法庫的加持下,相當(dāng)于給云臺提供了一雙眼睛。同時它可以通過I/O 端口發(fā)送命令控制機器系統(tǒng),通過串口將采集到的信號傳輸給其他控制器。核心處理器采用STM32H743 單片機,該處理器基于高性能ArmCortex-M7 內(nèi)核,工作頻率高達480 MHz。STM32H743 單片機包含高速嵌入式內(nèi)存,配備連接到APB 總線、AHB 總線的各種增強型I/O 端口和外圍設(shè)備。
1.2.2 OV7725
OV7725 低電壓CMOS 器件,最大輸出分辨率為640×480 pixel 的圖像。其工作方式是將光信號轉(zhuǎn)換成電信號,通過AD 轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字信號后發(fā)送給DSP 數(shù)字信號處理芯片,并使用FIFO 存儲器存儲圖像數(shù)據(jù)。它支持處理8 位灰度圖像或16位RGB565 彩色圖像,當(dāng)其使用VGA 時序工作時,輸出的圖像陣列可以達到60 frame/s[6]。通過SCCB 接口,還可以對采集到的圖像進行補償,支持伽瑪曲線、白平衡、飽和度、色度等基礎(chǔ)處理。
1.2.3 驅(qū)動模塊
云臺是一種兩自由度的機械目標(biāo)跟蹤云臺。通過機器底座、大臂、小臂以及伺服驅(qū)動器組合而成的云臺,可以完成繞Z軸旋轉(zhuǎn)以及上下俯仰的動作。本云臺兩個舵機的轉(zhuǎn)角范圍在0~180°,并且需要的扭矩較小,故使用數(shù)字舵機MG996R 就能夠滿足精度以及扭矩的要求。MG996R 數(shù)字舵機相比于傳統(tǒng)的模擬舵機,精度高、線性度好、響應(yīng)速度更快。
1.2.4 電源模塊
為了使整個系統(tǒng)脫機運行,需要加持電源模塊和5 V 鋰電池給整個系統(tǒng)供電。其中STM32H743 的所有I/O 口的電壓范圍在3.3 V~5.0 V 之間,MG996R數(shù)字舵機的工作電壓在4.8 V~7.2 V 之間,工作電壓越高響應(yīng)越快。因此,本設(shè)計采用5 V 鋰電池給MG996R 數(shù)字舵機直接供電,并通過Ams1117-3.3 降壓模塊為控制器提供3.3 V 電壓輸入。
為解決對運動中的人體測溫以及身份的認證,軟件流程圖如圖4 所示:主要由人臉檢測、人臉追蹤、采集人臉特征、采集溫度信息這四部分組成。

圖4 軟件設(shè)計流程
跟蹤人臉的第一步是要進行人臉檢測找出目標(biāo)人臉在整體圖像中的位置,人臉檢測算法是在一幀圖像中劃分人臉與非人臉的算法[7-8]。本系統(tǒng)采用的是基于HAAR 特征分析的Adaboost 級聯(lián)分類器的人臉檢測算法,本系統(tǒng)使用的人臉檢測算法的工作流程如圖5 所示。

圖5 人臉檢測算法工作流程
2.1.1 級聯(lián)分類器
第一步加載Adaboost 級聯(lián)分類器,最初Viola 和Jones 就是使用Adaboost 級聯(lián)分類器,同時他們也指出,別的機器學(xué)習(xí)方法也有效[9-10]。但是訓(xùn)練一個級聯(lián)分類器的缺點是需要大量的圖像樣本,并且即便是在技術(shù)發(fā)達的今天,也要耗費幾天的時間去訓(xùn)練級聯(lián)分類器。所以針對上述缺點,不必建立一個新的級聯(lián)分類器,而是選擇一個OpenMV 默認提供的級聯(lián)分類器:HaarCascade_frontalface.cascade。
2.1.2 圖像預(yù)處理
圖像的預(yù)處理包含兩個步驟,最重要的一步是將圖像轉(zhuǎn)化為灰度圖,其次是將圖像的分辨率調(diào)整為HQVGA。圖像灰度指的是,在RGB 空間中,如果R=G=B,顏色表示灰色,其中R=G=B 的值稱為灰色值,灰色值的范圍為0~255?;叶葓D滿足整體圖像的空間需求,減少了人臉識別的計算量。
2.1.3 通過級聯(lián)分類器
級聯(lián)分類器的結(jié)構(gòu)是二叉樹狀結(jié)構(gòu),如圖5 所示,每一級代表一個強分類器。每一個強分類器由若干個弱分類器組成,弱分類器的結(jié)構(gòu)與強分類器相同。假設(shè)每一個弱分類器的閾值為Threshold,當(dāng)計算出的特征值大于Threshold 時,該弱分類器的輸出取右值,反之取左值[11]。檢測時,將所有弱分類器的值相加與強分類器的閾值比較,只有當(dāng)該值大于強分類器的閾值時,才被認定是人臉正樣本,接著開始下一級強分類器的檢測。也就是說,當(dāng)被檢測圖像通過所有強分類器時才被認為是人臉樣本,否則拒絕。
2.1.4 繪制人臉檢測結(jié)果
當(dāng)檢測樣本通過級聯(lián)分類器被判斷為人臉正樣本后,輸出識別結(jié)果(x,y,w,h),以人臉左上角為原點繪制矩形,(x,y)代表人臉區(qū)域左上角坐標(biāo),w代表人臉區(qū)域的寬度(width),h代表人臉區(qū)域的高度(height),同時設(shè)置圖框參數(shù),包括顏色、線條粗細、線條類型,最終在分辨率為HQVGA(240×160 pixel)的灰度圖上的繪制結(jié)果如圖6(a)所示。

圖6 人臉檢測輸出結(jié)果
本設(shè)計的檢測目標(biāo)是動態(tài)人臉,多數(shù)情況下OpenMV 采集的人臉中心會與整個圖像的中心坐標(biāo)存在偏差,所以需要核心處理器計算偏差像素值,并以此作為PID 控制器的輸入,接著通過PWM 調(diào)制控制舵機的俯仰與水平運動,進而控制攝像頭追蹤人臉。
人臉對象中心如圖6(b)中十字型標(biāo)記所示,經(jīng)計算人臉對象的中心橫坐標(biāo)為Tx,縱坐標(biāo)為Ty:

人臉中心坐標(biāo)與整幅圖像中心橫坐標(biāo)的偏差量Δx,縱坐標(biāo)的偏差量Δy分別為(W與H分別為整幅圖像的長度與寬度,單位為像素值):

PID 控制(Proportional-Integral-Derivative Control)是過程控制中最為常用的一種控制,P 表示比例控制,I 表示積分控制,D 表示微分控制,具體的,在本設(shè)計中,比例控制是最基本的控制規(guī)律,其控制舵機運動的幅度。但伴隨著舵機運動后的穩(wěn)定,會產(chǎn)生穩(wěn)態(tài)誤差,即攝像頭穩(wěn)定后,攝像頭模組沒有對準(zhǔn)人臉,系統(tǒng)需要引入積分控制消除穩(wěn)態(tài)誤差。當(dāng)且僅當(dāng)舵機的偏差隨時間發(fā)生變化時,微分控制才會對系統(tǒng)起作用。
局部二值模式(Local Binary Pattern,LBP)是一種用來描述圖像局部紋理特征的算子,是照片分類和人臉檢索研究中采用較多的特征提取算法之一。基礎(chǔ)LBP 特征算法的原理是,在灰度圖像中,LBP算子定義為在3×3 的區(qū)域內(nèi),以窗口中心像素為閾值,將相鄰的8 個像素的灰度值與其進行比較,若周圍像素灰度值大于中心像素灰度值,則該像素點被標(biāo)記為1,否則為0。這樣,3×3 鄰域內(nèi)的8 個點經(jīng)比較可產(chǎn)生8 位二進制數(shù),再將其轉(zhuǎn)化為十進制數(shù),即該區(qū)域內(nèi)中心像素點的LBP 特征值[12-13]。
對應(yīng)在本系統(tǒng)中的應(yīng)用,將2.1.4 節(jié)人臉檢測輸出的矩形元組(x,y,w,h)作為LBP 特征的感興趣區(qū)域(region of interest,ROI),并將其劃分為若干16×16像素的小區(qū)域(可以通過多種方式劃分區(qū)域);提取每個小區(qū)域的LBP 特征,計算每個小區(qū)域的直方圖;接著對該直方圖進行歸一化處理[14];最后將得到的每個區(qū)域的統(tǒng)計直方圖連接成為一個特征向量,也就是得到整個感興趣區(qū)域的LBP 特征向量。
假設(shè)需要對實驗室內(nèi)部30 名人員進行人臉認證,首先需要在均勻的背景下采集人臉圖像,每個人拍攝20 張不同角度、不同表情的圖片作為人臉庫。制作好人臉圖庫后,將目標(biāo)的LBP 特征向量與人臉庫依次比對,特征差異度越小,則被檢測人臉與此樣本更相似、更匹配,最終分辨人臉身份。
主設(shè)備STM32H743 處理器與從設(shè)備MLX90640的內(nèi)部RAM 和EEPROM 之間通過I2C 協(xié)議進行通信。EEPROM 中存儲的數(shù)據(jù)用于計算目標(biāo)區(qū)域內(nèi)實際的溫度值,RAM 中存儲芯片溫度數(shù)據(jù)、目標(biāo)溫度數(shù)據(jù)等。STM32H743 微控制器需要不斷地從RAM 中讀取溫度數(shù)據(jù)并通過式(6)計算實際溫度值[15]:

式中:(i,j)為像素點坐標(biāo);為紅外輻射率補償系數(shù);αCOMP(i,j)為靈敏度系數(shù);KT為不同溫度范圍的靈敏度斜率;式中Sx(i,j)的具體計算公式為:

Ta-r可由環(huán)境溫度Ta和反射系數(shù)ε(默認ε=1)求得。

式中:Tr為IR 信號反射溫度,約等于Ta-8。
至此,所有計算實際溫度所需的變量均已求得,代入式(6)即可求出每個紅外像素點的實際溫度值。
完成人臉檢測識別、人臉目標(biāo)跟蹤、人臉特征識別、溫度檢測之后,與門禁結(jié)合對系統(tǒng)進行整體調(diào)試。根據(jù)系統(tǒng)硬件設(shè)計對云臺進行設(shè)計制造,并將云臺固定到距地面1.5 m 左右的位置。將本文第二部分的程序算法使用Python 語言寫入IDE 中,并作為主程序main.py,兩個I/O 口P8、P9 控制云臺舵機。PID 調(diào)試的結(jié)果及算法程序?qū)懭隝DE 并保存為PID.py,主程序main.py 會對其進行調(diào)用。系統(tǒng)的具體工作流程是,云臺啟動后首先復(fù)位原點,接著對首個目標(biāo)進行人臉檢測并跟蹤,進而對其進行人臉識別與溫度檢測雙重認證,兩項認證通過主程序即控制門禁打開,接著系統(tǒng)復(fù)位對第二個目標(biāo)進行檢測。系統(tǒng)的Solidwork 組件圖與實物圖如圖7 所示。

圖7 Solidwork 組件圖與實物圖
在對OV7725 攝像頭圖像進行灰度化處理后,系統(tǒng)準(zhǔn)確地對被檢測者實現(xiàn)了人臉檢測與身份識別,并將MLX90640 的熱成像圖像置于OV7725 攝像頭圖像右上角,整體圖像如圖8 所示;并在熱成像圖的下方顯示被檢測者的溫度與身份信息。若被測者溫度大于37.3 ℃,或身份信息未被系統(tǒng)收錄,身份信息一欄會顯示None,且連接的門禁系統(tǒng)會阻止其通行并發(fā)出警報,以提醒工作人員做進一步檢查工作。
圖像分辨率大小的不同影響著被檢測者身份識別的時間,將QVGA、HQVGA、QQVGA 三種分辨率下的人臉識別時間進行對比分析得,圖像分辨率大小與人臉識別時間成正相關(guān),綜合考慮,圖像分辨率選擇HQVGA。

表1 分辨率與人臉識別時間關(guān)系
在對系統(tǒng)進行調(diào)試時,如圖9(a)所示,MLX90640的基礎(chǔ)熱成像圖像存在分辨率較低、邊緣不平滑的缺點,遂對其進行圖像平滑處理,并將平滑后的圖像和OV7725 攝像頭圖像結(jié)合。如圖9(b)所示,經(jīng)過插值后的紅外熱成像圖像,像素點成像更平滑,提高了圖像的分辨率,細節(jié)處理得更清晰,同時高低溫分布更加明顯,采用圖像插值方法提高圖像分辨率,也降低了系統(tǒng)的成本。紅外圖像的上方附上了灰度處理后的OV7725 攝像頭圖像,這樣在顯示溫度變化的同時,人臉細節(jié)也更清楚,便于系統(tǒng)進行人臉檢測與人臉識別操作。

圖9 熱成像圖像平滑化處理前后變化
選用松下T82 額式紅外體溫計作為測溫基準(zhǔn),其測溫分辨率為0.1 ℃。在室內(nèi),使用本系統(tǒng)和T82額式紅外體溫計分別對30 人進行測溫實驗,進行三次,實驗結(jié)果如表2。

表2 溫度數(shù)據(jù)準(zhǔn)確性實驗結(jié)果
當(dāng)單個樣本使用本系統(tǒng)測溫所得溫度數(shù)據(jù)與使用T82 額式紅外體溫計測量所得溫度數(shù)據(jù)的差值的絕對值小于0.2 ℃時,則定義系統(tǒng)測試溫度準(zhǔn)確。由表2 實驗結(jié)果看出,三組的溫度準(zhǔn)確率均在96.5%以上,且通過時間較快,滿足在密集場所下快速篩選人體溫度的需求。同時經(jīng)分析,后續(xù)兩組的準(zhǔn)確率相對第一組較低的原因是由于本系統(tǒng)長期運行,發(fā)熱嚴重,實際測溫數(shù)據(jù)受環(huán)境溫度影響,導(dǎo)致準(zhǔn)確率較低,后續(xù)可添加TEC 控溫來解決。
本文設(shè)計了基于人臉跟蹤云臺的紅外熱成像門禁系統(tǒng),通過調(diào)試,實現(xiàn)了非接觸熱成像傳感器的768 個像素點的溫度監(jiān)測,加持目標(biāo)跟蹤云臺的設(shè)計,實現(xiàn)了對人臉的跟蹤測溫和人臉識別,提高了溫度檢測和人臉識別的準(zhǔn)確性。系統(tǒng)脫機運行的設(shè)計以及預(yù)留的I/O 口可以與門禁系統(tǒng)方便連接,實現(xiàn)了對溫度異常人員的篩查,便于檢測人員的檢視。