海量图像数据的压缩、存储和显示方法

文档序号:2576642阅读:328来源:国知局
专利名称:海量图像数据的压缩、存储和显示方法
技术领域
本发明涉及多媒体图像压缩、存储和显示方法,尤其涉及海量图像数据的压缩、存储和显示方法。
背景技术
随着数字图像技术及多媒体信息技术的发展,海量图像数据的应用越来越普遍,如航空和航天遥感图像数据、普通和专题地图数字化数据、历史文献资料以及多媒体集成数据、医学图像数据等。海量图像的显示必然涉及到显示速度的问题,由于计算机内存的增加速度永远也赶不上数据量的增长速度,使得计算机将海量图像的全部数据读入内存是不现实的,即使计算机的内存大到能够将一幅海量图像的全部数据读入内存,但是内存肯定不可能大到可以同时打开多幅海量图像的地步。如何科学有效地利用计算机已有的内存以及硬盘与内存之间的数据交换成为解决海量图像显示速度的关键。因此,为了能够对海量图像进行快速显示,包括拖放漫游显示和缩放显示,必须在软件算法上进行设计和改进。与此同时,对海量图像数据的压缩和存储技术也需要进行有效设计和改进。因此,提供一种海量图像数据的快速压缩、存储和显示方法实为必要。

发明内容本发明的目的在于提供一种独创的海量图像数据动态分块处理技术,通过自定义格式的中间图像文件,实现海量图像在各种不同分辨率的终端设备上快速调入显示、无级缩放、漫游。
本发明的目的通过以下技术方案予以实现由于计算机对磁盘文件的读取方式是按照逐行的顺序进行读取的,在读取海量图像数据时,预先设定数据分块宽度和高度,当顺序读取完成一行数据中所设定数据分块宽度的数据后,存放到一个内存缓冲,再将下一个所设定数据分块宽度的数据存放到另一个内存缓冲,直到一行数据读取完成。当一行数据宽度不能被预先设定的数据分块宽度整除时,需要补充填充色数据。上一行数据读取完毕,换行读取下一行数据时,若读取的数据在所设定的数据分块高度所对应的行数据范围内,则将该数据存放到与上一行数据对应的内存缓冲,否则存放到重新开辟的内存缓冲。
在海量图像数据分块的同时,每当所设定分块大小的数据读取完毕进入该内存缓冲后,生成各种分辨率级别的分层数据,并保存为中间图像文件,然后释放该内存缓冲。如此反复,就可以按照预先设定的分块大小将整个海量图像数据分块完成。
事实上,这种数据分块技术也就是数据的并行处理。在存取文件时,将文件分成多个小块,分别存储为多个文件,这样写入和读取数据就可以在多个文件上同时进行,以提高数据的存取速度及数据的传输性能。尤其在存取一个大文件时,如果不分块,文件只能顺序存储在磁盘上,读取时要从头到尾逐一读取,速度较慢。如果分块,就能让各块同时读写,速度大大提高。
数据分块技术的关键在于分块大小的选择,根据不同的应用要求采用不同的分块尺寸。分块越小,一个文件被分割的块数就越多,并行处理能力就越强,数据存取速度就越高,但与此同时就会增加块存取的随机性和块寻址时间。在实际应用中,应找到一个平衡点,选择合适的分块大小,解决文件存取的随机性与提高并行处理能力之间的矛盾。如果块的大小太小时,一次显示必涉及到更多的块,这就需要多次的定位和数据的读取,因此,块的大小不能太小。当然由于计算机内存的限制,块也不能太大,要确保能够被一次性地读入。
在对海量图像进行显示时,根据显示区域所对应的数据分块的编号,检索到存储于磁盘中相应的中间图像文件,读取到内存缓冲中,然后拷贝到显示缓冲区,将该显示区域范围内的图像显示出来。
如果每次对海量图像的漫游显示操作均需从硬盘读取中间图像文件,必然会影响图像漫游的速度。因此,在显示缓存周围开辟一块适当大小的内存缓冲,从中间图像文件读取的图像数据存储在该内存缓冲中,在进行图像漫游时,将该内存缓冲中显示的相应部分拷贝到显示缓冲区。与此同时,要保证显示缓存区在该内存缓冲的中央,会有部分内存缓冲被释放和新的内存缓冲被开辟。检索到对应的中间图像文件后,读取到此新开辟的内存缓冲。这样,在图像漫游过程中,不必每次都重新从中间图像文件获取显示部分的图像,只需计算应拷贝的缓冲区的位置,再做一次图像拷贝即可,从而提高图像漫游的速度。
海量图像的分层结构由原始的海量图像数据开始,建立起一系列图像,这一系列图像可以反映各种尺度下海量图像的详尽程度和概貌,形成各种分辨率的图像。为了满足海量图像数据在各种不同分辨率的终端设备上显示,需要获取各数据分块的各种不同分辨率信息。海量图像数据按照分块大小读入内存缓冲后,进行前期预处理,包括直流电平位移和分量变换,对处理的结果进行离散小波变换,得到小波系数,然后对小波系数进行量化,将量化后的小波系数划分成小的数据单元即码块,对每个码块进行独立的嵌入式编码。将得到的所有码块的嵌入式位流,按照率失真最优原则分层组织,形成不同质量的层。对每一层,按照一定的码流格式打包,输出压缩码流,生成自定义格式的中间图像文件。
由于图像的尺寸代表了它的数据量,尺寸越小、分辨率越低的图像,其数据量也越小,而数据量的大小又和读取图像的时间息息相关。在实际应用中,显示区域的大小是固定的,各种终端设备对图像数据的查询请求在绝大多数情况下都不会对应于原始分辨率,而是低于原始分辨率的。在这种情况下,如果在图像数据库中没有建立各种分辨率的图像数据,那么在处理查询请求时,就不得不每次都要访问原始分辨率的图像,也就是数据量最大的那幅图像,然后取出查询请求中与显示区域对应的那部分图像数据后,再通过GDI+等图像处理技术将其缩小到显示区域的大小,这样的处理流程显然是很低效的。如果在图像数据库中建立了海量图像数据的金字塔结构,那么就相当于在数据库中为终端应用准备好了各种不同分辨率的海量图像数据,这样一来,终端设备就可以在这些不同分辨率的数据中按需所取了。因此,当读取自定义格式的中间图像文件时,根据所需分辨率尺寸信息以及压缩码流中存储的参数,对码流进行解包和熵解码,然后进行反向量化和离散小波反变换,对反变换的结果进行后期处理合成得到各种分辨率尺寸的图像数据。
与现有技术相比,本发明具有以下优点本发明通过将海量图像数据分块及压缩成中间图像文件,大大提高了图像数据的存储、读写速度以及图像显示速度。

