胡晓炜,朱庆生,沙孝鸣,周小军,毕 勇,郑锋华,武 帅,吴承志
(1.中国科学技术大学,安徽 合肥 230026;2.中科院南京天文仪器有限公司,江苏 南京 210042;3.61741部队,北京 100094;4.32021部队,北京 100094;5.国电南瑞科技股份有限公司,江苏 南京 211106)
卫星激光测距(satellite laser ranging,SLR)是 20 世纪 60 年代中期发展起来的精密空间测量技术。 它通过安置在地面上的卫星激光测距系统发射的激光脉冲,跟踪并观测装有后向反射器的人造地球卫星,通过测量激光脉冲在激光测距望远镜和卫星之间的往返时间,计算出二者之间的距离,进而解算出精密的卫星轨道。
激光脉冲通过大气时,与大气中的分子和气溶胶粒子之间相互作用产生各种物理过程[1],包括分子的瑞利散射、气溶胶粒子的散射等多种散射过程,产生一部分与激光发射方向相反的散射光,可在发射端 CCD 上成一个楔形像,即为光尖。
卫星激光测距系统中目标星与激光光尖在同一视场中,由于距离远,大气消光严重等因素,光尖往往无法呈现出标准楔形,头部不够尖锐(如图1所示),人工操作耗时长且难以准确找到回波最强的位置,导致在激光测距过程中难以接收到单光子信号。目前国内有剔除部分数据提高光尖定位精度的方法[2],通过矢量边界扫描[3]和最小二乘直线拟合的方法确定激光的边缘和光尖坐标。但这种方法只是对边缘信息的近似描述,存在一定的误差,且没有通过编程在电视跟踪系统中得到有效应用,因此,本文提出利用霍夫变换的方法精确地定位光尖。
(b)原始图像伪彩色图
霍夫变换直线检测[4]是一种图像特征提取的方法,通过投票算法检测具有特定形状的物体,可以用于检测激光图像中的直线。假设在直角坐标系中存在一点A(x0,y0),对于任意一组参数(k,b),均由一条直线(y0=k·x0+b)经过点A(如图2所示),不足之处在于,对于整个直角坐标系而言,有一条直线无法用参数(k,b)描述,即垂直于x轴的情况,故将直角坐标系转换为极坐标系。
图2 存在于直角坐标系中的直线段
如图2所示,有x0=r·cosθ,y0=r·sinθ;
(1)
在极坐标系中,过(x0,y0)的所有直线均可以由r=x0·cosθ+y0·sinθ表示(其中r为原点到直线的距离),在θ为[0,π]范围内,每隔ε取值,可以得到π/ε组r值,直角坐标系中每一个点(x0,y0)都对应极坐标系中一条曲线,极坐标系中每一个点(r,θ)都对应直角坐标系中一条直线(如图3所示)。
图3 直角坐标系直线转化到极坐标系
假设在直角坐标系中有(1,1)、(2,1)、(3,1)三点,转换到极坐标中分别为(y=1·sin(x)+1·cos(x);m=1·sin(x)+2·cos(x);z=1·sin(x)+3·cos(x)),三条直线交于一点(1,π/2))。
直角坐标系中,同一条直线上的点(k,b)必定相等,同时以(r,θ)表示的直线方程为:
(2)
图4为本文所采用的激光图像处理流程。
图4 激光图像处理流程图
图像预处理的方法有中值滤波,高斯滤波,均值滤波等,通过滤波算法,降低图像的噪声,利用卷积公式对图像的像素值进行变换,其中h(k,l)为权重核,g(i,j)为矩阵模板覆盖下中心坐标的像素值。
(3)
在具体操作中,构造一个m*m的矩阵(m为奇数),用此矩阵遍历整幅图像,对该矩阵覆盖下的像素值进行卷积计算,并将结果赋值给中心坐标点,作为中心点像素值,以此达到平滑图像,消除局部噪点的目的。
均值滤波对模板覆盖下的图像矩阵取平均值赋给中心像素点,中值滤波对模板下的像素值进行排列,取中间值赋给中心像素点,该算法能够抑制椒盐噪声,但无法过滤高斯噪声。而为了消除高斯噪声,可以采用高斯滤波方法,它是一种线性平滑滤波,对模板覆盖下的像素值进行加权平均得到,滤波后的图像如图5所示。
(a)高斯模糊后的图像
(b)高斯模糊后伪彩色图
在降噪滤波后,需要提取图像的边缘,这里需要寻找一个最优的边缘检测算法[8],它应当满足:图像中的实际边缘应当被检测到,由噪声形成的边缘应当被排除。
对于一幅图像,在像素值发生跳跃的地方,往往存在着边缘。如在x方向上,有Δ=f(x+1)-f(x),Δ的值越大,说明在x方向上像素值跳跃越大,边缘信号越强,如图6所示。这里采用了sobel算子,它是基于一阶导数的边缘检测算子。
图6 像素值发生跳跃时的点
Sobel算子[9]用两个3×3的矩阵对应水平梯度和竖直梯度,分别为:
(4)
最终图像梯度:
(5)
此时由sobel算子得出的梯度边缘宽度可能不止一个像素,因此需要对边缘线条进行处理。此时要采用非最大信号抑制,在梯度方向,将当前像素的梯度值同相邻两个点的梯度值进行比较,如为最大值,则保留,反之置为0。经过非最大信号抑制,图像的边缘仅为一个像素宽。
最终的边缘图像还需经过双阈值连接处理,此时设定两个阈值T1和T2,T1为低阈值,T2为高阈值,T1/T2=1/2;高于高阈值的点为强边缘点,予以保留,对低于低阈值的点进行抑制,并假定高低阈值之间的点为弱边缘点,需要检测该点的8连通邻域,只要有强边缘点存在,此弱边缘点就被认为是真的边缘点而保留,边缘图像以二值图像的形式保存下来,边缘检测试验如图7所示。图8展示了视频流中的边缘检测试验的情形。
图7 canny边缘检测后的图像
图8 视频流中的边缘检测试验
在边缘检测完成后,采用投票算法对边缘像素点进行直线检测[10],如果激光图像中的像素点构成一条直线,那么将会在极坐标系中相交于同一点,我们在极坐标系中查询交点的数目,设定阈值m,当交点个数大于m时,认为这些点存在于同一条直线上,通过这种方法,将检测直线问题转化为统计相交点数问题。
在理论上,经过一个点的直线有无数条,但在实际中,对图像像素点的角度扫描步长不可能无限小,在工程应用中,这个值通常设定为PI/180。
由于光尖的探测在像素级别已经能够满足要求,从算法时间复杂度和空间复杂度考虑,不涉及亚像素级别的标定。因此,在边缘图像中,设定直线扫描的距离步长为一个像素。图9为标定的光尖图像。
图9 标定的光尖图像
根据检测出的直线,设定极坐标系中交点个数的阈值m,当交点的个数大于阈值,直角坐标系中形成直线,反之,不认为在直角坐标系中存在直线。由此方法,得到激光图像中的两条直线,计算可知他们的斜率,将这两条线段延长,在视场中得到他们的交汇点,即激光光尖点的坐标,如图10所示。
图10 直线斜率及光尖坐标
利用本文提出的霍夫直线检测方法可以精确地提取激光图像边缘,拟合直线,并能够较为精确地给出光尖坐标,辅之经典质心算法对星点质心坐标的精确计算,控制望远镜使激光精确地指向卫星[11-12],扩大了空间探测范围,提高了激光测距的效率。