基于小波变换的三维测量方法 【技术领域】
本发明属于三维信息重构的领域。基于黑白正弦光栅投影, 采用小波变换法分析 变形条纹图像求解相对相位, 建立质量图指导相位展开, 得到精确绝对相位的过程。背景技术
三维测量技术能够描述物体的三维特征和获取物体表面的三维信息, 在产品检测 和加工控制、 医疗领域、 文物保护领域、 航空航天领域、 文化领域等有着广泛的应用。
光栅投影法是一种重要的三维测量技术, 通过向物体表面投射正弦光栅, 将物体 的高度信息以相位的形式隐含在光栅中, 利用 CCD 获得物体表面的光栅条纹图像, 并使用 特定算法对条纹图像进行处理, 提取其中的相位, 从而建立物体的三维信息。 常用的求解条 纹图像相位的方法有相移法、 傅里叶变换法、 窗口傅里叶变换法、 小波变换法等。
傅里叶变换法由于只需采集一幅条纹图像即可完成相位的测量, 可以实现动态测 量, 应用非常广泛。但是傅里叶变换是一种全局的信号分析工具, 不能提取局部信号的特 征, 在变换中存在的频谱混叠问题影响着相位测量的精度。 近年来, 随着小波分析理论的迅 速发展, 小波变换被引入光学三维测量领域, 使用小波变换分析条纹图像进而实现物体的 三维测量, 即小波变换轮廓术。 小波分析是一种分析非平稳信号的有效工具, 相比于已经在 信号处理领域得到广泛应用的传统傅里叶变换法, 小波变换在分析信号的局部特征时更有 优势。小波变换具有多分辨率分析的特性, 不仅能够像傅里叶变换那样得到信号的整体特 征, 而且能够对局部信号的细节进行分析, 具有较好的时间 / 空间局部性。所以采用小波变 换求解条纹图像的相位避免了傅里叶变换中出现的频谱混叠问题, 测量精度更高。
小波变换法求解得到的相位值都是介于 0-2π 的, 所以需要相位展开过程。为了 实现动态测量, 一般不采用添加辅助图像增加信息协助相位展开。简单的扫描线展开相位 方法运算速度非常快, 但鲁棒性不高, 容易出现错误传递现象。 质量图指导相位展开算法通 过对条纹图像建立一幅反映每一像素点可靠性的质量图选取一条最佳的相位展开路径, 这 种方法鲁棒性较高, 能够相对精确地展开相位, 但运算时间较长, 不适用于实时测量。
质量指导相位展开算法的关键步骤是质量图的建立。 质量图主要有以下几种建立 方法。相位梯度法, 每个点与四邻的相位梯度的最大值作为每个点的质量值, 质量值越大, 说明该点的质量越差。表面向量质量图法, 使用每一点的法向量和 CCD 投影方向的负单位 向量的内积作为该点的质量值, 法向量可由该点和四邻点的相位值计算得出。以上两种方 法没有涉及到小波变换的参数, 并不适用于小波变换轮廓术。 小波变换脊幅值法, 根据小波 变换脊处的模值表示局部信号和小波函数相似程度的原理, 利用小波变换脊的模值建立质 量图, 指导初始相位的展开, 这种方法充分利用了小波变换得到的矩阵, 但这种质量图建立 方法没有考虑小波变换脊处的尺度因子, 当脊处的尺度因子过大或者过小时, 模值不能准 确说明局部信号的质量好坏 ; 并且当局部信号的幅值变化时, 小波变换矩阵中小波脊处的 幅值也会变化, 故不能准确描述局部信号的正弦性和可靠性。发明内容 技术问题 : 针对小波变换轮廓术中相位展开的精确性和实时性问题, 本发明的目 的在于提高小波变换相位展开过程的速度和求解绝对相位的精度。 本方法充分利用了小波 变换矩阵中的有用信息, 结合了直接相位展开速度快和洪水相位展开法精度高的优点, 只 需投影一幅条纹图像, 实现对较复杂物体表面三维信息的获取, 具有较高的精确性, 同时实 时性较好。
技术方案 : 一种基于小波变换的三维测量方法, 具体步骤如下 :
步骤 1 : 将黑白条纹图像投影到被测物体表面, 使用 CCD 对被测物体表面进行拍 摄, 得到一幅高度为 c、 宽度为 r 的变形条纹图像 g(x, y) :
g(x, y) = A(x, y)+B(x, y)cos[2πf0x+φ(x, y)]
其中, A(x, y) 是背景光强分布, B(x, y) 是物体表面反射率, f0 是正弦条纹频率, φ(x, y) 是待求的相对相位分布, (x, y) 表示变形条纹图像的二维坐标,
步骤 2 : 对变形条纹图像逐行做小波变换, 得到变形条纹图像的相对相位分布图, 具体过程如下 :
步骤 2.1 : 将 y 视为常数, 采用一维连续小波变换对变形条纹图像 g(x, y) 的第 y 行进行处理, 处理过程为 :
其中, a 是尺度因子, 取值范围为 10 到 50, 每隔 0.2 取一个值, b 是平移因子, 取值范围为 1 到条纹图像宽度 r, 每隔 1 取一个值, 单位为像素, 获得的 W(a1, b) 是一个 200 行 r 列的二维复数矩阵, a1 是矩阵 W(a1, b) 中元素的行标号, 称第 y 行小波变换矩阵, M*a, M(x) 是小波函数, 表达式如下 : b(x) 是 Ma, b(x) 的共轭函数,
其中, fb 是小波函数的带宽, fc 是小波函数的中心频率, i 为单位复数,
步骤 2.2 : 求取条纹图像的最佳尺度因子分布图 ar(x, y) 和相对相位分布图 φ(x, y), 求取 ar(x, y) 和 φ(x, y) 在坐标 (x, y) 处数值的方法如下 :
求出 W(a1, b) 的对应的模矩阵 A(a1, b) 和角度矩阵搜索矩阵 A(a1, b) 第 中第 x 列x 列中值最大的元素, 求出该元素在矩阵 A(a1, b) 中的行标号为 amax, 则 arx = 10+0.2×amax, arx 为条纹图像的最佳尺度因子分布图 ar(x, y) 在坐标 (x, y) 处数值, 矩阵 中行标号为 amax 的元素数值为条纹图像的相对相位分布图 φ(x, y) 在坐标 (x, y) 处数值,
遍历条纹图像所有坐标点, 求得条纹图像的最佳尺度因子分布图 ar(x, y) 和相对 相位分布图 φ(x, y),
步骤 3 : 建立质量图 Q(x, y),
步骤 3.1 : 对频率为 f0 的一维正弦信号做小波变换 :
求出二维复数矩阵 W1(a1, b) 的模矩阵 A1(a1, b), 搜索每列元素中数值最大的元素,记录其行标号, 求得这些行标号的平均值
求得最优尺度因子 ar1 :步骤 3.2 : 求质量图 Q(x, y) :
Q(x, y) = |ar(x, y)-ar1|
步骤 4 : 根据质量图 Q(x, y) 将相对相位分布图 φ(x, y) 分成两个部分,
步骤 4.1 : 建立高度 c, 宽度 r 的 0 值矩阵 D,
步骤 4.2 : 遍历质量图 Q(x, y) 的每一个点, 求出质量图 Q(x, y) 出现频率最高的元 素数值 Q1, 得到阈值 T = 1.05×Q1,
步骤 4.3 : 遍历质量图 Q(x, y) 的每一个点, 当 Q(x, y) 中的数值大于阈值 T 时, 矩 阵 D 中相应位置元素置 1,
步骤 5 : 展开相对相位分布图 φ(x, y) 中 D 矩阵相应位置元素值为 0 的点的相位,
步骤 5.1 : 建立高度 c, 宽度 r 的 0 值矩阵 S,
步骤 5.2 : 在相对相位分布图 φ(x, y) 的中心像素的 20×20 领域内选择一个 D 矩 阵相应位置元素值为 0 的点作为展开的起始点, 起始点的绝对相位值记为该点在相对相位 分布图 φ(x, y) 中的数值, 沿着行方向向图像两侧展开 D 矩阵相应位置元素值为 0 的点的 相位, 每展开一个像素点, 该点在 S 矩阵相应位置元素值置 1, 在直接展开过程中如遇到某 些点的同一行的前一点并未处理, 可以将该点的上一行或者下一行的相邻点视为前一点然 后展开, 每行都如此运算,
每一点具体展开过程如下 :式中, 是前一点的绝对相位值, 是当前点的相对相位值, 是求得的当 前点的绝对相位值, round 是取整函数,
步骤 6 : 展开相对相位分布图 φ(x, y) 中 S 矩阵相应位置元素值为 0 的点的相位,
步骤 6.1 : 在 S 矩阵中标记 0 值的连通域, 对于每个连通域做如下处理 :
步骤 6.2 : 选择连通域中的任一边界点做为起始点, 入当前为空的堆栈,
步骤 6.3 : 查找起始点四邻点中 S 矩阵相应位置元素值为 0 的点, 如果四邻点中找 不到这样的点, 跳到步骤 6.5 ; 如果可以找到这样的点, 展开这些点的相位, 将这些点在 S 矩 阵中相应位置元素值置 1, 并将这些点存入堆栈,
步骤 6.4 : 对堆栈中的点按照其在条纹图像质量图 Q(x, y) 中相应位置的数值大小 进行排序, 质量值最大点放置于堆栈的顶部,
步骤 6.5 : 将堆栈的顶部的点取出做为起始点, 判断堆栈是否为空, 如果为空, 则 该连通域展开过程结束 ; 如果不为空, 转到步骤 6.3,
步骤 7 : 经过步骤 5 和步骤 6 处理, 得到条纹图像的绝对相位图 φ1(x, y), 根据经 典光栅投影的相位到高度的转换公式, 最终求得测量物体的三维信息。
有益效果 : 与现有技术相比, 本发明具有如下优点 : 首先, 本发明采用小波变换法 求解条纹图像的相对相位, 相比于傅里叶变换三维测量法, 避免了频谱混叠现象, 可以得到 更加精确的相对相位结果, 相比于相移法, 本发明只需投影一幅黑白条纹图像, 可以实现动
态测量 ; 其次, 本发明建立质量图的方法充分利用了小波变换矩阵中的信息, 相比其他方 法, 在相位展开中使用本发明方法所建立的质量图, 能够得到一条可靠性更高的相位展开 路径, 降低了相位展开中出错的概率, 可以得到更加精确的绝对相位结果 ; 最后, 本发明利 用质量图将相对相位图分成两个部分, 对这两个部分分别采用不同的算法进行相位展开, 相比于传统的洪水相位展开算法, 极大减少了相位展开所需的运算时间, 同时保持了较高 的鲁棒性。 综上, 本发明能够快速准确地获取被测物体的三维高度信息, 具有较好的实时性 和鲁棒性。 附图说明
图 1 是本发明的整个过程的流程图。
图 2 是步骤 6 中采用洪水算法展开 “质量” 较低的点的相位的具体过程流程图。
图 3 是 CCD 采集到的以泡沫塑料为被测物体的变形条纹图像。
图 4 是采用小波变换法求解得到的相对相位分布图。
图 5 是得到的最佳尺度因子分布图。
图 6 是根据质量图计算的阈值对最佳尺度因子分布图做阈值分割得到的二值图 像。 图 7 是步骤 5 过后的展开相位图像。
图 8 是最终得到的绝对相位分布图。
图 9 是根据经典的光栅投影的相位到高度的转换公式, 得到的表示物体三维信息 的点云图像。
具体实施方式
下面结合附图对本发明的具体实施方式做进一步说明。在 windows 操作系统下选 用 VC++6.0 作为编程工具, 对 CCD 采集到的变形条纹图像进行处理。该实例采用泡沫塑料 作为被测物体, 最终得到比较精确的含有护板三维信息的全场绝对相位分布。
图 1 是本发明的整个过程的流程图。
图 2 是步骤 6 采用洪水算法展开 “质量” 较低的点的相位的具体过程流程图。
针对小波变换轮廓术中的精确性和快速性的问题, 本发明首先采用小波变换求解 采集到的变形条纹图像的相对相位分布, 利用小波变换脊处的尺度因子建立质量图指导相 对相位图的质量展开, 在此基础上, 为了提高相位展开算法的速度, 根据质量图将相对相位 分布分成质量好坏的两个部分, 质量普遍较好的部分采用扫描线法直接相位展开, 质量普 遍较差的部分采用质量指导选取最佳路径的方法。 这种方法省去了全局质量指导算法的一 些不必要的步骤, 提高了相位展开算法的效率, 而且保持了较高的测量精度。 在得到精确的 绝对相位分布后, 根据经典光栅投影的相位到高度转换公式, 最终得到测量物体的三维信 息。
本发明基于小波变换的三维测量方法, 具体实施步骤如下 :
步骤 1 : 将黑白条纹图像投影到被测物体表面, 使用 CCD 对被测物体表面进行拍 摄, 得到一幅高度为 c、 宽度为 r 的变形条纹图像 g(x, y) :
g(x, y) = A(x, y)+B(x, y)cos[2πf0x+φ(x, y)]其中, A(x, y) 是背景光强分布, B(x, y) 是物体表面反射率, 由于环境光是不变的, 所以这 A(x, y)、 B(x, y) 两个参数可以当做常数处理, f0 是正弦条纹频率, 可取 f0 = 32, φ(x, y) 是待求的相对相位分布, (x, y) 表示变形条纹图像的二维坐标, 图 3 为变形条纹图 像,
步骤 2 : 对变形条纹图像逐行做小波变换, 得到变形条纹图像的相对相位分布图, 具体过程如下 :
步骤 2.1 : 将 y 视为常数, 采用一维连续小波变换对变形条纹图像 g(x, y) 的第 y 行进行处理, 处理过程为 :
其中, a 是尺度因子, 取值范围为 10 到 50, 每隔 0.2 取一个值, b 是平移因子, 取值范围为 1 到条纹图像宽度 r, 每隔 1 取一个值, 单位为像素, 获得的 W(a1, b) 是一个 200 行 r 列的二维复数矩阵, a1 是矩阵 W(a1, b) 中元素的行标号, 称第 y 行小波变换矩阵, M*a, M(x) 是小波函数, 表达式如下 : b(x) 是 Ma, b(x) 的共轭函数,
其中, fb 是小波函数的带宽, fc 是小波函数的中心频率, i 为单位复数, 本发明采用 fb = 2, fc = 0.845, 进行小波变换,
步骤 2.2 : 求取条纹图像的最佳尺度因子分布图 ar(x, y) 和相对相位分布图 φ(x, y), 求取 ar(x, y) 和 φ(x, y) 在坐标 (x, y) 处数值的方法如下 :
求出 W(a1, b) 的对应的模矩阵 A(a1, b) 和角度矩阵搜索矩阵 A(a1, b) 第 x 列中值最大的元素, 称为条纹图像 (x, y) 坐标处的点的小 波变换脊, 求出该元素在矩阵 A(a1, b) 中的行标号为 amax, 则 arx = 10+0.2×amax, 这个式子实 际上是根据行标号为 amax 寻找小波变换脊处的尺度因子的数值, arx 为条纹图像的最佳尺度
因子分布图 ar(x, y) 在坐标 (x, y) 处数值, 矩阵中第 x 列中行标号为 amax 的元素数值为条纹图像的相对相位分布图 φ(x, y) 在坐标 (x, y) 处数值,
遍历条纹图像所有坐标点, 求得条纹图像的最佳尺度因子分布图 ar(x, y) 和相对 相位分布图 φ(x, y), 实验效果分别见图 5 和图 4,
步骤 3 : 建立质量图 Q(x, y), 建立质量图的理论基础是小波变换矩阵的模值代表 了条纹图像的局部信号和小波函数的相似程度, 由于本发明中选用的小波函数是 morlet 函数, 具有较好的正弦性, 而根据步骤 2.2, 小波变换矩阵的模值在小波变换脊处达到最大, 所以可以采用小波变换脊处的尺度因子判断条纹图像局部信号的正弦性好坏。 当条纹图像 某一点的最佳尺度因子过大时, 说明该像素点附近的局部信号和低频率的正弦信号比较吻合, 可能是无条纹区域, 故该点的 “质量” 即可靠性可以判定为低 ; 当该点的最佳尺度因子过 小时, 说明该像素点附近的局部信号与高频率的正弦信号比较吻合, 可能是受到噪声干扰, 该点的 “质量” 也可以判定为低。故首先应该找到这样一个数值, 当像素点的最佳尺度因子 等于该数值时, 像素点的 “质量” 最好, 步骤 3.1 为找到这样一个数值的过程, 步骤 3.2 为建 立质量图的过程, 质量图中每一点质量的含义实际上是该点的尺度因子与最优尺度因子的 “距离” 。本步骤中求取的质量图用于在步骤 5 中将相对相位分布图分成两个部分, 在步骤 6 中指导相位展开过程, 得到相位展开的最佳路径,
步骤 3.1 : 对频率为 f0 的一维正弦信号做小波变换 :
求出二维复数矩阵 W1(a1, b) 的模矩阵 A1(a1, b), 搜索每列元素中数值最大的元素, 求得最优尺度因子 ar1 :记录其行标号, 求得这些行标号的平均值
步骤 3.2 : 求质量图 Q(x, y) :
Q(x, y) = |ar(x, y)-ar1|
本发明所建立的质量图中, 质量值越大, 说明该像素点的可靠性越低,
步骤 4 : 根据质量图 Q(x, y) 将相对相位分布图 φ(x, y) 分成两个部分,
步骤 4.1 : 建立高度 c, 宽度 r 的 0 值矩阵 D, D 矩阵和条纹图像大小相同, 用于区分 根据质量图将相对相位图分成的两个部分,
步骤 4.2 : 遍历质量图 Q(x, y), 统计得到取值最多的质量值 Q1, 得到阈值 T = 1.05×Q1,
步骤 4.3 : 遍历质量图 Q(x, y), 当 Q(x, y) 中的数值大于阈值 T 时, 矩阵 D 中相应 位置元素置 1, 图 6 为 D 阵的图像模式, 其中白色区域代表质量较好优先展开的点, 黑色区域 为需要采用洪水算法展开的点的区域,
步骤 5 : 展开相对相位分布图 φ(x, y) 中 D 矩阵相应位置元素值为 0 的点的相位, 该步骤展开的点都是 “质量” 较好的点, 且质量值相差不多, 按照传统的洪水相位展开算法, 这些点仍然要参与排序, 但实际上排序后和排序前的相位展开路径对于精度的影响不大, 故这一部分采用最简单的扫描线相位展开算法即可得到比较精确的结果, 而运算且速度非 常快, 步骤 5.1 : 建立高度 c, 宽度 r 的 0 值矩阵 S, S 矩阵与条纹图像大小相同, 用于标记 相对相位分布图 φ(x, y) 的点是否已经展开,
步骤 5.2 : 在相对相位分布图 φ(x, y) 的中心像素的 20×20 领域内选择一个 D 矩 阵相应位置元素值为 0 的点作为展开的起始点, 起始点的绝对相位值记为该点在相对相位 分布图 φ(x, y) 中的数值, 沿着行方向向图像两侧展开 D 矩阵相应位置元素值为 0 的点的 相位, 每展开一个像素点, 该点在 S 矩阵相应位置元素值置 1, 在直接展开过程中如遇到某 些点的同一行的前一点并未处理, 可以将该点的上一行或者下一行的相邻点视为前一点然 后展开, 如果这两点也没有处理, 留待步骤 6 处理, 每行都如此运算,
每一点具体展开过程如下 :
式中, 是前一点的绝对相位值, 是当前点的相对相位值, 是求得的当 前点的绝对相位值, round 是取整函数, 图 7 为经过步骤 5 过程后的相位分布图,
步骤 6 : 展开相对相位分布图 φ(x, y) 中 S 矩阵相应位置元素值为 0 的点的相位, 这一部分为 “质量” 较差的点, 为达到较高展开精度故采用洪水相位展开算法处理, 洪水算 法的流程图如图 2 所示, 由于这部分点数量较少, 所以运算时间也较快,
步骤 6.1 : 在 S 矩阵中标记 0 值的连通域, 二值矩阵的一个连通域是指二值矩阵中 相互连通且取值相同的元素的集合, 如图 6 中每个封闭的黑色区域都是一个连通域, 对于 每个连通域做如下处理 :
步骤 6.2 : 选择连通域中的任一边界点做为起始点, 入当前为空的堆栈,
步骤 6.3 : 查找起始点四邻点中 S 矩阵相应位置元素值为 0 的点, 如果四邻点中找 不到这样的点, 跳到步骤 6.5 ; 如果可以找到这样的点, 展开这些点的相位, 将这些点在 S 矩 阵中相应位置元素值置 1, 并将这些点存入堆栈,
步骤 6.4 : 对堆栈中的点按照其在条纹图像质量图 Q(x, y) 中相应位置的数值大小 进行排序, 质量值最大点放置于堆栈的顶部,
步骤 6.5 : 将堆栈的顶部的点取出做为起始点, 判断堆栈是否为空, 如果为空, 则 该连通域展开过程结束 ; 如果不为空, 转到步骤 6.3,
步骤 7 : 经过步骤 5 和步骤 6 处理, 已经遍历了条纹图像的相对相位分布图 φ(x, y) 的所有点, 得到条纹图像的绝对相位图 φ1(x, y), 如图 8 所示为被测物体的绝对相位图, 在个人计算机上, 基于 VC++ 平台, 本发明展开相位运算时间为 27s, 而全场相位展开运算时 间近 90min, 可见本发明方法实时性较好, 根据经典光栅投影的相位到高度转换公式, 最终 求得测量物体的三维信息, 图 9 为将物体的三维信息以点云的形式表现出来。
由条纹图像的绝对相位图 φ1(x, y) 到物体高度的公式如下 :
其中, l、 d 是测量系统的几何参数, l 是投影仪到测量平面的距离, d 是 CCD 摄像头 表示相位变化量, 为展开相位结果,到投影仪的距离,为初始相位结果, 由测量参考面决定, ω0 为投影光栅的角频率, 由系统标定可得。