一种低资源消耗的实时核线方法和实时核线系统与流程

文档序号:11655315阅读:335来源:国知局
一种低资源消耗的实时核线方法和实时核线系统与流程

本发明涉及摄影测量与遥感领域,尤其涉及一种低资源消耗的实时核线方法和实时核线系统。



背景技术:

摄影测量中必须通过立体像对(两个摄站对同一地物摄取相互重叠的两张像片),构建与地面相似的立体模型才能确定地面点的三维空间位置。要达到立体量测的目的,必须建立立体像对。摄影基线与任一物方点所作的平面与影像面的交线,为通过该物方点的核线。核线在航摄像片上是相互不平行的,它们相交于核点。但如果要建立的立体像对达到可测量的精度,就必须先将像片上的核线投影到一对相对水平的像片上,即生成核线影像,再生成立体像对量测。

现在最常用的生成核线影像的方法是一种基于数字影像几何纠正的方法。通过核线重采样方法,使用精确的核线方程,逐个像素计算核线上影像像素点坐标与原始影像上像素点坐标的对应关系,重新采样像素值,生成核线影像。最后使用核线影像建立立体像对,达到立体量测的目的。

也有一些专家学者提出了实时核线的思想,即不生成核线影像,直接使用原始影像,在计算机显示立体像对时,对影像进行实时的核线计算(只计算窗口显示范围),也可以达到立体量测目的。

现有的核线算法虽然能够准确的描述核线影像与原始影像间的关系,但却需要大量的计算,消耗了大量的额外的计算时间和存储空间。核线变换并非线性变换,每个像素都要经过复杂的矩阵计算。一幅无人机拍摄的较小的影像(4912*7360)要经过近4000万次矩阵计算才可以生成一份核线影像,大型航空摄影影像更是会达到上亿甚至数十亿次矩阵计算,这势必会消耗大量的计算时间。另外,由于每一个立体像对都需要计算一组核线影像,但最终目的只是通过核线影像立体量测制作数字线划图dlg,这些生成的核线影像则成为了临时文件,浪费了存储空间。

虽然有人提出实时核线算法,通过在立体像对显示的过程中实时计算核线影像来避免生成核线影像带来的消耗大量计算时间和存储空间的问题,但依然存在计算量大的问题。比如在笔记本电脑屏幕(1366*768)上显示立体像对,两张核线影像要经过超过200万次矩阵计算,随着屏幕分辨率的增大计算量呈平方关系递增。这导致的结果就是对cpu计算能力要求极高,并且在立体像对平移、缩放时很难保证及时计算得到核线影像,常常出现卡顿现象,用户体验较差。



技术实现要素:

有鉴于此,本发明提供一种低资源消耗的实时核线方法和实时核线系统,以解决现有技术计算量大,计算速度慢的问题。

具体地,本发明是通过如下技术方案实现的:

本发明提供一种低资源消耗的实时核线方法,所述实时核线方法包括:

将原始影像根据行列规则划分为预设的多个三角形;

对所述多个三角形以顶点为控制点逐个进行核线计算,获取所述多个三角形顶点在其核线影像上的坐标;

在所述三角形内部,根据所述坐标对影像的像素进行线性变换。

本发明还提供了一种低资源消耗的实时核线系统,所述实时核线系统,包括:

划分单元,用于将原始影像根据行列规则划分为预设的多个三角形;

坐标获取单元,用于对所述多个三角形以顶点为控制点逐个进行核线计算,获取所述多个三角形顶点在其核线影像上的坐标;

变换单元,用于在所述三角形内部,根据所述坐标对影像的像素进行线性变换。

本发明实施例,将原始影像根据行列规则划分为预设的多个三角形,对多个三角形以顶点为控制点逐个进行核线计算,获取多个三角形顶点在其核线影像上的坐标,在三角形内部,根据坐标通过拉伸或压缩变换对影像的像素进行线性变换,避免了在立体测图之前生成核线影像,节省了计算时间和存储空间,同时使用cpu和gpu进行计算,保证了低配置计算机的计算速度。

附图说明

图1是本发明一示例性实施例示出的一种低资源消耗的实时核线方法的流程图;

