基于GPU实时提取光条纹中心的方法及设备技术

技术编号:35748926 阅读:13 留言:0更新日期:2022-11-26 18:54
本发明专利技术公开了基于GPU实时提取光条纹中心的方法和设备,所述方法包括以下步骤:S1、初始化OpenCL内核环境;S2、通过图像预处理得到图像中光条纹的感兴趣区域ROI,得到图像中光条纹的最大宽度;S3、检测光条纹中心;S4、释放S1中初始化的OpenCL内核环境;本发明专利技术通过开放运算语言OpenCL,利用图形处理单元GPU擅长并行数据处理的优势,完成基于Hessian矩阵的Steger算法在异构架构下的并行加速,实现了Steger算法实时性检测光条纹中心的目的。Steger算法实时性检测光条纹中心的目的。Steger算法实时性检测光条纹中心的目的。

【技术实现步骤摘要】
基于GPU实时提取光条纹中心的方法及设备


[0001]本专利技术涉及图像处理
,尤其涉及基于GPU实时提取光条纹中心的方法及设备。

技术介绍

[0002]线结构光视觉传感器技术是三维重建领域的关键技术之一,现在广泛应用于非接触性的三维测量、工业检测、视觉引导焊接等领域。其中光条纹中心提取算法是决定线结构光三维重建精度以及光条纹轮廓定位准确性的重要因素,因此在线结构光视觉传感器应用场景中一个非常重要的任务就是准确获取线结构光条纹中心的位置信息。
[0003]目前常见的光条纹中心提取方法有灰度阈值法、灰度重心法、极值法、方向模板法、梯度阈值法等,这些方法实现简单,但精度不高,且容易收到噪声的干扰。
[0004]卡斯特恩.斯蒂格(Carsten.Steger)在20世纪末提出的基于Hessian矩阵的Steger算法是被广泛使用的光条纹中心提取算法,它首先得到图像中光条纹的法线方向,然后求法线方向上的极值点,从而得到光条纹中心的亚像素坐标。
[0005]Steger算法不但精度高而且鲁棒性好,唯一不足的就是其运算量较大,直接使用很难实现光条纹中心的快速提取,难以满足实时性要求较高的应用场景。

技术实现思路

[0006]本专利技术提供了基于GPU实时提取光条纹中心的方法,通过开放运算语言OpenCL(Open Computing language)利用图形处理单元GPU(Graphics Processing Unit)擅长并行数据处理的优势,完成基于Hessian矩阵的Steger算法在异构架构下的并行加速,从而解决Steger算法难以满足实时性检测光条纹中心的问题;具体采用的技术方案如下:
[0007]基于GPU实时提取光条纹中心的方法,包括以下步骤:
[0008]S1、初始化OpenCL内核环境;
[0009]S2、通过图像预处理得到图像中光条纹的感兴趣区域ROI,得到图像中光条纹的最大宽度;
[0010]S3、检测光条纹中心,所述检测光条纹中心包括以下步骤:
[0011]S301、编写内核程序,所述内核程序用于完成以下计算:
[0012]S30101、完成卷积计算;
[0013]S30102、构建Hessian矩阵H(x,y),计算H(x,y)的特征值和特征向量,其中绝对值最大的特征值对应的特征向量作为光条纹的法线方向向量(n
x
,n
y
),其中||(n
x
,n
y
)||2=1;
[0014]S30103、计算得到光条纹中心的亚像素坐标;
[0015]所述内核程序需要完成的三部分计算是在GPU上并行计算完成的;
[0016]S302、创建cl_kernel结构的内核对象,将执行内核的设备信息编译到内核程序中;
[0017]S303、执行内核程序;
[0018]S304、将内核执行后的输出缓存对象映射到主机内存中,然后释放创建的缓存对象;
[0019]S4、释放S1中初始化的OpenCL内核环境。
[0020]优选的,步骤S1、所述初始化OpenCL内核环境,包括以下步骤:
[0021]S101、利用clGetPlateformIDs和clGetPlateformInfo两个函数获取指定的计算平台;
[0022]S102、根据S101中获取的平台信息,利用clGetDeviceIDs和clGetDeviceInfo两个函数获取GPU设备作为内核的运行设备;
[0023]S103、根据S101中获取的平台信息和S102中获取的设备信息,利用clCreateContext函数创建上下文。
[0024]优选的,步骤S2中,图像中光条纹的感兴趣区域ROI可以通过对原图像进行自适应阈值的二值化处理,然后利用连通域分析法得到。
[0025]优选的,统计二值化图像中光条纹的最大宽度,在线结构光视觉传感器中光条纹在图像中沿着光条宽度的方向或光条的法线方向上,其灰度呈现出类似的高斯分布特点,高斯函数的标准差σ与光条纹宽度W应该满足公式(1):将光条纹的最大宽度W代入公式(1),可计算得到高斯函数的标准差σ,取标准差σ的3倍作为离散高斯卷积模板窗口的半径,卷积模板窗口大小记为M*M,M根据公式(2)计算,表示对其中的数据向下取整,然后根据公式(5)、(6)、(7)、(8)、(9)计算出高斯函数的一阶、二阶偏导作为卷积模板,记为D
x
,D
y
,D
xx
,D
yy
,D
xy

