发明名称 一种多视图结构光系统自标定方法
摘要 一种多视图结构光自标定方法,包括以下步骤:1)多视图结构光系统包含一个摄像机和一个投影仪,投影仪投出一个网格图案,所述网格图案基于位置唯一原理进行编码产生,摄像机在三个不共线的位置获取三幅图片;2)定义Kc为摄像机内参数矩阵,π1和π2为两条任意投影仪平面,Hi是摄像机在c1到c2以及c1到c3通过平面π1透导得出的单应矩阵,i=1,2,Kct为摄像机c1的极点表示为Kct=t3e2;通过由条纹平面透导的单应矩阵可确定投影仪条纹平面在第一个摄像机坐标系中的消影线,结合无穷单应知识可得到摄像机和投影仪的内参数矩阵。本发明能简化计算、适用性良好、降低成本。
申请公布号 CN102034234A 申请公布日期 2011.04.27
申请号 CN201010516756.3 申请日期 2010.10.20
申请人 浙江工业大学 发明人 陈胜勇;原长春;王鑫;李友福;王万良
分类号 G06T7/00(2006.01)I 主分类号 G06T7/00(2006.01)I
代理机构 杭州天正专利事务所有限公司 33201 代理人 王兵;王利强
主权项 一种多视图结构光自标定方法,其特征在于:所述自标定方法包括以下步骤:1)所述多视图结构光系统包含一个摄像机和一个投影仪,投影仪投出一个网格图案,所述网格图案基于位置唯一原理进行编码产生,摄像机在三个不共线的位置获取三幅图片,摄像机在三个不同位置记为c1,c2,c3;2)摄像机内参数矩阵标定过程:定义Kc为摄像机内参数矩阵,π1和π2为两条任意投影仪平面,Hi是摄像机在c1到c2以及c1到c3通过平面π1透导得出的单应矩阵,i=1,2,Kct为摄像机c1的极点表示为Kct=t3e2,其中t3是摄像机c1到摄像机c2的转移矩阵t的第三个原素,e2是归一化后的极点坐标;任一平面的消影线表示为:l~Kc‑Tn                    (1)其中,“~”代表和等号相差一个比例因子,l表示平面π在摄像机坐标系下的消影线,n表示平面π的法向量;H∞是摄像机c1和c2通过无穷远平面π∞透导的无穷单应矩阵,两摄像机通过平间一平面π透导的单应矩阵表示为:H~K2RK1‑1+K2tnT/dK1‑1            (2)其中,d是摄像机光心到平面π的几何距离,K1和K2分别是两个摄像机的内参数矩阵,R是两个摄像机坐标系之间的旋转关系矩阵,t是两个摄像机的平移关系;当d为无穷大时(2)式表示为: <mrow> <msub> <mi>H</mi> <mo>&infin;</mo> </msub> <mo>=</mo> <munder> <mi>lim</mi> <mrow> <mi>d</mi> <mo>&RightArrow;</mo> <mo>&infin;</mo> </mrow> </munder> <mi>H</mi> <mo>~</mo> <msub> <mi>K</mi> <mn>2</mn> </msub> <msup> <msub> <mi>RK</mi> <mn>1</mn> </msub> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow>假设l=t3/dKc‑Tn.,公式(2)式转变成(4):s1H1=KcRKc‑1+e2lT                (4)其中,s1是使单应矩阵归一化的比例系数,由(3)式可知(4)式等式右边KcRKc‑1近似为一个由摄像机c1到c2的无穷单应矩阵,将(4)式e2lT移到等式左边得如式(5):s1H1‑e2lT=KcRKc‑1=H∞c1c2       (5)其中H∞c1c2表示平面π1在摄像机c1中的消影线以及摄像机c1和c2通过平面π1透导的单应矩阵和极点e2,由旋转矩阵性质得到RRT=I,I是一个三阶单位矩阵,联立(4)和(5)式,得出式(6):(s1H1‑e2lT)(KcKcT)(s1H1‑e2lT)T=KcKcT    (6)设定摄像机和投影仪扭曲参数为0,摄像机光心坐标为原点,矩阵KcKcT表示成如下形式: <mrow> <msub> <mi>K</mi> <mi>c</mi> </msub> <msubsup> <mi>K</mi> <mi>c</mi> <mi>T</mi> </msubsup> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msubsup> <mi>f</mi> <mi>x</mi> <mn>2</mn> </msubsup> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <msubsup> <mi>f</mi> <mi>y</mi> <mn>2</mn> </msubsup> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>7</mn> <mo>)</mo> </mrow> </mrow>将(6)式等式左边矩阵假设为“M”,则M12=0,M13=0,M23=0,M33=1,其中Mij是矩阵M的第i行第j列原素,得出方程:AX=B                      (8)其中: <mrow> <mi>A</mi> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>h</mi> <mn>11</mn> </msub> <msub> <mi>h</mi> <mn>21</mn> </msub> </mtd> <mtd> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>e</mi> <mn>1</mn> </msub> <msub> <mi>h</mi> <mn>21</mn> </msub> <mo>+</mo> <msub> <mi>e</mi> <mn>2</mn> </msub> <msub> <mi>h</mi> <mn>11</mn> </msub> <mo>)</mo> </mrow> </mtd> <mtd> <msub> <mi>h</mi> <mn>12</mn> </msub> <msub> <mi>h</mi> <mn>22</mn> </msub> </mtd> <mtd> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>h</mi> <mn>12</mn> </msub> <msub> <mi>e</mi> <mn>2</mn> </msub> <mo>+</mo> <msub> <mi>h</mi> <mn>22</mn> </msub> <msub> <mi>e</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> </mtd> <mtd> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>e</mi> <mn>1</mn> </msub> <msub> <mi>h</mi> <mn>23</mn> </msub> <mo>+</mo> <msub> <mi>e</mi> <mn>2</mn> </msub> <msub> <mi>h</mi> <mn>13</mn> </msub> <mo>)</mo> </mrow> </mtd> <mtd> <msub> <mi>e</mi> <mn>1</mn> </msub> <msub> <mi>e</mi> <mn>2</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>h</mi> <mn>11</mn> </msub> <msub> <mi>h</mi> <mn>31</mn> </msub> </mtd> <mtd> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>e</mi> <mn>1</mn> </msub> <msub> <mi>h</mi> <mn>31</mn> </msub> <mo>+</mo> <msub> <mi>e</mi> <mn>3</mn> </msub> <msub> <mi>h</mi> <mn>11</mn> </msub> <mo>)</mo> </mrow> </mtd> <mtd> <msub> <mi>h</mi> <mn>12</mn> </msub> <msub> <mi>h</mi> <mn>31</mn> </msub> </mtd> <mtd> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>h</mi> <mn>31</mn> </msub> <msub> <mi>e</mi> <mn>1</mn> </msub> <mo>+</mo> <msub> <mi>h</mi> <mn>12</mn> </msub> <msub> <mi>e</mi> <mn>3</mn> </msub> <mo>)</mo> </mrow> </mtd> <mtd> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>e</mi> <mn>1</mn> </msub> <msub> <mi>h</mi> <mn>33</mn> </msub> <mo>+</mo> <msub> <mi>e</mi> <mn>3</mn> </msub> <msub> <mi>h</mi> <mn>13</mn> </msub> <mo>)</mo> </mrow> </mtd> <mtd> <msub> <mi>e</mi> <mn>1</mn> </msub> <msub> <mi>e</mi> <mn>3</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>h</mi> <mn>21</mn> </msub> <msub> <mi>h</mi> <mn>31</mn> </msub> </mtd> <mtd> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>e</mi> <mn>2</mn> </msub> <msub> <mi>h</mi> <mn>31</mn> </msub> <mo>+</mo> <msub> <mi>e</mi> <mn>3</mn> </msub> <msub> <mi>h</mi> <mn>21</mn> </msub> <mo>)</mo> </mrow> </mtd> <mtd> <msub> <mi>h</mi> <mn>22</mn> </msub> <msub> <mi>h</mi> <mn>32</mn> </msub> </mtd> <mtd> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>h</mi> <mn>32</mn> </msub> <msub> <mi>e</mi> <mn>2</mn> </msub> <mo>+</mo> <msub> <mi>h</mi> <mn>22</mn> </msub> <msub> <mi>e</mi> <mn>3</mn> </msub> <mo>)</mo> </mrow> </mtd> <mtd> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>e</mi> <mn>3</mn> </msub> <msub> <mi>h</mi> <mn>23</mn> </msub> <mo>+</mo> <msub> <mi>e</mi> <mn>2</mn> </msub> <msub> <mi>h</mi> <mn>33</mn> </msub> <mo>)</mo> </mrow> </mtd> <mtd> <msub> <mi>e</mi> <mn>2</mn> </msub> <msub> <mi>e</mi> <mn>3</mn> </msub> </mtd> </mtr> </mtable> </mfenced> </mrow> <mrow> <mi>X</mi> <mo>=</mo> <msup> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msubsup> <mi>f</mi> <mi>x</mi> <mn>2</mn> </msubsup> </mtd> <mtd> <msub> <mi>l</mi> <mn>1</mn> </msub> <msubsup> <mi>f</mi> <mi>x</mi> <mn>2</mn> </msubsup> </mtd> <mtd> <msubsup> <mi>f</mi> <mi>y</mi> <mn>2</mn> </msubsup> </mtd> <mtd> <msub> <mi>l</mi> <mn>2</mn> </msub> <msubsup> <mi>f</mi> <mi>y</mi> <mn>2</mn> </msubsup> </mtd> <mtd> <msub> <mi>l</mi> <mn>3</mn> </msub> </mtd> <mtd> <msubsup> <mi>l</mi> <mn>1</mn> <mn>2</mn> </msubsup> <msubsup> <mi>f</mi> <mi>x</mi> <mn>2</mn> </msubsup> <mo>+</mo> <msubsup> <mi>l</mi> <mn>2</mn> <mn>2</mn> </msubsup> <msubsup> <mi>f</mi> <mi>x</mi> <mn>2</mn> </msubsup> <mo>+</mo> <msubsup> <mi>l</mi> <mn>3</mn> <mn>2</mn> </msubsup> </mtd> </mtr> </mtable> </mfenced> <mi>T</mi> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>9</mn> <mo>)</mo> </mrow> </mrow>B=[‑h13h23 ‑h13h33 ‑h23h23]T其中,X是一个包含六个未知变量的列向量,hij是矩阵s1H1的第i行第j列的原素,ei是极点坐标e2的第i个原素,i=1,2,3,li是消影线l的第i个元素,i=1,2,3;通过摄像机获取两幅图像上的匹配点求得单应矩阵H1和极点ei,同理可求出摄像机c1和c2以及摄像机c1和c3‘之间的单应矩阵,假设比例系数s1已知的前提下(8)式获得六个方程和六个未知数,得出含有未知比例系数s1的X解,然后通过M33=1求出未知比例系数s1,由(9)式得出消影线l和摄像机内参数矩阵的表达式: <mrow> <msub> <mi>K</mi> <mi>c</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <mi>sqrt</mi> <mrow> <mo>(</mo> <mi>X</mi> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>)</mo> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mi>sqrt</mi> <mrow> <mo>(</mo> <mi>X</mi> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> <mo>)</mo> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> </mrow> <mrow> <mi>l</mi> <mo>=</mo> <msup> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <mfrac> <mrow> <mi>X</mi> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow> <mrow> <mi>X</mi> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow> </mfrac> </mtd> <mtd> <mfrac> <mrow> <mi>X</mi> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow> <mrow> <mi>X</mi> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow> </mfrac> </mtd> <mtd> <mi>X</mi> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> <mi>T</mi> </msup> <mo>.</mo> </mrow>
地址 310014 浙江省杭州市下城区朝晖六区