一种三维激光扫描成像仪的成像方法

文档序号:6232322阅读:1193来源:国知局
一种三维激光扫描成像仪的成像方法
【专利摘要】本发明涉及一种三维激光扫描成像仪的成像方法,利用三角测距法的原理对输入图像进行处理,并根据反射激光在图像中所成光斑中心的坐标以及激光器与摄像头的夹角及它们间固定的距离值,利用立体几何的理论最终计算出这一束线状激光投影到物体上各点的三维坐标,最后利用GLUT库绘制出场景点云模型。
【专利说明】一种三维激光扫描成像仪的成像方法

【技术领域】
[0001]本发明涉及一种具有场景三维激光扫描成像仪的成像方法,特别是涉及一种低成本的具有场景三维激光扫描成像仪的成像方法。

【背景技术】
[0002]激光扫描成像仪(Laser Rangefinderor Laser Radar)以其测距速度快,精度高,获取信息直观等优点在军事、航空和民用等领域得到了越来越多的应用.在智能移动机器人的研究中,激光测距系统更是和CCD摄像机、超声传感器等一起成为机器人必不可少的外部环境感知传感器之一。目前激光扫描成像仪主要有二维和三维两种,二维只在一个固定的扫描平面上获取距离信息(也称为单线扫描),如德国SICK公司生产的LMS系列2D雷达;三维激光测距成像仪则在二维扫描的同时,还能转动扫描平面(多线扫描),主要代表为奥地利RIEGL公司生产的RIEGL系列远距三维雷达。
[0003]激光扫描成像仪的装置复杂度高,例如Hokuyo公司生产的激光雷达产品的售价都是上万元的水平。其昂贵的原因之一在于他们往往采用了高速的光学振镜进行大角度范围的激光扫描,并且测距使用了计算发射/反射激光束相位差的手段进行。
[0004]激光扫描成像仪高昂的价格限制了它的进一步应用。当然,目前也有了一个替代方案,那就是微软公司的kinect,不过其成像分辨率和测距精度相比激光雷达而言低了不少,同时无法在室外使用。并且kinect售价较高,在国内普及率很低。相比激光扫描成像仪和kinect,市面上线状激光器产品的价格就要实惠许多,同时这些产品的各项参数及测量精度对于一般业余用途而言已经足够,并且可以通过改进的新型算法来获得更高的扫描精度及更快的扫描速度。如果我们对测量的精度、性能要求稍微降低,那么采用线状激光器的成本将可以大幅的下降,因此采用线状激光器来设计并研制出此套方案,将会使其具有广泛拓展民用市场的前景,并能投入市场进行大批量工业生产。


【发明内容】

[0005]要解决的技术问题
[0006]为了避免现有技术的不足之处,本发明提出一种三维激光扫描成像仪的成像方法。
[0007]技术方案
[0008]一种三维激光扫描成像仪的成像方法,所述的三维激光扫描成像仪包括红外线状激光器、摄像头、Raspberry Pi开发板、stm32板和锂电池,其中线状红外激光器和摄像头成83°的夹角,三维激光扫描成像仪的底部安装有一个可以360°旋转的舵机,其特征在于步骤如下:
[0009]步骤1:从摄像头的输入视频流里获取一帧图像数据,然后用OpenCV提供的cvCvtColor函数,将图像从RGB彩色空间转化为具有8位单通道灰度图像的灰度空间,选用nx*ny高斯滤波器对图像进行高斯平滑滤波处理,cvSmooth函数根据高斯滤波器窗口尺寸^、?改变高斯滤波器卷积核σ的水平方向值σχ和垂直方向值oy:
[0010]σχ=(^-1)χ().30 + 0.80

η
[0011]σ^=(^--1)χ 0.30+ 0.80
[0012]步骤2:计算经过高斯平滑滤波后图像中的激光光斑质心点像素坐标px:
N N
Ytnuj)
[0013]-
ΣΣ/m

