一种高码速率遥感卫星原始数据实时快视方法与流程

文档序号:17896152发布日期:2019-06-13 16:00阅读:848来源:国知局
一种高码速率遥感卫星原始数据实时快视方法与流程

本发明涉及卫星遥感技术领域,尤其涉及一种高码速率遥感卫星原始数据实时快视方法。



背景技术:

目前,随着电子元器件和通信技术水平的提高,遥感卫星有效载荷分辨率越来越高,ccd像元数量越来越多,数传速率越来越高,如吉林一号光学a星空间分辨率可达亚米级,全色为0.72米,多光谱为2.88米,全色ccd像元数量为16384个,双通道编码后数传速率可达688mbps。而快视系统可在接收遥感数据的同时或接收完成之后即刻生成未经任何校正处理的可视图像,通过它用户可直观地了解有关遥感图像质量、云层覆盖和评估、目标图像快速判别等方面的基本情况,以及进行相机成像质量评价和星地间数传链路测试等。

但是,传统的快视方法目前主要存在以下几点缺陷:

(1)传统的快视方法主要采用cpu来完成像素数据由高阶向低阶的截取处理(如10位截取为8位),然后由gdi+或directdraw技术来显示影像。

在数据截取处理方面,遥感数据快视需要从大量的连续数据码流中提取出有效图像数据,并将提取出的数据转化为像素值,最后在相应的窗口上绘制显示,以吉林一号光学a星数据为例,星上将图像数据量化为10位,处理时需要对原始数据码流每10位分割,然后从每一个10位数据中截取出8位作为一个像素点显示。常规的提取图像数据方法是采用cpu遍历全部图像数据,利用移位和位与运算提取出图像数据,这种方法处理耗时较长且长时间占用cpu;

在影像显示方面,基于gdi+的影像快视系统效率很低,不能充分发挥现代计算机的硬件能力,目前已逐渐淘汰,而基于directdraw技术的影响快视系统,虽然显示效率高于基于gdi+技术显示的快视系统,但其所实现的硬件并行加速能力不可控,缺乏真正的线程级并行处理能力,且该接口已经被微软废弃。

(2)传统快视方法在硬件设备方面需要配置大内存(通常为128gb)服务器来完成数据处理和显示,造成内存资源的极大浪费,不能充分发挥现代计算机的硬件能力,尤其是在gpu在并行处理后需将并行处理的结果数据移动回或拷贝回计算机主内存,需要进行多次数据移动和复制,容易出现数据丢失,且效率低,未能充分利用gpu在图形图像绘制方面的能力。



技术实现要素:

本发明的目的是提供一种高码速率遥感卫星原始数据实时快视方法,能够提高gpu设备端的利用率,提高数据并行处理速度和实现快视性能,能够更加高效和可靠地满足目前高分辨率遥感卫星地面系统对高码速率遥感卫星数传数据实时快视的需求。

本发明采用的技术方案为:

包括以下步骤:

a、在gpu设备端建立cuda和opengl互操作的初始化环境;具体过程如下:

a1:初始化opengl,选择cuda设备并允许cuda设备与opengl互操作;

a2:创建opengl像素缓冲对象pbo并注册为cuda资源;

a3:创建opengl纹理texture;

a4:创建矩形绘制窗口顶点和纹理坐标;

b、cpu主机端将遥感数据传入gpu设备端显存;遥感数据来源于cpu主机端实时接收的原始遥感数据或回放的cpu主机端硬盘中存储的历史遥感数据;

c、采用cuda并行提取遥感数据中的有效图像数据,并通过cuda和opengl互操作完成遥感影像快视;具体过程如下:

c1:映射cuda资源并返回显存地址:将已注册的opengl像素缓冲对象pbo映射到cuda存储空间,获取已映射像素缓冲对象pbo对应的设备指针,然后将获取的设备指针作为参数传入cuda内核函数中;

c2:执行cuda内核函数完成数据并行提取;

c3:解除映射cuda资源;

c4:互操作影像快视显示;

d、判断遥感数据是否传输完毕,未传输完毕则返回步骤b,传输完毕则结束。

进一步地,所述步骤c2所述的数据并行提取过程如下:

c2-1.1:从原始数据中连续提取m位原始像素数据;m位像素数据中包括t个8位字节,且m等于8与遥感卫星对应成像载荷的每一位像素的量化位数q的最小公倍数,

c2-1.2:从m位字节中提取s个q位像素数据,m=s*q;

c2-1.3:将提取的每个q位像素数据分别截取为8位量化数据,获取s个8位量化数据。

进一步地,所述遥感卫星采用吉林一号a星全色载荷遥感卫星,所述步骤c2的数据并行提取过程如下:

c2-2.1:将原始数据每40位对齐;对齐的40位原始像素数据包括五个8位字节;

c2-2.2:从对齐的40位原始像素数据中提取四个10位像素;具体方法为:第一个10位像素取第一个字节+第二个字节的高两位;第二个10位像素取第二个字节的低六位+第三个字节的高四位;第三个10位像素取第三个字节的低四位+第四个字节的高六位;第四个10位像素取第四个字节的低两位+第五个字节;

c2-2.3:将提取的每一个10位像素通过右移两位的方式截取成为8位像素字节。

进一步地,所述步骤b8中cuda和opengl互操作方式显示快视影像采用的方法为:将像素缓冲对象pbo与纹理texture绑定,将像素缓冲对象pbo作为纹理数据源,以绘制纹理的方式来绘制像素缓冲对象pbo。

进一步地,所述像素缓冲对象pbo和纹理texture之间通过dma执行像素数据异步传送。

