基于gpu的物料堆的体积测量系统及测量方法

文档序号:6158874阅读:174来源:国知局
专利名称:基于gpu的物料堆的体积测量系统及测量方法
技术领域
本发明涉及测量领域,具体地说,涉及物料堆的测量领域。
背景技术
在燃煤电厂,为了节约成本、科学管理,经常要对煤场的各种燃煤的存煤量进行统计。在建筑工地,也经常要对各种沙、石、灰等材料进行进行存量统计。在测量物料堆时,传统的方法是人工测量加上估算,这种方法既耗费了人力,测量的结果也很不精确。随着计算机技术的大量应用,新型的堆体积测量方法是利用激光测距传感器采集回若干采样点的数据,然后通过数学公式来求出结果,这样的结果精确度比人工测量有很大的提高,但是这种方法目前来说,需要耗费大量的时间在计算上,而针对采样数据庞大的真实物料堆来说,这种通过数学公式计算的方法不能快速的计算出有效的结果,同时也不能快速的进行不同种类物料堆的分割及分类物料体积统计。

发明内容
本发明的目的在于提供一种基于GPU的物料堆的体积测量系统及测量方法。
本发明的基于GPU的物料堆的体积测量系统,控制器的一端连接激光测距仪、行程传感器和旋转传感器,另一端连接计算机系统。如图1所示。 所述的激光测距仪安装在斗轮机的悬臂上,旋转传感器安装在旋转平台上,行程传感器固定安装在斗轮机的底部。 本发明的基于GPU的物料堆的体积测量方法,控制器的一端连接激光测距仪、行程传感器和旋转传感器,另一端连接计算机系统;通过激光测距仪、行程传感器和旋转传感器来获取被测目标的表面形态,得到目标表面三维坐标数据,通过控制器连接到计算机系统。 激光测距仪凭借旋转平台在煤场周围随行车运动对堆体连续作定点扫描,旋转平台旋转时测量物料堆表面到激光扫描仪安装位置的距离和旋转传感器测得的角度信息,测得的被测目标的距离和旋转传感器测得的角度信息形成物料堆横向截面的二维数据;斗轮机沿物料场纵向行进通过行程传感器得到位置信息,激光扫描仪测得的距离数据、旋转传感器测得的角度数据与行程传感器所获得的位置信息相匹配形成物料堆的若干点的三维坐标数据,输入控制器,通过光纤,传输到远程计算机,进行后期数据处理和管理。
GPU(Gr即hic Processing Unit)为"图形处理器"的英文縮写。GPU是一个专门的图形的核心处理器。本方法通过激光测距传感器采集物料堆的表面若干点的三维坐标数据,建立物料堆的模型,然后通过GPU的一系列渲染,对模型进行重采样,这些采样点的深度值之和,然后再乘以每个采样点的面积值,就可以得到总的体积。而且通过这些渲染,还可以根据图形结果来对物料堆进行分割。这种方法主要是依赖GPU渲染,所以所用时间非常短,而且精确度也可以与用数学公式法所得结果相媲美。 该硬件装置系统通过激光测距仪、行程传感器和旋转传感器来获取被测目标的表
5面形态,得到目标表面三维坐标数据,为进行各种量算或三维建模显示提供可靠依据。如图 2所示。 远程计算机的后期数据处理为
( — )根据采样数据建立模型
1)、将采样数据进行重新排序 采集的数据每行的个数是不定的,而且由于是根据固定角度采样的,那么采集的
点的顺序也是不缺定的,所以采集进来的每行数据都要进行排序,也就是y分量排序;如图 3。 2)、将数据进行网格化 由于行与行之间,所采集的数据在y分量上并不是完全对应的,那么要进行网格 化,在两行之间,就要建立行间完全对应关系,所有行线段的两个端的不变,并且插点的动 作也要在线段范围之内进行;插点的方法是如果当前线段上一个检测点的y分量值在和它 相邻线段内部存在y分量值与之相等的一个点,那么就要在相邻线段内插入一点,这个点 的x分量为此线段的x分量,y分量为检测点的y分量,z分量为这个点所在线段处的z分 量线性插值结果;如图4。
3)、程序处理 通过应用软件Directx建立网格化的数据结构体Mesh,里面填充经过网格化后的 数据,这个Mesh的结构为
Struct MODELVERTEX
{ 这个结构分别为点的位置、法线、纹理坐标以及归一化的高度,高度归一化的方法 为当前点的z分量除以所有z分量的最大值所得到的结果;
( 二 )根据模型计算体积结果
1)、设备的创建 在创建Direct3D设备时,为了提高计算结果的精度,采用GPU高精度浮点运算模 式和顶点软运算模式,并且作为储存结果的深度Surface,使用可锁定的32位浮点模式;
2)、模型的渲染 采用shader方法进行渲染,渲染所采用俯视角度,使用正交摄像机,并且工程的 宽高分别为采集数据x分量与y分量的跨度;在顶点shader中定义输出分量包含高度分 量,然后把每个顶点上的高度分量传出;这样在像素sharder中经过GPU的光栅化步骤,自 动插值出每个像素的高度分量,然后把这个分量输出到深度缓冲区中;
3)、总体积计算 把深度surface锁定,取得里面的结果,深度surface长为a宽为b,那么深度缓冲 区中共有a*b个二次采样点,这些采样点对应采集数据的x分量跨度Lx与y分量跨度Ly,