图2是本发明一示例性实施例示出的核线变换示意图;

图3是本发明一示例性实施例示出的三角形顶点的核线变换示意图;

图4是本发明一示例性实施例示出的实时核线立体像对显示效果图;

图5是本发明一示例性实施例示出的一种低资源消耗的实时核线系统的结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

如图1所示为本发明一示例性实施例示出的一种低资源消耗的实时核线方法的流程图,所述实时核线方法包括:

步骤s101,将原始影像根据行列规则划分为预设的多个三角形。

在本发明实施例中,原始影像首先根据行列排布的规则,划分为多个三角形。划分的三角形的数量是整个实时核线方法的关键,如果划分的三角形数量取最大极限,则每个像素都进行了精确核线运算,精度虽然最高,但运算量大、计算速度慢;如果剖分三角形数量取最少,则计算量很少,计算速度快,但精度难以保证。对于划分的三角形的数量,可以通过实验取一个合适的值,使得该值的三角形数量在计算精度和计算速度上达到平衡,具体的值可以根据实际使用的需要进行设定,在此不做赘述。

通常在计算三角形数量时并不能取极限值,只要在核线的显示范围内绘制足够的三角形,让平面上显示的三角形足够小,就可以保证核线影像的精度。

如图4所示为本发明一示例性实施例示出的经过实时核线后的立体像对显示效果图,图4中显示的是通过三角形贴图方式显示的核线影像,屏幕分辨率1366*768,范围内大约绘制了5000个三角形。一个像对的左右影像通过叠加显示后,只存在左右视差,未发现上下视差(如若核线影像精度不足,会产生上下视差)。这样的核线影像,如果放大显示,则会在屏幕范围内重新绘制5000个三角形,三角形大小不会随影像的缩放而变化,因此误差不但不会被放大,还会随着显示影像的放大而减小。

需要指出的是,该步骤由系统的cpu通过计算实现。

步骤s102,对所述多个三角形以顶点为控制点逐个进行核线计算,获取所述多个三角形顶点在其核线影像上的坐标。

在本发明实施例中,通过对三角形顶点作为控制点的核线计算,即可获取三角形顶点在其核线影像上的坐标。

需要指出的是,上述步骤由系统的cpu通过计算实现。

步骤s103,在所述三角形内部,根据所述坐标对影像的像素进行线性变换。

在本发明实施例中,原始影像上核线不平行,相交于核点,但在经过核线变换得到的核线影像上,核线却是相互平行的。由此可见在整幅影像上,核线的变换不是线性的,每个像素需要的变换都不相同。考虑到核线与摄影基线的关系,核线必为直线,因此在小范围内核线的变化是有规律的。

具体的,所述根据所述坐标对影像的像素进行线性变换,包括:

根据所述坐标通过拉伸或压缩变换对影像的像素进行线性变换。

所述在三角形内部,根据所述坐标对影像的像素进行变化,包括:

1.通过cpu计算获取三角形顶点的控制点;

2.通过gpu对所述控制点进行纹理贴图,并通过opengl渲染管线进行渲染。

在本发明实施例中,使用gpu进行纹理贴图,是交由opengl的渲染管线完成的。在传统方式的cpu计算影像中,以像素为单位进行计算,处理效率低、速度慢,以cpu计算方式实现的核线,几乎不可能做到“实时”。opengl可编程管线渲染则不相同,其渲染过程是一组状态机,只要将数据上传到显存指定位置,即可实现渲染、贴图。因此,实时核线仅需计算好绘制顶点(核线变换后的三角形顶点控制点)数据、绘制顺序数据、贴图uv值以及影像数据,交由显卡完成渲染,即可将核线影像显示出来。

如图2为本发明一示例性实施例示出的核线变换示意图,图2中的三角形区域,虽然在核线变换前后形状发生变化,但在小范围内可以近似认为原始影像上的三角形区域经过均匀的拉伸或者压缩变换得到核线影像上的三角形。显然,这种三角形的拉伸或者压缩变换,只要确定三角形的三个顶点的位置即可做到。