1-1 1.-1
[0014]其中,i和j为像素坐标,f(i, j)为像素亮度值;
[0015]步骤3:利用三角测距原理得到该成像光点到激光器的距离cd:
[0016]cd = f*s/ ((ps*px+offset) *sin ( β ))
[0017]利用cd以及勾股定理、三角函数、相似三角形的性质计算除中点外的其他高度上的点的三维坐标X、y、z:
X = (cd * tan(--β、-rf + (-^-)2 *
2(ν--)* ps*baseli
\cos(arclan( “-))

1
[0018]/ /Λ
Y-- \*PS* baseliner — cd* tan(- - β)*
{7 /wocn 米 w
cosfarctan(--) - π) * sin((--arccos(—.:)) H--)
f^s2/ηo180./(cd * Uin( - 0)- rY + cd~

V'2 *
[0019]
y = (cd 氺 tiin(^ - β) - rf + (-^-): *
2(y - —) ^ ps * baseline
\cos(arctan(---))
1
y-- \*ps*baseliner-cd*tan(-~β)*
/ Λ 2)、 、* “π ,.2、、 ca^n.cos(arctan(----) -π)^ cos((--arccos(—=...................................................................z................................................)) H--)
f^s2/π? ? 180
J-β)-Γ)~ +?.?/-
z = - (cd* tan(y —々)一厂广十(--): ^

“ (y - 1) * ps * baseline
\c )s(arctan(-----))
[0020]1 f#s
(h、
y- — >,s psbaseline
sin(arclan(----) — π)
[0021]r:摄像头与激光器的中点与舵机中心转轴之间的偏移距离;
[0022]y:线状激光上每个点的Y轴高度坐标;
[0023]h:表示成像图像的高度;
[0024]baseline:旋转时的激光器中心点与摄像头中心点之间的距离;
[0025]ca:舵机选装角度,在0°到360°之间等间隔采样取值;
[0026]β:激光器与摄像头的夹角;
[0027]s:激光器中心与摄像头中心点距离;
[0028]f:摄像头的焦距;
[0029]ps:摄像头感光部件上单个像素感光单元的尺寸,通过查询摄像头的感光元件的数据手册来确定;
[0030]Offset:通过像素点计算的投影距离和实际投影距离的偏差量,在三维激光扫描成像仪安装后的校正步骤中得到;
[0031]步骤4:Raspberry Pi开发板通过串口向stm32核心板发送指令,stm32控制舵机带动摄像头和激光器同时旋转360°,每次测距采样后采用步骤3计算得到一个数组dist[n],为点云阵列;所述dist[i]为不同高度像素坐标i下激光点的三维坐标x、y、z ;
[0032]步骤5:根据点云阵列利用GLUT库绘制出场景点云模型:
[0033]a:初始化GLUT库,设置创建的窗口的显示模式,所述显示模式为RGBA模式或索引模式、单缓存或双缓存;设置创建的窗口的大小和位置;
[0034]b:将当如创建的窗口设直为需要重新绘制;指定需要重新绘制窗口内各时应调用的函数;指定窗口被移动或大小改变时应调用的函数;指定用户按下生成ASCII字符的键时应调用的函数;指定用户按下或松开鼠标键时应调用的函数;
[0035]c:读取点云阵列数据并调用GLUT函数在当前创建的窗口中绘制出相应的三维图形。
[0036]所述摄像头为640x480分辨率的摄像头,η的取值为480,当进行360°扫描时,每一度采样一组,得到分辨率为360x480的点云阵列。
[0037]有益效果
[0038]本发明提出的一种三维激光扫描成像仪的成像方法,克服现有的激光扫描成像仪价格昂贵的不足。

【专利附图】

【附图说明】
[0039]图1本发明的三维激光扫描成像仪的成像方法的流程图
[0040]图2三角测距原理图
[0041]图3激光线条光斑在平行平面上各点的距离问题抽象图
[0042]图4三维测距原理图

【具体实施方式】
[0043]现结合实施例、附图对本发明作进一步描述:
[0044]三维激光扫描成像仪包括红外线状激光器、摄像头、Raspberry Pi开发板、stm32板和锂电池,其中线状红外激光器和摄像头成83°的夹角,线状红外激光器投射出的线状激光照射到障碍物上会反射回来并在摄像头里感光成像,摄像头通过USB接口连接到一个Raspberry Pi开发板上,并将图像传送到开发板。三维激光扫描成像仪的底部安装有一个可以360°旋转的舵机,它会带动整套装置一起360°旋转,这样扫描一圈便可得到各个方向的场景的三维点坐标数据。
[0045]由于日常光源中红外波段的光线干扰比较少,因此选用红外激光器作为整套装置的光源。红外激光器上电后会发出线状的红外光,红外光照射到物体上后会被反射回来,摄像头与激光器的夹角决定了扫描范围,将其固定为83°所能接收到的反射激光的最远距离为5米左右,之后反射光被摄像头捕获并成像。我们在摄像头前加上了红外滤光片,因此可以过滤掉其余波段的光线,只让激光器发射出的红外光通过。
[0046]三维激光扫描成像仪的安装过程如下:首先利用一块30*20(cm)的硬质合金铝板,在靠近铝板的左端或右端打一个小圆孔,再利用支杆套筒和支杆将激光器固定住,令支杆穿过铁板上的小圆孔,再按照三角测距算法的要求,利用量角器,让激光器和摄像头成一个83°的夹角,最后在铁板上固定住支杆。然后在铝板的另一端用胶布固定住摄像头,使摄像头的位置保持与激光器水平且左右相距在166.2mm之间。再将Raspberry Pi开发板固定到长方形招板四个角中的任一个边角上,将摄像头连接到Raspberry Pi开发板的USB接口上。接下来再将长方形的铝板对称安装到圆形的舵机上面,确保铝板的中心和舵机圆形重合。然后在舵机下面同样安装一片长条形的铝板,大小为5*10 (cm),在这块铝板上固定安放stm32核心板以及动力锂电池,将stm32核心板和Raspberry Pi开发板通过串口线连接。锂电池负责为stm32板等装置里所有需要用电的设备供电。
[0047]三维激光扫描成像仪的成像方法:利用三角测距法的原理对输入图像进行处理,并根据反射激光在图像中所成光斑中心的坐标以及激光器与摄像头的夹角及它们间固定的距离值,利用立体几何的理论最终计算出这一束线状激光投影到物体上各点的三维坐标,最后利用GLUT库绘制出场景点云模型。具体步骤如下:
[0048]1、从摄像头的输入视频流里获取一帧图像数据,然后用OpenCV提供的cvCvtColor函数,将图像从RGB彩色空间转化为具有8位单通道灰度图像的灰度空间,选用3*3高斯滤波器对图像进行高斯平滑滤波处理(平滑滤波处理也称为模糊处理,是一种简单且使用频率很高的图像处理方法,用来减少图像上的噪声和失真),OpenCV作为一个优秀的跨平台开源库,提供了 5种不同的平滑操作方法,所有操作都在cvSmooth中实现,该函数可以将用户期望的平滑方式作为参数。cvSmooth函数根据高斯滤波器窗口尺寸3*3改变高斯滤波器卷积核σ的水平方向值σχ和垂直方向值oy:

Ux
[0049]χ ~ —I) X 0.30 + 0.80, Πχ — 3

ην
[0050]σ, = (--Ι)χ 0.30 + 0.80, n' = 3
[0051]2、计算经过高斯平滑滤波后图像中的激光光斑质心点像素坐标px:
N N
[0052]Pi = -
ΣΣ/m


1-l
[0053]其中,i和j为像素坐标,f(i, j)为像素亮度值;
[0054]3、利用三角测距原理得到该成像光点到激光器的距离Cd,其中三角测距原理如图2所示(采用三角测距法来计算光线照射到物体上的各点的距离,因为这种方式不需要传统的测距方式所要求的高精度的特殊硬件,所以是实现低成本激光成像的关键):
[0055]cd = f*s/ ((ps*px+offset) *sin ( β ))
[0056]利用cd以及勾股定理、三角函数、相似三角形的性质计算除中点外的其他高度上的点的三维坐标x、y、z,如图3、4所示:
X = {cd * tan(— - β)-r)1 + (--)~ 个
2(y - —}*ps^baseline
\cos(arctan( ^j)

\
[0057]
\y--rps^ baseliner-cd^ tan(- - β)⑶匁冗
cos(arclan(:———-)-π) ^sin((— - arccos(—p)) +-—)
f^s2In180




J(cd * lan( ” - β) - r)~ + cd~
[0058]
J = (<■'" * tan(y - β) _ rf + (-γ-?.‘.( ν ——)* ps * baseline
icos(arctan(---))
If ^ s
i y-^)* ps* baseliner - cd * tan(-- β)*
cos(arctan(----)-π)* cos((— - arccos(—=^)) + —~—)
f*s2π;180



^(cd * tan(—-y?) - r)~ + cd~
z = - (cd * tan(^ - β) - rf + (-^-}_ —

2 (7 - ; ” Ps * baseline
\cos(drctan(-^~—-))
[0059]?i*s
(h、
y- * ps * baseline
sin(arclan(-~—-) - π)

f*s
[0060]r:摄像头与激光器的中点与舵机中心转轴之间的偏移距离;
[0061]y:线状激光上每个点的Y轴高度坐标;
[0062]h:表示成像图像的高度;
[0063]baseline:旋转时的激光器中心点与摄像头中心点之间的距离;
[0064]β:激光器与摄像头的夹角;
[0065]s:激光器中心与摄像头中心点距离;
[0066]f:摄像头的焦距;
[0067]ps:摄像头感光部件上单个像素感光单元的尺寸,通过查询摄像头的感光元件的数据手册来确定;
[0068]Offset:通过像素点计算的投影距离和实际投影距离的偏差量,由如下两个因素引入的:1)与激光射线平行的直线和成像平面焦点的位置未必在成像感光阵列的第一列(或第一排)上(实际上在第一排的概率非常低);2)通过摄像头主光轴的光线在画面中的像素坐标未必是画面中点。这个偏差量在三维激光扫描成像仪安装后的校正步骤中得到;
[0069]取f = 4.2mm,s = 166.2mm,baseline = 10Omm, β = 85。,ps = 0.006912mm,offset = 4.37mm, h = 480, y从I依次取到480, r = 49.2mm。ca代表舵机选装角度,在0°到360°之间等间隔采样取值,采样率由舵机旋转一段的时间决定。我们这里设定为每相隔一度等间隔采样,就是说ca依次取0° ,1°,2°等等。
[0070]4、Raspberry Pi开发板通过串口向stm32核心板发送指令,stm32控制舵机带动摄像头和激光器同时旋转360°,每次测距采样后采用步骤3计算得到一个数组dist[n],为点云阵列;所述dist[i]为不同高度像素坐标i下激光点的三维坐标x、y、z ;对于采用摄像头为640x480分辨率的摄像头,η的取值为480,当进行360°扫描时,每一度采样一组,得到分辨率为360x480的点云阵列。
[0071]5、根据点云阵列利用GLUT库绘制出场景点云模型:
[0072]a:初始化GLUT库,设置创建的窗口的显示模式,所述显示模式为RGBA模式或索引模式、单缓存或双缓存;设置创建的窗口的大小和位置;
[0073]b:将当如创建的窗口设直为需要重新绘制;指定需要重新绘制窗口内各时应调用的函数;指定窗口被移动或大小改变时应调用的函数;指定用户按下生成ASCII字符的键时应调用的函数;指定用户按下或松开鼠标键时应调用的函数;
[0074]c:读取点云阵列数据并调用GLUT函数在当前创建的窗口中绘制出相应的三维图形。
【权利要求】
1.一种三维激光扫描成像仪的成像方法,所述的三维激光扫描成像仪包括红外线状激光器、摄像头、Raspberry Pi开发板、stm32板和锂电池,其中线状红外激光器和摄像头成83°的夹角,三维激光扫描成像仪的底部安装有一个可以360°旋转的舵机,其特征在于步骤如下: 步骤1:从摄像头的输入视频流里获取一帧图像数据,然后用OpenCV提供的cvCvtCo 1 or函数,将图像从RGB彩色空间转化为具有8位单通道灰度图像的灰度空间,选用nx*ny高斯滤波器对图像进行高斯平滑滤波处理,cvSmooth函数根据高斯滤波器窗口尺寸^、?改变高斯滤波器卷积核σ的水平方向值σχ和垂直方向值oy:
j =(^l-1)x0.30 + 0.80
x 2
η
C7 =(—-1)χ0.30 + 0.80 步骤2:计算经过高斯平滑滤波后图像中的激光光斑质心点像素坐标px:
N N
/-1 /-1
过/("/)
/-1 ?-1 其中,i和j为像素坐标,f (i, j)为像素亮度值; 步骤3:利用三角测距原理得到该成像光点到激光器的距离cd:
cd = f木s/ ((ps^px+offset)木sin ( β )) 利用cd以及勾股定理、三角函数、相似三角形的性质计算除中点外的其他高度上的点的三维坐标X、y、Z: X = (cd * tan(— - β) - r): + (--) ■.'



baseline4ο \cos(arci,an( ^))f*SI y-魯]*;?■* baseliner - cd * tm{-- β)★ I 2 y 7T 0 CCl 7T cos(arctan(-———-)-;r} *sin((二 - nrrrosi(—“)) h--—)
t2Ijr.180.(cd * lan( - β) - r)~ + cd~
V2
(cd*Un(^-p)-r)2+(-f-)“

(v-—baseline
1 7
\cos(arctan(-))
!
Y ps^ baseliner-cd^tm(--fi)^ cos(arctan(----)-π)^'cos((— -arccos(—=^)) + CQ
f^s2π?180



J(cd * tan(— - β)~ rY + cd~ z 二一 {cd * Utn(等-β) - r)~ + (-j-)2 *二(y- ) * ps * baseline \cos^rciaix(---))
\
(h、
y- '.' ps 对 baseline sin(arclan(----) - t)
f*s r:摄像头与激光器的中点与舵机中心转轴之间的偏移距离; y:线状激光上每个点的Y轴高度坐标; h:表不成像图像的闻度; baseline:旋转时的激光器中心点与摄像头中心点之间的距离; ca:舵机选装角度,在0°到360°之间等间隔采样取值; β:激光器与摄像头的夹角; s:激光器中心与摄像头中心点距离; f:摄像头的焦距; ps:摄像头感光部件上单个像素感光单元的尺寸,通过查询摄像头的感光元件的数据手册来确定; Offset:通过像素点计算的投影距离和实际投影距离的偏差量,在三维激光扫描成像仪安装后的校正步骤中得到; 步骤4:Raspberry Pi开发板通过串口向stm32核心板发送指令,stm32控制舵机带动摄像头和激光器同时旋转360°,每次测距采样后采用步骤3计算得到一个数组dist[n],为点云阵列;所述dist[i]为不同高度像素坐标i下激光点的三维坐标x、y、z ; 步骤5:根据点云阵列利用GLUT库绘制出场景点云模型: a:初始化GLUT库,设置创建的窗口的显示模式,所述显示模式为RGBA模式或索引模式、单缓存或双缓存;设置创建的窗口的大小和位置; b:将当前创建的窗口设置为需要重新绘制;指定需要重新绘制窗口内容时应调用的函数;指定窗口被移动或大小改变时应调用的函数;指定用户按下生成ASCII字符的键时应调用的函数;指定用户按下或松开鼠标键时应调用的函数; c:读取点云阵列数据并调用GLUT函数在当前创建的窗口中绘制出相应的三维图形。
2.根据权利要求1所述的三维激光扫描成像仪的成像方法,其特征在于:所述摄像头为640x480分辨率的摄像头,η的取值为480,当进行360°扫描时,每一度采样一组,得到分辨率为360x480的点云阵列。
【文档编号】G01C3/10GK104266605SQ201410300768
【公开日】2015年1月7日 申请日期:2014年6月27日 优先权日:2014年6月27日
【发明者】林洋, 冯燕 申请人:西北工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1