买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:成都航空职业技术学院
摘要:本发明属于数字图像处理技术领域,公开了一种基于IMX6图形处理器的直线检测方法,该方法利用OpenGL的离屏渲染技术,将图像在帧缓冲对象中进行渲染,并通过CPU读取帧缓冲对象中的数据,从而克服部分GPU处理器不支持几何着色器而无法动态增加顶点的缺点,提高了算法的通用性;利用OpenGL的图像混合技术,将寻找直线的交点问题转化为寻找灰度图像像素值的最大值问题,通过得到的最大值坐标便可以计算出要检测的直线方程。本发明受硬件的制约小,提高了算法的通用性,本发明具有节约开发成本,计算复杂度低,运算速度快的特点。
主权项:1.一种基于IMX6图形处理器的直线检测方法,其特征在于,包括以下步骤:1在GPU中将输入的图像转化为灰度图,利用sobel算子对所述灰度图进行滤波,得到二值化图像;2分别计算二值化图像中每个像素点像素值x,y方向的梯度,如果x或y方向的梯度大于预设阈值,则将此像素点作为边界点,并设为1,否则设为0,由此得到边界二值化图;3利用OpenGL中离屏渲染技术,将所述边界二值化图像在帧缓冲对象中进行渲染,并通过CPU读取帧缓冲对象中的数据,分别计算每个边界点的图像空间坐标,利用图像空间坐标值与平行空间坐标值相对应的关系将图像空间坐标映射到平行坐标空间中;4将计算所得的图像空间坐标作为顶点坐标输入到GPU中,得到平行坐标空间中的映射图像;5在平行坐标空间中对映射图像进行投票,找到像素点像素值的最大值,并通过得到的最大值对应的坐标及平行坐标之间的距离计算出待检测的直线方程。
全文数据:一种基于IMX6图形处理器的直线检测方法技术领域[0001]本发明属于计算机视觉领域,具体涉及一种基于IMX6图形处理器的直线检测方法。背景技术[0002]直线检测技术就是将图像中的一条或几条直线检测出来并进行标定的技术。由于任何图像在微观上都是由许多直线构成,因此许多图像处理功能都可以归结为在图像中对直线进行检测。2016年北京智芯原动科技有限公司发明的“车道直线检测方法及装置”(申请号:201610134621.8,将车道线图像进行二值化处理后,对它的检测问题便能够转化为图像中的直线检测问题。2014年广东工业大学发明的“一种基于直线检测的PCB层数及导线厚度测量方法”(申请号:201410289894.0,通过提取PCB板导线边界计算PCB的层数和导线厚度。一方面,目前大多数的直线提取方法都采用了Hough变换的原理。Hough变换是一种常用的在图像中检测直线的方法,它利用图像空间与参数空间中点与线的对偶性,将图像空间中的直线检测问题转化为参数空间中对点的表决投票问题,参数空间中票数最多的点即为图像空间中需要检测的直线。通过Hough变换检测得到的直线虽然具有相当高的精度,但是其计算量相当大。另一方面,目前大多数的直线提取方法均是在CHJ中计算完成。然而,随着图形处理器GraphicsProcessingUnit,GPU的不断发展,图像处理中大批量的计算工作逐渐从CPU转移到了GPU中。由于Hough变换的参数方程为曲线,因此在空间转换的计算中必须逐点进行变换,如果将Hough变换方法移植入GPU中,无法充分发挥GPU的强大性能。[0003]2011年,MarketaDubska在“PClines-LineDetectionUsingParallelCoordinates”一文中提出了利用平行坐标系parallelcoordinates进行直线检测的方法。与Hough变换一样,这种方法也是将图像空间转变为参数空间并进行投票,但是由于采用了平行坐标系,图像空间中的任意一点映射到参数空间中的结果均为一些直线线段。特别地,在描述线段时只需要提供其两个端点,而不需要逐点进行计算,因此大大提高了运算速度;并且,这种方法更加适合在GPU中进行运算。MarketaDubska也提出了这种方法的GPU解决方案,通过OpenGL接口,能够使得算法可以全部在GPU中运行。然而,在其实施过程中运用了几何着色器geometryShader的功能。几何着色器作为顶点着色器VertexShader和片元着色器FragmentShader的桥梁,可以动态增加顶点数目。但是它作为0penGL3.0的核心之一只能应用在目前较高档的芯片中,这样必然会带来成本的增加。而目前国内主流的嵌入式芯片中大都采用OpenGLES2.0接口,例如恩智浦公司的頂X6系列处理器,它们大都不支持几何着色器的功能。发明内容[0004]本发明所要解决的技术问题是提供一种基于頂X6图形处理器的直线检测方法,该方法受硬件制约小,通用性好,节约开发成本,计算复杂度低,运算速度快,能够满足实时性的要求。[0005]本发明解决上述技术问题的技术方案如下:[0006]一种基于IMX6图形处理器的直线检测方法,包括以下步骤:[0007]⑴在GPU中将输入的图像转化为灰度图,利用sobel算子对所述灰度图进行滤波,得到二值化图像;[0008]2分别计算二值化图像中每个像素点和方向的梯度,如果X或y方向的梯度大于预设阈值,则将此像素点作为边界点,并设为1,否则设为〇,由此得到边界二值化图;[0009]3利用OpenGL中离屏渲染技术,将所述边界二值化图像在帧缓冲对象中进行渲染,并通过CPU读取帧缓冲对象中的数据,分别计算每个边界点的图像空间坐标,并将图像空间坐标映射到平行坐标空间中;[0010]⑷将计算所得的图像空间坐标作为顶点坐标输入到GHJ中,得到平行坐标空间中的映射图像;[0011]5在平行坐标空间中对映射图像进行投票,找到最大值,并通过得到的最大值对应的坐标计算出待检测的直线方程。[0012]本发明的有益效果是:本发明利用OpenGL的离屏渲染技术,将图像在帧缓冲对象中进行渲染,并通过CPU读取帧缓冲对象中的数据,从而克服部分GPU处理器不支持几何着色器而无法动态增加顶点的缺点,提高了算法的通用性;利用OpenGL的图像混合技术,将寻找直线的交点问题转化为寻找灰度图像像素值的最大值问题,通过得到的最大值坐标便可以计算出要检测的直线方程,并输出结果;该方法受硬件制约小,通用性好,节约开发成本,计算复杂度低,运算速度快,能够满足实时性的要求。[0013]在上述技术方案的基础上,本发明还可以做如下改进。[00M]进一步,所述步骤⑶中对映射图像进行投票的方法为:在GPU中将每个像素点的alpha通道组成灰度图,并定位此灰度图的最亮像素点。[0015]采用上述进一步方案的有益效果是:由于映射图像中均为直线段,因此只需要计算直线段的两个端点,无需计算线段中的每个点,最大限度地减少计算量;并且投票过程利用硬件直接完成,不需要软件参与。附图说明[0016]图1为方法流程示意图;[0017]图2为图像空间坐标示意图;[0018]图3为平行坐标空间示意图。具体实施方式[0019]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。[0020]如图1所示,本发明提供了一种基于頂X6图形处理器的直线检测方法,包括以下步骤:[0021]1二值化图像:将输入的图像转化为灰度图后,利用SObel算子进行滤波,分别计算出图像每个像素点X和y方向的梯度,当X或y方向的梯度大于预设阈值时,则将此像素点作为边界点,并设为1,否则设为0。这步操作在GPU中实现。[0022]2平行坐标空间映射:利用OpenGL中离屏植染技术offscreenrendering,将所得到的二值化图像保存在内存中,利用CHJ分别计算每个边界点的图像空间坐标,并将此坐标映射到平行坐标空间中。[0023]图像坐标空间如图2所示,其中(xl,yl、(x2,y2和x3,y3分别表示图像空间中某一直线上的点,w表示图像宽度,h表示图像高度,图像空间中图像的原点在图像的左上角处。[0024]平行坐标空间如图3所示,其中u为横坐标,V为纵坐标,其原点在屏幕中心处。X轴相当于图像空间中的横坐标,y轴相当于图像空间中的纵坐标,-y轴与图像空间中的纵坐标相反,d为平行坐标之间的距离。(xi’,yi’),i=l、2、3分别为图像空间中三个点在平行坐标空间中映射的坐标值,其映射关系为[0025]xi’=xi_w2[0026]yi'=h2-yi[0027]3将计算所得的空间坐标作为顶点(vertex坐标输入到GPU中,并得到平行坐标空间中的映射图像,利用OpenGL的图像混合技术Blending,当直线相交时,直线交点处像素的alpha通道会进行迭加,如果将所有像素点的alpha通道数值看为一幅灰度图,则寻找直线的交点就可以转变为寻找这幅灰度图中像素值的最大值。由于映射图像中均为直线段,因此只需要计算直线段的两个端点,无需计算线段中的每个点,最大限度地减少计算量;并且投票过程利用硬件直接完成,不需要软件参与。[0028]4在平行坐标空间中,根据纵轴的取值,可以将整个空间分为T和S两个子空间,v〈〇时为T子空间,v0时为S子空间,如图3所示。根据交点所处的不同子空间,可以分别求出待检测直线方程。假设直线方程为u=mv+b,并且交点坐标为V,,),其中m为直线的斜率,b为直线的截距。则[0029][0030]本发明的直线检测原理为:利用图像坐标空间与平行坐标空间中线与点的对偶关系,将图像空间中的直线检测问题转化为平行坐标空间中对点的表决投票问题。[0031]本发明充分利用了GPU强大的图形处理和计算功能,在頂X6上利用OpenGL接口实现了图像中的直线检测。此方法的创新之处在于:利用OpenGL的离屏渲染技术,通过CPU作为桥梁,克服了部分GHJ处理器由于不支持几何着色器而无法动态增加顶点的缺点,此方法适合于大多数基于OpenGL的图形处理器,提高了算法的通用性;充分利用GPU的图形处理功能,自动实现对参数空间的表决投票功能,与Hough变换相比,本发明无需对点逐个进行投票,大大提高了运算速度。[0032]本发明的有益效果是,受硬件制约小,通用性好,节约开发成本,计算复杂度低,运算速度快,能够满足实时性的要求。[0033]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求:1.一种基于頂X6图形处理器的直线检测方法,其特征在于,包括以下步骤:⑴在GPU中将输入的图像转化为灰度图,利用sobel算子对所述灰度图进行滤波,得到二值化图像;2分别计算二值化图像中每个像素点和方向的梯度,如果X或y方向的梯度大于预设阈值,则将此像素点作为边界点,并设为1,否则设为0,由此得到边界二值化图;⑶利用OpenGL中离屏渲染技术,将所述边界二值化图像在帧缓冲对象中进行渲染,并通过CPU读取帧缓冲对象中的数据,分别计算每个边界点的图像空间坐标,并将图像空间坐标映射到平行坐标空间中;⑷将计算所得的图像空间坐标作为顶点坐标输入到GPU中,得到平行坐标空间中的映射图像;5在平行坐标空间中对映射图像进行投票,找到最大值,并通过得到的最大值对应的坐标计算出待检测的直线方程。2.根据权利要求1所述的基于頂X6图形处理器的直线检测方法,其特征在于,所述步骤5中对映射图像进行投票的方法为:在GPU中将每个像素点的alpha通道组成灰度图,并定位此灰度图的最亮像素点。
百度查询: 成都航空职业技术学院 一种基于IMX6图形处理器的直线检测方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。