如图3为本发明一示例性实施例示出的三角形顶点的核线变换示意图,核线变换可以转换为三角形变换,按照这种方法可以将影像剖分成为很多小三角形,以三角形顶点为控制点,对控制点进行精确的核线变换,三角形内部则按照顶点的变换规律线性的拉伸或者压缩变换,这样就避免了对每个像素进行计算,实现了快速核线变换。如图3所示,将影像按行列划分成多个三角形,对三角形顶点进行精确的核线变换。

本发明实施例,将原始影像根据行列规则划分为预设的多个三角形,对多个三角形以顶点为控制点逐个进行核线计算,获取多个三角形顶点在其核线影像上的坐标,在三角形内部,根据坐标通过拉伸或压缩变换对影像的像素进行变换,避免了在立体测图之前生成核线影像,节省了计算时间和存储空间,同时使用cpu和gpu进行计算,保证了低配置计算机的计算速度。

如图5所示为本发明一示例性实施例示出的一种低资源消耗的实时核线系统的结构图,所述实时核线系统,包括:

划分单元501,用于将原始影像根据行列规则划分为预设的多个三角形。

在本发明实施例中,原始影像首先根据行列排布的规则,划分为多个三角形。划分的三角形的数量是整个实时核线方法的关键,如果划分的三角形数量取最大极限,则每个像素都进行了精确核线运算,精度虽然最高,但运算量大、计算速度慢;如果剖分三角形数量取最少,则计算量很少,计算速度快,但精度难以保证。对于划分的三角形的数量,可以通过实验取一个合适的值,使得该值的三角形数量在计算精度和计算速度上达到平衡,具体的值可以根据实际使用的需要进行设定,在此不做赘述。

通常在计算三角形数量时并不能取极限值,只要在核线的显示范围内绘制足够的三角形,让平面上显示的三角形足够小,就可以保证核线影像的精度。

如图4所示为本发明一示例性实施例示出的经过实时核线后的立体像对显示效果图,图4中显示的是通过三角形贴图方式显示的核线影像,屏幕分辨率1366*768,范围内大约绘制了5000个三角形。一个像对的左右影像通过叠加显示后,只存在左右视差,未发现上下视差(如若核线影像精度不足,会产生上下视差)。这样的核线影像,如果放大显示,则会在屏幕范围内重新绘制5000个三角形,三角形大小不会随影像的缩放而变化,因此误差不但不会被放大,还会随着显示影像的放大而减小。

需要指出的是,该步骤由系统的cpu通过计算实现。

坐标获取单元502,用于对所述多个三角形以顶点为控制点逐个进行核线计算,获取所述多个三角形顶点在其核线影像上的坐标。

在本发明实施例中,通过对三角形顶点作为控制点的核线计算,即可获取三角形顶点在其核线影像上的坐标。

需要指出的是,上述步骤由系统的cpu通过计算实现。

变换单元503,用于在所述三角形内部,根据所述坐标对影像的像素进行线性变换。

在本发明实施例中,原始影像上核线不平行,相交于核点,但在经过核线变换得到的核线影像上,核线却是相互平行的。由此可见在整幅影像上,核线的变换不是线性的,每个像素需要的变换都不相同。考虑到核线与摄影基线的关系,核线必为直线,因此在小范围内核线的变化是有规律的。

具体的,所述根据所述坐标对影像的像素进行线性变换,包括:

根据所述坐标通过拉伸或压缩变换对影像的像素进行线性变换。

所述在三角形内部,根据所述坐标对影像的像素进行变化,包括:

1.通过cpu计算获取三角形顶点的控制点;

2.通过gpu对所述控制点进行纹理贴图,并通过opengl渲染管线进行渲染。

在本发明实施例中,使用gpu进行纹理贴图,是交由opengl的渲染管线完成的。在传统方式的cpu计算影像中,以像素为单位进行计算,处理效率低、速度慢,以cpu计算方式实现的核线,几乎不可能做到“实时”。opengl可编程管线渲染则不相同,其渲染过程是一组状态机,只要将数据上传到显存指定位置,即可实现渲染、贴图。因此,实时核线仅需计算好绘制顶点(核线变换后的三角形顶点控制点)数据、绘制顺序数据、贴图uv值以及影像数据,交由显卡完成渲染,即可将核线影像显示出来。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1