D3DXVECT0R3 position ;点的位置 D3DXVECT0R3 normal ;点的法线 FLOAT u, v ;纹理坐标
FLOAT h;归一化的高度那么可以求出每个采样点对应的面积s :
s = (Lx*Ly) / (a*b) 又由于每个点的高度为归一化的值,那么总体积的计算公式为 ,=:2^承&腿*$ ; 4)、将物料堆进行分堆并计算子体积 在实际物料存放时,会按照物料的不同而分堆存放;在数据采集后,根据测量数据 将物料堆进行分割,并计算各个分堆的体积; 采用快速分组算法,首先建立一个数组,此数组用于记录子组的信息,包括最大 值、最小值、体积累计;另外建立一个结果缓冲,用于记录每个深度点与子组对应关系;按 扫描线顺序遍历所有深度点,当遍历到一个非边缘点d时,当点d高度大于最小值S时,按 顺序在缓冲组对应位置点的左侧、左上、上、右上点,当其中有点具有组索引时,表明此点与 其它点相接,后面具有组索引的各点的组索引和当前对应点的组索引赋值为此组索引,且 这些组索引所指向的组信息进行合并,而当这些点都不存在组索引时,那么表明此点与其 它点不相接,此对应点的组索引为新组索引; 当此点为边缘点时,则按实际情况减少比较所需的点。所以这种分组方法只在遍 历深度surface —次,复杂度为a*b ;具体分区方法如图5所示。图中已经标有数字的格子 是当前数组中已经分区的数值,O代表没有深度,即没有分区;l-n代表已经分区后的区号; 标有"?"的格子是当前存在深度的点,如何进行分区并分到第几区里去,格子中带圈数字 为计算后所分区号;格子里带下滑线的数字代表当前分区结束后的变化值。
5)、误差的处理 由于本方法是通过GPU渲染实现的,所以计算精度取决于GPU能力和显卡质量;显
卡管线产生轻微瑕疵是不可避免的,所以程序中要把这些错误结果去掉,比如产生管线噪
点以及在特定点产生特定值等现象,这些点都会对结果产生轻微影响,虽然在误差范围之
内,但去掉这些点仍能够对保证小数点后第二位精度产生贡献,并且也能避免分堆过程中
可能产生的一些问题。(三)计算结果的直观表示方法 1)、平面高度JPG图 在体积计算完成后,会生成一张JPG图片,图片为俯视图,高的部分颜色偏深,低 的部分颜色偏浅,并用数字来标示各堆的分区。计算结果的JPG格式平面高度图如图6所 示。 2)、立体的AVI动画 在体积计算完成后,还会生成三个AVI动画如图7,一个带贴图的煤堆、用红色描 述高度的模型以及模型线框图,这几个动画也分别由Direct3D进行渲染,采用30度俯视角 度,透视摄像机观察煤堆进行360旋转。
3)、用于其它三维软件的模型文件 程序还可以输出一个可以用于其它三维建模软件或模型显式软件的一个DirectX 格式的三维线框模型,如图8。


图1是本发明的系统连接示意图。 图2是激光测量坐标示意图。 图3是采集数据重新排序图。 图4是数据网格化处理示意图。 图5是物料堆分区方法。 图6是JPG格式平面高度图。 图7是计算结果的立体的AVI动画。 图8是DirectX格式的三维线框模型。
具体实施方式

