发明名称 一种基于双目视觉的人体姿态动作研究方法
摘要 本发明公开了一种基于双目视觉的人体姿态动作研究方法,该方法首先通过双目标定获取相机的内外参数,接着从相机拍摄的图像中提取出各肤色区域的质心点的坐标,并对质心点进行匹配判断,然后以世界坐标系为基准求出匹配的质心点在世界坐标系中的坐标,最后根据质心点在世界坐标系中坐标判断人体的姿态及动作。本发明不需要拍摄大量图像,能够通过实时采集视频帧对人脸和双手等人体关键部位的质心点进行立体匹配,以获取人体关键部位之间的位置关系,运行成本较低。
申请公布号 CN104036488B 申请公布日期 2017.01.11
申请号 CN201410184042.5 申请日期 2014.05.04
申请人 北方工业大学 发明人 叶青;董俊峰;张永梅
分类号 G06T7/00(2006.01)I;G06T7/60(2006.01)I 主分类号 G06T7/00(2006.01)I
代理机构 北京科龙寰宇知识产权代理有限责任公司 11139 代理人 孙皓晨;朱世定
主权项 一种基于双目视觉的人体姿态动作研究方法,其特征在于,包括以下步骤:步骤S1:将左相机和右相机分别置于与地面平行的同一水平线上,其中,两部相机为同一型号,两部相机之间的距离为设定值,且两部相机均能拍摄到完整的人体上半身;步骤S2:对所述左相机和所述右相机进行双目标定,首先准备一块带有多个圆形特征点的矩形标定板,其中,多个所述圆形特征点排列成多行和多列的阵列,位于同一行的圆形特征点的圆心在同一直线上,位于同一列的圆形特征点的圆心在同一直线上;步骤S3:将所述标定板置于相机拍摄区域内的至少5个不同方位,并分别使用左相机和右相机对所述标定板进行拍摄,得到多张对应左相机的左标定板图像和多张对应右相机的右标定板图像;步骤S4:计算所述左标定板图像中的多个所述圆形特征点在左图像坐标系中的坐标,以及所述右标定板图像中的多个所述圆形特征点在右图像坐标系中的坐标,其中,所述左图像坐标系的原点为所述左相机的成像面与其光轴的交点,所述右图像坐标系的原点为所述右相机的成像面与其光轴的交点;步骤S5:利用极线约束规则分别匹配同一方位下的所述左标定板图像和所述右标定板图像,得到每个方位下多个所述圆形特征点在所述左图像坐标系和所述右图像坐标系中的特征圆心;步骤S6:根据每个方位下多个所述圆形特征点在所述左图像坐标系和所述右图像坐标系中的特征圆心,利用Levenberg‑Marquardt算法计算所述左相机的内参数,以及所述左相机和所述右相机组成的相机系统的外参数,其中,所述内参数至少包括左图像坐标系中u轴的有效焦距f<sub>x</sub>、v轴的有效焦距f<sub>y</sub>以及左图像坐标系的中心坐标(c<sub>x</sub>,c<sub>y</sub>),所述外参数至少包括旋转向量R和平移向量t;步骤S7:构建人体肤色模型,首先使用手工标注方法统计大量RGB格式人体图像中的肤色区域的RGB值,得到人体肤色在RGB空间的分布情况;步骤S8:将RGB空间转化到YCrCb空间,得到人体肤色在YCrCb空间的分布情况;步骤S9:根据人体肤色在YCrCb空间的分布情况构建人体肤色模型;步骤S10:被采集者站立在所述左相机和所述右相机的图像采集范围内,在t0时刻,使用所述左相机和所述右相机分别采集一帧左相机图像和一帧右相机图像;步骤S11:根据所述人体肤色模型,分别对所述左相机图像和所述右相机图像进行预处理滤波去噪及肤色检测,得到所述左相机图像中的多个连通的肤色区域和所述右相机图像中的多个连通的肤色区域;步骤S12:分别对所述左相机图像中的多个连通的肤色区域和所述右相机图像中的多个连通的肤色区域进行二值化处理及滤波,获取所述左相机图像中的多个肤色区域和所述右相机图像中的多个肤色区域,其中,所述多个肤色区域至少包括被采集者的脸部;步骤S13:分别计算所述左相机图像和所述右相机图像中的多个肤色区域的质心点的坐标,首先从所述左相机图像中的多个肤色区域和所述右相机图像中的多个肤色区域中取一个肤色区域;步骤S14:取该肤色区域的最小外接矩形,得到大小为m*n的子图像,其中m为所述最小外接矩形的宽度,n为所述最小外接矩形的长度;步骤S15:假设(i,j)为所述子图像中以对应的图像坐标系为基准的像素点的坐标,f(i,j)为所述子图像在该像素点的灰度值,则所述子图像的矩为:<maths num="0001"><math><![CDATA[<mrow><msub><mi>M</mi><mrow><mi>p</mi><mi>q</mi></mrow></msub><mo>=</mo><msubsup><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></msubsup><msubsup><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></msubsup><msup><mi>i</mi><mi>p</mi></msup><msup><mi>j</mi><mi>q</mi></msup><mi>f</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0001045042960000031.GIF" wi="606" he="86" /></maths>步骤S16:分别计算所述子图像的0阶矩M<sub>00</sub>和1阶矩M<sub>10</sub>及M<sub>01</sub>;步骤S17:设所述子图像的质心点的坐标为P(x<sub>c</sub>,y<sub>c</sub>),按照下式计算所述子图像的质心点的坐标:<maths num="0002"><math><![CDATA[<mrow><msub><mi>x</mi><mi>c</mi></msub><mo>=</mo><mfrac><msub><mi>M</mi><mn>10</mn></msub><msub><mi>M</mi><mn>00</mn></msub></mfrac><mo>,</mo><msub><mi>y</mi><mi>c</mi></msub><mo>=</mo><mfrac><msub><mi>M</mi><mn>01</mn></msub><msub><mi>M</mi><mn>00</mn></msub></mfrac><mo>;</mo></mrow>]]></math><img file="FDA0001045042960000032.GIF" wi="478" he="127" /></maths>步骤S18:重复上述步骤S13~S17直至所述左相机图像中的多个肤色区域和所述右相机图像中的多个肤色区域全部计算完成;步骤S19:判断所述左相机图像中的多个肤色区域分别对应的质心点与所述右相机图像中的多个肤色区域分别对应的质心点之间的匹配关系,首先设定一灰度相关值阈值T;步骤S20:从所述右相机图像中的多个肤色区域中取一个肤色区域,并从所述左相机图像中取出与该右相机图像的肤色区域对应的肤色区域;步骤S21:以该右相机图像的肤色区域的质心点的坐标p<sub>1</sub>(x<sub>1</sub>,y<sub>1</sub>)为中心,选定一个大小为(2m′+1)*(2n′+1)的窗口,其中m′,n′为设定值的自然数;步骤S22:以左相机图像中对应肤色区域的质心点的坐标p<sub>2</sub>(x<sub>2</sub>,y<sub>2</sub>)为中心,也选定一个大小为(2m′+1)*(2n′+1)的窗口;步骤S23:假设I<sub>1</sub>(x<sub>1</sub>+i,y<sub>1</sub>+j)为右相机图像中该肤色区域的质心点周围的像素点的灰度值,<img file="FDA0001045042960000033.GIF" wi="181" he="71" />为右相机图像中该肤色区域的最小外接矩形包围的区域范围内所有像素点的灰度均值,I<sub>2</sub>(x<sub>2</sub>+i,y<sub>2</sub>+j)为左相机图像中对应肤色区域的质心点周围的像素点的灰度值,<img file="FDA0001045042960000034.GIF" wi="193" he="71" />为左相机图像中对应肤色区域的最小外接矩形包围的区域范围内所有像素点的灰度均值,σ(I<sub>k</sub>)为标准差,通过以下两式计算该右相机图像的肤色区域与该左相机图像的肤色区域的灰度相关值R(p<sub>1</sub>,p<sub>2</sub>):<img file="FDA0001045042960000041.GIF" wi="1044" he="223" />k=1或2,<maths num="0003"><math><![CDATA[<mrow><mi>R</mi><mrow><mo>(</mo><msub><mi>p</mi><mn>1</mn></msub><mo>,</mo><msub><mi>p</mi><mn>2</mn></msub><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mo>-</mo><msup><mi>n</mi><mo>&prime;</mo></msup></mrow><msup><mi>n</mi><mo>&prime;</mo></msup></munderover><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mo>-</mo><msup><mi>m</mi><mo>&prime;</mo></msup></mrow><msup><mi>m</mi><mo>&prime;</mo></msup></munderover><mo>&lsqb;</mo><msub><mi>I</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><mn>1</mn></msub><mo>+</mo><mi>i</mi><mo>,</mo><msub><mi>y</mi><mn>1</mn></msub><mo>+</mo><mi>j</mi><mo>)</mo></mrow><mo>-</mo><mover><mrow><msub><mi>I</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><mn>1</mn></msub><mo>,</mo><msub><mi>y</mi><mn>1</mn></msub><mo>)</mo></mrow></mrow><mo>&OverBar;</mo></mover><mo>&rsqb;</mo><mo>&lsqb;</mo><msub><mi>I</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><mn>2</mn></msub><mo>+</mo><mi>i</mi><mo>,</mo><msub><mi>y</mi><mn>2</mn></msub><mo>+</mo><mi>j</mi><mo>)</mo></mrow><mo>-</mo><mover><mrow><msub><mi>I</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><mn>2</mn></msub><mo>,</mo><msub><mi>y</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow><mo>&OverBar;</mo></mover><mo>&rsqb;</mo></mrow><mrow><mo>(</mo><mn>2</mn><msup><mi>m</mi><mo>&prime;</mo></msup><mo>+</mo><mn>1</mn><mo>)</mo><mo>(</mo><mn>2</mn><msup><mi>n</mi><mo>&prime;</mo></msup><mo>+</mo><mn>1</mn><mo>)</mo><msqrt><mrow><msup><mi>&sigma;</mi><mn>2</mn></msup><mrow><mo>(</mo><msub><mi>I</mi><mn>1</mn></msub><mo>)</mo></mrow><mo>&times;</mo><msup><mi>&sigma;</mi><mn>2</mn></msup><mrow><mo>(</mo><msub><mi>I</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow></msqrt></mrow></mfrac><mo>;</mo></mrow>]]></math><img file="FDA0001045042960000042.GIF" wi="1614" he="219" /></maths>步骤S24:比较灰度相关值R(p<sub>1</sub>,p<sub>2</sub>)与灰度相关值阈值T的大小,当R(p<sub>1</sub>,p<sub>2</sub>)&lt;T时,说明该左图像中肤色区域的质心点与该右图像中肤色区域的质心点不匹配,并舍弃该左图像中肤色区域的质心点和该右图像中肤色区域的质心点;步骤S25:重复上述步骤S20~S24直至对所述右相机图像中的多个肤色区域全部完成匹配关系判断;步骤S26:根据步骤S6中得到的内参数和外参数,计算相匹配的质心点在世界坐标系中的坐标,首先,假设u<sub>l</sub>、u<sub>r</sub>分别为某对相匹配的质心点在左图像坐标系中的横坐标和在右图像坐标系中的横坐标,按下式计算所述左相机和所述右相机的视差D:D=u<sub>l</sub>‑u<sub>r</sub>;步骤S27:假设所述左相机的焦距为f<sub>c</sub>,所述左相机的光心和所述右相机的光心之间的距离为b,以所述左相机的光心为原点建立世界坐标系,其中,该世界坐标系为左手坐标系,按下式计算所述左相机在世界坐标系中的坐标z<sub>c</sub>:<maths num="0004"><math><![CDATA[<mrow><msub><mi>z</mi><mi>c</mi></msub><mo>=</mo><mi>b</mi><mfrac><msub><mi>f</mi><mi>c</mi></msub><mi>D</mi></mfrac><mo>;</mo></mrow>]]></math><img file="FDA0001045042960000043.GIF" wi="205" he="118" /></maths>步骤S28:假设该对相匹配的质心点在左图像坐标系中的纵坐标为v<sub>l</sub>,该对相匹配的质心点在左图像坐标系中的坐标对应世界坐标系中坐标为(x<sub>w</sub>,y<sub>w</sub>,z<sub>w</sub>)的点,则按下式计算x<sub>w</sub>,y<sub>w</sub>,z<sub>w</sub>的值,其中s为倾斜因子,0<sup>T</sup>=[0,0,0]:<maths num="0005"><math><![CDATA[<mrow><msub><mi>z</mi><mi>c</mi></msub><mfenced open = "[" close = "]"><mtable><mtr><mtd><msub><mi>u</mi><mi>l</mi></msub></mtd></mtr><mtr><mtd><msub><mi>v</mi><mi>l</mi></msub></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><msub><mi>f</mi><mi>x</mi></msub></mtd><mtd><mi>s</mi></mtd><mtd><msub><mi>c</mi><mi>x</mi></msub></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><msub><mi>f</mi><mi>y</mi></msub></mtd><mtd><msub><mi>c</mi><mi>y</mi></msub></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mfenced><mfenced open = "[" close = "]"><mtable><mtr><mtd><mi>R</mi></mtd><mtd><mi>t</mi></mtd></mtr><mtr><mtd><msup><mn>0</mn><mi>T</mi></msup></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mfenced><mfenced open = "[" close = "]"><mtable><mtr><mtd><msub><mi>x</mi><mi>w</mi></msub></mtd></mtr><mtr><mtd><msub><mi>y</mi><mi>w</mi></msub></mtd></mtr><mtr><mtd><msub><mi>z</mi><mi>w</mi></msub></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0001045042960000051.GIF" wi="838" he="311" /></maths>步骤S29:经过一设定时间间隔后,在t1时刻,重复上述步骤S10~S28;步骤S30:判断被采集者的脸部的质心点是否被舍弃,如果未被舍弃,则进行步骤S31;步骤S31:假设t0时刻采集到的图像计算出的脸部的质心点的坐标在世界坐标系中的坐标为P<sub>t0</sub>(x0,y0,z0),t1时刻采集到的图像计算出的脸部的质心点的坐标在世界坐标系中的坐标为P<sub>t1</sub>(x′,y′,z′),设定一左右平移阈值ε和一前后平移阈值δ,并进行以下判断:①若y′‑y0&lt;0,则判定被采集者发生了下蹲的动作,②若x′‑x0&lt;ε,则判定被采集者向左发生了平移,③若x′‑x0&gt;ε,则判定被采集者向右发生了平移,④若z′‑z0&lt;δ,则判定被采集者向前发生了平移,⑤若z′‑z0&gt;δ,则判定被采集者向后发生了平移。
地址 100144 北京市石景山区晋元庄5号