[0026][0027]一维高斯函数:
[0028][0029]二维高斯函数:
[0030][0031]二维高斯函数的一阶偏导数:
[0032][0033][0034]二维高斯函数的二阶偏导数:
[0035][0036][0037][0038]优选的,步骤S30101完成卷积计算,包括:将原图像中光条纹ROI和D
x
,D
y
,D
xx
,D
yy
,D
xy
分别做卷积计算得到一阶、二阶偏导,记为r
x
,r
y
,r
xx
,r
yy
,r
xy

[0039]所述步骤S30103中,光条纹中心的亚像素坐标(e
x
,e
y
)=(u+t*n
x
,v+t*n
y
),其中(u,v)为光条纹中心的像素坐标,(p
x
,p
y
)=(t*n
x
,t*n
y
)是光条纹中心像素坐标(u,v)在其法线方向上的灰度分布函数展开成二阶泰勒多项式的消失点,其中t计算如下式:
[0040][0041]获取光条纹中心的亚像素坐标的条件为
[0042]公式10的推导过程:
[0043]图像中任意像素点(x0,y0)在其邻域附近内光强(灰度值)分布函数的二阶泰勒多项式如下:
[0044][0045]上式中t为未知量,光强分布函数可以看作是关于t的一个分布函数;其中H(x,y)为Hessian矩阵,[n
x
,n
y
]同(n
x
,n
y
)为Hessian矩阵绝对值最大的特征值对应的特征向量,它表示当前像素在此方向(梯度方向)上是光强变化最快的。公式11对t求导,令导数为0的地方就是光强最强的地方(极值点),在图像中就是光条纹中心点处。求导公式如下:
[0046][0047]将公式12右侧等式改写成矩阵形式,如下:
[0048][0049]化简可得到t:
[0050][0051]公式14中f
x
,f本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于GPU实时提取光条纹中心的方法,其特征在于,包括以下步骤:S1、初始化OpenCL内核环境;S2、通过图像预处理得到图像中光条纹的感兴趣区域ROI,得到图像中光条纹的最大宽度;S3、检测光条纹中心,所述检测光条纹中心包括以下步骤:S301、编写内核程序,所述内核程序用于完成以下计算:S30101、完成卷积计算;S30102、构建Hessian矩阵H(x,y),计算H(x,y)的特征值和特征向量,其中绝对值最大的特征值对应的特征向量作为光条纹的法线方向向量(n
x
,n
y
),其中||(n
x
,n
y
)||2=1;S30103、计算得到光条纹中心的亚像素坐标;所述内核程序需要完成的三部分计算是在GPU上并行计算完成的;S302、创建cl_kernel结构的内核对象,将执行内核的设备信息编译到内核程序中;S303、执行内核程序;S304、将内核执行后的输出缓存对象映射到主机内存中,然后释放创建的缓存对象;S4、释放S1中初始化的OpenCL内核环境。2.根据权利要求1所述的基于GPU实时提取光条纹中心的方法,其特征在于,步骤S1中初始化OpenCL内核环境,包括以下步骤:S101、利用clGetPlateformIDs和clGetPlateformInfo两个函数获取指定的计算平台;S102、根据S101中获取的平台信息,利用clGetDeviceIDs和clGetDeviceInfo两个函数获取GPU设备作为内核的运行设备;S103、根据S101中获取的平台信息和S102中获取的设备信息,利用clCreateContext函数创建上下文。3.根据权利要求1所述的基于GPU实时提取光条纹中心的方法,其特征在于,步骤S2中,图像中光条纹的感兴趣区域ROI可以通过对原图像进行自适应阈值的二值化处理,然后利用连通域分析法得到。4.根据权利要求3所述的基于GPU实时提取光条纹中心的方法,其特征在于,统计二值化图像中光条纹的最大宽度,在线结构光视觉传感器中光条纹在图像中沿着光条宽度的方向或光条的法线方向上,其灰度呈现出类似的高斯分布特点,高斯函数的标准差σ与光条纹宽度W应该满足公式1:将光条纹的最大宽度代入公式1,计算高斯函数的标准差σ,取标准差σ的3倍作为离散高斯卷积模板窗口的半径,卷积模板窗口大小记为M*M,M根据公式2计算,表示对其中的数据向下取整,然后根据公式5、6、7、8、9计算出高斯函数的一阶、二阶偏导作为卷积模板,记为D
x
,D
y
,D
xx
,D
yy
,D
xy
。一维高斯函数:二维高斯函数:
二维高斯函数的一阶偏导数:二维高斯函数的一阶偏导数:二维高斯函数的二阶偏导数:二维高斯函数的二阶偏导数:二维高斯函数的二阶偏导数:5.根据权利...

【专利技术属性】
技术研发人员:朱志磊
申请(专利权)人:无锡砺成智能装备有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1