基于彩色光栅投影的快速三维测量方法 【技术领域】
本发明属于三维信息重构的技术领域, 基于彩色光栅投影, 结合傅里叶变换法, 将 条纹投影轮廓术用于物体的三维测量。 整个系统涉及彩色投影光栅设计, 图像分割, 相位获 取等部分。背景技术
三维轮廓检测及其重构技术是计算机图像处理技术的一个分支, 是计算机视觉和 计算机图形图像处理相结合的一个研究方向, 它在生产自动化、 机器人视觉、 CAD、 虚拟现实 和医学映像诊断等领域都有着广泛的应用前景。
由于光栅投影法具有检测过程完全非接触、 数据空间分辨率高、 一次性瞬间投影 直接实现三维空间物体形状检测和获取三维信息等特点, 同时, 由于彩色图像比黑白图像 携带更丰富的信息, 近年来, 结构光法中基于彩色光栅投影的三维测量技术得到了较大的 发展。 其测量方法是 : 首先设计若干幅辅助光栅图像, 包括彩色编码条纹和带有不同相移角 度的几幅相移条纹图, 这些辅助图像的设计要有利于采集图像后的彩色图像分割、 解码和 解相位的实现。然后将它们用投影仪依次投影到被测物体表面, 形成因被测物体表面形状 调制而畸变的光栅条纹, 并用彩色 CCD 采集图像。对采集到的彩色编码条纹图进行彩色图 像分割, 识别各条纹的颜色和边界, 从而以此为依据解码得到各条纹的位置编码, 即相位周 期数信息, 彩色图像分割效果的好坏直接决定了解码的质量, 因此设计适当的彩色图像分 割算法至关重要, 解码算法则对应于不同的彩色编码算法 ; 对采集到的相移图解相位得到 主值相位信息。基于相位主值和相位周期数进行相位展开, 计算得出与采集到图像中每个 像素唯一对应的绝对相位信息, 进而得到被测物体的三维信息, 实现三维重构。 彩色光栅的 优点是可利用条纹颜色记录更多的被测物体的相位信息, 达到减少图像采集数量、 提高相 位法实时性的目。
在光栅条纹图中, 通过给待求相位场加上已知或未知的常相位, 来得到新的条纹 图, 即增加求解条件。这种通过对条纹图相位场进行移相来增加若干常量相位而得到多幅 条纹图用以求解相位场的方法, 称为相移法。 固然相移法采用多幅条纹图像解出相位, 在相 位求解的精度方面有突出的优势, 但这种方法通常需要向被测物体投影多幅条纹图像, 大 大限制了测量动态性能的提高。在以相位法为基础的条纹图像处理方法中, 基于傅里叶变 换进行解相位通常仅需要一幅图像, 很多学者将此与彩色编码光栅结合用于物体三维信息 的提取, 无疑为实现动态测量以及实时性能的改善提供的思路。基于彩色光栅投影的三维 测量技术涉及两大关键技术环节, 即彩色编码光栅的设计和相位的求解。
彩色编码条纹是一组指定颜色条纹的序列, 其长度由测量范围要求而定, 通常以 整个序列周期的投射范围能完全覆盖被测物体为宜。 任何彩色条纹编码都必须满足以下条 件: 任意相邻两条纹颜色不同 ; 且任意编码周期的颜色序列都不相同, 即在解码时不会产 生歧义而导致解码错误。 在彩色编码条纹的设计中, 为了使条纹颜色容易区分, 通常选择颜 色区分度大的纯色进行编码, 对于红色 R、 绿色 G、 蓝色 B 三个分量, 只选用 0 和 255 两个灰阶, 这样三个分量可以构成八种纯色 : 白色 (255, 255, 255)、 红色 (255, 0, 0), 绿色 (0, 255, 0)、 蓝色 (0, 0, 255) 以及他们的补色 : 黑色 (0, 0, 0)、 青色 (0, 255, 255)、 品色 (255, 0, 255)、 黄色 (255, 255, 0) ; 其中各颜色后面的括号内分别是红色 (R)、 绿色 (G)、 蓝色 (B) 三个分量 的灰度值。 颜色的选取需要根据不同颜色的特点、 被测物体的特点、 彩色分割的难易程度等 方面的考虑来完成。 彩色编码的方法很多, 其中格雷码属于可靠性编码, 这种编码相邻的两 个码组之间只有一位不同, 是一种错误最小化的编码。Gray 编码的主要优点是 : 思路简洁 明了, 易于编程实现。
对编码条纹解码的过程即是获取条纹周期信息的过程。 条纹颜色用于记录相位周 期信息, 通过正确识别条纹的颜色及边界, 然后对编码条纹正确解码后, 便可得到相位周期 信息从而实现相位展开。彩色图像分割的过程实则为还原图像中各像素颜色的过程。彩色 图像分割有很多种经典的算法, 包括基于颜色相似系数的分割方法、 HSI 颜色空间下的迭代 阈值分割方法、 基于区域的自适应阈值分割方法等。
解相位主要通过两个步骤, 即求折叠相位和相位周期展开。折叠相位的求解精度 较好的方法就是经典的相移法, 现今, 由于测量动态性能要求的日益突显, 在物体表面不存 在较大高度不连续的情况下, 利用基于傅里叶变化的方法解折叠相位也成为一个较好的选 择。此外, 在相位展开技术上, 除传统的灰阶码法中利用 7 幅逐步二分的黑白条纹图加以确 定相位的周期信息, 还有基于边缘跳变检测、 基于质量图指导等方法, 此类算法一般是利用 了图像的灰度信息, 并且算法实现较复杂 ; 而利用彩色编码携带的颜色信息加以确定相位 周期, 不但减少了采集图像的数量, 算法复杂程度低, 在不影响精度的前提下, 能很好的改 善测量的动态性能, 因此基于彩色编码光栅投影的三维测量方法的应用日趋广泛。 综上所述, 在基于彩色光栅投影的三维测量方法中, 随着精度和速度要求的日益 提高, 测量流程中彩色光栅的设计, 彩色图像分割, 相位求解等都需要继续深入的研究, 进 一步在不影响精度的前提下简化算法, 同时融合彩色图像和黑白图像在应用中的优势, 以 便更好地应用于动态测量。
发明内容
针对现有三维测量技术中尚存的不足和限制, 本发明的目的在于提供一种三维扫 描系统中, 基于彩色光栅投影的快速三维测量方法。
本发明设计的彩色投影光栅选用颜色区分度较大的八种纯色中的绿色 (010)、 青 色 (011)、 白色 (111)、 黄色 (110) 四色根据格雷编码原理进行编码。颜色用 R、 G、 B 三分量 描述, “1” 表示该分量的值为 255, “0” 表示该分量的值为 0。其排列规则是 : 任意相邻的四 个条纹为一组, 并且每组条纹中的四种颜色的组合排列顺序唯一, 即在其他条纹组中没有 与此相同的条纹组合。编码条纹设计完成之后, 对其中 G 分量进行正弦调制最终得到用于 投影的彩色光栅。将设计好的彩色光栅投向被测物体, 通过 CCD 采集光栅变形图。对图像 进行 R、 B 分量阈值迭代分割, G 分量则自动赋值为 255, 综合三个分量的信息以确定出图像 每一像素点的颜色完成彩色图像分割环节, 解码之后即得到对应的相位周期信息。另一方 面, 分离出光栅变形图中的 G 分量信息, 对其中每一行做傅里叶变换, 滤波提取含有相位信 息的基频分量, 然后通过逆傅里叶变换得到每一点的折叠相位值。结合对彩色分割图解码 后得到的图像中每一像素点的相位周期信息, 实现相位展开, 最后根据相位和物体高度信息的对应关系实现三维重构。本发明采用如下技术方案 :
一种基于彩色光栅投影的快速三维测量方法, 具体步骤如下 :
步骤 1 : 设计彩色投影光栅 ;
步骤 1.1 : 列出用于编码的四种纯色 : 采用对 24 位真彩图像三个分量 R、 G、 B 分别 赋值实现, 24 位真彩图像的 R、 G、 B 分量分别是 8 位, 有 256 个灰阶, 把每个分量只取 0 和 255 两个值, 并将灰阶为 255 时记为 1, 灰阶为 0 时记为 0, 这样 R、 G、 B 分量的取值分别为 0 或 1, 选取 R 分量为 1 或 0, 选取 G 分量为 1, 选取 B 分量为 1 或 0, 并由此组成绿色 (010)、 青 色 (011)、 白色 (111)、 黄色 (110) 四色进行编码,
步骤 1.2 : 选择彩色条纹的数目, 并对每条彩色条纹进行编号 : 选择彩色条纹的数 目为 32 条, 对绿色 (010) 条纹、 青色 (011) 条纹、 黄色 (110) 条纹、 白色 (111) 条纹进行编 号, 并依次记为 a、 b、 c、 d,
步骤 1.3 : 确定编码周期, 并列出长度为此编码周期的所有可能的彩色条纹编码 组合 : 以 4 个彩色条纹为编码周期, 根据步骤 1.2 中设定的编号, 满足格雷编码且编码周期 为 4 个彩色条纹的所有可能的彩色条纹编码组合 si 的集合 s 为 :
s = {abad, dbca, cbcb, badc, bcad, bcbd, adcb, cadb, cbdb, dcba, adbd, bdba, cbac, dbda, dbab, bacd, bdac, acdb, dacb, cdbc, acbc, abcd, cdab, abdc, dcab, bcda, dabd, bdca, caba} 其中, i 为满足格雷编码且编码周期为 4 个彩色条纹的所有可能的彩色条纹编码 组合数目 ((1 ≤ i ≤ 32), s1 = abad 表示一个长度为四个条纹周期的编码周期, 第一个条 纹周期位置处的条纹为 a, 第二个条纹周期位置处的条纹为 b, 第三个条纹周期位置处的条 纹为 a, 第四个条纹周期位置处的条纹为 d, s2 = dbca 表示一个长度为四个条纹周期的编码 周期, 第一个条纹周期位置处的条纹为 d, 第二个条纹周期位置处的条纹为 b, 第三个条纹 周期位置处的条纹为 c, 第四个条纹周期位置处的条纹为 a, s3 = cbcb 表示一个长度为四个 条纹周期的编码周期, 第一个条纹周期位置处的条纹为 c, 第二个条纹周期位置处的条纹为 b, 第三个条纹周期位置处的条纹为 c, 第四个条纹周期位置处的条纹为 b, 以此类推可知其 余彩色条纹编码组合的情况, 然后设立空序列 Io, 步骤 1.4 : 确定各个编码周期的彩色条纹 编码 :
步骤 1.4.1 : 将步骤 1.3 中列出的所有可能的彩色条纹编码组合的集合 s 作为待 选区, 从 s 中任意选择一个编码周期 si 作为起始编码周期, 这里令 si = abcd, 并将 abcd 依 序列入 Io, 并将 si 从 s 中删除, s 集合中剩余元素形成选择下一个编码周期的待选区 sr,
步骤 1.4.2 : 取 si 的后 3 个单位量作为 sj(1 ≤ j ≤ 32, j ≠ i) 的前 3 个元素并以 此为条件, 从 sr 中寻找满足条件的 sj, 将 sj 的最后一个元素补入 Io, 令 si = sj, 并从 sr 中 删除 sj, 更新 sr 的内容为删除 sj 后集合中剩余元素形成的选择下一个编码周期的待选区,
步骤 1.4.3 : 重复步骤 1.4.2 至 sr 为空, 即可完全建立 Io, 按上述编码方法可得彩 色编码条纹序列为 :
a b c d a b d c a b a d c b a c d b c a d b d a d b c b d b a b
步骤 1.5 : 对设计完成的四色码条纹序列中 G 分量信息依据公式 (1) 做正弦调制 最终得到彩色投影光栅,
式中, f(t) 为根据彩色编码条纹图像中 G 分量在单个条纹宽度内位于横向第 x 个 像素点的灰度值, w 为条纹宽度, 宽度值为 16 个像素, t 取值在 0 ~ w 之间,
步骤 2 : 彩色投影光栅包含 32 个周期的条纹, 满足测量需要, 通过计算机生成此彩 色投影光栅, 经 Optoma EP737 型投影仪向被测物体投影彩色投影光栅, 并用摄像机取回彩 色光栅变形图,
步骤 3 : 对采集到彩色光栅变形图进行处理, 计算得到折叠相位、 通过图像分割和 解码的环节得到相位周期信息 :
步骤 3.1 : 把图中 G 分量信息单独分离出来, 即单独读取彩色光栅变形图中 G 分量 信息得到整幅图每处 G 分量对应的一个灰度值, 用 G 分量表示的彩色光栅变形图光强表达 式如下 :
上式中, a(x, y) 为背景光强, b(x, y) 为调制光强, I(x, y) 为彩色光栅变形图中 G 分量在 (x, y) 位置处的光强, ρ 为彩色投影光栅中的单个彩色条纹周期, 为待测彩 色光栅变形图的折叠相位值,
由欧拉公式原理, 式 (2) 可改写为如下形式 :
I(x, y) = a(x, y)+c(x, y)exp(2πjf0x)+c*(x, y)exp(-2πjf0x) (3)
其中,c*(x, y) 为 c(x, y) 的共轭复数, j 为虚数单位, f0 为投影光栅在参考面上未变形 条纹的空间频率,
对 (3) 中所示的一维光强信号 I(x, y) 沿着正 x 方向进行一维傅里叶变换, 可得, *
F[I(x, y)] = A(f, y)+C(f-f0, y)+C (f+f0, y) (5) *
式中 F[I(x, y)], A(f, y), C(f-f0, y), C (f+f0, y) 分别表示 I(x, y), c(x, y), c*(x, y) 对应频域中的傅里叶频谱, 然后滤波提取含有相位信息的基频分量 C(f-f0, y), 通过基频 分量做逆傅里叶变换得到 c(x, y)exp(2πjf0x), 得到彩色光栅变形图的折叠相位图, 折叠 相位值为
这里解得的变化范围为 0 ~ 2π, 即每经历一个 2π 的变化发生一次周期跳变, 步骤 3.2 : 对步骤 2 中的彩色光栅变形图进行彩色分割 :
采用阈值迭代法对彩色光栅变形图中的 R、 B 分量进行分割, G 分量自动赋值为 255, 综合 R、 G、 B 三个分量的颜色信息后即得到彩色分割图。彩色分割完成后, 利用基于区
域的滤波方法去噪, 即经过彩色分割而二值化后的各像素, R、 G、 B 三个分量的值均为 0 或 者 255, 针对图像分割过程中发生误判的像素进行修正, 所述修正方法为 : 假设误判像素的 K 分量被误判, 这里 K = R、 G 或 B, 对误判像素的 R、 G、 B 三个分量分别进行纵向搜索, 判断 在纵向像素范围内是否有像素 K 分量值与本像素 K 分量值不同, 如果有, 则矫正本像素 K 分 量, 这个搜索范围一般取为 15 到 30 个像素之间, 最后得到改善后的彩色分割图,
步骤 3.3 : 解码 :
对步骤 3.2 中得到的改善后的彩色分割图进行解码 :
步骤 3.3.1 : 数据预处理。首先建立一个标志数组, 其元素数与改善后的彩色分割 图中像素数相等, 即数组的每个元素都与图像中相应位置的像素对应。将图像中出现的四 种颜色白色、 黄色、 青色、 白色编号为 1、 2、 3、 4, 标志数组中存储的就是改善后的彩色图像分 割图中对应位置像素的颜色编号,
步骤 3.3.2 : 对标志数组进行遍历, 把其中的分量分组为背景部分和有用条纹信 息部分, 以减少需要处理的数据量,
步骤 3.3.3 : 得出改善后的彩色分割图中各行各像素对应彩色条纹的位置编码 :
①从左到右遍历改善后的彩色分割图中的各行像素, 标志出各条纹的边界, 并根 据彩色光栅变形图的折叠相位图中边界跳变信息对改善后的彩色分割图像中的条纹边界 加以修正,
②判断出改善后的彩色分割图中各条纹的位置编码 : 从左到右依次取出各个编码 周期的条纹, 即每次取出相邻的四个条纹, 将其排列顺序与用于投影的彩色编码条纹中的 条纹序列进行对比, 由于相邻四个条纹的组合都是唯一的, 当找到匹配的组合时, 就能确定 取出的四个条纹的位置编码。同理确定该行所有条纹的位置编码,
③用各像素所属条纹的位置编码取代标志数组中的颜色编号 : 只要该位置像素不 属于背景部分, 则把对应位置的元素值换成该像素所属条纹的位置编号即对应于彩色光栅 变形图中携带的相位周期信息,
步骤 4 : 折叠相位的展开 : 将经过步骤 3.1 和步骤 3.2 中得到的对应于彩色光栅变 形图中携带的相位周期信息结合步骤 3.1 中得到的折叠相位信息, 依据如下公式对相位展 开得到最终相位 φ(x, y) :
这里, n 为条纹位置编号, 即相位的周期信息, 为折叠相位,
步骤 5 : 读取最终相位图像中各像素点对应的最终相位值, 依据经典光栅投影测 量系统原理可求得被测物体的高度信息, 从而实现三维信息的获取。
与现有技术相比, 本发明的有益效果是 :
本发明提出了一种新的基于彩色光栅投影的三维测量方法。 只需投影一幅彩色光 栅图像即能完成测量。黄、 白、 绿、 青四色, 根据格雷编码原则排列成一组彩色编码条纹。然 后将 G 分量做正弦调制使其灰度值呈现正弦性变化最终形成投影光栅。通过对采集到的光 栅变形图中 R、 B 分量做阈值迭代分割得到正确的颜色信息后解码获得条纹的位置信息, 再 将采集到的图像中的 G 分量单独分离出来, 利用其灰度信息用基于傅里叶变换的方法解得 折叠相位值, 最后结合相位周期信息对折叠相位进行周期展开从而得到整幅图像的绝对相
位信息。通过相位和物体表面高度的数学关系可计算得到待测物体的三维信息。
该方法将求取相位的两个步骤所需的信息融合在一幅彩色编码图像中形成彩色 投影光栅, 算法复杂度低且在测量快速性、 测量精度上都能达到较理想的效果。 与现有的同 类技术相比, 本发明中设计的彩色编码光栅选择的编码颜色特点是 G 分量始终为 255, R、 B 分量分别取 0 或 255 的四种纯色, 然后仅对 G 分量做正弦调制以方便求解折叠相位。这里 并没有选择对 R、 G、 B 三个分量同时做正弦调制, 在彩色分割环节, 由于编码颜色的特点, 仅 对 R、 B 分量做阈值迭代分割, G 分量自动赋值为 255, 综合三个分量信息得到的彩色分割效 果是比较理想的。如果在编码时对 R、 G、 B3 个分量同时调制, 则彩色条纹会在一个条纹周期 内部出现明显的亮区和暗区, 此时在做彩色分割时, 需要针对亮区和暗区中 R、 G、 B 三个分 量分别选择合适的阈值来分割, 而这个阈值需随待测物体表明材料以及拍摄环境的光照等 因素的变化而调整, 求取过程较为繁琐。而选用本发明中提出的基于投影光栅特点的分割 方法能在简化彩色分割过程的同时不影响分割精度, 能很好地避免因 G 分量正弦调制而造 成图像出现周期性的明暗带状区域给分割带来的不便。当然现有的彩色分割算法很多, 针 对不同区域进行自适应选取阈值分割的方法也有, 但是那类算法在计算代价和算法实现难 以程度上不尽人意, 本专利中将传统中用于灰度图像阈值分割的阈值迭代分割算法应用于 彩色图像中的 R、 B 分量, 具有算法简单, 易于实现, 计算代价低等优点。 附图说明 图 1 是本发明提出基于彩色条纹投影的三维测量方法流程图。
图 2 是本发明设计的彩色光栅的编码条纹颜色组合信息图, 其中, 绿色条纹标为 a、 青色条纹标为 b、 黄色条纹标为 c、 白色条纹标为 d。
图 3 是用于投影的彩色光栅图。
图 4 是采集到的经被测牛奶瓶表面高度调制的彩色光栅变形图。
图 5 是采集到的光栅变形图中 G 分量信息图。
图 6 是利用基于傅里叶变换的方法得到的折叠相位图。
图 7 是迭代阈值法求彩色分割阈值流程图。
图 8 是彩色分割后得到的二值化图像。
图 9 是牛奶瓶最终绝对相位图。
图 10 是牛奶瓶的三维点云效果图, 其中图 10(a) 为三维点云正面效果图, 图 10(b) 三维点云侧面效果图, 图 10(c) 三维点云仰面效果图。
图 11 是经典光栅投影测量系统原理图。
具体实施方式
下面结合附图示对本发明的具体实施方式作进一步描述。根据上述方法, 在 Windows 操作系统中通过 VC6.0 平台用 C++ 编程语言实现对被测物体的三维信息的获取。 我们选取白色牛奶瓶作为实例, 基于本发明提出的方法利用三维扫描系统进行相位提取和 三维重构。
根据实际测量的需要, 选择绿色 (010)、 青色 (011)、 白色 (111)、 黄色 (110) 四色用 于编码。整个条纹周期中的颜色编码组合确定后, 对 G 分量进行正弦调制, 得到最终需要的彩色投影光栅。经投影仪将其投影至被测牛奶瓶, 然后由 CCD 采集彩色光栅变形图回至计 算机。将彩色光栅变形图中 G 分量信息单独分离出, 得到整幅图每处 G 分量对应的一个灰 度值。利用基于傅里叶变换的方法获得图像中每一点的折叠相位值。另一方面, 对彩色光 栅变形图中 R、 B 分量做迭代阈值法分割而 G 分量自动赋值为 255, 综合三个分量信息便得 到彩色分割图。 通过后续的基于区域的滤波方法滤除噪声以进一步改善分割效果得到改善 后的彩色分割图。 结合对改善后的彩色分割图解码后得到的图像中每一像素点的相位周期 信息, 实现相位展开, 最后根据相位和物体高度信息的对应关系实现三维重构。
本发明测量实现流程图如附图 1 所示, 具体实现步骤如下 :
步骤 1 : 设计彩色投影光栅 ;
步骤 1.1 : 列出用于编码的四种纯色 : 采用对 24 位真彩图像三个分量 R、 G、 B 分别 赋值实现, 24 位真彩图像的 R、 G、 B 分量分别是 8 位, 有 256 个灰阶, 把每个分量只取 0 和 255 两个值, 并将灰阶为 255 时记为 1, 灰阶为 0 时记为 0, 这样 R、 G、 B 分量的取值分别为 0 或 1, 选取 R 分量为 1 或 0, 选取 G 分量为 1, 选取 B 分量为 1 或 0, 并由此组成绿色 (010)、 青 色 (011)、 白色 (111)、 黄色 (110) 四色进行编码,
步骤 1.2 : 选择彩色条纹的数目, 并对每条彩色条纹进行编号 : 选择彩色条纹的数 目为 32 条, 对绿色 (010) 条纹、 青色 (011) 条纹、 黄色 (110) 条纹、 白色 (111) 条纹进行编 号, 并依次记为 a、 b、 c、 d, 步骤 1.3 : 确定编码周期, 并列出长度为此编码周期的所有可能的彩色条纹编码 组合 : 以 4 个彩色条纹为编码周期, 根据步骤 1.2 中设定的编号, 满足格雷编码且编码周期 为 4 个彩色条纹的所有可能的彩色条纹编码组合 si 的集合 s 为 :
s = {abad, dbca, cbcb, badc, bcad, bcbd, adcb, cadb, cbdb, dcba, adbd, bdba, cbac, dbda, dbab, bacd, bdac, acdb, dacb, cdbc, acbc, abcd, cdab, abdc, dcab, bcda, dabd, bdca, caba}
其中, i 为满足格雷编码且编码周期为 4 个彩色条纹的所有可能的彩色条纹编码 组合数目 ((1 ≤ i ≤ 32), s1 = abad 表示一个长度为四个条纹周期的编码周期, 第一个条 纹周期位置处的条纹为 a, 第二个条纹周期位置处的条纹为 b, 第三个条纹周期位置处的条 纹为 a, 第四个条纹周期位置处的条纹为 d, s2 = dbca 表示一个长度为四个条纹周期的编码 周期, 第一个条纹周期位置处的条纹为 d, 第二个条纹周期位置处的条纹为 b, 第三个条纹 周期位置处的条纹为 c, 第四个条纹周期位置处的条纹为 a, s3 = cbcb 表示一个长度为四个 条纹周期的编码周期, 第一个条纹周期位置处的条纹为 c, 第二个条纹周期位置处的条纹为 b, 第三个条纹周期位置处的条纹为 c, 第四个条纹周期位置处的条纹为 b, 以此类推可知其 余彩色条纹编码组合的情况, 然后设立空序列 Io,
步骤 1.4 : 确定各个编码周期的彩色条纹编码 :
步骤 1.4.1 : 将步骤 1.3 中列出的所有可能的彩色条纹编码组合的集合 s 作为待 选区, 从 s 中任意选择一个编码周期 si 作为起始编码周期, 这里令 si = abcd, 并将 abcd 依 序列入 Io, 并将 si 从 s 中删除, s 集合中剩余元素形成选择下一个编码周期的待选区 sr,
步骤 1.4.2 : 取 si 的后 3 个单位量作为 sj(1 ≤ j ≤ 32, j ≠ i) 的前 3 个元素并以 此为条件, 从 sr 中寻找满足条件的 sj, 将 sj 的最后一个元素补入 Io, 令 si = sj, 并从 sr 中 删除 sj, 更新 sr 的内容为删除 sj 后集合中剩余元素形成的选择下一个编码周期的待选区,
步骤 1.4.3 : 重复步骤 1.4.2 至 sr 为空, 即可完全建立 Io, 按上述编码方法可得彩 色编码条纹序列为 :
a b c d a b d c a b a d c b a c d b c a d b d a d b c b d b a b
具体形态如附图 2 所示。
步骤 1.5 : 对设计完成的四色码条纹序列中 G 分量信息依据公式 (1) 做正弦调制 最终得到彩色投影光栅,
式中, f(t) 为根据彩色编码条纹图像中 G 分量在单个条纹宽度内位于横向第 x 个 像素点的灰度值, w 为条纹宽度, 宽度值为 16 个像素, t 取值在 0 ~ w 之间,
步骤 2 : 彩色投影光栅包含 32 个周期的条纹, 满足测量需要, 通过计算机生成此彩 色投影光栅, 经 Optoma EP737 型投影仪向被测物体投影彩色投影光栅, 并用摄像机取回彩 色光栅变形图, 整个过程只需投影一次并用摄像机取回光栅变形图一次。为了保证采集图 像的质量, 拍摄中尽量避免设备抖动, 同时避免在光线剧烈变化以及环境光照极强的条件 下进行拍摄,
步骤 3 : 对采集到的光栅变形图进行处理, 计算得到折叠相位、 通过图像分割和解 码的环节得到相位周期信息 :
步骤 3.1 : 当光栅投影到物体表面上时, 周期性光栅的相位就受到物体表面高度 轮廓的调制, 形成变形光栅, 变形光栅中带有物体的三维信息。通过 CCD 采集到的彩色光栅 变形图如附图 4 所示, 使用 Matrox Meteor II 图卡将采集到的图像传输至计算机处理。把 图中 G 分量信息单独分离出来, 即单独读取图像 G 分量信息得到整幅图每处 G 分量对应的 一个灰度值, 如附图 5 所示。用 G 分量表示的变形条纹光强表达式如下 :
上式中, a(x, y) 为背景光强, b(x, y) 为调制光强, I(x, y) 为彩色光栅变形图中 G 分量在 (x, y) 位置处的光强, ρ 为彩色投影光栅中的单个彩色条纹周期, 为待测彩 色光栅变形图的折叠相位值,
由欧拉公式原理, 式 (2) 可改写为如下形式 :
I(x, y) = a(x, y)+c(x, y)exp(2πjf0x)+c*(x, y)exp(-2πjf0x) (3)
其中,c*(x, y) 为 c(x, y) 的共轭复数, j 为虚数单位, f0 为投影光栅在参考面上未变形 条纹的空间频率,
对 (3) 中所示的一维光强信号 I(x, y) 沿着正 x 方向进行一维傅里叶变换, 可得, *
F[I(x, y)] = A(f, y)+C(f-f0, y)+C (f+f0, y) (5) *
式中 F[I(x, y)], A(f, y), C(f-f0, y), C (f+f0, y) 分别表示 I(x, y), c(x, y), c*(x, y) 对应频域中的傅里叶频谱, 然后滤波提取含有相位信息的基频分量 C(f-f0, y), 通过基频分量做逆傅里叶变换得到 c(x, y)exp(2πjf0x), 得到彩色光栅变形图的折叠相位图, 折叠 相位值为
这里解得的 变化范围为 0 ~ 2π, 即每经历一个 2π 的变化发生一次周期跳 变, 最终得到折叠相位信息如附图 6 所示。
步骤 3.2 : 对步骤 2 中的彩色光栅变形图进行彩色分割 :
由于彩色投影光栅设计时所选取的编码颜色的特点是 G 分量始终为 255, R、 B 分量 为 0 或 255, 所以彩色分割环节中采用阈值迭代法对彩色光栅变形图中的 R、 B 分量进行分 割, G 分量自动赋值为 255, 综合 R、 G、 B 三个分量的颜色信息后即得到彩色分割图。阈值分 割算法流程参照附图 7。 彩色分割完成后, 由于颜色混叠以及采集图像时不可避免地受到光 照等条件的影响, 采集到的图像中出现阴影等问题, 这些就成为影响图像分割效果的噪声。 为消除噪声的影响, 我们利用基于区域的滤波方法去噪, 即经过彩色图像分割而二值化后 的各像素, R、 G、 B 三个分量的值均为 0 或者 255, 因此如果要矫正发生误判的像素, 就需要 将出错分量的值进行修正。所述修正方法为 : 假设某像素的 K 分量被误判, 这里 K = R、 G或 B。由于彩色条纹是纵向的, 在矫正时, 可对各像素的 R、 G、 B 三个分量分别进行纵向搜索, 判 断在纵向某个数量的像素范围内是否有像素 K 分量值与本像素 K 分量值不同, 如果有, 则矫 正本像素 K 分量, 这个搜索范围一般取为 15 到 30 个像素之间, 最后便可得改善后的彩色分 割图, 从中可知到整幅图像中每一个像素点对应的颜色信息。改善后的彩色分割图结果参 见附图 8。
步骤 3.3 : 解码 :
经由彩色图像分割环节识别出彩色编码条纹图中各条纹的颜色和边界之后, 对步 骤 3.2 中得到的改善后的彩色分割图进行解码, 得出改善后的彩色分割图中的彩色条纹与 用于投影的彩色投影光栅中各条纹的对应关系, 即求得它们对应的位置编码, 这个位置编 码也就是相位周期性展开中用到的相位周期信息。
步骤总结如下 :
步骤 3.3.1 : 数据预处理。首先建立一个标志数组, 其元素数与改善后的彩色分割 图中像素数相等, 即数组的每个元素都与图像中相应位置的像素对应。将图像中出现的四 种颜色白色、 黄色、 青色、 白色编号为 1、 2、 3、 4, 标志数组中存储的就是改善后的彩色图像分 割图中对应位置像素的颜色编号, 这样可以避免在后续处理中多次访问像素的三个颜色分 量而影响处理速度,
步骤 3.3.2 : 对标志数组进行遍历, 把其中的分量分组为背景部分和有用条纹信 息部分, 以减少需要处理的数据量。
步骤 3.3.3 : 逐行遍历得出改善后的彩色分割图中各行各像素对应彩色条纹的位 置编码 :
①从左到右遍历改善后的彩色分割图中的各行像素, 标志出各条纹的边界, 并根 据彩色光栅变形图的折叠相位图中边界跳变信息对改善后的彩色分割图像中的条纹边界 加以修正,
②判断出改善后的彩色图像分割图中各条纹的位置编码。 从左到右依次取出各个 编码周期的条纹, 即每次取出相邻的四个条纹, 将其排列顺序与用于投影的彩色编码条纹 中的条纹序列进行对比, 由于相邻四个条纹的组合都是唯一的, 当找到匹配的组合时, 就能 确定取出的四个条纹的位置编码。同理确定该行所有条纹的位置编码,
③用各像素所属条纹的位置编码取代标志数组中的颜色编号。 只要该位置像素不 属于背景部分, 则把对应位置的元素值换成该像素所属条纹的位置编号即对应于彩色光栅 变形图中携带的相位周期信息,
步骤 4 : 折叠相位的展开 : 将经过步骤 3.1 和步骤 3.2 中得到的对应于彩色光栅变 形图中携带的相位周期信息结合步骤 3.1 中得到的折叠相位信息, 依据如下公式对相位展 开得到最终相位 φ(x, y), 相位展开结果参见附图 9。
这里, n 为条纹位置编号, 即相位的周期信息, 为折叠相位。步骤 5 : 读取最 终相位图像中各像素点对应的最终相位值, 依据经典光栅投影测量系统原理可求得被测物 体的高度信息, 从而实现三维信息的获取, 经典光栅投影测量系统原理如图 11 所示, 其中 OP 为投影装置镜头光心, 又称投影中心, OP 在参考面上的投影为 O ; 图中的 OXY 平面为参考面, 该面平行于投影面, Y 轴平行于投影面上光栅条纹方向, 原点 O 即 OP 在本面上的投影。Ωw 为参考坐标系 OXYZ, 以参考面为本坐标系的 OXY 平面 ; Ωc 为摄像机坐标系 OcXcYcZc, 原点 Oc 位于镜头光心 ; Zc 位于光轴, X c, Yc 分别平行于摄像机成像面的横轴, 纵轴 ; OcOP 连线平行于 参考面。Oc 在参考面上的投影为 Oc ; d 为投影中心 OP 到摄像机光心 Oc 之间距离 ; l 为 OP 到 参考面之间距离 ; P 为物点, 在参考面上的投影为 P′。
投影装置和参考面的位置关系满足 : 参考面 OXY 平行于投影面, 其 Y 轴平行于光栅 条纹, 原点 O 即投影中心 OP 在本面上的投影。
所以 ΔBPP′∽ ΔBOPO,
由于参考面 OXY 平行于投影面, Y 轴平行于光栅方向, 所以参考面上相位沿着 X 轴 的方向变化。即 : 对 OXY 面上任一点 (X, Y), 设其相位为 θ, 有:
式中 θo 为原点 O 的相位, λ0 为光栅节距, 即参考面上, 沿 X 轴, 相位变化 1 周期 (2π) 对应的长度。
摄像机和参考面位置关系满足 :
1) 即摄像机的 Y 轴平行于参考面的 Y 轴 2) 摄像机光心与投影中心连线平行于参 考面。所以, 有 ΔAPP′∽ ΔAOcOc′,
(8), (10) 联立, 得(11) 式中 l, d 为系统参量。由 (9),式中 λ0 为光栅节距, 通过标定获得。θA、 θB 分别为 A、 B 点的相位值。(12) 代入 (11), 整理, 得:
PP′即为被测物体的高度信息, 最终三维重构效果参见附图 10。