实施例1 本实施例基于GPU的物料堆的体积测量系统,控制器的一端连接激光测距仪、行 程传感器和旋转传感器,另一端连接计算机系统。如图1所示。 所述的激光测距仪安装在斗轮机的悬臂上,旋转传感器安装在旋转平台上,行程 传感器固定安装在斗轮机的底部。 本发明的基于GPU的物料堆的体积测量方法,控制器的一端连接激光测距仪、行 程传感器和旋转传感器,另一端连接计算机系统;通过激光测距仪、行程传感器和旋转传感 器来获取被测目标的表面形态,得到目标表面三维坐标数据,通过控制器连接到计算机系 统。 激光测距仪凭借旋转平台在煤场周围随行车运动对堆体连续作定点扫描,旋转平
台旋转时测量物料堆表面到激光扫描仪安装位置的距离和旋转传感器测得的角度信息,测
得的被测目标的距离和旋转传感器测得的角度信息形成物料堆横向截面的二维数据;斗轮
机沿物料场纵向行进通过行程传感器得到位置信息,激光扫描仪测得的距离数据、旋转传
感器测得的角度数据与行程传感器所获得的位置信息相匹配形成物料堆的若干点的三维
坐标数据,输入控制器,通过光纤,传输到远程计算机,进行后期数据处理和管理。 该硬件装置系统通过激光测距仪、行程传感器和旋转传感器来获取被测目标的表
面形态,得到目标表面三维坐标数据,为进行各种量算或三维建模显示提供可靠依据。如图
2所示。 数据处理软件系统及其算法 应用Microsoft Visual Studio 2005 Spl及DirectX SDK 2009. 3软件开发系 统,进行数据处理和数据管理的软件系统设计。在启动体积测量后,实时获取激光测距仪、 旋转传感器和行程传感器数据,经光纤传送到上位机转换为若干点的三维空间坐标数据文 件。该软件系统进行一系列的数据处理、计算后,得出物料堆的总体积及分割体积等数据文 件、二维图片及三维动画。进而可以进行各种管理。 [OOSS]( — )根据采样数据建立模型
1)、将采样数据进行重新排序 采集的数据每行的个数是不定的,而且由于是根据固定角度采样的,那么采集的
点的顺序也是不缺定的,所以采集进来 每行数据都要进行排序,也就是y分量排序;如图3。 2)、将数据进行网格化 由于行与行之间,所采集的数据在y分量上并不是完全对应的,那么要进行网格 化,在两行之间,就要建立行间完全对应关系,所有行线段的两个端的不变,并且插点的动 作也要在线段范围之内进行;插点的方法是如果当前线段上一个检测点的y分量值在和它
相邻线段内部存在y分量值与之相等的一个点,那么就要在相邻线段内插入一点,这个点 的x分量为此线段的x分量,y分量为检测点的y分量,z分量为这个点所在线段处的z分 量线性插值结果;如图4。
3)、程序处理 通过应用软件Directx建立网格化的数据结构体Mesh,里面填充经过网格化后的 数据,这个Mesh的结构为
Struct MODELVERTEX
{ }; 这个结构分别为点的位置、法线、纹理坐标以及归一化的高度,高度归一化的方法 为当前点的z分量除以所有z分量的最大值所得到的结果;
( 二 )根据模型计算体积结果
1)、设备的创建 在创建Direct3D设备时,为了提高计算结果的精度,采用GPU高精度浮点运算模 式和顶点软运算模式,并且作为储存结果的深度Surface,使用可锁定的32位浮点模式;
2)、模型的渲染 采用shader方法进行渲染,渲染所采用俯视角度,使用正交摄像机,并且工程的 宽高分别为采集数据x分量与y分量的跨度;在顶点shader中定义输出分量包含高度分 量,然后把每个顶点上的高度分量传出;这样在像素sharder中经过GPU的光栅化步骤,自 动插值出每个像素的高度分量,然后把这个分量输出到深度缓冲区中;
3)、总体积计算 把深度surface锁定,取得里面的结果,深度surface长为a宽为b,那么深度缓冲 区中共有a*b个二次采样点,这些采样点对应采集数据的x分量跨度Lx与y分量跨度Ly, 那么可以求出每个采样点对应的面积s :
s = (Lx*Ly) / (a*b) 又由于每个点的高度为归一化的值,那么总体积的计算公式为 4)、将物料堆进行分堆并计算子体积 在实际物料存放时,会按照物料的不同而分堆存放;在数据采集后,根据测量数据


