发明名称 三维人体模型的全自动测量方法
摘要 本发明提供了一种三维人体模型的全自动测量方法,其特征在于,具体步骤为:将人体进行三维人体扫描得到以三角形组成的三维人体模型;人体标志点的自动寻找与人体的自动分段;以及人体尺寸的自动测量。本发明的主要优点在于能够在无需人工干预的情况下,全自动地对三维扫描人体模型进行标识和测量,大大加快了三维人体数据的测量速度,同时具有较高的测量精度。
申请公布号 CN101639349A 申请公布日期 2010.02.03
申请号 CN200910194538.X 申请日期 2009.08.25
申请人 东华大学 发明人 钟跃崎
分类号 G01B11/24(2006.01)I;G01B11/02(2006.01)I 主分类号 G01B11/24(2006.01)I
代理机构 上海申汇专利代理有限公司 代理人 翁若莹
主权项 1、一种三维人体模型的全自动测量方法,其特征在于,具体步骤为:第一步:将人体进行三维人体扫描得到以三角形组成的三维人体模型,其三角形密度为15000个/人,令三维人体模型的身高方向为Y轴,宽度方向为X轴,厚度方向为Z轴;第二步:人体标志点的自动寻找与人体的自动分段:步骤2.1、裆底点的自动寻找:若三维人体模型的大腿根部未出现接触,其裆底点的自动寻找方法如下:令人体的身高为8h,对于亚裔人体而言,在2.8h处以平行于XZ平面的一个截面去切三维人体模型,将所得交点按照+X方向有序排列,比较相邻两点间的距离,将距离最大的两个邻点记录下来,分别为P<sub>l</sub>和P<sub>r</sub>,取其中点P<sub>o</sub>,过P<sub>o</sub>以平行于YZ平面的一个截面去切三维人体模型,得到三维人体模型的纵切面轮廓,该轮廓线上Y值最小点即为裆底点C;对于欧裔人体而言,在3.0h处以平行于XZ平面的一个截面去切人体,然后按照上述方法自动寻找人体的裆底点C;若三维人体模型的大腿根部出现接触,其裆底点的自动寻找方法如下:令人体的身高为8h,从2.8h到4.0h处,等分为20份,以一个宽度为h的折线段向人体的-Z方向依次投射,即对于第i次投射而言,其Y<sub>i</sub>=2.8h+i(1.2h/20);该折线段分为n个点,n=50,它们与人体的交点依次连接后形成的投影线段分为没有峰值出现、出现单峰值以及出现双峰值三种情况,其裆底点C存在于第i次投影出现双峰,而第i+1次投影出现单峰的情况,此时,其裆底点C为第i次投影线段的中点,即C=(P<sub>1</sub>+P<sub>2</sub>)/2;步骤2.2、左右肩点的自动寻找:左右肩点分为左右上肩点和左右腋窝点共四个标志点,其中左右上肩点即为测量肩宽时两肩最远点,其自动寻找方法如下:构造点A的坐标为:x<sub>a</sub>=C<sub>x</sub>+1.5h,y<sub>a</sub>=Y<sub>max</sub>-h,z<sub>a</sub>=C<sub>z</sub>,其中C<sub>x</sub>和C<sub>z</sub>为裆底点C的X轴坐标值和Z轴坐标值,Y<sub>max</sub>为人体Y轴坐标最大值,即人体的身高,距离人体头顶h到1.5h之间,寻找与A点距离最短的点Q<sub>a</sub>,以过该点且平行于XZ平面的一个截面去切三维人体模型,得到肩部轮廓线,轮廓线中具有最大X轴坐标值x<sub>max</sub>和最小X轴坐标值x<sub>min</sub>的两个点即为左右肩点Q<sub>l-acromion</sub>和Q<sub>r-acromion</sub>;左腋窝点Q<sub>l-armpit</sub>的三维坐标计算如下:x<sub>l_armpit</sub>=0.83x<sub>l_acromion</sub>;y<sub>l_armpit</sub>=y<sub>l_acromion</sub>-0.9h;z<sub>l_armpit</sub>=z<sub>l_acromion</sub>;其中x<sub>l_armpit</sub>,y<sub>l_armpit</sub>,z<sub>l_armpit</sub>分别为左腋窝点Q<sub>l-armpit</sub>的三维坐标;x<sub>l_acromion</sub>,y<sub>l_acromion</sub>,z<sub>l_acromion</sub>分别为左上肩点Q<sub>l-acromion</sub>的三维坐标;右腋窝点Q<sub>r-armpit</sub>的三维坐标计算如下:x<sub>r_armpit</sub>=0.83x<sub>r_acromion</sub>;y<sub>r_armpit</sub>=y<sub>r_acromion</sub>-0.9h;z<sub>r_armpit</sub>=z<sub>r_acromion</sub>;其中x<sub>r_armpit</sub>,y<sub>r_armpit</sub>,z<sub>r_armpit</sub>分别为右腋窝点Q<sub>r-armpit</sub>的三维坐标;x<sub>r_acromion</sub>,y<sub>r_acromion</sub>,z<sub>r_acromion</sub>分别为右上肩点Q<sub>r-acromion</sub>的三维坐标;步骤2.3、颈部标志点的自动寻找:颈部标志点有4个,分别为左右颈窝点和前后颈中点,其自动定位方法如下:三维人体模型自Q<sub>a</sub>向上0.5h的区域内,计算任意两个相邻三角形间的夹角余弦如下:cosθ=n<sub>a</sub>·n<sub>b</sub>,其中,n<sub>a</sub>和n<sub>b</sub>分别为这两个相邻三角形的法向矢量,左颈窝点N<sub>l_neck</sub>为人体左侧在该区域内夹角余弦最大者,右颈窝点N<sub>r_neck</sub>为人体右侧在该区域内夹角余弦最大者,过这两个颈部标志点,与Z轴成20度夹角做一个斜切面,得到颈部轮廓线,该轮廓线上Z值最大者为前颈中点N<sub>f_neck</sub>,Z值最小者为后颈中点N<sub>b_neck</sub>;步骤2.4、左右髋点的自动寻找:三维人体模型自裆底点C向上高度为1.2h的区域内,以平行于XZ平面的截面切割人体模型,即对于第i次切割而言,其Y<sub>i</sub>=C<sub>y</sub>+i(1.2h/20);取切割后轮廓线周长最大者为臀围,该轮廓线记为{G<sub>hip</sub>},轮廓线上x值最大和最小者分别为左髋点H<sub>l-hip</sub>和右髋点H<sub>r-hip</sub>;步骤2.5、人体的自动分段:将人体自动分段为左臂,右臂,头部,躯干,左腿和右腿六个区域,人体自动分段方法如下:左臂:过左上肩点和左腋窝点做连线段Q<sub>l-acromion</sub>Q<sub>l_armpit</sub>,所有在该线段左侧的三角形均属于左臂,以此获得人体模型上的左臂三角形集合;右臂:过右上肩点和右腋窝点做连线段Q<sub>r-acromion</sub>Q<sub>r_armpit</sub>,所有在该线段右侧的三角形均属于右臂,以此获得人体模型上的右臂三角形集合;头部:过左右颈窝点和前颈中点这三点构成一个平面,位于该平面上方的三角形均属于头部,以此获得人体模型的头部三角形集合;左腿:位于臀围廓线以下,裆底点以左的三角形属于左腿,以此获得人体模型的左腿三角形集合;右腿:位于臀围廓线以下,裆底点以右的三角形属于右腿,以此获得人体模型的右腿三角形集合;躯干:不属于上述任何一个集合的三角形均属于躯干,以此获得人体模型的躯干三角形集合;第三步:人体尺寸的自动测量:人体尺寸的自动测量分为周长的测量,直线距离的测量和曲线距离的测量三种模式,分别实现如下:步骤3.1、周长的测量:周长测量的方法为用一个等分为100份的包围圆包围被测部位,包围圆的半径为r,向圆心O<sub>c</sub>发送100条射线,将每条射线与人体被测表面的交点顺次连接,即得到被测周长;步骤3.1.1、颈围的测量:在头部三角形集合中,按照如下方式构造包围圆:r=h,O<sub>c</sub>=(N<sub>l_neck</sub>+N<sub>r_neck</sub>)/2;计算其在人体上的投影周长为颈围,将颈围轮廓线记为{G<sub>neck</sub>};步骤3.1.2、胸围的测量:在躯干三角形集合中,选择位于左右腋窝点中较低点向下h处的区域,即令y=MIV(Q<sub>l_armpit_y</sub>,Q<sub>r_armpit_y</sub>),Q<sub>l_armpit_y</sub>,Q<sub>r_armpit_y</sub>分别为左右腋窝点的Y轴坐标值,目标区域Φ为:{Φ|(y-h)<Φ<sub>y</sub><y};在该区域内,自上而下等分20层,对于第i层而言,r=2h,O<sub>c</sub>的三维坐标为O<sub>cx</sub>=(Q<sub>l_armpit_x</sub>+Q<sub>r_armpit_x</sub>)/2;O<sub>cy</sub>=y-ih/20;O<sub>cy</sub>=(Q<sub>l_armpit_z</sub>+Q<sub>r_armpit_z</sub>)/2;Q<sub>l_armpit_x</sub>、Q<sub>r_armpit_x</sub>、Q<sub>l_armpit_z</sub>以及Q<sub>r_armpit_z</sub>分别为左腋窝点的X轴坐标值、右腋窝点的X轴坐标值、左腋窝点的Z轴坐标值以及右腋窝点的Z轴坐标值,每层用上述包围圆投影法求得该层人体轮廓线的周长,这20层中周长最大者即为胸围,将胸围轮廓线记为{G<sub>bust</sub>};胸围轮廓线上位于人体左侧Z值最大者为人体的左乳点B<sub>l_bust</sub>,胸围轮廓线上位于人体右侧Z值最大者为人体的右乳点B<sub>r_bust</sub>;步骤3.1.3、腰围的测量:在躯干三角形集合中,选择位于胸围线向下1.5h处的区域,即令y=B<sub>r_bust_y</sub>,B<sub>r_bust_y</sub>为右乳点的Y轴坐标,目标区域Φ为:{Φ|(y-1.5h)<Φ<sub>y</sub><y};在该区域内,自上而下等分20层,对于第i层而言,r=2h,O<sub>c</sub>的三维坐标为O<sub>cx</sub>=(B<sub>l_bust_x</sub>+B<sub>r_bust_x</sub>)/2;O<sub>cy</sub>=y-i(1.5h)/20;O<sub>cz</sub>=(B<sub>l_bust_z</sub>+B<sub>r_bust_z</sub>)/2;每层用上述包围圆投影法求得该层人体廓线的周长,这20层中周长最小者即为腰围,将腰围轮廓线记为{G<sub>waist</sub>},取其中X轴坐标值为0且Z轴坐标值最大者为腰围点W;步骤3.1.4、腹围的测量:在躯干三角形集合中,选择位于腰围线向下0.6h处的区域,即令y=W<sub>y</sub>,W<sub>y</sub>为腰围点W的Y轴坐标,目标区域Φ为:{Φ|(y-0.6h)<Φ<sub>y</sub><y};在该区域内,自上而下等分20层,即对于第i层而言,r=2h,O<sub>c</sub>的三维坐标为O<sub>cx</sub>=0;O<sub>cy</sub>=y-i(0.6h)/20;O<sub>cz</sub>=0;每层用上述包围圆投影法求得该层人体廓线的周长,这20层中周长最大者即为腹围,将腹围轮廓线记为{G<sub>abdomen</sub>};步骤3.1.5、臀围的测量:步骤2.4中已得到;步骤3.1.6、上臂围的测量:首先确定测量轴MH为右上肩点和右腋窝点连线Q<sub>r-acromion</sub>Q<sub>r-armpit</sub>的中点M与右臂三角形集合中Y轴坐标值最小点H的连线,自M向下h区域内,与MH垂直做10层包围圆投影,所得周长最大者即为上臂围,该轮廓线记为{G<sub>arm</sub>},即M=(Q<sub>r-acromion</sub>+Q<sub>r-armpit</sub>)/2,<maths num="0001"><![CDATA[<math><mrow><mi>H</mi><mo>=</mo><munder><mrow><mi>arg</mi><mi>min</mi></mrow><mi>y</mi></munder><mrow><mo>(</mo><mi>y</mi><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths>对于第i层而言,r=0.5h,<maths num="0002"><![CDATA[<math><mrow><mi>O</mi><mo>=</mo><mi>M</mi><mo>-</mo><mfrac><mrow><mrow><mo>(</mo><mi>ih</mi><mo>)</mo></mrow><mi>HM</mi></mrow><mrow><mn>10</mn><mo>|</mo><mi>HM</mi><mo>|</mo></mrow></mfrac><mo>;</mo></mrow></math>]]></maths>步骤3.1.7、腕围的测量:令L=|HM|,取MH连线的中点E为肘点,自E点向下0.45L处做包围圆,其周长即为腕围,该轮廓线记为{G<sub>wrist</sub>},即r=0.5h,<maths num="0003"><![CDATA[<math><mrow><mi>O</mi><mo>=</mo><mi>E</mi><mo>-</mo><mfrac><mrow><mn>0.45</mn><mi>HM</mi></mrow><mrow><mo>|</mo><mi>HM</mi><mo>|</mo></mrow></mfrac><mo>;</mo></mrow></math>]]></maths>步骤3.1.8、大腿围的测量:取包围圆如下:r=h,O<sub>c</sub>的三维坐标为O<sub>cx</sub>=C<sub>x</sub>-0.5h;O<sub>cy</sub>=C<sub>y</sub>;O<sub>cz</sub>=O<sub>z</sub>;其中C<sub>x</sub>、C<sub>y</sub>和C<sub>z</sub>为裆底点C的三维坐标,该包围圆在右腿三角形集合上投影的周长即为大腿围长,该轮廓线记为{G<sub>thigh</sub>},取大腿围长的重心为T点,<maths num="0004"><![CDATA[<math><mrow><mi>T</mi><mo>=</mo><munderover><mi>&Sigma;</mi><mi>j</mi><mi>n</mi></munderover><mi>p</mi><mo>/</mo><mi>n</mi><mo>,</mo></mrow></math>]]></maths>其中n为投影点p的个数,n=100,取人体脚底Y轴坐标值最小且Z轴坐标值与T点相同者为F点,即<maths num="0005"><![CDATA[<math><mrow><mi>F</mi><mo>=</mo><munder><mrow><mi>arg</mi><mi>min</mi></mrow><mi>y</mi></munder><mrow><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mrow></math>]]></maths>且F<sub>z</sub>=T<sub>z</sub>;步骤3.1.9、踝围的测量:似圆度函数f(c)为:<maths num="0006"><![CDATA[<math><mrow><mi>f</mi><mrow><mo>(</mo><mi>c</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mn>4</mn><mi>&pi;</mi><mo>&CenterDot;</mo><mi>s</mi><mrow><mo>(</mo><mi>c</mi><mo>)</mo></mrow></mrow><msup><mrow><mo>(</mo><mi>p</mi><mrow><mo>(</mo><mi>c</mi><mo>)</mo></mrow><mo>)</mo></mrow><mn>2</mn></msup></mfrac><mo>,</mo></mrow></math>]]></maths>其中s(c)为封闭曲线c的面积,p(c)为封闭曲线c的周长,当封闭曲线的形状与圆接近时,f(c)→1,反之,f(c)→0;踝部标志点的位置如下:自人体脚底至0.5h处,做20层包围投影,即对于第i层投影,r=0.6h,<maths num="0007"><![CDATA[<math><mrow><msub><mi>O</mi><mi>c</mi></msub><mo>=</mo><mi>F</mi><mo>+</mo><mfrac><mrow><mrow><mo>(</mo><mn>0.5</mn><mi>ih</mi><mo>)</mo></mrow><mi>FT</mi></mrow><mrow><mn>20</mn><mo>|</mo><mi>FT</mi><mo>|</mo></mrow></mfrac><mo>;</mo></mrow></math>]]></maths>投影曲线中似圆度最高者即为踝围曲线,该曲线的周长即为踝围,即踝围曲线{G<sub>ankle</sub>}:<maths num="0008"><![CDATA[<math><mrow><msub><mi>G</mi><mi>ankle</mi></msub><mo>=</mo><munder><mrow><mi>arg</mi><mi>max</mi></mrow><mi>c</mi></munder><mrow><mo>(</mo><mi>f</mi><mrow><mo>(</mo><mi>c</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>取A的重心为踝部标志点K,即<maths num="0009"><![CDATA[<math><mrow><mi>K</mi><mo>=</mo><munderover><mi>&Sigma;</mi><mi>j</mi><mi>n</mi></munderover><mi>p</mi><mo>/</mo><mi>n</mi><mo>,</mo></mrow></math>]]></maths>其中n为G<sub>ankle</sub>上投影点p的个数,n=100;步骤3.1.10、膝围的测量:以TK连线的中点为包围圆的圆心,即r=0.6h,O<sub>c</sub>=(T+K)/2,所得投影曲线的周长即为膝围,该轮廓线记为{G<sub>knee</sub>};取其重心R为膝盖标志点:<maths num="0010"><![CDATA[<math><mrow><mi>R</mi><mo>=</mo><munderover><mi>&Sigma;</mi><mi>j</mi><mi>n</mi></munderover><mi>p</mi><mo>/</mo><mi>n</mi><mo>,</mo></mrow></math>]]></maths>其中n为膝为曲线上投影点p的个数,n=100;步骤3.1.11、小腿围的测量:以KR连线为包围圆的轴线,做20层投影,所得周长最大者即为小腿围,该轮廓线记为{G<sub>shin</sub>};即对于第i层而言,r=0.6h,<maths num="0011"><![CDATA[<math><mrow><msub><mi>O</mi><mi>c</mi></msub><mo>=</mo><mi>R</mi><mo>-</mo><mfrac><mrow><mrow><mo>(</mo><mi>ih</mi><mo>)</mo></mrow><mi>KR</mi></mrow><mrow><mn>20</mn><mo>|</mo><mi>KR</mi><mo>|</mo></mrow></mfrac><mo>;</mo></mrow></math>]]></maths>步骤3.1.12、裆长的测量:裆长为过裆底点C的人体纵向轮廓线与腰围,腹围或者臀围线相交的p<sub>1</sub>Cp<sub>2</sub>弧线的长度,采用包围圆投影法求解人体的纵向轮廓线如下:r=5h,O<sub>c</sub>的三维坐标为O<sub>cx</sub>=C<sub>x</sub>;O<sub>cy</sub>=5h;O<sub>cy</sub>=C<sub>z</sub>;p<sub>1</sub>和p<sub>2</sub>分别为该轮廓线与腰围,腹围或者臀围线相交的交点且满足p<sub>1z</sub>>C<sub>z</sub>以及p<sub>2z</sub><C<sub>z</sub>;步骤3.2、曲线距离的测量:对于人体表面选定的两点p<sub>1</sub>和p<sub>2</sub>而言,将这两点向远离人体的方向平移为p′<sub>1</sub>和p′<sub>2</sub>以使两点的联线p′<sub>1</sub>p′<sub>2</sub>与人体不相交;将p′<sub>1</sub>p′<sub>2</sub>均分为n个点,n=100,然后以这n个点为起点,沿平行于p<sub>1</sub>p′<sub>1</sub>的方向向人体发送射线,将每条射线与人体的交点依次连接起来所得折线段,即为<img file="A2009101945380007C1.GIF" wi="111" he="100" />,该折线段的长度即为两点p<sub>1</sub>和p<sub>2</sub>间的曲线距离;选定p<sub>1</sub>和p<sub>2</sub>分别为左右上肩点,即p<sub>1</sub>=Q<sub>r-acromion</sub>,p<sub>2</sub>=Q<sub>l-acromion</sub>,采用上述方法测量人体的肩宽;选定p<sub>1</sub>和p<sub>2</sub>分别为右上肩点和人体腕围轮廓线{G<sub>wrist</sub>}上x值最小的点,即p<sub>1</sub>=Q<sub>r-acromion</sub>,<maths num="0012"><![CDATA[<math><mrow><msub><mi>p</mi><mn>2</mn></msub><mo>=</mo><munder><mrow><mi>arg</mi><mi>min</mi></mrow><mrow><msub><mi>p</mi><mi>i</mi></msub><mo>&Element;</mo><mo>{</mo><msub><mi>G</mi><mi>wrist</mi></msub><mo>}</mo></mrow></munder><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>采用上述方法测量人体的手臂全长;步骤3.3、直线距离的测量:对于人体表面选定的两点p<sub>1</sub>和p<sub>2</sub>而言,直线距离d=|p<sub>1</sub>p<sub>2</sub>|;令人体模型中所有三角形顶点集合为{G<sub>body</sub>},选定p<sub>1</sub>和p<sub>2</sub>分别为y值最大和最小点,即<maths num="0013"><![CDATA[<math><mrow><msub><mi>p</mi><mn>1</mn></msub><mo>=</mo><munder><mrow><mi>arg</mi><mi>min</mi></mrow><mrow><msub><mi>p</mi><mi>i</mi></msub><mo>&Element;</mo><mo>{</mo><msub><mi>G</mi><mi>body</mi></msub><mo>}</mo></mrow></munder><mrow><mo>(</mo><mi>y</mi><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths><maths num="0014"><![CDATA[<math><mrow><msub><mi>p</mi><mn>2</mn></msub><mo>=</mo><munder><mrow><mi>arg</mi><mi>min</mi></mrow><mrow><msub><mi>p</mi><mi>i</mi></msub><mo>&Element;</mo><mo>{</mo><msub><mi>G</mi><mi>body</mi></msub><mo>}</mo></mrow></munder><mrow><mo>(</mo><mi>y</mi><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>令这两点的z值相同,即p<sub>1z</sub>=p<sub>2z</sub>,采用上述方法测量人体的身高;选定p<sub>1</sub>和p<sub>2</sub>分别为颈围轮廓线和腰围轮廓线上z值最小点,即<maths num="0015"><![CDATA[<math><mrow><msub><mi>p</mi><mn>1</mn></msub><mo>=</mo><munder><mrow><mi>arg</mi><mi>min</mi></mrow><mrow><msub><mi>p</mi><mi>i</mi></msub><mo>&Element;</mo><mo>{</mo><msub><mi>G</mi><mi>neck</mi></msub><mo>}</mo></mrow></munder><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths><maths num="0016"><![CDATA[<math><mrow><msub><mi>p</mi><mn>2</mn></msub><mo>=</mo><munder><mrow><mi>arg</mi><mi>min</mi></mrow><mrow><msub><mi>p</mi><mi>i</mi></msub><mo>&Element;</mo><mo>{</mo><msub><mi>G</mi><mi>waist</mi></msub><mo>}</mo></mrow></munder><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>采用上述方法测量人体的背长;选定p<sub>1</sub>和p<sub>2</sub>分别为臀围轮廓线和踝围轮廓线上x值最小点,即<maths num="0017"><![CDATA[<math><mrow><msub><mi>p</mi><mn>1</mn></msub><mo>=</mo><munder><mrow><mi>arg</mi><mi>min</mi></mrow><mrow><msub><mi>p</mi><mi>i</mi></msub><mo>&Element;</mo><mo>{</mo><msub><mi>G</mi><mi>hiip</mi></msub><mo>}</mo></mrow></munder><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths><maths num="0018"><![CDATA[<math><mrow><msub><mi>p</mi><mn>2</mn></msub><mo>=</mo><munder><mrow><mi>arg</mi><mi>min</mi></mrow><mrow><msub><mi>p</mi><mi>i</mi></msub><mo>&Element;</mo><mo>{</mo><msub><mi>G</mi><mi>ankle</mi></msub><mo>}</mo></mrow></munder><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>采用上述方法测量人体的腿长。
地址 201620上海市松江区人民北路2999号