馬興錄,孫 昊,王先鵬,李曉旭
(青島科技大學(xué) 信息科學(xué)技術(shù)學(xué)院,山東 青島 266061)
自1800年英國(guó)F.W.赫歇耳發(fā)現(xiàn)紅外輻射、紅外技術(shù)發(fā)展至今,基礎(chǔ)設(shè)施建設(shè)、工業(yè)生產(chǎn)、消防安保等領(lǐng)域都離不開紅外成像技術(shù)[1-2]。1934年Hard研究了皮膚對(duì)紅外線發(fā)射率的影響,確立了紅外對(duì)人體測(cè)溫的意義[3]。2003年,非典型性肺炎爆發(fā)時(shí)期,為了確保人群流動(dòng)安全以及減少交叉感染,紅外熱像儀的應(yīng)用就體現(xiàn)出了巨大的優(yōu)勢(shì),對(duì)進(jìn)出醫(yī)院的人群進(jìn)行發(fā)熱檢查[4]。2010年,Nguyen等人對(duì)紅外檢測(cè)系統(tǒng)溫度值進(jìn)行測(cè)試,在常規(guī)情況下,熱成像測(cè)溫的準(zhǔn)確值與靈敏度較高[5]。
2019年12月在武漢發(fā)現(xiàn)的新型冠狀病毒患者初期會(huì)出現(xiàn)發(fā)熱乏力、干咳等癥狀[6],在這個(gè)特殊時(shí)期使用非接觸式紅外測(cè)溫儀篩選發(fā)熱人員十分必要[7]。傳統(tǒng)的醫(yī)用紅外測(cè)溫儀大多以單片機(jī)為主控制器:由許新建等人設(shè)計(jì)的紅外測(cè)溫儀穩(wěn)定性高、各項(xiàng)參數(shù)優(yōu)越,可以實(shí)現(xiàn)患者體溫的準(zhǔn)確檢測(cè)[8]。但是這樣的紅外測(cè)溫儀機(jī)動(dòng)性差,不滿足疫情下的靈活的非接觸式檢測(cè)應(yīng)用需求。由張菁設(shè)計(jì)的紅外體溫計(jì)[9],具有基本的非接觸式測(cè)溫及報(bào)警功能,其以單片機(jī)為核心主板,不利于二次開發(fā),且不能實(shí)現(xiàn)針對(duì)移動(dòng)目標(biāo)的溫度測(cè)量。
本文設(shè)計(jì)的測(cè)溫儀可在多種環(huán)境下進(jìn)行非接觸式的體溫檢測(cè),同時(shí)可識(shí)別人員是否佩戴口罩。使用樹莓派為主控板搭配紅外熱成像模組,基于移動(dòng)目標(biāo)檢測(cè)的紅外測(cè)溫算法實(shí)現(xiàn)了能夠快速準(zhǔn)確地探測(cè)測(cè)量范圍內(nèi)的人體溫度。
在自然界中一切高于絕對(duì)零度的物體表面不斷地向周圍空間輻射紅外線[10],根據(jù)物體的紅外輻射特性:物體的紅外輻射能量大小及波長(zhǎng)的分布與物體的溫度有密切聯(lián)系[11]。因此,通過(guò)對(duì)物體自身輻射的紅外能量的測(cè)量,便能準(zhǔn)確地測(cè)定它的表面溫度[12]。斯特藩—玻耳茲曼定律給出了物體溫度的紅外輻射的關(guān)系,在紅外測(cè)溫中,該定律可用來(lái)實(shí)現(xiàn)溫度標(biāo)定[13]。
斯特藩—玻耳茲曼定律提到,物體輻射能量的大小與該物體絕對(duì)溫度的4次方為正比例關(guān)系。定律給出了一個(gè)黑體的輻射度與溫度的關(guān)系:黑體表面單位面積在單位時(shí)間內(nèi)輻射出的總能量W與黑體本身的熱力學(xué)溫度T(又稱絕對(duì)溫度)的四次方成正比[14]。即:
W=εσT4
(1)
其中:ε為黑體的輻射系數(shù),絕對(duì)黑體的輻射系數(shù)ε為1;非絕對(duì)黑體的輻射系數(shù)小于ε1,與物體的本身的溫度及其形成材料的特征有關(guān)。比例系數(shù)σ稱為斯特藩-玻爾茲曼常數(shù)為固定值。可以看到:溫度和黑體輻射出射度成指數(shù)關(guān)系,且隨著溫度上升,黑體輻射度將極具升高[15]。實(shí)際待測(cè)物體通常不是黑體,對(duì)于非黑體的輻射定律一般比較復(fù)雜,但仍可借助于黑體輻射定律來(lái)研究[16]。
如圖1所示,本文設(shè)計(jì)的QUST-CWY01型非接觸式智能測(cè)溫儀采用樹莓派4電腦為核心,以點(diǎn)陣式紅外成像模組為主要測(cè)溫部件,結(jié)合可見(jiàn)光攝像頭,編寫相關(guān)軟件及算法,實(shí)現(xiàn)了非接觸式自動(dòng)測(cè)溫、口罩佩戴檢測(cè)、語(yǔ)音報(bào)警、檢測(cè)界面可視化以及手機(jī)及PC端與測(cè)溫儀界面同步顯示等功能。
其中,紅外測(cè)溫部分采用點(diǎn)陣式紅外成像儀進(jìn)行測(cè)溫,基于移動(dòng)目標(biāo)檢測(cè)的測(cè)溫算法,準(zhǔn)確判斷人員靠近及遠(yuǎn)離情況。當(dāng)人員在測(cè)溫范圍(約50 cm)之內(nèi),能進(jìn)行準(zhǔn)確測(cè)量時(shí),系統(tǒng)將根據(jù)距離自動(dòng)校準(zhǔn)發(fā)射系數(shù),針對(duì)室外復(fù)雜環(huán)境,自適應(yīng)外界溫度的變化,測(cè)量進(jìn)行多次測(cè)量取平均,獲得可靠的溫度值??谡謾z測(cè)部分采用機(jī)器視覺(jué)算法檢測(cè)人臉及口罩。能針對(duì)戴口罩與否發(fā)出報(bào)警信息。如果被檢測(cè)人未佩戴口罩,視頻界面中人臉將會(huì)被紅框標(biāo)注,并且語(yǔ)音設(shè)備會(huì)發(fā)出報(bào)警信號(hào)進(jìn)行提醒。
本設(shè)計(jì)中使用的核心板樹莓派4b配置1.5 GHz 運(yùn)行的64位四核處理器,2 GB RAM,2.4/5.0 GHz 雙頻無(wú)線 LAN,藍(lán)牙5.0/BLE,千兆以太網(wǎng)接口,USB3.0接口。
設(shè)計(jì)搭配YKHTPA32DA型紅外熱像儀模塊。使用TTL串口直接輸出熱源信息,工作電壓+5 V,功耗:≤0.3 W。光學(xué)視場(chǎng)為32*32溫度點(diǎn)輸出。具有體積小、成本低、易集成的特點(diǎn)。
該測(cè)溫儀功耗低且散熱能力強(qiáng),系統(tǒng)可連續(xù)工作數(shù)日。其重量約1 kg,方便攜帶和安裝,測(cè)溫距離為10~50 cm;測(cè)溫精度為±0.3 ℃;測(cè)溫視場(chǎng)角為90*90;測(cè)溫周期是0.5 s;工作溫度-200 ~ +85 ℃。
設(shè)計(jì)中系統(tǒng)硬件組成結(jié)構(gòu)如圖2所示,包括樹莓派4b、7寸電容帶外殼觸摸屏、可見(jiàn)光攝像頭、YKHTPA32DA紅外熱成像模組、115 200 bps串行通訊接口和音箱。
使用樹莓派4b為核心控制板,其操作系統(tǒng)基于Linux,具有較高的開放性、實(shí)時(shí)性以及高效的處理能力。利用點(diǎn)陣式紅外熱成像傳感器進(jìn)行溫度測(cè)量,測(cè)量到的區(qū)域內(nèi)的熱源信息將其轉(zhuǎn)換為常見(jiàn)的溫度值,實(shí)現(xiàn)32×32點(diǎn)實(shí)時(shí)溫度輸出。如圖3所示,模塊的測(cè)溫光學(xué)視場(chǎng)中可解析出1 024個(gè)溫度像素值組成的一幀溫度圖像。
紅外測(cè)溫模塊與樹莓派之間通過(guò)TTL串口進(jìn)行通信,可選用USB口和UART口,不同的接口波特率不同。本設(shè)計(jì)中使用UART串口波特率為115 200,UART串口有4個(gè)引腳分別為供電5 V,地線GND,TX和引腳RX引腳分別為發(fā)送端和接收端。UART串口連接樹莓派需要用到一個(gè)TTL串口轉(zhuǎn)USB的模塊,模塊的型號(hào)(編號(hào))為CH340,轉(zhuǎn)串口模塊的引腳和紅外模組的UART串口焊接,接線方式為5 V連接5 V, GND連接GND, TX與RX引腳交叉連接。
報(bào)警與頁(yè)面顯示部分選擇的是適配樹莓派4b的基礎(chǔ)音箱以及可見(jiàn)光攝像頭,其中音箱與樹莓派之間使用3.5 mm耳機(jī)接口連接,可見(jiàn)光攝像頭使用的是常見(jiàn)的USB接口。
測(cè)溫儀系統(tǒng)軟件總體結(jié)構(gòu)如圖4所示,系統(tǒng)的功能主要有人體測(cè)溫、口罩識(shí)別、語(yǔ)音報(bào)警、界面顯示以及同步顯示5個(gè)功能。其中的server服務(wù)端主要是對(duì)測(cè)溫功能模塊和口罩識(shí)別模塊的數(shù)據(jù)進(jìn)行處理,是一個(gè)單獨(dú)的進(jìn)程。其通過(guò)穩(wěn)定的TCP網(wǎng)絡(luò)通信獲取其他功能模塊發(fā)來(lái)的數(shù)據(jù),數(shù)據(jù)處理之后如出現(xiàn)異常則會(huì)進(jìn)行語(yǔ)音報(bào)警。
同時(shí),測(cè)溫儀配置WiFi功能并且實(shí)現(xiàn)測(cè)溫及口罩識(shí)別頁(yè)面可視化。設(shè)備開機(jī)后,在附近的范圍內(nèi)使用PC端或手機(jī)端可搜索到“qust_car”的WiFi熱點(diǎn),連接該熱點(diǎn),手機(jī)端或者PC端利用VNCViewer軟件可同步顯示設(shè)備畫面。
3.2.1 溫度檢測(cè)流程
體溫檢測(cè)系統(tǒng)以紅外熱像儀模塊為輸入點(diǎn),其軟件功能流程如圖5所示。當(dāng)人員在0.5 m之內(nèi)時(shí),系統(tǒng)對(duì)人體溫度值進(jìn)行多次測(cè)量取平均,獲得準(zhǔn)確的溫度值。當(dāng)測(cè)得的溫度低于37.3 ℃發(fā)出“體溫正?!碧崾疽?,液晶屏溫度背景色顯示為安全溫度綠色;當(dāng)溫度在37.3~38.2 ℃時(shí),發(fā)出“體溫低燒”報(bào)警,液晶屏溫度背景色顯示為低燒黃色;當(dāng)溫度在超過(guò)38.2 ℃時(shí),發(fā)出“體溫高燒”報(bào)警,液晶屏溫度背景色顯示為高燒紅色并閃爍。
3.2.2 基于移動(dòng)目標(biāo)檢測(cè)的測(cè)溫算法
1)溫度獲取:
根據(jù)測(cè)溫模塊的通訊協(xié)議,主機(jī)向模塊發(fā)送一段指令數(shù)據(jù),模塊返回一串約2 060個(gè)字符帶有溫度數(shù)據(jù)的數(shù)據(jù)串。需要將其中溫度相關(guān)的數(shù)據(jù)切分出來(lái),每4個(gè)為一個(gè)像素點(diǎn)的溫度數(shù)據(jù)(每個(gè)像素點(diǎn)的溫度是有兩個(gè)字節(jié)組成,高 8 位在左,低 8 位在右),然后將溫度數(shù)據(jù)轉(zhuǎn)換成溫度。溫度的計(jì)算公式如下:
(2)
其中:Th為模塊返回的溫度數(shù)據(jù)的高八位,Tl為模塊返回的溫度數(shù)據(jù)的低八位,均以16進(jìn)制的形式呈現(xiàn),公式中的常量2 731的確定方法為紅外模塊協(xié)議設(shè)定的固定值,其他各項(xiàng)用于溫度計(jì)算的參數(shù)均為實(shí)際值的10倍。使用hex2D函數(shù)(hex to decimal)將其轉(zhuǎn)換之后進(jìn)行計(jì)算獲得溫度值T。隨后將一幀溫度圖像中的所有溫度數(shù)據(jù)存在一個(gè)列表中,按1 024像素點(diǎn)順序排列。
2)移動(dòng)目標(biāo)溫度校準(zhǔn)算法:
與傳統(tǒng)的測(cè)溫方式不同,本文考慮外界環(huán)境的變化影響測(cè)溫的準(zhǔn)確性,因此提出了在多變的外界背景環(huán)境下基于移動(dòng)目標(biāo)檢測(cè)的體溫檢測(cè)算法。
該算法的思路是:外界背景溫度變化很慢,早上、中午、晚上會(huì)有所不同,但在某時(shí)間段(10 min左右)之內(nèi)基本不變。保留背景數(shù)據(jù),當(dāng)有人進(jìn)入時(shí)(測(cè)試人員為移動(dòng)的測(cè)溫目標(biāo)),部分?jǐn)?shù)據(jù)會(huì)有較大變化(可能變大,也可能變小,考慮到夏季人體溫度低于環(huán)境溫度所以會(huì)變小),當(dāng)前數(shù)據(jù)減去背景數(shù)據(jù),就是變化區(qū)域的數(shù)據(jù)。求取變化區(qū)域中按最高值降序排列取第5~15點(diǎn)共10個(gè)點(diǎn)然后進(jìn)行平均計(jì)算獲得可信的溫度值數(shù)據(jù)。
算法具體實(shí)現(xiàn):
設(shè)備在默認(rèn)環(huán)境中進(jìn)行初始化,初始化時(shí)間內(nèi)將每次的獲取到的溫度數(shù)據(jù)進(jìn)行緩慢平均,即0.7乘以背景溫度加上0.3乘以當(dāng)前溫度,進(jìn)行多次平均相加之后,除以次數(shù)獲取到的平均值即作為背景溫度。
背景溫度初始化之后,獲得測(cè)溫?cái)?shù)據(jù)突變點(diǎn)(突變點(diǎn)的確定是通過(guò)限定一個(gè)溫度閾值,每當(dāng)有測(cè)溫點(diǎn)的溫度變化超出了這個(gè)閾值即判定為突變點(diǎn)。)的個(gè)數(shù),并記錄這些突變點(diǎn)位置及數(shù)據(jù)。獲得突變點(diǎn)的個(gè)數(shù)之后,通過(guò)突變點(diǎn)個(gè)數(shù)確定人員與設(shè)備之間的大體距離,公式:
(3)
其中:x為距離(m),count為突變點(diǎn)個(gè)數(shù)。其中的常量820為人臉在距離設(shè)備0.1 m時(shí)的突變點(diǎn)個(gè)數(shù),常量0.1即為設(shè)定的固定距離0.1 m。并且經(jīng)過(guò)多次測(cè)試,我們認(rèn)為當(dāng)突變點(diǎn)個(gè)數(shù)較多(>800)時(shí),判定為距離過(guò)近,此時(shí)將距離x設(shè)為固定值x=-1用于后面校準(zhǔn)方式的選擇判定;當(dāng)突變點(diǎn)較少(約<5)時(shí),認(rèn)為無(wú)人,此時(shí)通過(guò)緩慢跟隨算法繼續(xù)平均背景溫度。獲得距離之后,根據(jù)溫度距離補(bǔ)償算法公式計(jì)算距離系數(shù)disc:
disc=0.6839x3-0.7337x2+0.2992x+0.9995
(4)
式(4)中,x為測(cè)到的距離,其他參數(shù)之前的系數(shù)(如0.683 9、0.733 7等常量)為模塊根據(jù)發(fā)射率溫度校準(zhǔn)協(xié)議通過(guò)上位機(jī)設(shè)置的人體發(fā)射率參數(shù)確定,僅用于對(duì)人體表面溫度的測(cè)量校正時(shí)使用。
溫度校正公式:
FT=T0×disc+dr
(5)
其中:FT為校正之后的溫度值,T0為初始溫度,disc為上式中所得的距離系數(shù),dr為環(huán)境溫度偏差。該差值需要和高精度額溫槍校準(zhǔn)。比如紅外模塊測(cè)量計(jì)算得到初始溫度*距離系數(shù)之后,計(jì)算溫度為35.7 ℃,額溫槍得到36.2 ℃,那么偏差為0.5 ℃,該參數(shù)根據(jù)實(shí)際情況進(jìn)行調(diào)整。
3.2.3 核心算法偽代碼
Function:GetTemp(blist)用于測(cè)量溫度校正計(jì)算。
Input:當(dāng)前時(shí)刻溫度數(shù)據(jù)列表blist,包含32*32共1 024個(gè)像素溫度值。
Process1:首先進(jìn)行20次左右的初始化循環(huán)操作獲得背景溫度(backtemp),backTemp[p]=backTemp[p]*0.7+blist[p]*0.3。
Process2:當(dāng)有人進(jìn)入時(shí),根據(jù)溫度突變點(diǎn)個(gè)數(shù)(countVar)開始判斷人員與設(shè)備的距離。
If:blist(p)-backtemp(p)的絕對(duì)值>前期通過(guò)額溫槍測(cè)得的人體環(huán)境溫度差。
Do:認(rèn)為該點(diǎn)為突變點(diǎn),即countVar值+1。
再根據(jù)突變點(diǎn)的個(gè)數(shù)及當(dāng)前時(shí)刻的變化情況計(jì)算人員距離(dis)
dis = (820-countVar)/800 - 0.1
Process3:通過(guò)process2過(guò)程中獲得的距離計(jì)算溫度。
if(countStatus==0):top10=heapq.nlargest(10, backTemp)
elif(countStatus==1):top10=heapq.nlargest(10, blist)
elif(countStatus==2): top10=heapq.nlargest(10, blistVar)
if(countStatus==0):
avgcount= np.mean(backTemp)
else:avgcount = np.mean(top10)
得到一個(gè)未校準(zhǔn)的溫度值avgcount。
Process4:將process3中的溫度值結(jié)合測(cè)量實(shí)驗(yàn)測(cè)得的校準(zhǔn)系數(shù)一同傳入校正公式得到最終可靠的溫度值(wendu)。
temp = round(((avgcount - 2731) / 10), 1)
if(dis==0):
wendu=round((temp*xishu+0.5),1)
else: wendu=round((temp*xishu+TEMPADJUST),1)
return wendu
Final Output:校正后的溫度wendu
攝像頭捕捉到圖像信息傳回到樹莓派中進(jìn)行數(shù)據(jù)處理,人臉口罩識(shí)別系統(tǒng)流程如圖6所示。通過(guò)口罩檢測(cè)算法和防誤判算法檢測(cè)是否戴口罩。如果被檢測(cè)人未佩戴口罩,視頻中人臉將會(huì)被紅框標(biāo)注進(jìn)行提醒,系統(tǒng)抓取人臉圖像保存并且語(yǔ)音設(shè)備會(huì)發(fā)出報(bào)警信號(hào)。如果人員佩戴口罩,則會(huì)被綠框標(biāo)注。
口罩識(shí)別的核心算法采用了SSD架構(gòu)的人臉檢測(cè)算法。搭建的神經(jīng)網(wǎng)絡(luò)中主干網(wǎng)絡(luò)有8層,并且有5個(gè)定位和分類層,一共只有28個(gè)卷積層,而每個(gè)卷積層的通道數(shù),是32、64、128這3種,所以這個(gè)模型非常小,它只有101.5萬(wàn)個(gè)參數(shù)。因此處理圖片的速度得到了提升,在樹莓派4上處理一張圖片只需200~300 ms。
完成了對(duì)系統(tǒng)的軟硬件設(shè)計(jì)后需要進(jìn)行測(cè)試驗(yàn)證人體測(cè)溫系統(tǒng)的工作是否處于穩(wěn)定狀態(tài)。給樹莓派通電成功啟動(dòng)系統(tǒng),靠近攝像頭,系統(tǒng)可及時(shí)反映溫度變化及口罩情況。圖7為紅外熱像模塊在測(cè)溫過(guò)程中當(dāng)有人進(jìn)入時(shí)的溫度變化曲線,左框部分為人員進(jìn)入時(shí)的刻度點(diǎn),右側(cè)框?yàn)槿藛T離開時(shí)的刻度點(diǎn)。
在測(cè)溫過(guò)程中像素點(diǎn)的溫度值是上下有小幅浮動(dòng)的,為了使溫度更加穩(wěn)定可以將所測(cè)區(qū)域的溫度值取一定數(shù)目的像素溫度值進(jìn)行平均如圖8所示,圖8(a)中為平均之前,圖8(b)為平均之后的曲線,可以看出圖8(b) 中的曲線較圖8(a)更加平整穩(wěn)定。
后期修改了核心算法,提高了人員判斷的靈敏度:參照移動(dòng)目標(biāo)檢測(cè)算法,扣除背景溫度,目前檢測(cè)比較靈敏。人員靠近及遠(yuǎn)離判斷準(zhǔn)確。針對(duì)室外復(fù)雜環(huán)境,可以自適應(yīng)外界溫度的變化,可以準(zhǔn)確識(shí)別人員進(jìn)入和離開。室外由于受天氣影響較大,特別是大風(fēng)天氣影響更甚,這時(shí)臉部溫度較低,需要靠近至10~20 cm之內(nèi)可測(cè)得溫度,無(wú)風(fēng)的情況下,可在30~50 cm距離內(nèi)測(cè)到溫度,需要定期與額溫槍進(jìn)行校準(zhǔn)。使用時(shí)可安裝防雨防風(fēng)通道進(jìn)行測(cè)溫,以保證最佳準(zhǔn)確度。
表1是在校準(zhǔn)誤差為0.5 ℃的情況下進(jìn)行了測(cè)試得到的校準(zhǔn)后的人體溫度的反饋情況。
表1 設(shè)備測(cè)試結(jié)果
測(cè)溫儀投入實(shí)際使用測(cè)試,一星期內(nèi)從周一至周六,連續(xù)運(yùn)行,系統(tǒng)穩(wěn)定可靠,沒(méi)有出現(xiàn)死機(jī)或重啟現(xiàn)象,硬件可靠性得到驗(yàn)證,測(cè)試反饋總統(tǒng)效果良好
本文設(shè)計(jì)的QUST-CWY01型非接觸式智能測(cè)溫儀利用樹莓派搭載紅外熱成像模組,基于移動(dòng)目標(biāo)檢測(cè)的測(cè)溫算法實(shí)現(xiàn)了在復(fù)雜多變的外界環(huán)境中測(cè)量獲取準(zhǔn)確可靠的人體溫度,測(cè)量誤差不高于0.3 ℃。在人員進(jìn)入測(cè)溫范圍內(nèi)可對(duì)人員進(jìn)行自動(dòng)測(cè)溫并且能夠識(shí)別人員口罩佩戴情況,識(shí)別率約95%以上。
后期該測(cè)溫儀通過(guò)選擇性能更好、分辨率更高的紅外熱成像模組,可以實(shí)現(xiàn)更精確的體溫檢測(cè)。系統(tǒng)后續(xù)可添加更多的功能,比如將智能人行閘道與測(cè)溫儀實(shí)現(xiàn)數(shù)據(jù)通信,通過(guò)測(cè)溫儀的反饋結(jié)果來(lái)控制人行閘道的開關(guān)等等。
綜上,該設(shè)計(jì)可以實(shí)現(xiàn)篩選發(fā)熱及未戴口罩人員,在防疫測(cè)溫領(lǐng)域具有較大應(yīng)用前景。