格雷码结构光简介
01
时域编码
即编码一系列的结构光图案,依次投射到目标物体上。首先需要生成一系列编码图案。编码图案随着投射时间的推进而变化,并且这一系列的图案需要全部依次投影,以确保每一个像素对应的码是唯一的。
时域图案编码信息的方式有很多,常见的包括二进制码(binary code)和格雷码(gray code)。两种方法都需要分别编码X轴、Y轴方向。
02
二进制码(Binary Code)
上面说到时域结构光编码需要对行、列分别进行。对某一个像素点来说,二进制码即,将该像素点所在的行数m,列数n转换成二进制,二进制的每一位编码到每一幅pattern中该像素点对应的位置。(即,m转换成二进制数,该二进制数最终的位数等于行的pattern数)。以像素点(209,660)为例,其转换成二进制为(0011010001,1010010100)
该像素点的编码为:图表示在一系列的pattern中,该像素点处的值。
上面的是以单个像素点举例,整个pattern系列长什么样呢,以分辨率为32*32的投影仪为例,按照上述编码方式,得到一系列pattern:
将以上编码图案依次投射到被测物体上,使得每一个像素点最终的码值都是唯一的。
03
格雷码(Gray Code)
格雷码与二进制码最大的不同是:格雷码相邻的两个像素点的码值,只有一位是不同的。以8*8分辨率为例,以列为例:(a)代表二进制码(b)代表格雷码
格雷码可以通过下述方法得到:首先通过之前的办法得到二进制码,后根据下图的异或运算得到
格雷码相对于二进制码的优势在于:在最后的pattern中,二进制码的最大频率(或者说是最小颜色变化间隔)是每一个像素,而格雷码的频率是每两个像素,我们希望最大频率时,最小颜色变化间隔尽可能大一些,这对投影和采图都是有好处的。
04
双目匹配
本文以介绍格雷码为主,故不在此详细讲述双目原理。
匹配原则:根据双目视差法,找到左右目拍摄到的同一个点,即可获得深度信息。
我们通过投射结构光,对于每一个投影仪像素点,其最终的码值是唯一的。这便使得双目匹配成为可能。
05
结构光编码
投影仪编码结构光,使得每个像素具有独特的码值,两相机拍摄,需要解码,确定每个像素的信息,进而完成匹配。
解码是编码的逆序。包括三步:
1)根据灰度值得到当前像素点的格雷码;
2)格雷码转换成二进制码;
3)二进制码转换成十进制码(即当前像素所在的行数或者列数)。
06
格雷码编码图案示例
投影仪分辨率:2014*768
NpatternsCol=ceilf(log1024/log2)=10;
NpatternsRow=ceilf(log768/log2)=10;
水平、垂直各生成十张pattern。
下面展示几张垂直图案
资源