发明名称 一种基于编码结构光的三维重建方法
摘要 一种基于编码结构光的三维重建方法,包括以下步骤:1)向待测物投射结构光,摄像机捕捉经待测物调制的图像;2)进行光模板匹配,包括:(2.1)光条边界的定位,沿着图像的每个列扫描,确定灰度变化强烈的像素点为候选边缘点,并搜索局部领域;(2.2)光条匹配:采用颜色聚类的方法建立颜色匹配特征向量,对图像颜色和投射颜色进行比较,定义色彩特征向量与聚类中心的欧式距离来分配候选光条红绿蓝白颜色;3)利用已经标定好的系统参数进行待测物的三维重建,标定好的转换矩阵参数确定了空间点坐标和它的图像坐标点的关系,从特征点的图像坐标恢复空间三维坐标。本发明能简化计算过程、匹配精度高、重建精度高。
申请公布号 CN101667303B 申请公布日期 2013.01.16
申请号 CN200910153603.4 申请日期 2009.09.29
申请人 浙江工业大学 发明人 陈胜勇;胡正周;管秋;原长春;潘贝;李帅;王万良
分类号 G06T17/00(2006.01)I;G06T7/00(2006.01)I;G01B11/25(2006.01)I 主分类号 G06T17/00(2006.01)I
代理机构 杭州天正专利事务所有限公司 33201 代理人 王兵;王利强
主权项 1.一种基于编码结构光的三维重建方法,其特征在于:所述三维重建方法包括以下步骤:1)、向待测物投射结构光,摄像机捕捉经待测物调制的图像;2)、进行光模板匹配,包括以下步骤:(2.1)、光条边界的定位:待检测的光模板为一维条纹编码,沿着图像的每个列扫描,对每个像素点的各个通道用一维列算子进行预处理,确定灰度变化强烈的像素点为候选边缘点,在图像每一列上以候选边缘点为中心,选取一定大小的区域,其最大值不超过光条宽度的1/2,搜索局部邻域的步骤如下:(2.1.1).初始化候选边缘点作为一区域中心z<sub>i,j</sub>;(2.1.2).沿列方向搜索,将z<sub>i-k,j</sub>,z<sub>i+k,j</sub>像素颜色空间转成色调、亮度和饱和度(HIS)空间;(2.1.3).增加新的点到这个区域,只要满足与相邻像素点的色调值差不超过设定的阈值Hh=|z<sub>i±k,j,h</sub>-z<sub>i±k±1,j,h</sub>|      (1)h是两个像素色调的差值,z<sub>i±k,j,h</sub>表示第i±k行j列像素的色调值;经算子处理后,像素点的三通道灰度值为G<sub>ij</sub>,局部区域三通道灰度值之和的最大值的像素点定义为边界点;<maths num="0001"><![CDATA[<math><mrow><mi>E</mi><mo>=</mo><mi>max</mi><mrow><mo>(</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>C</mi></munderover><msub><mi>G</mi><mi>ij</mi></msub><mo>)</mo></mrow><mo>,</mo><mi>C</mi><mo>=</mo><mn>3</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths>E为算子处理后像素点灰度值之和的最大值;(2.2)、光条匹配:采用颜色聚类的方法建立颜色匹配特征向量,对图像颜色和投射颜色进行比较,定义色彩特征向量与聚类中心的欧式距离来分配候选光条红绿蓝白颜色;选择红、绿、蓝三基色和白作为编码颜色,除黑白外,红、绿、蓝和白之间的空间距离达到最大,编码颜色集选取为φ={(255,0,0),(0,255,0),(0,0,255),(255,255,255)}的4元素集,白色作为间隔各条颜色,对应的颜色集字母映射为:Φ={R<sub>i</sub>|i=1,2,3,4}R<sub>i</sub>分别指示红、绿、蓝和白四颜色的RGB特征向量;引进等宽白色光条来间隔彩色光条,使相邻光条使用同一种颜色色调值,光模板由2n<sup>m</sup>条光条组成,其中颜色数目为n,窗口大小为m;定义Q={1,2,...,2n<sup>m</sup>},对应每条光条的坐标序号值,每个条纹边界划分一个平面空间,投射的每一帧图像由相同的光模板组成,后一帧由前一帧下移光条1/4宽度组成;不同的颜色群集聚在特定的RGB空间区域,通过样本点训练颜色群的聚类中心,然后用点到点的距离来匹配光条颜色;D<sub>ik</sub>=d<sup>2</sup>(Φ<sub>i</sub>,C<sub>k</sub>)k=1,2,3,4            (3)D<sub>ik</sub>是两点距离的平方,Φ<sub>i</sub>是光条中心像素的RGB特征向量,C<sub>k</sub>是颜色聚类中心,d(x,y)是x,y两点之间距离;设D=min(D<sub>ik</sub>),那么光条颜色的分配按照(4)式进行:s<sub>c</sub>={k if D==D<sub>ik</sub> k=1,2,3,4}        (4)s<sub>c</sub>表示光条颜色;分配好颜色后,每三条相邻的光条颜色组成一个码字s<sub>i</sub>,找出每个码字在整个序列的位置就是解码;光条坐标值x<sub>i</sub>定义为:<maths num="0002"><![CDATA[<math><mrow><msub><mi>x</mi><mi>i</mi></msub><mo>=</mo><mi>DdBS</mi><mrow><mo>(</mo><msub><mi>s</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>+</mo><mfrac><mn>1</mn><mn>4</mn></mfrac><mrow><mo>(</mo><mi>j</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow></math>]]></maths>DdBS(s<sub>i</sub>)表示直接解码第j帧光模板子序列s<sub>i</sub>的坐标位置;3)、利用已经标定好的系统参数进行待测物的三维重建,具体过程为:标定好的转换矩阵参数确定了空间点坐标和它的图像坐标点的关系,从特征点的图像坐标恢复空间三维坐标;拍摄经调制的图像,经图像处理后获取图像坐标<img file="FSB00000873193400022.GIF" wi="133" he="63" />计算得出理想归一化坐标(x,y),摄像机坐标系下空间点和空间存在如下的关系:<maths num="0003"><![CDATA[<math><mrow><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>X</mi><mi>c</mi></msub></mtd></mtr><mtr><mtd><msub><mi>Y</mi><mi>c</mi></msub></mtd></mtr><mtr><mtd><msub><mi>Z</mi><mi>c</mi></msub></mtd></mtr></mtable></mfenced><mo>=</mo><mi>R</mi><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></mtable></mfenced><mo>+</mo><mi>t</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>r</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi>r</mi><mn>2</mn></msub></mtd></mtr><mtr><mtd><msub><mi>r</mi><mn>3</mn></msub></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></mtable></mfenced><mo>+</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>t</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi>t</mi><mn>2</mn></msub></mtd></mtr><mtr><mtd><msub><mi>t</mi><mn>3</mn></msub></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow></math>]]></maths>定义X<sub>c</sub>=xZ<sub>c</sub>,Y<sub>c</sub>=yZ<sub>c</sub>,带入(6)得:<maths num="0004"><![CDATA[<math><mrow><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>xZ</mi><mi>c</mi></msub></mtd></mtr><mtr><mtd><msub><mi>yZ</mi><mi>c</mi></msub></mtd></mtr><mtr><mtd><msub><mi>Z</mi><mi>c</mi></msub></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>r</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi>r</mi><mn>2</mn></msub></mtd></mtr><mtr><mtd><msub><mi>r</mi><mn>3</mn></msub></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></mtable></mfenced><mo>+</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>t</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi>t</mi><mn>2</mn></msub></mtd></mtr><mtr><mtd><msub><mi>t</mi><mn>3</mn></msub></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow></math>]]></maths>消去Z<sub>c</sub>,化简得:<maths num="0005"><![CDATA[<math><mrow><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>xt</mi><mn>3</mn></msub><mo>-</mo><msub><mi>t</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi>yt</mi><mn>3</mn></msub><mo>-</mo><msub><mi>t</mi><mn>2</mn></msub></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>r</mi><mn>1</mn></msub><mo>-</mo><msub><mi>xr</mi><mn>3</mn></msub></mtd></mtr><mtr><mtd><msub><mi>r</mi><mn>2</mn></msub><mo>-</mo><msub><mi>yr</mi><mn>3</mn></msub></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></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mrow></math>]]></maths>由投影仪坐标x<sub>d</sub>和世界坐标X=(X<sub>w</sub>,Y<sub>w</sub>,Z<sub>w</sub>)建立投影仪模型如下:<maths num="0006"><![CDATA[<math><mrow><mi>&gamma;</mi><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>x</mi><mi>d</mi></msub></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>m</mi><mn>1</mn></msub></mtd><mtd><msub><mi>m</mi><mn>14</mn></msub></mtd></mtr><mtr><mtd><msub><mi>m</mi><mn>2</mn></msub></mtd><mtd><msub><mi>m</mi><mn>24</mn></msub></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><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>m</mi><mn>11</mn></msub></mtd><mtd><msub><mi>m</mi><mn>12</mn></msub></mtd><mtd><msub><mi>m</mi><mn>13</mn></msub></mtd><mtd><msub><mi>m</mi><mn>14</mn></msub></mtd></mtr><mtr><mtd><msub><mi>m</mi><mn>21</mn></msub></mtd><mtd><msub><mi>m</mi><mn>22</mn></msub></mtd><mtd><msub><mi>m</mi><mn>23</mn></msub></mtd><mtd><msub><mi>m</mi><mn>24</mn></msub></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><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>15</mn><mo>)</mo></mrow></mrow></math>]]></maths>γ是任一尺度因子;通过光条解码求出x<sub>d</sub>坐标值,得:<maths num="0007"><![CDATA[<math><mrow><msub><mi>x</mi><mi>d</mi></msub><msub><mi>m</mi><mn>24</mn></msub><mo>-</mo><msub><mi>m</mi><mn>14</mn></msub><mo>=</mo><mo>[</mo><msub><mi>m</mi><mn>1</mn></msub><mo>-</mo><msub><mi>x</mi><mi>d</mi></msub><msub><mi>m</mi><mn>2</mn></msub><mo>]</mo><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></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mrow></math>]]></maths>结合(8)式、(9)式得:<maths num="0008"><![CDATA[<math><mrow><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>xt</mi><mn>3</mn></msub><mo>-</mo><msub><mi>t</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi>yt</mi><mn>3</mn></msub><mo>-</mo><msub><mi>t</mi><mn>2</mn></msub></mtd></mtr><mtr><mtd><msub><mi>x</mi><mi>d</mi></msub><msub><mi>m</mi><mn>24</mn></msub><mo>-</mo><msub><mi>m</mi><mn>14</mn></msub></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>r</mi><mn>1</mn></msub><mo>-</mo><msub><mi>xr</mi><mn>3</mn></msub></mtd></mtr><mtr><mtd><msub><mi>r</mi><mn>2</mn></msub><mo>-</mo><msub><mi>yr</mi><mn>3</mn></msub></mtd></mtr><mtr><mtd><msub><mi>m</mi><mn>1</mn></msub><mo>-</mo><msub><mi>x</mi><mi>d</mi></msub><msub><mi>m</mi><mn>2</mn></msub></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></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>10</mn><mo>)</mo></mrow></mrow></math>]]></maths>将(10)式写成矩阵AX=B形式,其中X=(X<sub>w</sub>,Y<sub>w</sub>,Z<sub>w</sub>),则方程线性最小二乘解为:X=(A<sup>T</sup>A)<sup>-1</sup>A<sup>T</sup>B         (11)X即是由二维图像通过三维计算得到的世界坐标。
地址 310014 浙江省杭州市下城区朝晖六区
您可能感兴趣的专利