本发明具有以下有益效果:

(1)通过采用cuda和opengl互操作的方式来完成遥感影像快视,既能够充分发挥gpu在通用计算(gpgpu)方面的能力,也能充分利用gpu在图形图像渲染绘制方面的能力,还可以减少计算机主存和显存之间的数据拷贝次数,在gpu完成数据并行处理后不必再将像素数据传送回主存,而是基于互操作接口将显存中数据作为纹理数据源直接递送给opengl纹理绘制接口完成影像快视显示,整个过程不需要任何数据移动或复制;

(2)通过采用gpu完成遥感数据的并行提取,相比于传统的cpu数据提取方案,并行处理时间仅为传统cpu并行提取方案时间的1/4,大大提高数据提取效率,同时,由于采用了基于cuda和opengl互操作的遥感影像快视绘制方案,避免了再将并行处理后的结果数据传回计算机主存的移动或拷贝,可进一步提高遥感卫星原始数据并行处理和实时快视性能。

附图说明

图1为本发明的流程图;

图2为具体实施方式中吉林一号a星全色载荷遥感卫星的cuda并行提取示意图。

具体实施方式

为了更好地理解本发明,下面结合附图对本发明的技术方案做进一步说明。

本发明所公开的一种高码速率遥感卫星原始数据实时快视方法包括以下步骤:

a、在gpu设备端建立cuda和opengl互操作的初始化环境;具体过程如下:

a1:初始化opengl,选择cuda设备并允许cuda设备与opengl互操作;

a2:创建opengl像素缓冲对象pbo并注册为cuda资源;

a3:创建opengl纹理texture;

a4:创建矩形绘制窗口顶点和纹理坐标。

b、cpu主机端将遥感数据传入gpu设备端显存;遥感数据来源于cpu主机端实时接收的原始遥感数据或回放的cpu主机端硬盘中存储的历史遥感数据。

c、采用cuda并行提取遥感数据中的有效图像数据,并通过cuda和opengl互操作完成遥感影像快视。

cuda和opengl互操作的基本方式就是先将opengl资源映射到cuda地址空间,再使用cuda向该地址空间写入所需数据,最后利用opengl在屏幕上绘制出图形。可以注册到cuda的opengl资源有缓冲对象、纹理和渲染对象等。

具体过程如下:

c1:映射cuda资源并返回显存地址:将已注册的opengl像素缓冲对象pbo映射到cuda存储空间,获取已映射像素缓冲对象pbo对应的设备指针,然后将获取的设备指针作为参数传入cuda内核函数中;

在快视实现过程中,cuda内核函数不断地从原始码流数据(即遥感数据)中并行地提取出有效图像数据,并将提取的有效图像数据存入经过互操作注册和映射后的像素缓冲对象pbo中。存入像素缓冲对象pbo中后,传统的处理方式是将像素数据拷贝回计算机主存,然后再用opengl图形接口传回显存完成二维图像绘制,该方法虽然简单但效率不高。本发明采用将像素缓冲对象pbo与二维纹理绑定,将像素缓冲对象pbo作为二维纹理数据源,以绘制纹理的方式来绘制pbo,具体方法是将pbo与纹理texture绑定,打开二维纹理开关,以四边形的方式将纹理绘制出来。

使用像素缓冲对象pbo的主要优势在于opengl中可以在像素缓冲对象pbo和纹理对象之间通过dma(directmemoryaccess)执行像素数据异步传送,显著提高像素缓冲对象pbo数据上载到纹理对象的性能,而不需要cpu的参与。

c2:执行cuda内核函数完成数据并行提取;

由于不同型号卫星对应成像载荷中每一像素的量化位数q不一样,因此,并行提取不同类型遥感卫星的成像载荷像素数据,并确定原始码流数据中连续提取的像素数据的位数极为重要。本发明采用的并行提取方式具体如下:

c2-1.1:从原始数据中连续提取m位原始像素数据;m位像素数据中包括t个8位字节,且m等于8与遥感卫星对应成像载荷的每一位像素的量化位数q的最小公倍数;

c2-1.2:从m位字节中提取s个q位像素数据,m=s*q;

c2-1.3:将提取的每个q位像素数据分别截取为8位量化数据,获取s个8位量化数据。

下面以以吉林一号a星全色载荷遥感卫星为例进行并行提取数据过程的进一步描述,具体过程如下:

c2-2.1:将原始数据每40位对齐;对齐的40位原始像素数据包括五个8位字节;

c2-2.2:从对齐的40位原始像素数据中提取四个10位像素;具体方法为:第一个10位像素取第一个字节+第二个字节的高两位;第二个10位像素取第二个字节的低六位+第三个字节的高四位;第三个10位像素取第三个字节的低四位+第四个字节的高六位;第四个10位像素取第四个字节的低两位+第五个字节;

c2-2.3:将提取的每一个10位像素通过右移两位的方式截取成为8位像素字节。

本发明所采取的并行提取数据方式,能够适用于不同类型卫星的数据提取,在提高提取效率的同时,应用更为灵活和广泛;

c3:解除映射cuda资源;

c4:互操作影像快视显示;

d、判断遥感数据是否传输完毕,未传输完毕则返回步骤b,传输完毕则结束。

本发明能够加速遥感影像并行提取,提高快视效率,同时降低了cpu资源利用率,满足目前高分辨率遥感卫星地面系统对高码速率遥感卫星数传数据实时快视的需求,在遥感卫星地面应用系统中具有极大应用价值和发展前景。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换,而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。

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