D3DXVECT0R3 position ;点的位置 D3DXVECT0R3 normal ;点的法线 FLOAT u, v ;纹理坐标
FLOAT h;归一化的高度将物料堆进行分割,并计算各个分堆的体积; 采用快速分组算法,首先建立一个数组,此数组用于记录子组的信息,包括最大值、最小值、体积累计;另外建立一个结果缓冲,用于记录每个深度点与子组对应关系;按扫描线顺序遍历所有深度点,当遍历到一个非边缘点d时,当点d高度大于最小值S时,按顺序在缓冲组对应位置点的左侧、左上、上、右上点,当其中有点具有组索引时,表明此点与其它点相接,后面具有组索引的各点的组索引和当前对应点的组索引赋值为此组索引,且这些组索引所指向的组信息进行合并,而当这些点都不存在组索引时,那么表明此点与其它点不相接,此对应点的组索引为新组索引; 当此点为边缘点时,则按实际情况减少比较所需的点。所以这种分组方法只在遍历深度surface —次,复杂度为a*b ;具体分区方法如图5所示。图中已经标有数字的格子是当前数组中已经分区的数值,O代表没有深度,即没有分区;l-n代表已经分区后的区号;标有"?"的格子是当前存在深度的点,如何进行分区并分到第几区里去,格子中带圈数字为计算后所分区号;格子里带下滑线的数字代表当前分区结束后的变化值。
5)、误差的处理 由于本方法是通过GPU渲染实现的,所以计算精度取决于GPU能力和显卡质量;显
卡管线产生轻微瑕疵是不可避免的,所以程序中要把这些错误结果去掉,比如产生管线噪
点以及在特定点产生特定值等现象,这些点都会对结果产生轻微影响,虽然在误差范围之
内,但去掉这些点仍能够对保证小数点后第二位精度产生贡献,并且也能避免分堆过程中
可能产生的一些问题。(三)计算结果的直观表示方法 1)、平面高度JPG图 在体积计算完成后,会生成一张JPG图片,图片为俯视图,高的部分颜色偏深,低的部分颜色偏浅,并用数字来标示各堆的分区。计算结果的JPG格式平面高度图如图6所示。 2)、立体的AVI动画 在体积计算完成后,还会生成三个AVI动画如图7,一个带贴图的煤堆、用红色描述高度的模型以及模型线框图,这几个动画也分别由Direct3D进行渲染,采用30度俯视角度,透视摄像机观察煤堆进行360旋转。
3)、用于其它三维软件的模型文件 程序还可以输出一个可以用于其它三维建模软件或模型显式软件的一个DirectX格式的三维线框模型,如图8。
权利要求
一种基于GPU的物料堆的体积测量系统,其特征在于,控制器的一端连接激光测距仪、行程传感器和旋转传感器,另一端连接计算机系统。
2. 如权利要求1所述的基于GPU的物料堆的体积测量系统,其特征在于,所述的激光测 距仪安装在斗轮机的悬臂上,旋转传感器安装在旋转平台上,行程传感器固定安装在斗轮 机的底部。
3. —种基于GPU的物料堆的体积测量方法,其特征在于,控制器的一端连接激光测距 仪、行程传感器和旋转传感器,另一端连接计算机系统;通过激光测距仪、行程传感器和旋 转传感器来获取被测目标的表面形态,得到目标表面三维坐标数据,通过控制器连接到计 算机系统。
4. 如权利要求3所述的基于GPU的物料堆的体积测量方法,其特征在于,激光测距仪凭 借旋转平台在煤场周围随行车运动对堆体连续作定点扫描,旋转平台旋转时测量物料堆表 面到激光扫描仪安装位置的距离和旋转传感器测得的角度信息,测得的被测目标的距离和 旋转传感器测得的角度信息形成物料堆横向截面的二维数据;斗轮机沿物料场纵向行进通 过行程传感器得到位置信息,激光扫描仪测得的距离数据、旋转传感器测得的角度数据与 行程传感器所获得的位置信息相匹配形成物料堆的若干点的三维坐标数据,输入控制器, 通过光纤,传输到远程计算机,进行后期数据处理或管理。
5. 如权利要求4所述的基于GPU的物料堆的体积测量方法,其特征在于,远程计算机的 后期数据处理为(一)根据采样数据建立模型1) 、将采样数据进行重新排序采集的数据每行的个数是不定的,而且由于是根据固定角度采样的,那么采集的点的 顺序也是不缺定的,所以采集进来的每行数据都要进行排序,也就是y分量排序;2) 、将数据进行网格化由于行与行之间,所采集的数据在y分量上并不是完全对应的,那么要进行网格化,在 两行之间,就要建立行间完全对应关系,所有行线段的两个端的不变,并且插点的动作也要 在线段范围之内进行;插点的方法是如果当前线段上一个检测点的y分量值在和它相邻线 段内部存在y分量值与之相等的一个点,那么就要在相邻线段内插入一点,这个点的x分量 为此线段的x分量,y分量为检测点的y分量,z分量为这个点所在线段处的z分量线性插 值结果;3) 、程序处理通过应用软件Directx建立网格化的数据结构体Mesh,里面填充经过网格化后的数 据,这个Mesh的结构为 Struct MODELVERTEXD3DXVECT0R3 position ;点的位置 D3DXVECT0R3 normal ;点的法线 FLOAT u, v ;纹理坐标FLOAT h;归一化的高度这个结构分别为点的位置、法线、纹理坐标以及归一化的高度,高度归一化的方法为当 前点的z分量除以所有z分量的最大值所得到的结果; (二)根据模型计算体积结果1) 、设备的创建在创建Direct3D设备时,为了提高计算结果的精度,采用GPU高精度浮点运算模式和 顶点软运算模式,并且作为储存结果的深度Surface,使用可锁定的32位浮点模式;2) 、模型的渲染采用shader方法进行渲染,渲染所采用俯视角度,使用正交摄像机,并且工程的宽高 分别为采集数据x分量与y分量的跨度;在顶点shader中定义输出分量包含高度分量,然 后把每个顶点上的高度分量传出;这样在像素sharder中经过GPU的光栅化步骤,自动插值 出每个像素的高度分量,然后把这个分量输出到深度缓冲区中;3) 、总体积计算把深度surface锁定,取得里面的结果,深度surface长为a宽为b,那么深度缓冲区中 共有a*b个二次采样点,这些采样点对应采集数据的x分量跨度Lx与y分量跨度Ly,那么 可以求出每个采样点对应的面积s :s = (Lx*Ly)/(a*b)又由于每个点的高度为归一化的值,那么总体积的计算公式为 Jp4 ,4) 、将物料堆进行分堆并计算子体积在实际物料存放时,会按照物料的不同而分堆存放;在数据采集后,根据测量数据将物 料堆进行分割,并计算各个分堆的体积;采用快速分组算法,首先建立一个数组,此数组用于记录子组的信息,包括最大值、最 小值、体积累计;另外建立一个结果缓冲,用于记录每个深度点与子组对应关系;按扫描线 顺序遍历所有深度点,当遍历到一个非边缘点d时,当点d高度大于最小值6时,按顺序在 缓冲组对应位置点的左侧、左上、上、右上点,当其中有点具有组索引时,表明此点与其它点 相接,后面具有组索引的各点的组索引和当前对应点的组索引赋值为此组索引,且这些组 索引所指向的组信息进行合并,而当这些点都不存在组索引时,那么表明此点与其它点不 相接,此对应点的组索引为新组索引;当此点为边缘点时,则按实际情况减少比较所需的点;所以这种分组方法只在遍历深 度surface —次,复杂度为a*b。
6.如权利要求5所述的基于GPU的物料堆的体积测量方法,其特征在于,计算结果的直 观表示方法为1) 、平面高度JPG图在体积计算完成后,会生成一张JPG图片;2) 、立体的AVI动画在体积计算完成后,还会生成三个AVI动画,一个带贴图的煤堆、用深浅色描述高度的 模型以及模型线框图;3) 、用于三维软件的模型文件程序输出一个可以用于三维建模软件或模型显式软件的一个DirectX格式的三维线 框模型。
全文摘要
基于GPU的物料堆的体积测量系统及测量方法,本发明涉及测量领域,具体地说,涉及物料堆的测量领域。本发明的基于GPU的物料堆的体积测量方法,控制器的一端连接激光测距仪、行程传感器和旋转传感器,另一端连接计算机系统;通过激光测距仪、行程传感器和旋转传感器来获取被测目标的表面形态,得到目标表面三维坐标数据,通过控制器连接到计算机系统。后期数据处理为根据采样数据建立模型,根据模型计算体积结果。
文档编号G01B11/02GK101718523SQ200910228120
公开日2010年6月2日 申请日期2009年11月10日 优先权日2009年11月10日
发明者刘艳玲, 沈兆奎, 解宁, 郑越 申请人:天津理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1