1.一种基于热成像仪测量人体脸部温度校准方法,其特征在于,包含以下顺序的步骤:
s1、红外热像仪每次采集的温度像素点阵是二维数组pixel;
s2、遍历温度像素数组pixel,寻找温度像素数组pixel中包含32℃-45℃范围的所有数据赋值给一维数组filter;
s3、按递增顺序排序一维数组filter;
s4、从排序后的filter中取3/4分位点的数据做为基准,从一维数组filter中取第q3个元素作为基准数,得到基准温度s=filter[q3];
其中,
s5、从二维数组pixel中寻找所有符合s±diff的像素位置标1,不符合s±diff的像素位置标0,赋值给二维数组pixel_bin,并且从二维数组pixel_bin找出值为1的边界并且居中在最大的正方形赋值给二维数组face;
其中,diff是指基准温度误差范围,二维数组pixel_bin的宽高与二维数组pixel相同,二维数组face的宽高不会超过二维数组pixel的宽高;
s6、二维数组face为人脸温度的轮廓,二维数组face的顶部数据为额头部位数据,额头部位数据中所有元素为1对应的温度像素数组pixel元素的值的平均值是额头表面温度temperature;
s7、额头表面温度拟合成体内温度,经过实验得出拟合函数:
body_temperature=0.7797×temperature+9.7271;
其中,body_temperature是人体体内温度。
2.根据权利要求1所述基于热成像仪测量人体脸部温度校准方法,其特征在于,步骤s1中,所述二维数组pixel已经经过距离拟合、额头表面温度换算为人体温度。
3.根据权利要求1所述基于热成像仪测量人体脸部温度校准方法,其特征在于,步骤s2中,所述一维数组filter的数组长度范围由pixel决定;如果pixel是32×32的二维数组则filter的最大长度为32×32=1024,其他依此类推。
4.根据权利要求1所述基于热成像仪测量人体脸部温度校准方法,其特征在于,步骤s1中,所述二维数组pixel为32×32的温度像素点阵:
5.根据权利要求1所述基于热成像仪测量人体脸部温度校准方法,其特征在于,步骤s2中,所述一维数组filter为:
6.根据权利要求1所述基于热成像仪测量人体脸部温度校准方法,其特征在于,步骤s3中,所述按递增顺序排序一维数组filter为:
7.根据权利要求1所述基于热成像仪测量人体脸部温度校准方法,其特征在于,步骤s4中,所述一维数组filter的长度为20,
8.根据权利要求1所述基于热成像仪测量人体脸部温度校准方法,其特征在于,步骤s5中,假设所述diff=0.7,则寻找二维数组pixel所有元素值在36.5±0.7范围的像素位置标1,其它标为0;
从二维数组pixel_bin中找出值为1的边界并且居中在最大的正方形;
在二维数组pixel_bin中值为1横跨3列5行,所以最大的正方形是5×5,将5×3数组居中放进5×5的正方形中,得到二维数组face;
能够看出以上二维数组face是人脸温度的轮廓,第1行是额头部位,第2、3、4行是眼睛到嘴巴的部位,第5行是脖子部位。
9.根据权利要求1所述基于热成像仪测量人体脸部温度校准方法,其特征在于,步骤s5中,所述二维数组face第1行[01100]每个元素分别对应二维数组pixel中[p9,8p9,9p9,10p9,11p9,12]元素,求二维数组face第1行所有元素为1对应的温度像素数组pixel元素的值的平均值是额头表面温度:
temperature=average(p9,9,p9,10)。
10.根据权利要求1所述基于热成像仪测量人体脸部温度校准方法,其特征在于,所述二维数组face还用于判断人脸是否被遮挡物遮挡,具体包括训练模型与模型识别两部分:
一、训练模型部分:
1、数学模型定义:
(1)学习率k=0.1;
(2)输入层神经元数:input_num=100;将二维数组face压缩或者放大成10×10二维数组,然后将每行按顺序排列成长度为100的一维数组,所以input_num=100;
(3)输出层神经元数:output_num=1;由于输出结果要么是被遮挡要么不被遮挡,所以只要输出1个数就能够表示是否被遮挡,接近0表示不被遮挡,接近1表示被遮挡;
(4)隐藏层神经元数:hide_layout_num=10;
(5)激活函数使用
(6)误差函数为
(7)隐藏层的权重w2是input_num×hide_layout_num的二维数组,偏置b2是长度为hide_layout_num的一维数组,神经元a2是长度为hide_layout_num的一维数组;
(8)输出层的权重w3是hide_layout_num×output_num的二维数组,偏置b3是长度为output_num的一维数组,神经元a3是长度为output_num的一维数组;
(9)神经元计算函数calc_cell(x,w,b)=sigmoid(x·w+b);其中,x·w是两个数组的内积,x是输入神经元的值,w是权重与每个x数组元素一一对应,b是偏置;
2、模型训练过程:
(1)随机初始化隐藏层的权重w2与偏置b2,输出层的权重w3与偏置b3;j为样本下标,max_j为样本数,input_val=[input_val1input_val2...input_valmax_j]为face样本数组,每个样本元素是长度为100的数组;
(2)定义w2、b2、w3、b3的偏导分别为dw2、db2、dw3、db3初始值为0;
(3)x=input_valj是input_val数组第j个数组压缩或放大成10×10二维数组后将每行按顺序排列成长度为100的一维数组x=[x1x2...x99x100];
(4)输入第j个样本计算隐藏层每个神经元的值:
其中,下标i是隐藏层第i个神经元,取值范围是1-10,循环计算第1至第10个隐藏层的神经元值,
(5)输入所有隐藏层神经元样本计算输出层每个神经元的值:
a3=calc_cell(a2,w3,b3),
其中,a3是输出层神经元,w3是长度为10的一维数组是a3的所有输入权重,b3是a3的偏置;
(6)计算第j个样本的误差关于输出层神经元的偏导:
其中,a3为预测值,real_yj是第j个样本的实际值;
(7)计算第j个样本的误差关于隐藏层神经元的偏导:
其中,d3×w3是矩阵相乘;
(8)计算并累加第j个样本的误差关于输出层权重的偏导:
(9)计算并累加第j个样本的误差关于输出层偏置的偏导:
(10)计算并累加第j个样本的误差关于隐藏层权重的偏导:
其中,下标i是隐藏层第i个神经元,取值范围是1-10,循环计算第1至第10个隐藏层的神经元值;
(11)计算并累加第j个样本的误差关于隐藏层偏置的偏导:
其中,下标i是隐藏层第i个神经元,取值范围是1-10,循环计算第1至第10个隐藏层的神经元值;
(12)将j++继续第3步,直到j=max_j执行步骤(13);
(13)更新隐藏层、输出层的权重与偏置:
w3=w3+(-k×dw3),
b3=b3+(-k×db3),
w2=w2+(-k×dw2),
b2=b2+(-k×db2);
(14)将j=0继续第3步,直到
二、模型计算过程:
1、x是实时采集到的二维数组face压缩或放大成10×10二维数组后将每行按顺序排列成长度为100的一维数组x=[x1x2...x99x100];
2、计算隐藏层每个神经元的值:
其中,下标i是隐藏层第i个神经元,取值范围是1-10,循环计算第1至第10个隐藏层的神经元值,
3、输入所有隐藏层神经元样本计算输出层每个神经元的值:
a3=calc_cell(a2,w3,b3),
其中,a3是输出层神经元,w3是长度为10的一维数组是a3的所有输入权重,b3是a3的偏置;
4、如果a3大于或等于某一阈值,则判定人脸被被遮挡。