基于BLOB的图像查询系统应用研究
2011-10-09李晋光
王 辉,李晋光
(1.西安工业大学 计算机科学与工程学院,陕西 西安 710032;2.陕西汽车集团有限责任公司 陕西 西安 710200)
为了能够更好地录入、查询、发布更新和管理德龙、奥龙、德御各种不同系列车型及其所包含配件的详细数据信息和图像信息,满足当前和未来汽车配件信息持续增加的需求,设计开发和实现基于BLOB的图像查询系统。图像数据库技术一直致力于解决海量数字图像的有效存储和管理问题,是数据库技术的继承和发展[1]。本文就是以关系数据库理论为基础,采用扩充的关系数据库模式并引入图像数据库的概念,使用多个小的图像数据表和图像数据索引表,除了传统的关系数据库的查询功能外还具有对图像的操作、查询和相似检索功能,解决了图像数据的录入检索以及图像热点操作问题,既保证系统的安全性和数据的完整性,也满足了系统的速度和效率,是进行图像数据在数据库系统中处理与使用的有效方法。
基于BLOB的图像查询系统以Oracle数据库管理系统为基础并结合PowerBuilder开发工具,实现对德龙、奥龙、德御等不同车型所包含配件的数据管理及图像处理,系统特点如下:
1)安全性:系统设置不同的权限,不同级别的用户权限不同,防止未经允许的用户访问系统,保证系统具有较高的安全性[2];
2)稳定性:为了确保系统能长期稳定运行,系统能随时进行数据备份,保证数据的完整,确保管理系统能够安全稳定运行;
3)可扩展性:系统具有语言设置功能,开发初期制作出不同系列车型的汽车零配件中英文对照系统、并预留多种语言接口,使用户能够方便快捷地查询各种零配件的不同语言的名称,具有良好的扩展性。
1 系统功能
根据基本业务流程,基于BLOB的图像查询系统将系统数据按照系列车型、零部件的关系逐步细化,定义出不同车型下的零件和车型之间的从属关系,录入不同系列车型的概要信息以及所包含零部件的图号、图像、零件号、价格等明细数据,总结成对应零配件图像信息和热点位置,供用户查询。系统功能模块如图1所示。
基于BLOB的图像查询系统具有树状查询功能,用户可根据系列车型、零件的树状结构关系,分类查询出相关零件类型,按零部件名称、图号、名称拼音码等数据自由组合查询出相关零件的详细数据信息和图像信息。为了能够直观地看出零件信息,系统具有图像查询及热点操作功能,通过点击零部件图中的热点位置,可直观、快速地显示零件详细信息以及应用车型信息,使查询工作更为高效,因此如何录入、查询图像以及图像的热点处理是本文论述的一个关键问题。
图1 系统功能模块图Fig.1 Diagram of system function module
2 设计与研究
在利用Oracle进行数据库系统的开发过程中,对于海量图像数据的管理可采用图像文件库结构,即表+实体的方法。图像数据以文件形式存放于指定的计算机目录下,在数据库表中建立文字信息的主关键字和图像数据文件的存储路径。在此基础上,在图像数据输入模块中,除输入存放图像文件之外,还应填数据库表对应项,建立文字信息和图像信息之间的关联。在信息查询模块中,通过数据表查到需要的文字信息后,根据查询到的主关键字作为相应的图像文件显示。
在这种管理模式下,因为大量图像文件存放在一个子目录下,容易造成磁盘空间的浪费,并带来大量的磁盘碎片,导致系统存取效率降低、性能下降,直接影响图像的存取和显示速度。另外,该方式的最大缺陷是难以保证整个数据库管理系统中数据的完整和安全。普通的文件系统在安全方面没有任何措施给予保障,任何一个进入计算机系统的人都可以对文件进行移位、删除、修改等操作,系统在运行中就会出现因找不到相应的图像文件而出现错误或无图像问题[3]。
因此由于图像文件库结构中图像数据与数据库系统的脱离这一本质缺点,导致图像文件库的安全性与完整性方面无法保证,给数据的维护增加了难度,同时也给数据的安全带来隐患,要真正做到各类图像数据在数据库中安全管理,只有用数据库系统来处理图像数据才能从根本上克服以上问题。随着数据库管理系统功能的不断增强、性能的不断完善,将各类数据完全由数据库管理系统统一存储和管理,已成为技术发展的趋势。只有这样,数据库管理系统的强大功能才能得到充分发挥,数据的安全性才能得到充分的保障,使得诸如数据库复制、数据的转移等许多工作,变得非常简单容易。基于BLOB的图像查询系统中零配件图像的处理就采用了图像数据库的设计实现方法。
2.1 图像数据库的设计
图像数据库技术一直致力于解决海量数字图像的有效存储和管理问题,是数据库技术的继承和发展,实质上属于扩充的关系数据库,它采用的是一种支持大型非结构化数据存储与管理的方法——BLOB技术。这种方法旨在通过扩充的数据库管理系统提供的统一的数据管理与存取机制,不仅能处理数值、文字等简单的数据对象,而且能将其他复杂的数据对象作为一个数据库操作的原子单元进行存储、存取和恢复。
对BLOB数据的存取可以通过扩展的SQL语言来实现,每个BLOB数据字段最大容量可达2 GB。实际上在一些数据库系统中并不将其称为BLOB字段,对应如Access中的OLE对象和备注类型、VFP中的MEMO类型、Oracle7中的 Long Raw 类型、Sybase中的 LONG VARCHAR、SQL Server中 的IMAGE等,但从广义上讲,它们都属于BLOB类型[4]。因此,本文讨论的BLOB技术完全可以应用于其他数据库系统中。在Oracle数据库中有以下几种LOB型数据:
乳腺脂肪坏死患者一般有乳腺外伤史,外伤导致乳房局部脂肪组织坏死、纤维组织增生、钙化而形成小肿块,有时不易与乳腺癌鉴别。
CLOB:和Oracle7的Long型相似,CLOB可以存储单字节型数据。
NCLOB:NCLOB存储定宽的多字节国家字符集数据。
BLOB:和Oracle7中的Long Raw类型相似。可以存储无结构的二进制数据。Oracle8没有对这种数据进行解释,只是按照原来的形式存储和检索它。
BFILE:BFILE允许对Oracle数据库以外存储的大型二进制文件进行只读形式的访问。和其他3种LOB类型数据不同的是,BFILE类型数据存储在一个单独的文件中,该文件不由Oracle来维护。
在Oracle数据库中,虽然BLOB数据类型支持图像数据的存取,但通常的非格式化的图像数据是没有办法直接存储到数据库的BLOB字段中的。在实际应用中,只有对图像文件以32 k字节为单位切割成多段分别转化成BLOB数据类型后,才可以进行存储。此外,图像数据放入主数据表中,将会造成数据库主数据表查找效率显著降低和响应时间的增长,如何解决这个问题是整个系统的关键。因此在基于BLOB的图像查询系统的设计中必须采用一系列相关技术支持,设计出合理的数据库结构,解决上述可能产生的问题并完成图像数据的处理。
在基于BLOB的图像查询系统的数据库结构设计中,对数据库中原有的数据表不作任何改动,增加图像数据库表和图像数据索引表。其中图像数据库表需要主关键字和图像数据两个主要字段,“图像数据”字段为大二进制数据类型(BLOB),主关键字类型及取值与原主数据表一致。从逻辑上分析,图像数据库表的主关键字与主数据库表中的关键字已经建立了联系,可以通过主数据库表直接找到所需的图像数据。图像数据库表与主数据库表的分离解决了主数据库表查找时间问题。但是对于基于BLOB的图像查询系统,其图像数据库表是巨大的。因此在涉及图像的查找时仍会出现效率降低的问题。解决这一问题的方法是将图像数据库表按类型分解成多个规模较小的表,每个小表的结构与图像数据库表结构相同。在主数据库表与这个多个图像数据库表之间使用图像数据索引表建立联结。其图像数据库结构如图2所示。
图2 图像数据库系统结构图Fig.2 Image database structure
2.2 图像数据库的实现
由于图像数据库的数据管理方式的设计实现与普通数据库的设计实现有一定的区别,所以本文以基于关系数据库的图像查询系统的PowerBuilder应用开发为例给出它的实现过程。
步骤一:建立具有BLOB字段的Oracle数据库,按照如下步骤来完成各个操作:
1)创建表空间:
2)创建表:
在数据库中定义与BLOB数据类型相等的数据类型。选择Oracle为数据源,Oracle支持BLOB数据类型,使PB处理图像的能力得到更好的发挥,这样就为管理图像数据、大文件提供了支持。
这个数据库表parts第一列存储主键,第二列存储名称,另外三列存储LOB型数据。定义parts图片数据表如表1所示:
表1 配件图像数据表Tab.1 Parts image table
3)创建新的用户:如 user1/pass1,赋予 connect,resource权限。
4)创建逻辑目录:
BFILE类型有着特殊性,跟CLOB和BLOB不同,实际的数据文件存储在操作系统的外面。BFILE有两个特点:1.没有事务性控制2.bfile是只读的,不能用dbms_lob或Oracl8 oci进行修改。 为了访问外部文件,服务器需要知道文件在操作系统中的位置。因此建立一个目录:
create DIRECTORY utils AS'/home/utils';
utils表示目录逻辑名,'/home/utils'是实际目录。
步骤二:连接Oracle数据库,在ODBC中配置数据源。
步骤三:读取JPG文件并插入到Oracle的picture table中。
1)从控件栏中读取JMP的文件名,分别定义所需变量包括字符型 (存储图片编号),整形 (存储用于循环等临时数值),长整形(存储文件长度等),BLOB型(存储图像数据)。
2)利用文件操作函数获取文件长度,文件句柄,测试文件长度如果大于32 kB,则以32 kB为单位读取,然后进行拼接操作,并存储在BLOB型变量中。
3)将已存在的BLOB变量中的BLOB数据写入数据库中,可以使用在PowerScript中的UPDATEBLOB语句[5]。但是打算写入BLOB数据的这一条记录必须已经输入数据,也就是说必须先输入图片编号关键字然后才可以使用UPDATE的方式写入BLOB数据。
步骤四:显示JMP文件需从数据库中读出BLOB数据写入本地的文件中,方法与读文件相似,读出之后,可利用PowerBuilder提供的图片控件进行显示。
2.3 图像热点查询的研究与实现
当图像在数据库中的录入、查询解决后,就要实现配件图像的热点处理问题。为了能够直观地查看零配件信息,可以通过点击部件图中的热点位置,便可直观、快速地显示零件详细信息,以及应用车型信息,使查询工作更为高效[6]。作者在热点处理中用到了 getrow()、scrolltorow()、SelectRow()等函数,热点处理的程序如下所示:
3 结束语
使用关系数据库管理系统处理图像数据,是数据库应用系统在图像领域的新发展。本文通过基于BLOB的图像查询系统的研究,得到了图像数据在数据库系统中处理与使用的有效方法。图像文件库系统虽然可以以高效的方式处理图像数据,但在其自身的系统安全性和数据完整性上存在难以克服的缺陷,在使用中会出现图像文件被破坏而引起系统出错的现象。因此作者在基于BLOB的配件图像查询系统中,采用了图像数据库设计实现配件查询系统中图像的录入和热点处理,图像数据库系统使用多个小的图像数据表和图像数据索引表,即保证系统的安全性和数据的完整性,也满足了系统要求的速度和效率,是进行图像数据在数据库系统中处理与使用的有效方法,而且其设计思想和实现步骤简单,可以方便的应用在各种实际的系统中,具有一定的应用价值。
但是,也应当清醒的认识到对于大数据量的图像数据的存储,还有许多问题要进行研究。一个问题就是大对象数据的特殊操作实现,因为LOB型数据是二进制的大对象,它不能简单的按照一般数据的操作符来进行计算。比如要查出一个数据表中含有大对象的图像,如果图像很大,又要进行浏览,那怎么办呢?如果直接进行读取那速度是难以忍受的。只有采取分块或添加索引影像的方法,由此会带来许多需要研究的问题。
另外一个重要的问题是对海量图像数据库的性能优化,原先的优化方法如索引优化等仍然适用,但是现在遇到了新的问题:海量图像数据是庞大的,那么对海量图像数据的操作(尤其是检索)开销巨大,那么如何降低这种开销,缩短操作时间,又是一个重要课题。
[1]DONG Wei-jun,ZHOU Ming-quan.Image retrieval technique based on content[J].Computer Engineering,2005,33(10):162-165.
[2]HE Ling, WU Ling-da, CAI Yi-chao.Indexing techniques in content-based image retrieval[J].Application Research of Computers,2005(11):209-212.
[3]Peng W,SManjunath B.An adaptive index structure for similarity search in large image databases[C].Proceedings of SPIE,the International Society for Optical Engineering,2001(4519):32-41.
[4]杨勇.数据库系统中BLOB对象的管理[J].微电子学与计算机,2006,23(7):147-149.
YANG Yong.The management of the database system inside BLOB object[J].Microelectronics Computer,2006,23 (7):147-149.
[5]方旺盛,邵利平,郑剑.PB BLOB数据类型在文件操作中的特殊应用[J].计算机应用与软件,2006,23(1):43-44.
FANG Wang-sheng, SHAO Li-ping, ZHENG Jian.Specialized file manipulation based on the type of PB BLOB[J].Computer Applications and Software,2006, 23(1):43-44.
[6]薛淑磊,王振辉,王振铎.PB数据库图像存储技术研究[J].电脑知识与技术,2008,1(7):1320-1323.
XUE Shu-lei, WANG Zhen-hui, WANG Zhen-duo.Study of image saving technology based on PB[J].Computer Knowledge and Technology,2008,1(7):1320-1323.