大视图分块缓冲显示方法技术

技术编号:2879911 阅读:178 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种大视图分块缓冲显示方法,它将大视图分块,在内存中用一个规定大小的缓冲区矩阵来映射视图中的各个块,并利用后台线程,在显示和拖动的过程中预测下一步要显示的视图块并将其提交到合适的缓冲区块中,由于前台显示和后台的预测提交两个线程是同时进行的,合理的分配了任务在CPU中的时间片,提高了显示和拖动时刷新的速度,也减少了对系统内存和CPU时间的浪费。在网络规划方案的设计中,本方法得到了广泛的应用,如对于9714×11854象素的省级地图其显示装载速度比较快,拖动的时候也没有出现屏幕闪烁和抖动,过渡很平滑。(*该技术在2021年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及计算机图像处理技术,特别是电子地图类大视图分块预测缓冲显示方法。在城市规划、通讯网络规划及地貌遥感测绘中,常常需要显示当前规划区的数字地图或相关的背景图像作为分析参考。在进行比较大或超大规划区的规划和优化分析时,要显示的图像会很大,图像的大小可以达到100M字节甚至更大。如果将图像全部读入内存,自然可以很方便的显示或拖动,但是会造成这么大的系统资源浪费,而使进行规划所必须的大量的计算工作进行得很慢,甚至无法进行。特别是在网络规划和优化时,经常要对多个工程或同一个工程的多个设计进行对比分析,而同时打开多个视图,这样的话,就对系统的硬件资源提出了更为苛刻的要求,这样做是不现实的,也是根本不可能的。目前,尚未见到任何公开的技术能够解决此问题,经过专利检索,也没有发现针对该问题的专利文献。本专利技术的目的在于提供一种在网络规划和优化系统中,采用计算机对大视图分块和利用缓冲区矩阵预测显示方法,以最大限度的减少对系统宝贵资源的占用,尽可能地提高计算机处理和显示的效率。本专利技术提出的,主要包括以下步骤a、将需要显示的图像Pic从左至右、从上至下按行列分成大小相等的视图块,按顺序对所述的视图块编号,视图块的高度(BlockHeight)和宽度(BlockWidth)大于显示器显示区域的高度和宽度;b、在计算机内存中创建一个3×3的视图缓冲区矩阵,其高度(BufferHeight)和宽度(BufferWidht)和所述视图块的高度(BlockHeight)和宽度(BlockWidth)一致,并对其进行编号;c、创建用于显示和刷新视图的主线程;创建与主线程并行运行的从线程,该线程根据当前缓冲区矩阵和视图分块的信息进行初始化;d、当显示区域的全部或一部分还在缓冲区矩阵的可见显示缓冲中,则显示之;若显示区域的四个边界的任一个与3×3个缓冲区中的任一条边界发生越界,从线程在CPU空闲的时间片上进行缓冲区的预测,将图像Pic中将要显示的试图块填充到预测缓冲中(即提交过程),并判断是否需要进行缓冲区切换,调整缓冲区矩阵的位置关系;e、在显示区域移动后的某个状态下,根据前面已经预测的各个缓冲区对应的视图块,计算显示区域和与之相交的各个缓冲区块的相交部分的图像,将其取出拼合成为显示区域中的应显示的图像,然后显示在屏幕上。本专利技术提出了大视图分块缓冲显示的一种新方法,它不将整个大视图全部装入内存,而是将视图进行分块,在内存中用一个规定大小的缓冲区列表(或矩阵)来映射视图中的各个块。并利用后台线程,在显示和拖动的过程中预测下一步要显示的视图块并将其提交到合适的缓冲区块中。这样,在显示的过程中,只要对指定的显示缓冲进行显示,而显示缓冲在视图块中的映射和显示缓冲之间的切换都是在后台线程中完成的。由于前台显示和后台的预测提交两个线程是同时进行的,合理的分配了任务在CPU中的时间片,提高了显示和拖动时刷新的速度,也减少了对系统内存和CPU时间的浪费。在网络规划方案设计中,采用了本方法。如对于9714×11854象素的省级地图其显示装载速度比较快,拖动的时候也没有出现屏幕闪烁和抖动,过渡很平滑。可见本方法已基本突破了显示和刷新受到视图大小严重限制的瓶颈。本专利技术的附图说明如下图1为本专利技术的大视图显示框架图;图2为经过分块和编号处理后的Pic图像示意图3为分块后的缓冲区矩阵示意图;图4为初始化时视块分块、缓冲区和屏幕显示关系图;图5为缓冲区矩阵在视图分块中的位置示意图;图6为移动后的缓冲区矩阵在视图分块中的位置示意图;图7为视图显示部分的类关系图;图8为显示窗口在视图缓冲区矩阵中的位置关系图;图9为视图缓冲区矩阵和显示窗口在大视图中的位置关系图;图10为显示窗口和缓冲区矩阵发生位置切换时的关系图;图11示例-初始位置;图12示例-左移、位置切换、缓冲区预测;图13示例-左移、位置切换;图14示例-左移、位置切换、缓冲区预测。下面以本方法在网络规划和优化软件中的应用实施例进一步说明。视图背景大部分为点阵,如果在程序中一次性将点阵背景全部装入,则点阵数据的大小决定了程序占用内存空间的大小,如果点阵背景为10,000×10,000个点,每个点用1个字节表示,则至少需要100M的内存空间来存放这些点阵数据,显然这是对内存空间的巨大浪费。在实际中计算机系统所处理的视图背景的大小和工程设计的具体地理区域的大小有关。如一个地区工程的地图大小可为1074×1046,不算太大。而一个省级工程的电子地图则为9714×11854,该地图很大,全部读入内存处理是不现实的。因此本实施例中采用分块缓冲预测显示的方法来实现对大视图的显示。如图1所示,本方法将大视图的背景数据分为按行、列排序的众多小的试图块,每个试图块大小相等(边界区域除外),按顺序对所述的视图块编号。将视图数据分割为众多小试图块主要是便于定位、装载。视图块的高度(BlockHeight)和宽度(BlockWidth)大于显示器显示区域的高度和宽度,实施例中视图块的高度为显示器显示区域的高度的1~2倍,视图块的宽度为显示器显示区域的宽度的1~2倍。假设显示器显示区域的高度和宽度为768×1024,则768×2>BlockHeight>768,1024×2>BlockWidth>1024,分块后的图像如图2所示。在内存中创建一个3×3的视图缓冲区矩阵。其高度(BufferHeight)和宽度(BufferWidht)和所述视图块的高度(BlockHeight)和宽度(BlockWidth)一致。同样对其进行编号。分块后的缓冲区矩阵如图3所示。视图缓冲区矩阵分为可见显示缓冲和预测待显示缓冲,前者用于缓冲当前的可见区域以及其附近将要显示的区域,后者用于存储根据当前可见区域位置所预测的可能要显示的区域。在用户浏览视图的过程中,程序一方面根据当前可见区域位置判断当前需要使用的显示缓冲,从中取得数据显示视图,另一方面则根据当前可见区域位置预测将要显示区域,并通过后台线程将点阵数据装载到预测显示缓冲中。通过这种在需要时才将点阵数据装入内存的方式,可以大大减少显示背景点阵对内存的需求,对内存的需求取决于显示缓冲大小。实施过程中,需要主、从两个线程并行运行。主线程用来显示和刷新视图,主线程可以不创建而由主程序线程代替。而从线程是在当显示区域中的图像不在当前有效的缓冲区块中时,进行缓冲区预测和切换。从线程在CPU空闲的时间片上进行缓冲区的预测计算,并将图像Pic中对应的块填充到无效缓冲区中去(即提交过程)。根据视图分块的信息和缓冲区的信息,将视图分块中左上角的3×3个块来填充缓冲区对象。显示区域此时落在Buf1中,故显示区域和Buf1中相交部分的图像取出,并显示在屏幕上。祥见图4所示,其左边为缓冲区情况,其中小黑块为显示器显示区域,右边为视图分块情况。缓冲区预测和提交是本方法重要的组成部分。根据屏幕显示区域在缓冲区中移动时跨越缓冲区边界时的状态和位置关系来预测和判断缓冲区矩阵中各个块的有效状态和对应的图像。缓冲区矩阵预测、切换原则和显示原则如下显示原则在缓冲区预测和提交的过程中,只要显示区域的全部或一部分还在缓冲区矩阵的Buf1块中,就可以显示。如果显示区域全部落入除Buf1块的其他块中时,就必须先进行缓冲区预本文档来自技高网...

【技术保护点】
一种大视图分块缓冲显示方法,其特征在于包括以下步骤: a、将需要显示的图像Pic从左至右、从上至下按行列分成大小相等的视图块,按顺序对所述的视图块编号,视图块的高度和宽度大于显示器显示区域的高度和宽度; b、在计算机内存中创建一个3×3的视图缓冲区矩阵,其高度和宽度和所述视图块的高度和宽度一致,并对其进行编号; c、创建用于显示和刷新视图的主线程;创建与主线程并行运行的从线程,该线程根据当前缓冲区矩阵和视图分块的信息进行初始化; d、当显示区域的全部或一部分还在缓冲区矩阵的可见显示缓冲中,则显示之; 若显示区域的四个边界的任一个与3×3个缓冲区中的任一条边界发生越界,从线程在CPU空闲的时间片上进行缓冲区的预测,将图像中将要显示的试图块填充到预测缓冲中,并判断是否需要进行缓冲区切换,调整缓冲区矩阵的位置; e、在显示区域移动后的某个状态下,根据前面已经预测的各个缓冲区对应的视图块,计算显示区域和与之相交的各个缓冲区块的相交部分的图像,将其取出拼合成为显示区域中的应显示的图像,然后显示在屏幕上。

【技术特征摘要】

【专利技术属性】
技术研发人员:李伽黄晓军
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

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

1