图1是本发明的技术路线示意图;图2是本发明的分块示意图;图3是本发明的分块、显示缓冲与内存缓冲示意图4是本发明的不同分辨率图像的金字塔结构示意图。
具体实施方式
图1所示为本发明的技术路线实施例之一。由于海量图像的横向跨度造成了从硬盘中读取数据时,需要进行多次的定位和读取。在对海量图像进行显示时,反复与硬盘打交道是在所难免的。所以,海量图像必须进行分块处理,其目的是将大数据量的海量图像分成数据量相对较小的多块数据,并将这些数据块进行编号,建立索引,在查询数据时,只要选择相应的数据块,就可以快速查询到所需数据,避免了对海量图像的逐行读取,节省了大量时间。在海量图像数据分块的同时,每当所设定分块大小的数据读取完毕进入该内存缓冲后,经压缩形成自定义的VMD中间图像文件。VMD中间图像文件的具体内容包含两方面图像属性信息描述部分(如图像的大小、色彩等)和图像像素灰度值部分(具体的图像数据部分)。在对海量图像进行显示时,根据显示区域所对应的数据分块的编号,检索到存储于磁盘中的VMD中间图像文件,然后解压缩到内存缓冲中,最后拷贝到显示缓冲区,将该显示区域范围内的图像显示出来。为了提高图像漫游的速度,在显示缓冲周围开辟一块适当大小的内存缓冲,从VMD中间图像文件读取的图像数据存储在该内存缓冲中,并保证显示缓存区在该内存缓冲的中央。
图2所示为本发明的分块示意图。在读取海量图像数据时,预先设定数据分块宽度和高度,当逐行顺序读取完成一行数据中所设定数据分块宽度的数据后,存放到一个内存缓冲,再将下一个所设定数据分块宽度的数据存放到另一个内存缓冲,直到一行数据读取完成。如此反复,就可以按照预定的比例将图像分块了。为了提取数据的方便,将整幅图像划分为较小的图像块,每个分块在整个大图像中占有一定的位置,将每个图像块的大小及定位信息存储起来,建立一个图像块位置结构文件,作为整个图像块组织的空间索引文件,而在用户提出相应请求时,可以从空间索引文件中查找出相应的提取图像区域。所有的图像分块可以拼接成一幅完整的大图像。
图3所示为本发明的分块、显示缓冲与内存缓冲示意图。通过分块技术减少了图像显示时的定位和读取的次数,在一定程度上克服了图像漫游过程中的速度过慢问题。为了解决每次的漫游操作均需从硬盘读取,进一步提高图像漫游的速度,利用计算机的缓存技术,在VMD中间图像文件和显示缓存中间,再开辟一块适当大小的内存缓冲,在该缓冲区中存储从VMD中间图像文件读取的图像数据,然后再将此缓存中显示的相应部分拷贝到显示缓冲区。当此缓冲区的大小大于滚动视图的可见窗体尺寸,则在图像漫游过程中,系统就不必每次都重新从VMD中间图像文件获取显示部分的图像,只需计算应拷贝的缓冲区的位置,再做一次图像拷贝即可。内存缓冲的大小直接影响图像漫游的效率,若太小则必然造成频繁地读取VMD中间图像文件,太大又受到计算机内存的限制,而且大数据量的读入也会造成速度的延迟,因此内存缓冲选取的是显示区域周围较近的分块。当手按住鼠标左键拖动不放开时,由于漫游的范围最大也就是显示区域的周边区域,因此选择适当的分块大小以及显示区域周围最近的周边区域作为内存缓冲,恰好能够实现显示区域周边区域的图像均在内存缓冲当中,从而保证了漫游操作时,只要手按住鼠标左键不放开,所有漫游操作都不需与VMD中间图像文件打交道。
海量图像的分层结构由原始的海量图像数据开始,建立起一系列图像,这一系列图像可以反映各种尺度下海量图像的详尽程度和概貌,形成各种分辨率的图像。图4所示为本发明的不同分辨率图像的金字塔结构示意图。为了实现图像数据的缩放显示,快速获得多尺度的图像信息,需要对各种分辨率的图像信息进行有效的组织管理。图像数据的分层组织和分块组织是解决该问题的两个关键技术。图像数据的分层组织是用金字塔结构来实现的。简单地讲,图像的金字塔结构就是由每个分块图像数据开始,建立起一系列图像,而各幅图像反映不同分辨率下该分块图像的详尽程度。通常原始尺寸的分块图像数据反映最详细、最真实的海量图像,再由它逐步生成其他低分辨率下的图像,以反映原始图像在不同分辨率下的概貌。这样,在浏览海量图像数据时,就可以根据当前用户所需的分辨率情况,提取相应层的分块数据进行拼接,从而实现图像数据的缩放显示。
以上所述仅为本发明的较佳实施实例,本发明的保护范围并不局限于此,本领域中的技术人员任何基于本发明技术方案上非实质性变更均包括在本发明保护范围之内。
权利要求
1.一种海量图像数据的压缩、存储和显示方法,其特征在于,其将海量图像数据分块,将分块数据读取并存放到内存缓冲,经压缩生成各种分辨率级别的分层数据,并将其保存为中间图像文件,然后释放该内存缓冲;在对海量图像进行显示时,根据分辨率要求将存储于磁盘中相应的中间图像文件读取并解压到内存缓冲中,然后拷贝到显示缓冲区,将该显示区域范围内的图像显示出来。
2.如权利要求1所述的海量图像数据的压缩、存储和显示方法,其特征在于,在读取海量图像数据时,预先设定数据分块宽度和高度,当顺序读取完成一行数据中所设定数据分块宽度的数据后,存放到一个内存缓冲,再将下一个所设定数据分块宽度的数据存放到另一个内存缓冲,直到一行数据读取完成,当一行数据宽度不能被预先设定的数据分块宽度整除时,需要补充填充色数据。
3.如权利要求2所述的海量图像数据的压缩、存储和显示方法,其特征在于,上一行数据读取完毕,换行读取下一行数据时,若读取的数据在所设定的数据分块高度所对应的行数据范围内,则将该数据存放到与上一行数据对应的内存缓冲,否则存放到重新开辟的内存缓冲。
4.如权利要求1或2所述的海量图像数据的压缩、存储和显示方法,其特征在于,将内存缓冲设在显示缓存周围,从中间图像文件读取的图像数据存储在该内存缓冲中,在进行图像漫游时,将该内存缓冲中显示的相应部分拷贝到显示缓冲区。
5.如权利要求1或2所述的海量图像数据的压缩、存储和显示方法,其特征在于,海量图像的分层结构由原始的海量图像数据开始,建立起一系列图像,这一系列图像可以反映各种尺度下海量图像的详尽程度和概貌,形成各种分辨率的图像。
全文摘要
本发明涉及一种海量图像数据的压缩、存储和显示方法,其将海量图像数据分块,将分块数据读取并存放到内存缓冲,经压缩形成生成各种分辨率级别的分层数据,并保存为中间图像文件,然后释放该内存缓冲;在对海量图像进行显示时,将存储于磁盘中的中间图像文件读取到内存缓冲中,然后拷贝到显示缓冲区,将该显示区域范围内的图像显示出来。本发明能够对海量图像进行快速压缩、存储和显示,包括拖放漫游显示和缩放显示,大大提高了存储读写速度和海量图像处理能力。
文档编号G09G5/36GK101059949SQ20071002738
公开日2007年10月24日 申请日期2007年4月3日 优先权日2007年4月3日
发明者徐蜀中, 胡建华, 温南城 申请人:广东威创日新电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1