基于纹理特征的图像检索

摘要

随着计算机技术和网络技术的发展,以及多媒体的推广应用,产生了大量的各式各样的图像。如何有效地对这些图像进行分析、存储和检索是一个急待解决的问题。基于内容的图像检索技术能有效地解决这一问题,成为研究的重点。图像检索的研究目的就是实现自动化、智能化的图像查询和管理方式,使查询者可以实现方便、快速、准确地查找。纹理是图像的一个主要视觉特征,也是基于内容图像检索系统中的一个重要手段。本文对基于纹理特征的图像检索技术进行了研究,并通过实验验证了检索算法的有效性。

图像的特征提取是图像检索的关键技术之一。本文将灰度共生矩阵用于图像的纹理特征提取。

设计并实现了一个基于纹理特征的图像检索系统。给出了系统的流程图,并介绍了系统的查询模块、特征提取模块、匹配模块和图像显示模块及其各个模块的功能。系统采用欧氏距离法作为图像的相似性度量,采用灰度共生矩阵算法提取图像的纹理特征。最后通过实验对给定的图像进行检索。

关键词:图像检索,纹理特征,共生矩阵

目  录

1 前言

1.1 图像检索的发展现状

1.2 图像检索技术分类

1.3 研究内容与章节安排

2 图像检索的基本原理

2.1 检索系统通用框架

2.2 检索系统关键技术

2.2.1特征提取

2.2.2高维索引

2.3 检索查询方式

2.3.1外部图例查询

2.3.2内部图例查询

2.3.3草图查询

2.4 图像的相似性度量

2.4.1概述

2.4.2相似性测度

2.4.3非几何相似性测度

2.4.4小结

2.5 本章小结

3 基于纹理特征的图像检索算法研究

3.1 纹理特征概述

3.2 基于小波变换的纹理特征提取

3.2.1图像的小波变换

3.2.2小波基的选择

3.2.3小波基的正则性阶数

3.2.4小波变换的级数

3.3 基于灰度共生矩阵的纹理特征

3.3.1灰度共生矩阵

3.3.2灰度共生矩阵特征提取

3.4 基于灰度一梯度共生矩阵的纹理特征

3.4.1灰度一梯度共生矩阵

3.4.2灰度一梯度共生矩阵特征提取

3.5 本章小结

4 图像检索系统设计与实现

4.1 系统模块和功能

4.2 系统流程

4.3 主要算法说明

4.3.1基于灰度共生矩阵的纹理特征提取算法

4.3.2纹理特征计算的代码

4.4 实验及结论

4.4.1检索系统的评价指标

4.4.2实验结果及分析

4.4.3本章小结

5 总结与展望

5.1 总结

5.2 展望

致谢

参考文献

1 前言

随着互联网技术向宽带、高速、多媒体方向的发展,人类正快速进入一个信息化的时代。各种信息工具、技术、载体等应运而生。在众多类型的信息资源中,图像具有直观、形象、易于理解和信息量大等特点,成为资源库的重要组成部分。同网络信息一样,由于图像数量巨大,种类繁多,加之排列方式错综复杂,这给图像检索带来了困难。近年来,基于内容的图像检索技术有了长足的发展。基于内容的图像检索能有效的对图像进行管理和检索,这项技术既充分体现了图像的信息特点,又充分结合了传统数据库技术,它的应用对解决信息膨胀,有效快速地利用多媒体信息有很好的实用价值。

图像的内容包括图像的颜色、纹理、形状等视觉特征和语义特征。其中,纹理特征作为最为显著的视觉特征之一,它是一种不依赖于颜色或亮度反映图像中同质现象的视觉特征。纹理特征包含了物体表面结构组织排列的重要信息,以及与周围环境的联系。因此在基于纹理的图像检索中得到了广泛应用。

1.1 图像检索的发展现状

自90年代以来,基于内容的图像检索已经成为了一个非常活跃的研究领域。从目前的研究现状来看,基于内容的图像检索可分为3层。下层是基于颜色、纹理、形状等反映图像基本物理特征的检索,是最直接也是最基本的层面,用到图像信息处理、图像分析和相似性匹配技术。中间层是基于图像对象语义的检索,如图像中实体及实体之间的空间关系的检索,对象级检索技术建立在下层特征基础上,并引入了对象模型库、对象识别和人工智能等图像理解技术。最上层是基于图像概念级语义的检索,其技术建立在对象层语义特征提取的基础上,引入了对象和场景之间的逻辑、情感等高层语义的描述及识别,需要用到知识库和更加有效的人工智能和神经网络技术。

到目前为止,已有许多商业的或是用于研究的图像检索系统问世。QBIC(Query ByImage Content)图像检索系统是IBM公司90年代开发制作的图像和动态景象检索系统,是第一个基于内容的商业化的图像检索系统。用户无须提供文字检索词,只要输入以图像形式表达的图像检索要求就可以检索出一系列相似的图像。Virage是由Virage公司开发的基于内容的图像检索引擎。同QBIC系统一样,它也支持基于色彩、颜色、布局、纹理和结构等视觉特征的图像检索。Jerry等人还进一步提出了图像管理的一个开放式框架,将视觉特征分为通用特征(如颜色、纹理和形状)和领域相关特征两类。

Photobook是美国麻省理工学院的多媒体实验室所开发的用于图像查询和浏览的交互工具。它由两个子系统组成,分别负责提取形状、纹理、面部特征。因此,用户可以在这两个子系统中分别进行基于形状、基于纹理和基于面部特征的图像检索。

VisualSEEK是基于视觉特征的检索工具,WebSEEK是一种面向www的文本或图像搜索引擎。这两个检索系统都是由哥伦比亚大学开发的。VisualSEEK同时支持基于视觉特征的查询和基于空间关系的查询。WebSEEK包括两个主要模块:图像/视频采集模块,主题分类和索引模块、查找、浏览和检索模块。

Netra系统是加利福尼亚大学的A1exandria数字化图书馆项目(AlexandriaDigital Library)中用于图像检索的原型系统。它从分割后的图像区域中提取颜色、纹理、形状和空间位置信息,并依靠这些信息从数据库中查找相似的区域。Netra在研究方面的主要特点包括:采用了基于Gabor滤波器的纹理特征:基于神经网络的“图像词典”的构造和基于边缘流的图像分割。

MARS(Multimedia AnalysiS and Retrieval System)是美国伊利诺斯大学开发的,它无论在研究角度还是应用领域都和其他的图像检索系统有很大的差异。MARS是计算机视觉、数据库管理系统以及传统的信息检索技术多个领域交叉的结果,它的主要特点包括:数据库管理系统和信息检索技术的结合;索引技术和检索技术的融合以及计算机和人的融合。MARS系统的重点在于根据实际的应用环境和用户的需要,在检索框架中动态地组合和调整各种不同的图像特征。MARS在图像检索领域正式提出了相关反馈的体系结构。相关反馈技术在各种层次上融合到检索的过程中,包括查询向量的优化,相似度算法的自动选择,以及图像特征权重的调整。

国内的一些研究单位已相继开展了基于内容的图像检索的研究工作,并开发了一些实验系统。主要有清华大学在视频检索方面的研究,国防科大在多媒体数据库检索系统方面展开研究,浙江大学也于1995年开始了这方面的研究工作。西北大学可视化技术研究所从1998年开始研究基于内容的图像检索,研究成果在医学影像数据库和数字考古博物馆中已有应用,理论研究和具体实践都取得了可喜的进展。中科院计算机所智能信息处理重点实验室智能科学课题组开发的多媒体信息检索系统Mires开始尝试在药植物数据库、遥感图像检索系统等方面展开应用。2002年,吴冬生、吴乐南提出对JPEG图像的DCT系数利用多分辨率小波变换的形式进行重组,对整个数据库中的所有图像的DCT系数重组得到的若干子带,分别建立子带能量直方图,而后采用Norton顺序建立图像的索引,并采用B树结构组织图像数据库用于图像检索。

1.2 图像检索技术分类

基于内容的图像检索技术实际上是一种模糊查询技术,通过对图像提取一定的特征,找出在特征空间中与查询要求最接近的图像。

基于内容的图像检索技术通常需要明确两个问题:一、如何提取特征,二、特征如何匹配。图像特征(即内容)的提取是基于内容的图像检索(CBIR.Content-Based ImageRetrieval)的基础。对于基于内容的检索系统,根据其处理的对象可以将其分为静止图像检索和活动视频检索。本论文主要讨论可视化静态图像特征的提取。根据所提取的特征不同,当前基于内容的图像检索技术可以分为以下几类:

1.基于颜色特征

颜色是图像内容组成的基本要素,是人识别图像的主要感知特征之一,相对与其它特征,颜色特征非常稳定,对于图像的平移、尺度、旋转变化不敏感,具有很强的鲁棒性,而且颜色特征计算简单,因此基于颜色的查询是基于内容的图像检索中应用最广泛的方法。

2.基于纹理特征

纹理是图像的一个重要的特征。准确的纹理定义并不存在,一种定义认为纹理是由纹理基元按某种确定性的规律或者只有某种统计规律排列组成的。另一种更为模糊的定义是纹理是由大量或多或少有序的相似基元或模式组成的一种结构。使用数学或信息论的方法抽取的纹理度量称为纹理特征,纹理特征可用来对图像中的空间信息进行定量的描述。纹理分析的方法主要分为两类:结构方法和统计方法。结构方法假定图像由较小的纹理基元排列而成,只适用于规则的纹理结构。统计方法又可进一步分为传统的统计方法、基于模型的方法和基于频谱分析的方法。传统的统计分析方法始于20世纪70年代早期的二阶灰度统计特征的共生矩阵方法。80年代开始,基于随机场模型的技术被用于纹理分析。随机场模型包括圆同步自回归(Circular Simultaneous Autoregressive)模型和高斯马尔可夫随机场(GMRF,GaussianMarkov Random Field)模型。多尺度的思想促进了基于频谱分析方法的发展,特别是基于Gabor滤波器的技术在纹理分析中被广泛采用。在实际的检索系统中应用的纹理特征方法一般有:象素域法、共生矩阵法、视觉纹理特征表达法、分形编码法、小波变换法等。

3.基于形状特征

基于对物体的形状特征进行检索是基于内容检索中最具挑战性的问题之一,因为寻找符合人眼感知特性的形状特征并不是件简单的工作。形状特征的重要原则是对位移、旋转、尺度变换的不变性,人们出于识别和检索的目的,总是趋向于忽略这种变化。形状特征的描述一般可分为两类:基于边界和基于区域。前者利用的是形状的外边界,后者利用的是整个形状区域。描述方法有:边界方向直方图、傅立叶描述符、矩不变量、Chamfer匹配、Turning函数、小波描述算子以及2D,3D形状表达等。傅立叶描述符用傅立叶变换后的边界作为形状特征,用较少的参数可以包纳很复杂的边界。矩不变量是使用基于区域的矩(与变换无关)作为形状特征。

4.基于边缘/草图

基于边缘/草图的查询是用户提交一幅想要查询的物体的大致轮廓,由系统找出与此轮廓相匹配的图像。草图的查询可以通过计算图像的边缘图来实现,这种方法的缺点是没有方向和尺度的不变性,类似的图像可能因为方向和尺度的不同而被遗漏,这种问题需要有复杂的边缘表示和匹配算法来消除。

5.基于空间关系的

对于包含多目标的图像,目标之间的空间关系是又一种描述图像内容的特征。描述物体问的空间关系首先需要对图像进行目标分割和识别,然后可将图像转化成采用2维串2D String)编码的符号图像,2维串描述物体间的关系是通过一系列算子(上、下、左、右等),图像的检索问题变成了一个2维串匹配的问题。2维串的匹配是基于一个简单的分级方案,然而用于生成2维串的算法需要对象分割和识别,计算量相当大。

6.基于非视觉特征的

现在运行的商用系统通常采用关系型数据库,这些系统中图像的属性包括图像来源、拍摄时间和地点、媒介类型、分辨率、输入设备、压缩方式、以及与图片相关的注释信息,注释信息对于用户来说是非常自然的描述,然而这种特征描述因人而异,而且无法自动提取,给检索系统带来很大的困难。

1.3 研究内容与章节安排

1 在前言中,主要介绍国内外图像检索技术的历史发展、最新进展及应用状况,最后介绍图像检索技术的分类。

2 第二章介绍图像检索的基本原理。介绍检索系统的通用框架,检索系统的关键技术、检索的查询方式及其特点及图像的相似性度量。

3 第三章介绍基于纹理特征的图像检索算法。详细介绍基于灰度共生矩阵的纹理特征提取算法。

5 第四章介绍检索系统设计与实现。介绍系统模块和各模块的功能,检索系统的流程,并对主要算法进行详细说明,最后通过实验对给定的图像进行检索。

6 第五章总结与展望。总结论文,并提出了论文下一步的工作以及图像检索系统的发展方向。

2 图像检索的基本原理

基于内容的图像检索遵循概率排队的规则,根据用户的查询需要,对查询样本和库中图像分别计算相关特征,并比较特征的相似性,最后按相似性值由大到小排列库中图像,完成一个查询过程。这一新的研究方向涉及图像处理(Image Processing),图像识别(Image Recognition)和图像数据库(Image Database)技术,把这3个领域的研究成果进行有效的结合是该技术取得成功的基础。基于内容的图像检索技术由于能够根据图像的可视内容产生查询,从而方便了用户,检索时针对不同的具体应用,使用一种特征或组合几个特征进行检索。

基于纹理特征的图像检索是基于内容图像检索的一个方面,因此,本章将讨论基于内容的图像检索系统的通用框架、关键技术、检索查询方式及检索特点。

2.1 检索系统通用框架

基于内容的图像数据库检索系统是一种重要的多媒体信息处理技术。一般把基于内容的图像数据库检索系统看作是介于信息用户和数据库之间的一种信息服务系统。系统的通用框架如图2—1所示。

图2-1 基于内容的图像检索系统通用框架

(1)查询模块对用户提供多样的查询手段,以支持用户根据不同应用进行各种类型的查询工作。

(2)描述模块系统将用户的查询要求转化为对图像内。容比较抽象的内部表达描述,即以一定的计算机可以方便表达的数据结构描述给定图像的内容。这是基于内容的图像检索系统的关键模块,如何描述图像,直接关系到检索系统的性能。

(3)匹配模块将查询描述与图像库中被查询图像进行内容匹配和比较,以确定它们在内容上一致性和相似性。这个匹配结果将传给提取模块。匹配模块所使用的方法与描述方法密切相关。

(4)提取模块根据匹配的结果,在内容匹配的基础上将所有满足给定条件的图像自动地从图像库中提取出来。

(5)验证模块提取的图像是否满足用户要求还需验证。如果验证效果不满意,新一轮的查询可以通过修改查询条件而重新开始。

2.2 检索系统关键技术

基于内容的图像检索系统的关键技术为:图像的特征提取和图像数据索引结构的构造。下面分别介绍这两个关键技术。

2.2.1特征提取

特征抽取是基于内容的图像检索的基础,目前比较成熟的特征是颜色、纹理、形状和物体间方位关系。这些特征具有计算简单,性能稳定的特点,但这些特征都有一定的局限性。

1 颜色

颜色是一种重要的视觉信息属性,在图像查询与检索中是~种很有用的特征。相对于其它特征,颜色特征非常稳定,对于旋转、平移、尺度变化,甚至各种变形都不敏感,表现出相当强的鲁棒性,而且颜色特征计算简单,因此成为现有检索系统中应用最广泛的特征。

颜色检索的基本思想是将图像间的相似度归结为颜色直方图之问的距离。这方面奠基性的工作是Swain和Ballad提出的直方图求交算法,它计算两幅图像三维颜色直方图的每一个颜色单位,并进行细致的比较。Mehtre等人提出距离算法和参考颜色表方法,实验表明,每幅图像只需保留很少几种主要颜色就能得到很好的结果。

为了得到与人的感觉类似的相似性度量,一些研究者还提出采用其它的颜色空间模型和距离测度。Zhang等人采用了符合人眼感觉的HSV(HueSaturation Value)模型,Baraldi等人在进行直方图匹配时引入了二次型距离。另外,在提高检索对于光照的稳定性及空间分布信息的引入等方面,也出现了很多算法。

2 纹理

纹理是与物体表面材质有关的图像特征,目前也是基于内容的图像检索系统中的一个重要手段。

纹理分析一直是计算机视觉中的一个重要研究方向,其方法主要分为两类:结构方法和统计方法。结构方法假定图像由较小的纹理基元排列而成,它采用句法分析方法,只适用于规则的结构纹理。统计方法又可进一步分为传统的统计方法、基于模型的方法,以及基于频谱分析的方法。

传统的统计分析方法始于20世纪70年代早期,Haralick等人提出了基于二阶灰度统计特征的共生矩阵方法。之后,Tamura以人的主观心理度量为标准,提出了6个基本的纹理特征,这些特征与人的感受较一致,在许多图像检索系统中得到应用。20世纪80年代,基于随机场模型的技术被用于纹理分析中。Kashyap等人提出用CSAR模型提取旋转不变的纹理特征。麻省理工大学的Photo.book中采用了随机场的二维分解技术,得到周期性、方向性和随机性三种特征,用于纹理图像检索。

多尺度的思想促进了基于频谱分析方法的发展,特别是基于Gabor滤波器的技术在纹理分析中被广泛采用,Gabor滤波器可以通过调整获得图像不同方向和尺度的纹理信息。Lee等人把它用于图像检索,并把它与小波变换方法作了比较。

3 形状

形状基于图像内物体形状的检索是基于内容检索当中一个最具挑战性的问题之一,因为寻找符合人眼感知特性的形状特征不是一件简单的工作。首要的困难是要将不同物体从图像中分割出来,这是计算机视觉中的一个困难问题。

形状的描述也是困难的问题,常用的方法有傅立叶描述子、矩不变量、各种简单的形状因子(如面积、圆度、偏心度、主轴方向)等。除了这些全局特征以外,有时也用一些局部特征(如直线段、圆弧、角点、高曲率点等),来解决遮挡问题。除这些常规方法外,人们还提出了许多基于不变性和变换的方法。

由于基于简单特征的方法无法对形状作细致的匹配,也不能解决广泛存在的变形问题。因此实际系统中常常只用它们来作初步的过滤,最终的匹配结果由一些更复杂的方法给出,如变性模板、弹性匹配等。

4 区域与目标

由于颜色、纹理的检索仅适合部分图像检索的情况,且检索的正确率不高,而且在很多情况下,人们感兴趣的并不是整幅图像,而是图像中的某些区域或目标。因此,近几年来人们提出了基于区域或目标的图像表示和检索方法,在这类方法中通常需要完成图像分割,然后再利用感兴趣部分的图像信息进行检索。

2.2.2高维索引

为了使基于内容的图像检索能真正地适合于大规模的图像集合,需要研究有效的多维索引技术,这里有如下两个难题需要解决。

(1)高维度特征向量的维度通常具有10²的数量级。

(2)非欧拉相似性度量计算由于欧拉度量可能不适合对某些视觉内容的人类感知的仿真,因此需要支持其它的各种相似性度量方法,如直方图求交等。

为解决高维索引问题,一种有前途的方法是首先减少维度,然后使用能支持非欧拉相似性度量的多维索引技术。

1 维度压缩

有两种方法可用于维度压缩:一种是KL变换,另一种是列向聚类。KL变换及其变种己广泛用于人脸识别、特征图像以及信息分析。Ng等人采用特征图像的方法来进行维度压缩。Faloutsos等人提出了KL变换的快速近似算法进行维度压缩,研究结果表明,大多数实际图像集(视觉特征向量)可以作维度压缩,而且在检索质量上不会引来明显的退化。Chandras.ekaran等人提出了一种低秩单值分解法,在执行KL变换时非常有效,且在数值上是稳定的。由于图像检索系统是一个动念系统,新的图像会不断地添入到图像集合之中,该算法具有处理动态的索引更新能力。

除了KL变换之外,聚类是另一个进行维度压缩的有力工具,聚类技术广泛用于模式识别、语音分析和信息检索之中。通常,相似的对象(模板、信号和文档)被聚在一起以执行识别或者分组,这种聚类称为行向聚类,当然也可进行列向聚类以达到维度压缩的目的。

2 多维索引技术

多维索引技术的研究主要在3个领域,即计算几何、数据库和模式识别。

最流行的多维索引技术有K-d树,R树及其变种R+树、R*树,四叉树,聚类法,神经网络法等。

多维索引技术始于70年代中期,当时引入的方法是K.d树和四叉树,然而其性能远不尽人意。由于地理信息系统和计算机辅助设计系统中对空间索引的迫切要求,Guttman提出了R树的索引结构,之后R树的多个变种被相继提出。过去,大多数关于树的索引技术是为传统的库查询提出的,而不是为图像检索中的相似查询提出的。因此,目前多维索引的重点集中在图像检索中新的特征和需求上,即如何标识与改进适合于表达高维度特征向量的索引技术,其中二种有前途的方法是聚类法和神经网络法。

2.3 检索查询方式

在不同的应用环境中,用户可能会进行不同类型的查询工作。因此,由用户的不同需求产生了多种查询方式,下面分别介绍。

2.3.1外部图例查询

外部图例查询(Query by External Pictorial)中的示例图像来源于检索系统的外部,也就是说给定的图像不是数据库中存储的图像。用户可以数字化一张照片,也可以在Internet或别的什么地方找到一幅质量比较好的图片作为示例,要求系统在数据库中搜索相似的图像。

外部图例查询的优点是易用性好,缺点是需要付出一定的努力向系统提供外部示例图像。

2.3.2内部图例查询

内部图例查询(Query by Internal Pictorial Example)中的示例图片是从检索系统的数据库中选出的。当没有可用的外部示例图片时,用户可以从可用的图像集合中选择查询图片。系统在其它方面的功能与外部示例图片基本一致。

内部图例查询的优点是用户不再为获得一个外部示例图片而烦恼,缺点是仍然需要用户付出努力在数据库中找到一幅合适的示例图片。

2.3.3草图查询

草图查询(Query by Sketch)是图例查询的一种形式,其中的示例图像由用户创建,用户为他希望得到的图像勾画一张草图。用户在查询画布上组织或编辑一些预定义的图片元素以创建一幅示例图像。因此,检索系统必须为用户提供一些图像部件和画图工具。

与自然图像相比,人工创作的草图具有更高的抽象性,用户只需勾画出他所寻找的图片的重要部分,在这方面草图查询要比其它使用已有图片的图例查询更具优势。草图查询的缺点是它要求用户或多或少要有一些艺术才能,因此,草图查询在大多数的场合下仅用来指出图像中对象的位置或一些对象的全局属性。可见,草图查询的优点是用户可以根据需要指出最重要、最感兴趣的图像细节,缺点是草图的创建比较困难,而且很难建立草图与图像之间的映射关系。

2.4 图像的相似性度量

2.4.1概述

在基于内容的图像检索中,两幅图像是否相似是指图像的特征向量是否相似。常用的图像相似性测度通常采用几何模型,将图像特征看作是向量空间中的点,通过计算两个点之间的接近程度来衡量图像特征之间的相似度。基于内容的图像检索算法主要有最邻近查询算法和区间查询算法,它们都依赖于距离函数或者相似性度量。

在基于内容的图像检索中,例子图像查询是主要的查询方式。图像或者图像片段可以用一系列包含有d个特征(x[1],x[2],...,x[d])的集合来表示,这些特征包括纹理、形状、颜色以及它们之间的组合。在d维特征空间中,把特征聚合成为一个特征向量,可以根据不同坐标轴来标记相应的特征。为了支持最邻近查询和区间查询,特征空间必须与一个度量或者相似性测度相匹配。在图像相似性测度中,可以采用各种距离函数或者距离度量、统计学方法和非几何相似性测度方法。

2.4.2相似性测度

假设在图像数据库中,用特征向量来表示任何一个图像特征,其中X和Y,分别是任意两个特征向量,它们满足图像相似性度量中的自相似性、最小性、对称性和三角不等性度量公理,它们之间的接近程度可以采用距离度量或者统计学方法来进行图像相似性判断。常见的距离度量有欧几里德距离、Manhattan距离、Minkowsky距离、Mahalanobis距离等。

(1)欧几里德距离

欧几里德距离是一个应用非常普遍的距离度量。它的计算简单,并且与参考系统的旋转不变量相关。它的定义如下:

                  (2-1)

当发生数据丢失或者当所有特征向量不具备相同的权重时,那么就不能使用欧几里德距离来进行相似性测度。为了避免这种情况,在实际的应用过程中可以对欧几罩德距离进行归一化。归一化欧几里德距离的定义如下所示:

                 (2-2) (2)Manhattan距离

Manhattan距离又叫街区距离,它与欧几里德距离具有相同的计算复杂度,它的定义如下:

                  (2-3) (3)Minkowsky距离

Minkowsky距离的定义如下:

                   (2-4)

Minkowsky距离是一个距离函数系列,它的参数为P。在个别维数中,利用非负权重

可以进行不同的加权计算。它的数学表达式如下:

                 (2-5)      (4)Mahalanobis距离

它是一个计算复杂的权重欧几里德距离。它根据一个协方差矩阵C来定义,它的定义如下所示:

      (2-6)      C-1是C的协方差式逆矩阵,如果C是恒等矩阵,那么Mahalanobis距离就变成欧几里德距离。当特征向量的分向量之间没有相关性,可以对Mahalanobis距离进行简化。

(5)相关系数

它的定义如下: 

           (2-7)

其中

=

是数据库中所有向量的均值。如果把点X和Y,投影到单位半径为

的球面上,量化为2—2p(X,Y),它就是投影区间的欧几里德距离。在投影区间中,对应于搜索空间的尺度和旋转不变量就是相关系数。它可以用于统计任意变量的偶合行为属性。

(6)相对熵

它仅仅应用于随机分布,它的定义如下所示:

                    (2-8)

仅仅当元素X和Y非负并且

具有实际意义。因为它不具备对称性,也不满足三角形不等式,所以它不是距离度量。当它应用于图像检索的时候,可以把第一个独立变量作为查询向量,第二个独立变量作为数据库向量。

(7)

距离

它仅仅应用于随机分布,它的定义如下:

                  (2-9)

当且仅当元素X和Y非负并且

具有实际意义。它在计算量和分裂上的耗费很大。

2.4.3非几何相似性测度

在实践过程中,许多人发现距离度量方法与人对相似性的感知判断之间存在一定差距。相似性度量中的自相似性、最小性、对称性和三角不等性度量公理也同样存在一些争议。

根据庄越挺、潘云鹤和吴飞编著的《网上多媒体信息分析与检索》介绍,在1977年,Tversky提出了著名的特征对比模型。在特征对比模型中,它不是把每个实体看作特征空间中的一个点,而是把每个实体用一个特征集合来表示。假设两个实体a和b,它们对应的特征集合分别用A和B来表示,两个特征集合之间满足匹配性、单调性和独立性假设。根据下述假设,Tversky提出的对比模型定理可以归纳为:如果满足匹配性、单调性和独立性假设的度量函数,一定存在一个相似性度量函数S和一个非负函数f,以及两个常量

>0,对于实体a,b,c,d和它们的特征集合A,B,C,D,有如下公式:

            (2-10)

是一个反映特征显著性的函数,它用来衡量指定特征对相似度的贡献,

时,相似函数是不对称的。

2.4.4小结

欧几里德距离的优点是当对坐标轴进行正交旋转时,欧几里德距离保持不变,样本集合仍然能够保持原来的相似性结构。它的缺点是平方根的计算比较费时并且它的数值不是整数。

Minkowsky距离的计算比较简单,应用比较广泛。Minkowsky距离受到特征向量的量纲影响很大。在图像检索过程中,必须对数据进行标准化处理以统一量纲,使它具备度量的可比性和一致性。Minkowsky距离包含了特征属性的差异,可以从总体上估计可视化非相似性。当特征向量具有不同取值范围,利用加Minkowsky距离来进行图像相似性测度比较合适。Minkowsky距离没有考虑特征差异的组合,同时也没有考虑特征向量的多重相关性,特别是当两个特征具有高度相关性的时候,可能会对相似性测度产生很大影响。

Mahalanobis距离的优点是它重视样本的统计特征,排除了样本间的相关性影响。Mahalanobis距离是Minkowsky距离的改进,它对于一切线性变换都具有不变性,克服了Minkowsky距离受量纲影响的缺点。

非几何相似性度量吸收了几何相似性度量的优点,提出了一个广泛的理论衡量方法。在实际应用中,它只适用于具有明显特征的对象,同时在具体应用环境中还需要明确显著性函数的表达式。

总之,图像相似性测度一般采用几何模型,它对某些人类感受的相似性比较合适,与基于内容的特征描述比较相似。在很多情况下,基于几何模型的相似性测度与人类感受的相似性还存在很大差距。

2.5 本章小结

本章对基于内容的图像检索进行了一个简要的概述。分析了基于内容的图像检索系统的基本原理,介绍了基于内容的图像检索系统的通用框架、关键技术、检索查询方式和检索特点,最后介绍了图像的相似性度量。

3 基于纹理特征的图像检索算法研究

纹理是描述图像时常用的一个概念,类似于颜色,也常取决于感知。纹理特征是一种不依赖于颜色或亮度的反映图像中同质现象的视觉特征。它是所有物体表面共有的内在特性,例如,云彩、树木、砖、织物等都有各自的纹理特征。纹理特征包含了物体表面结构组织排列的重要信息,以及它们与周围环境的联系。正因如此,纹理特征在基于内容的图像检索中得到了广泛应用,用户可以通过提交包含某种纹理的图像来查找含有相似纹理的其它图像。

本章首先对纹理进行了概述,然后根据纹理的空间性质和频域性质对基于纹理特征的图像检索算法进行了研究,总结出有效的检索算法。

3.1 纹理特征概述

尽管纹理在影像分析中十分重要而又普遍,但是到目前为止,对纹理还没有一个确切的定义。人对纹理的感受是与心理效果相结合的,所以用语言或文字来描述纹理通常很困难。纹理具有区域性的特点,一个纹理需要用一个向量来表示,或者说一个纹理可用一个多维特征空间中的一个点表示。

纹理可认为是灰度在空间以一定的形式变化而产生的图案,是真实图像区域固有的特征之一。任何物体的表面,如果一直放大下去进行观察的话,一定会显现出纹理。从心理学的观点考虑,人类观察到的纹理特征有粒度(granularity)、方向性(directionality)和重复性 (repetitiveness)等。一般来说,纹理和图像频谱中高频分量是密切联系的,光滑的图像一般不认为是纹理图像。

纹理是模式识别中用来辨别图像区域的概念。常使用区域的尺寸、可分辨灰度元素的数目以及这些灰度元素的相互关系来描述一个图像中的纹理区域。要分析纹理,需要确定一定的尺度,一幅纹理图像在较粗的尺度上可能看不出纹理来,需要到更细的尺度上观察。一般来说,可以认为纹理是由许多相互接近的、互相编织的元素构成。所以,纹理描述可提供图像区域的平滑、稀疏、规则性等特征。

基于以上说明,一般把纹理视为两种:结构纹理和统计纹理。

定义1:纹理是在某一确定的图像区域中,以近乎周期性的种类和方式重复其自身的局部基本模式。在这一定义下,纹理由基本模式及其规则排列构成,这形成了结构法纹理分析的基本步骤。

定义2:纹理是在某一确定的图像区域中,相邻像素的灰度(或色调、颜色)服从某种统计排列形成的一种空间分布。这一定义要求通过统计方法实现对纹理的描述。

纹理分析指的是通过一定的图像处理技术抽取出纹理特征,从而获得纹理定量的或定性描述的处理过程。纹理分析包括检测纹理基元和获得相关纹理基元排列分布方式的消息两大部分。在一个尺度上进行纹理的分析和测量,研究图像在小范围内的不规则性,称之为微纹理分析。纹理具有多尺度特性,不同的尺度可对应不同的纹理结构,在多尺度或多分辨率上分析纹理,称之为宏纹理分析。

常用的纹理分析方法有三种:统计分析方法、结构分析方法和频谱分析方法。一般来说,统计分析方法应用于微纹理(micro-texture)图像的效果较好,而对宏纹理(macro-texture)图像需要结合统计和结构两类方法进行分析。频谱分析方法借助于傅立叶频谱的频率特征来描述周期的或近乎周期的二维图像模式的方向性。

1.统计分析方法

统计分析方法是最早在纹理分析中应用的方法之一,也是目前研究较多、占主导地位的一种方法。它利用图像的统计特性求出特征值,基于图像特征空间一致性进行分析。主要包括通过自相关函数、灰度共生矩阵、滤波模板、随机模型(Markov随机场模型、Gibbs随机场模型)、分形模型等来计算纹理图像的特征值。此类方法通过计算图像中每个点的局部特征,从特征的分布中推导出一些统计量来刻画纹理,所以存在计算量大、分割精度差、抗噪能力差等缺点。

该方法适合于广泛存在的自然纹理,也同样适于描述人工纹理,是目前较为成熟、实用的一类方法,在纹理特征提取中占主导地位。

2.结构分析方法

结构纹理分析方法认为纹理是由许多纹理基元组成的某种“重复性”的分布规则。结构分析方法的基本思想认为复杂的纹理可由一些简单的纹理基元以一定的有规律的形式重复排列组合而成。当纹理基元大到足够单独的被分割和描述时,才有必要使用结构分析法。纹理结构分析通常分三步骤:一是图像增强;二是基元提取;三是计算纹理基元的特征参数及构成纹理的结构参数。

3.频谱分析方法

频谱分析方法借助于傅立叶频谱的频率特征来描述周期的或近乎周期的二维图像模式的方向性。对一个给定的图像,二维傅立叶变换显然能包含其全部的纹理信息。因此,如同从物体本身导出纹理特征一样,从频谱导出纹理特征也是很有用的。小波变换和Gabor滤波器是目前纹理分析中应用最为广泛的方法。

在纹理分析领域,人们开展了深入的研究,结合多通道Gabor滤波、小波变换、神经网络、MRF(随机场)、分形学等数学方法,对纹理分析提出了大量创新和改进,很大程度上提高了纹理分析的精度。如采用适合纹理分析的小波基对纺织品纹理进行缺损检测,Ajay Kumar和Granthan K.H Pang等人将Gabor滤波用于有纹理现象的物体结构缺损检测,K.N.Bhanu Prakash等人利用灰度共生矩阵对母体内胎儿的肺部超生图像检测其是否已到成熟期。近年来国内外一些学者提出了利用遗传算法、模糊集理论、分形理论和神经网络等进行纹理分析,也在某些领域获得了比较好的实验结果。

从上述对纹理分析方法的发展和应用的介绍可以看出,基于统计的方法是应用最多的一种方法,小波变换、Gabor滤波法适应了纹理本身的多尺度特性,是目前发展较快,应用较多的方法。

本文主要应用灰度共生矩阵、小波变换和梯度灰度共生矩阵等数学方法进行纹理特征提取,并对基于纹理特征的图像检索进行讨论和研究。

3.2 基于小波变换的纹理特征提取

3.2.1图像的小波变换

用小波变换的方法分析纹理图像时,如果纹理尺寸较小或对比度不高,通常采用较高的分辨率;如果尺寸较大或对比强,只需要较低的分辨率。因此,当纹理尺寸大小不一、对比度有强有弱时,这种方法提取特征参数有较大的优势,也符合纹理识别的特点。

小波在图像处理上的应用思路主要采用将空间或者时间域上的图像信号(数据)变换到小波域上,成为多层次的小波系数,根据小波基的特性,分析小波系数的特点,针对不同需求,结合常规的图像处理方法(算法)或提出更符合小波分析新方法来处理小波系数,再对处理后的小波系数进行反交换(逆变换),将得到所需的目标图像。基于小波分析及其变换的图像处理过程可以用图3-1所示。

图3-1 小波与图像处理

为了将小波变换应用于图像处理,需要有二维的小波函数和尺度函数。采用可分离变量的方法可以由一维小波函数

(x)和尺度函数

(x)构造所需要的二维小波函数,即:

                      (3-1)

                          (3-2)

                         (3-3)

                        (3-4)

其中,

是二维尺度函数,

是三个二维小波函数。每个小波上的H表示水平方向,V表示垂直方向,D表示对角线方向。由式给出的尺度函数和小波函数,可以定义一个伸缩和平移的基函数:

      (3-5) 

(3-6) 

(3-7) 

       (3-8)

利用这些基函数就可对图像f(x,Y)进行分解。图3-2为图像的小波分解示意图。其中L

原图像

                          图3-2 图像的小波分解示意图

表示低频,H表示高频,下标1、2分别表示一层、二层分解。图像在每个尺度上被分解成四个子带,其中LL为低频子带,是原图像的平滑逼近;LH是沿水平方向的高频子带,反映图像的水平边缘情况;HL是沿垂直方向的高频子带,反映图像的垂直边缘情况;HH是沿对角方向的高频子带,反映图像的斜边缘情况。图3-2表示的是金字塔结构的迭代分解情况,即在该结构分解中,仅分解LL子带来生成下一尺度的各频带输出,而不分解其它子带。因为小波变换后的能量主要集中在低频子带。

3.2.2小波基的选择

从理论上讲,任何实正交的小波对应的滤波器组(H

)均能实现图像的分解与合成,但是,并不是任何分解均能满足要求,同一幅图像用不同的小波基进行分解所得到的数据压缩效果是不同的。由于小波变换是将原始图像与小波基函数以及尺度函数进行内积运算,1989年Daubechies基于离散滤波器迭代的方法构造了紧支集的规范正交小波集,因而内积运算转换为信号和离散滤波器的卷积运算,小波变换中的小波基的选取转换为正交镜像滤波器QMF的选取。

小波基不是唯一的,对于小波基的选取(相当于对QMF的选取)一般情况下需考虑以下几个因素:

(1)线性相位特性:以减少或消除重构图像在边缘处的失真。

(2)紧支集特性:支集越短,小波变换的计算复杂度越低,便于快速实现。

(3)消失矩特性:即(H

)

, n=1,2,3,…,k-1。一般来说,k越大,小波变换后能量越集中于低频子带,而在高频子带中则会出现更多的0。

(4)所处理图像与小波基的相似性。

(5)综合考虑压缩效果和计算复杂度。

图像小波分解后的各层小波系数都包含了图像中目标的信息,合适的选择小波基可使小波变换空间能量集中,这样有利于选取主要成份作为特征。研究表明在正交小波中,Haar小波在时域是不连续的,频域的局部衰减特性也较差;Shannon小波恰好相反,频域是不连续的,时域衰减性不好;Daubechies小波不具有对称性(即不具有线性相位),以样条函数作尺度函数,然后正交得到的Battle-Lemarie小波不是紧支集的。Daubechies已经证明,既具有紧支集,又具有对称性的正交小波是不存在的。在利用小波对图像处理时,为了减少处理后图像的相位延迟,通常要求小波具有对称性,为此采用双正交小波。在图像压缩算法中应用的线性相位双正交小波基,有保留空间细节的位置和集中能量压缩信息的特性。

3.2.3小波基的正则性阶数

从子带编码概念出发,将一维子带分解推广到二维,从而实现图像二维子带编码,其分解过程是靠精确重建滤波器组来实现的。子带编码与小波变换编码都属于多分辨率编码(Mufti-resolution),它们的分解都相同,都可以用Mallat算法实现多级分解的递推运算。它们之间的重要区别是小波分解要求滤波器具有正交性,而子带编码却不要求。正则性是函数光滑程度的一种描述,也是函数频域能量集中的一种度量。函数

的正则性有Sobolev定义和Holder两种定义形式。

定义(sobolev)3.1 若

则称函数

具有r阶正则性。

此定义用得非常广泛,且r的值可由

估算出,但它没有表现

的波形与正则性的关系且忽略了滤波器的相应信息。

定义(Holder)3.2 设0<a<1,若对任意t,

则称

的Holder的正则性阶数为a。其中c是一个与t,

无关的常数。若

的N阶导数满足上式且r=N+a,则称

的Holder正则性阶数为r。

小波函数或尺度函数的正则性与低通滤波器在

的过零点数相关,但这种联系并不明显。尺度函数的正则性或多或少是其光滑度的测量,更为特殊的是,如果尺度函数是m次可微的,其m次导数是指数为a的Holder连续,那么它是a+m次正则的。对应的小波函数与尺度函数具有相同的正则性。小波的正则性与滤波器的长度成正比,滤波器越长,支集越大,正则性越好,光滑性越好,但小波变换的计算复杂度越高,实用性变差。

在小波变换过程中,假定输入信号的一段光滑部分经过正则性很差的滤波。本身的不连续性将反映在离散小波变换(DWT)的变换系数中。小波函数的正则性越高,往往对图像处理越有利。

表3-1 几个小波的正则性和消失矩

  

    如果

有N次消失矩,任何N次可微的函数f(t)都可以通过小波变换表示,且这种表示具有较大的压缩潜力。当图像光滑时,越大的消失矩将导致精细尺度下的高频系数越小,小波分解后的图像能量越集中,压缩比就有可能提高。因此,要求分析小波要有较高的消失矩。通常小波的正则性和消失矩相互作用。双正交小波

各自的正则性和消失矩对小波变换编码系统的影响也不相同。表3-1给出了几个小波的正则性和消失矩。a(N)是N的线性增加函数,对于较大的N近似为0.2075N。

3.2.4小波变换的级数

由一维小波构成的可分离小波变换是将原始图像分解成一个低频信号和三个方向的高频信号分量(水平方向、垂直方向和对角方向),即每一层分解为四个子带信号,低频信号可进一步继续分解成四个子带。一个图像经过L级分解后,可得到3L+1个子带。因为从子带信息量来看,当一个子带分成四个子带后,它要求分成的四个子带的熵值应很小,否则就不值得再分解。由于熵与编码所需的平均比特数直接对应,则为了实现数据压缩,对分解后的子带编码所需的平均比特数应小于对分解前的子带编码所需的平均比特数,其分解才有意义。

表3-2 flower的二层小波系数分析

一般来说,随着小波分解层次的增加,提取的纹理特征也越来越准确,但分解层次越多,计算量也越大。研究表明,通常对图像进行四层小波分解就可满足要求。

3.3 基于灰度共生矩阵的纹理特征

3.3.1灰度共生矩阵

任何图像表面都可以看成三维空间中的一个曲面,基于直方图的中心矩方法以及灰度差分统计法都是研究单个像素灰度级在这个三维空间中的统计分布规律,都不能很好地反映像素之间地灰度级空间相关的规律。在三维空间中,相隔某一距离的两个像素,它们具有相同的灰度级,或者具有不同的灰度级,若能找出这样两个像素间的联合分布的统计形式,对于图像的纹理分析将很有意义的。70年代初,R.Haralick等人提出的一种叫做空间灰度共生矩阵(Spatial Gray Level Co-Occurrence Matrix)的模型方法就是基于这种思想的统计方法,它是在假定图像中各像素间的空间分布关系包含了图像的纹理信息的前提下提出的一种具有广泛性的纹理分析方法,在此基础上也衍生了诸如灰度一差值共生矩阵分析法、灰度一能量共生矩阵分析法和灰度一梯度共生矩阵法。

假定一幅图像的f在水平方向有

个像素,在垂直方向有

个组成,每个像素的灰度级最大为

记:

               (3-9)

                     (3-10)

                            (3-11)

则可把待纹理分析的图像

理解为从

 

到G的一个变换,即对

 

中的每一个点,对应一个属于

的灰度,可表示为

:

 

G。空间灰度共生矩阵定义为方向

和间隔距离d的函数,记为:

                    

表示矩阵第i行j列元素,其中

。对不同的

,矩阵元素的定义如下:

(3-12)

         (3-13)          

(3-14)       

          (3-15)

式中

指集合的基数,D=

表示矩阵第i行j列元素表示所有

方向,相邻间隔为d的像素中有一个取

值,另一个取

值的相邻对点数。这里d可以取为d=1,2,3,4,8等值。

图像的灰度共生矩阵反映了图像灰度关于方向、相邻间隔、变化幅度的综合信息,它是分析图像的局部模式结构及其排列规则的基础。作为纹理分析的特征量,往往不是直接应用计算的灰度共生矩阵,而是在灰度共生矩阵的基础上再提取纹理特征量,称为二次统计量。Haralick等人由灰度共生矩阵提取了以下14个特征(设灰度级为L):

(1)角二阶距

=

                               (3-16)

(2)对比度

=

                           (3-17)

(3)相关

=

                       (3-18)

式中

分别是

的均值和方差,

分别是

的均值和方差。

(4)方差

=

                 (3-19)

式中

的均值。

(5)逆方差

                         (3-20) (6)和平均

                                    (3-21)

(7)和方差

                             (3-22)

(8)和熵

                             (3-23)

(9)熵

                            (3-24)

(10)和方差

                                       (3-25)

(11)差熵

                          (3-26)

(12)相关信息测度

                        (3-27)

          (3-28)                         

式中

的熵,

的熵,

             HXY=

                     (3-29)               HXY1=

                 (3-30)

HXY2=

            (3-31)

(13)最大相关系数

矩阵Q的第二最大特征值式中矩阵Q的第i行j列

元素为          

                        (3-32)

由于灰度共生矩阵的计算量很大,为简便起见,一般采用下面的五个最常用特征来提取图像的纹理特征:

(1)角二阶矩(能量)

ASM=

                              (3-33)

角二阶矩是灰度共生矩阵各元素的平方和,又称能量。它是图像纹理灰度变化均一的度量,反映了图像灰度分布均匀程度和纹理粗细度。如果共生矩阵的所有值均相等,则ASM值就小;相反,如果其中一些值大其它值小,则ASM值大。一幅有着一致灰度的图像的灰度共生矩阵只有一个值,它等于图像的总像素数,它的ASM值最大。因此,ASM的值大则表明一种较均一和规则变化的纹理模式。

(2)对比度(惯性矩)

CON=

                        (3-34)

对比度是灰度共生矩阵主对角线附近的惯性矩,它度量矩阵的值是如何分布和图像中局部变化的多少,反映了图像的清晰度和纹理的沟纹深浅。纹理的沟纹深,对比值大,效果清晰;反之,对比值小,则沟纹浅,效果模糊。

(3)熵

ENT=

                      (3-35)

熵度量图像纹理的随机性。当空间共生矩阵中所有值均相等时,它取得最大值;相反,如果共生矩阵中的值非常不均匀时,其值较小。因此,熵的最大值暗示图像灰度分布非常随机。

(4)逆差矩(局部平稳性)

IDM=

                     (3-36)

它度量图像纹理局部变化的多少。其值大则说明图像纹理的不同区域间缺少变化,局部非常均匀。

3.3.2灰度共生矩阵特征提取

图3-3为基于灰度共生矩阵的特征提取算法流程。在纹理特征的提取中,先把图像的亮度分成256个灰度级(起归一化的作用),并构造4个方向的灰度共生矩阵,

,图像共生矩阵的计算量是由图像的灰度等级和图像的大小来确定的。设图像G有L个灰度级,其大小为R行C列,则运算量大约为

。然后分别计算4个方向共生矩阵的二阶矩、熵、对比度、逆差矩及和方差共5个纹理特征量。最后用这5个特征量构成纹理特征向量。

图3-3 基于灰度共生矩阵的算法流程图

3.4 基于灰度一梯度共生矩阵的纹理特征

3.4.1灰度一梯度共生矩阵

纹理特征分析既可以用灰度本身的信息,又可以用灰度变化的梯度信息。灰度-梯度共生矩阵纹理分析方法是用灰度和梯度的综合信息提取纹理特征,它考虑像素灰度与边缘梯度的联合统计分布,它是灰度级直方图和边缘梯度直方图的结合,其实现过程与灰度共生矩阵法相似。

从灰度一梯度共生矩阵中,同样可以提取二次统计特征参量,它们是灰度均方差、梯度均方差、灰度熵、梯度熵、惯性、逆差矩等15种二次统计特征参数。

设图像的灰度级为L,梯度级为

。下面选取其中的几种。

  1. 能量

                            (3-37)

  1. 灰度平均

                 

                           (3-38)

  1. 梯度平均

                           (3-39)

  1. 相关

                 (3-40)

  1. 混合熵

                  (3-41)

  1. 惯性

                       (3-42)

  1. 逆差矩

                    (3-43)

3.4.2灰度一梯度共生矩阵特征提取

图3-4为基于灰度.梯度共生矩阵的特征提取算法流程。在纹理特征的提取中,先

图3-4 基于梯度一灰度共生矩阵的算法流程图

采用平方求和计算梯度矩阵

,并找出梯度矩阵的最大值和最小值。为了避免太多的灰度级带来巨大的计算量,对其灰度进行灰度离散化处理:

                    (3-44)                                           

式中

,L为离散化处理后图像的梯度级。经过离散化处理将灰度级由256减为32。由离散化后的矩阵

计算出灰度梯度共生矩阵并归一化,然后再根据式(3-37)-(3-44)计算出特征量,最后以各特征量的均值和标准差作为纹理特征向量中的各个分量。

3.5 本章小结

本章从纹理特征的概述出发,分别介绍了基于小波变换、灰度共生矩阵和灰度-梯度共生矩阵的特征提取算法。

4 图像检索系统设计与实现

目前,大部分的图像检索系统是基于例子图像、基于草图或基于文本的检索,本文所要设计的图像检索系统的目标是通过对图像特征的提取,利用适当的特征匹配技术对图像特征进行匹配,实现图像检索。

机器和人对图像的理解存在着巨大的差距。为了实现本文提出的图像检索功能,如何描述图像的内容特征是一个关键。本文从纹理特征着手对图像内容信息进行提取和描述。图像特征提取后还需要考虑如何进行图像特征的相似性测度。本文将采用欧几里德距离来进行图像相似性测度。

4.1 系统模块和功能

系统由以下几个功能模块组成:查询模块、特征提取、匹配模块和图像显示模块。

1查询模块

查询模块的功能是对用户提供查询方式,以支持用户根据不同应用的具体要求进行各种类型的查询工作。该系统提供了采用纹理特征对整个图像进行查询的方式。

2特征提取模块

特征提取模块的功能是将用户的查询要求借助特征提取和表达转化为图像的内容,从而可使用计算机自动实现图像查询工作。该系统对图像特征的描述采用特征向量的方式。用户在选定要查询的图像后,系统自动计算出相应的特征向量。

由于在基于向量的特征表示中,特征向量内部各分量可代表同一特征不同的物理意义,所以系统在该模块中提供了对特征向量进行内部归一化的功能已使它们具有可比性。

3匹配模块

匹配模块的功能是将查询图像的特征向量与被查询图(图像库中的图像)的特征向量进行匹配以确定它们在内容上的一致性和相似性从而找出需要的图像。该系统采用的是欧氏距离度量方式为相似度的测度。

4显示模块

显示模块的功能是显示根据匹配将所要查询的图像显示给用户。

4.2 系统流程

在这小节中介绍该检索软件的工作步骤:

1、从图像库中读入关键图;

2、计算关键图的纹理特征;

3、从图像库中检索位图,将BMP图片搜索出来,按相似度测量大小顺序排序。

4、任意选取一副图片,计算纹理特征。

5、运用欧几里德距离,计算两图片的纹理特征差异而进行匹配。

6、显示纹理特征差异,若四个特征值的差异都为零,则完全匹配。

7、显示检索结果图片。

图4-1 检索软件的工作步骤

4.3 主要算法说明

4.3.1基于灰度共生矩阵的纹理特征提取算法

void CTextureDlg::OnBtnComputeTexture()

{

double dEnergy = 0.0;

double dEntropy= 0.0;

double dInertiaQuadrature = 0.0;

double dLocalCalm= 0.0;

double dCorrelation= 0.0;

double dEnergy1 = 0.0;

double dEntropy1= 0.0;

double dInertiaQuadrature1= 0.0;

double dLocalCalm1= 0.0;

double dCorrelation1= 0.0;

unsigned char** arLocalImage;

arLocalImage=cmatrix(0,m_grayShow.FilterWindowWidth-1,0, m_grayShow.FilterWindowWidth-1);

int rolltimeH = m_grayShow.ImageHeight/m_grayShow.FilterWindowWidth;

int rolltimeW = m_grayShow.ImageWidth /m_grayShow.FilterWindowWidth;

int i,j;

int p,q;

int Index=m_Combo.GetCurSel();

for(i=0; i< rolltimeH; i++)

{

for(j=0; j<rolltimeW; j++)

{

for(p=0; p<m_grayShow.FilterWindowWidth; p++)

{

for(q=0; q<m_grayShow.FilterWindowWidth; q++)

{

arLocalImage[p][q] = m_grayShow.ImageArray[i*m_grayShow.FilterWindowWidth+p]

[j*m_grayShow.FilterWindowWidth+q];

}

}

m_grayShow.ComputeMatrix(arLocalImage, m_grayShow.FilterWindowWidth);

switch(Index)

{

case 0:  

m_grayShow.ComputeFeature(dEnergy1, dEntropy1, dInertiaQuadrature1, dCorrelation1, dLocalCalm1, m_grayShow.PMatrixH, m_grayShow.GrayLayerNum);

break;

case 1:  

m_grayShow.ComputeFeature(dEnergy1, dEntropy1, dInertiaQuadrature1, dCorrelation1, dLocalCalm1, m_grayShow.PMatrixRD, m_grayShow.GrayLayerNum);

break;

case 2:  

m_grayShow.ComputeFeature(dEnergy1, dEntropy1, dInertiaQuadrature1, dCorrelation1, dLocalCalm1, m_grayShow.PMatrixV, m_grayShow.GrayLayerNum);

        break;

case 3:  

m_grayShow.ComputeFeature(dEnergy1, dEntropy1, dInertiaQuadrature1, dCorrelation1, dLocalCalm1, m_grayShow.PMatrixLD, m_grayShow.GrayLayerNum);

    break;

default:

AfxMessageBox("³ö´íÁË£¡");

break;

}

dEnergy += dEnergy1;

dEntropy  += dEntropy1;

dInertiaQuadrature += dInertiaQuadrature1;

dLocalCalm += dLocalCalm1;

}

}

dEnergy/= (rolltimeH*rolltimeW);

dEntropy/= (rolltimeH*rolltimeW);

dInertiaQuadrature /= (rolltimeH*rolltimeW);

dLocalCalm/= (rolltimeH*rolltimeW);

m_dEnergy= dEnergy;

m_dEntropy= dEntropy;

m_dInertiaQuadrature = dInertiaQuadrature;

m_dLocalCalm= dLocalCalm;

UpdateData(false);

}

4.3.2纹理特征计算的代码

运用欧几里德距离来计算纹理特征差异,四个特征值的差异计算代码如下:

   void CXbwDlg::OnFeatureSimilarity()

{

//根据特征值判断相似度

//基本思想是:在相同的方向选择下,计算各个特征值的欧几里德距离来

//            体现两副图片的纹理特征的差异

double energy = 0.0;

double entroy = 0.0;

double inertiaquadrature = 0.0;

double localcalm = 0.0;

energy = sqrt((EnergyKey - EnergySearch)*(EnergyKey - EnergySearch));

entroy = sqrt((EntropyKey - EntropySearch)*(EntropyKey - EntropySearch));

inertiaquadrature = sqrt((InertiaQuadratureKey - InertiaQuadratureSearch)*

 (InertiaQuadratureKey - InertiaQuadratureSearch));

localcalm = sqrt((LocalCalmKey- LocalCalmSearch)*(LocalCalmKey- LocalCalmSearch));

CSSDlg dlg;

dlg.dEnerg = energy;

dlg.dEntroy = entroy;

dlg.dInerQ = inertiaquadrature;

dlg.dLocalClam = localcalm;

if (IDOK==dlg.DoModal())

{

if(!energy && !entroy && !inertiaquadrature && !localcalm && EnergyKey)

MessageBox("找到此图片,纹理特征匹配为100%!");

}

}

相似度测量的计算代码如下:

double CXbwDlg::Madhosi(CString strNamaFile)

{

CString strTemp;

CxImage imageAsli;

CxImage rfft1;

CxImage ifft1;

int iWidth = 256;

int iHeight = 256;

int iPixelSize = 1; // 1=GrayScale, 3=24bpp, 4=32bpp

int iBlockSize = 16;

int i = iWidth/iBlockSize;

int j = iHeight/iBlockSize;

int iRow;

int iCol;

int iLoopRow;

int iLoopCol;

double *lSignature;

double dTemp;

int iBlockNum = 0;

long lVal1;

BYTE *pImage;

imageAsli.Load(strNamaFile, CXIMAGE_FORMAT_BMP);

if( !imageAsli.IsValid() ) return 1.0;

//缩放图片

imageAsli.Resample(iWidth, iHeight);

//变换缩放后的图片的坐标点

imageAsli.FFT2(&imageAsli, &imageAsli, &rfft1, &ifft1);

lSignature = (double*) malloc(sizeof(double)*i*j);

pImage = rfft1.GetBits();

//计算每幅图像的相似度测量,欧几里德距离

for(iRow = 0; iRow < iHeight; iRow += iBlockSize)

{

for(iCol = 0; iCol < iWidth; iCol += iBlockSize )

{

// Block Processing

lSignature[iBlockNum] = 0.0;

dTemp = 0.0;

for(iLoopRow = 0; iLoopRow < iBlockSize; iLoopRow++ )

{

for(iLoopCol = 0; iLoopCol < iBlockSize; iLoopCol++ )

{

lVal1 = pImage[((iRow+iLoopRow)*iPixelSize*iWidth) + ((iCol+iLoopCol)*iPixelSize)];

dTemp += (double) lVal1;

}

}

lSignature[iBlockNum] = sqrt(dTemp);

iBlockNum++;

}

}

//

// Normalize 归一化

//

dTemp=0.0;

for(i = 0; i < 256; i++ )

{

dTemp += lSignature[i];

}

for(i = 0; i < 256; i++ )

{

lSignature[i] /= dTemp;

}

//

// There are 256 elements for each image. Compare them using Eucliean Distance

// The smaller the value the similiar the image visually

//

dTemp = 0.0;

for(i = 0; i < 256; i++ )

{

dTemp += (m_KeySignature[i]-lSignature[i])*(m_KeySignature[i]-lSignature[i]);

}

//

dTemp = sqrt(dTemp);

//

free(lSignature);

strTemp.Format("%.7f - %s", dTemp,strNamaFile);

m_ListFound.AddString(strTemp);

return dTemp;

}

4.4 实验及结论

4.4.1检索系统的评价指标

图像检索有两个主要的评价指标,即查全率和查准率。设A为图像库中所有和查询图像相关的图像集,B是所有检索到的图像集合,a为一次查询的相关图像数目,b为一次检索过程中所检索到的不相关的图像数目,C为在图像库中和查询图像相关但没有被检索到的图像数目,则查全率和查准率定义为:

查全率=

              (4-1)

查准率=

               (4-2)

4.4.2实验结果及分析

实验所采用的图像数据库是从“brodatz纹理图像库"中挑选的,总共有100幅图像。

1、提取关键图,并显示在Picture控件上。软件截图如下:

2、计算关键图的特征值,在水平0度下的特征值:

3、搜索图像库中的BMP图,并显示相似度测量和路径,相似性度量采用的是欧氏距离法。设两幅图像的特征向量为

,则相似距离d为

                            (4-3)

d值越小表示两幅图像越相似。实验中规定:判断两幅图像是否相似的依据是它们是否属于同一分类。

返回结果的图像

     

     

4、选取一副图片,计算特征值:

5、计算两图片的特征相似度:

,如果纹理特征差异都为0,则谈出消息框:

4.4.3本章小结

本章介绍了检索系统的各个模块和功能,给出了系统的流程图,并对于主要的算法进行了说明。

5 总结与展望

5.1 总结

本文采用纹理来表征图像的基本物理特征,并以此为特征建立了图像检索系统。具体工作如下:

1介绍检索系统的通用框架,检索系统的关键技术,主要包括图像特征提取和相似性度量技术、检索常用的三种查询方式及检索的特点。

2重点介绍了基于灰度共生矩阵的纹理特征提取算法的流程、步骤及注意事项。

3详细阐述了图像检索系统设计与实现,给出了系统的流程图,并介绍了系统的查询模块、特征提取、匹配模块和图像显示模块及其功能。

4采用欧氏距离法作为图像的相似性度量。最后通过实验对给定的图像进行检索,检索结果找出相似图像并按照相似度从大到小排列。

5.2 展望

本文设计并实现了图像检索系统,并获得了比较好的检索效果,但还有待于进一步优化与完善。

1进行综合的多特征检索研究。图像具有多种视觉特征,基于单~特征的检索结果并不是很理想,如能有效地利用多个特征进行检索,必可以改进检索的性能。

2在系统中引入相关反馈机制。检索最终结果的准确与否是由人来判断的,必须将当前以机器为中心的检索转换为可以加入人的交互功能。希望系统通过用户对初始查询结果的交互来自动确定用什么样的特征表示和匹配算法,使查询结果更符合用户的感知需求。

参考文献

[1]章毓晋,基于内容的视觉信息检索.北京科学出版社

[2]吴健康.数字图像分析.人民邮电出版社

[3]赵荣椿.数字图象处理导论.西北工业大学出版社

[4]吕维雪,医学图象处理.上海高等教育出版社

[5]程兵,王莹,郑南宁.基于Markov随机场和FRAME模型的无监督图像分割.中国科学E辑(技术科学)2004.34(4):391-400

[6]罗坛,章毓晋,高永英.基于分析的图像有意义区域提取.计算机学报,2000,23(12):1313—1318

[7]庄越挺,潘云鹤.基于内容的图像检索综述.模式识别与人工智能,1999,12(2):170—172

[8]贾永红.计算机图像处理与分析.武汉:武汉大学出版社,2001.

[9]姚敏等,数字图像处理.北京:机械工业出版社,2006,l:205—206.

[10](美)崔金泰著,小波分析导论,程正兴译,西安交通大学出版社,1995

[11]夏良正.数字图像处理.东南大学出版社,1999

[12]章毓晋.图像工程(上册).北京:清华大学出版社,2000

[13]何斌等.VC++数字图像处理.第2版.北京:人民邮电出版社,2002

[14]李向阳,庄越挺,潘云鹤.基于内容的图像检索技术与系统.计算机研究与发展,

[15]庄越挺,潘云鹤,吴飞编著.网上多媒体信息分析与检索.北京:清华大学出版社,2002

[16]王李冬,邰晓英,巴特尔.基于小波变换纹理分析的医学图像检索[J].中国医疗器械杂志,2006,30(2):102—103.

[17]荆延国,一个基于图像中语义对象的图文双向查阅系统的设计与实现.[大连海事大学硕士学位论文].2000:4-6

[18]王上飞,陈恩红,汪祖媛等.基于支持向量机的图像情感语义注释和检索算法的研究.模式识别与人工智能,2004,17(1):27—33

若能觅得一方喜欢的山水,在空旷的风里,种上淡暖如许,清欢如许。我愿用无尘的诗句,沾染些许晨露,轻叩那些老去的时光,让曾经的你我,重走一遍依旧开满鲜花的小径。时光里的我们,不说话。只是凝望着彼此旧时的模样,任凭花落清溪,任凭日暮烟霞。

  陌上的时光,匆匆如流。指尖,一直贪恋着世间所有的暖香。而那些没有着落过往,早已随风而散。往事已旧,一切,终会在念与不念,忘与不忘之间,莞尔一笑,变得风轻云淡。

  岁月的风,就这样翩跹而过。还好,总有一些不离不弃的相伴,安暖着岁月的荣辱沧桑。然后,在玲珑的小字里尘埃落定。珍惜着,不早也不晚的缘分。愿你永远在我文字的四季,可以与那些草木葳蕤的深情一样,青青又青青。

  纵使某天,错过了所有,只剩下一个人忧伤,也不要怪罪时光。时光里那些牵过的手,给错的爱,都是情不由衷。开始与结束,一样美丽。我们应该,原谅时光,记住爱!

  那些过往里的施与舍,恩与惠,何必计较太多。我们在山水间喂养清风,在草木间描摹明月,云淡风轻一天又一天。任凭年华一去不返,依旧无怨无悔,不负岁月,不负时光。

  那些风花雪月的重逢与离别,终将陨落在时光深处,被过往的烟尘一一覆盖。当时光里,那些被岁月漂白的光阴,再回首时,风住尘香,缘已渺渺,我们也不必遗憾。苍茫处,风景依旧,繁华笙歌,人事无恙。那些散落在流年深处的芬芳,也是依旧静美如初,相宜静好。

  不如,安静着,于寂寂红尘中,为自己开一扇般若门,将一切浮云过往都放逐在红尘之外,只留一颗琉璃心,只守一池为我而开的莲荷,一粥一饭,一笔一墨,闲渡流年。

  未来的路,那么远。从未想过会遇见谁,也从未想过会错过谁。今朝,一壶浊酒,一扑流萤,几许明媚,几许嫣然,我依然是那个朴素的琉璃女子。不敷衍,不趋势,简单的行走,简单的生活,简单的爱与被爱。

  当时光里,那些被光阴漂白的过往,再回首时,风住尘香,缘已渺渺,我们也不必遗憾。苍茫处,风景依旧,繁华笙歌,人事无恙。那些散落在流年深处的芬芳,也是依旧静美如初,相宜静好。

  若是,光阴辞去旧年,初心不改。我依然愿意,在心里种半亩花田,在文字里养一个春天。这样,无论你来不来,在不在,我都一样安静的开落。那样,你偶尔回眸,看到的风景,都是春天般,含着香,透着暖。

  喜欢让心在那一刻,静如菩提明镜。那么,且许我一程走旧的岁月,温一壶经年的雨水,煮一段曾经的往事,不提花开,不说花落。就让那所有的喜怒哀乐,淡暖清欢,如茶般,氤氲出缕缕清香。而你我,亦愈来愈通透,有了茶的芬芳,即使喝到无味,亦有一股回甘,令人回味留恋。

  桃花酿酒,醉了光阴。春水煎茶,赴了风雅。我人生四季,永远是那一抹剔透的琉璃色,不必虚张,不必声势,只做安静的自己,善待生命里遇见的一切,感恩并珍重,且温柔的对待。

  若有一天,我们隔着茫茫人海,穿过人流车流,你是否会一眼将我认出,并且微笑着喊出我的名字。

  若有一天,经年的路口,人烟渺渺。你是否会收集所有花香,用思念为我铺一条洒满落花的小路。那些失落的前尘往事,你是否愿意陪我一一捡拾,然后一起装帧成流年里最美的那一册画卷。

  人生云水一梦,寻一份清幽,养一颗禅心。那些迎面而来的风景,让我们微笑着迎接,并且一一纳入流年的画卷。

  愿世间美好,都是恰逢其时。至于那些聚了又散的人或事,淡记就好。或许,终有一天,心归宁静,从容朴素。

  那么,我便在南山寻一处清幽。春来,采一壶桃花,酿一壶三生三世。夏来,养一池荷,掬一捧莲子醉清风。秋来,邀一缕秋风,修篱种菊,种下一个人的浮世清欢,种下一些心悦的小情绪。

曾经的往事,不提花开,不说花落。就让那所有的喜怒哀乐,淡暖清欢,如茶般,氤氲出缕缕清香。而你我,亦愈来愈通透,有了茶的芬芳,即使喝到无味,亦有一股回甘,令人回味留恋。

  桃花酿酒,醉了光阴。春水煎茶,赴了风雅。我人生四季,永远是那一抹剔透的琉璃色,不必虚张,不必声势,只做安静的自己,善待生命里遇见的一切,感恩并珍重,且温柔的对待。

  若有一天,我们隔着茫茫人海,穿过人流车流,你是否会一眼将我认出,并且微笑着喊出我的名字。

  若有一天,经年的路口,人烟渺渺。你是否会收集所有花香,用思念为我铺一条洒满落花的小路。那些失落的前尘往事,你是否愿意陪我一一捡拾,然后一起装帧成流年里最美的那一册画卷。

  人生云水一梦,寻一份清幽,养一颗禅心。那些迎面而来的风景,让我们微笑着迎接,并且一一纳入流年的画卷。

  愿世间美好,都是恰逢其时。至于那些聚了又散的人或事,淡记就好。或许,终有一天,心归宁静,从容朴素。

  那么,我便在南山寻一处清幽。春来,采一壶桃花,酿一壶三生三世。夏来,养一池荷,掬一捧莲子醉清风。秋来,邀一缕秋风,修篱种菊,种下一个人的浮世清欢,种下一些心悦的小情绪。冬来,红泥小炉煮一杯绿蚁酒,邀月,邀你,浅酌,微醺,共守流年。

  • 25
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于纹理的图像检索是一种常用的图像检索方法,它通过提取图像的纹理特征来实现图像的相似性比较和检索。在C++中,可以使用OpenCV库来实现基于纹理的图像检索。 下面是一个基于纹理的图像检索的C++示例代码: ```cpp #include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; // 计算图像的纹理特征 Mat calculateTextureFeatures(Mat image) { // 将图像转换为灰度图像 Mat grayImage; cvtColor(image, grayImage, COLOR_BGR2GRAY); // 定义Gabor滤波器参数 int numScales = 4; // 尺度数 int numOrientations = 6; // 方向数 // 创建Gabor滤波器 vector<Mat> gaborFilters; for (int scale = 0; scale < numScales; scale++) { for (int orientation = 0; orientation < numOrientations; orientation++) { double theta = orientation * CV_PI / numOrientations; double sigma = pow(2.0, scale) * 2.0; double lambda = CV_PI / 2.0; double gamma = 0.5; Mat gaborFilter = getGaborKernel(Size(7, 7), sigma, theta, lambda, gamma); gaborFilters.push_back(gaborFilter); } } // 对图像进行滤波 Mat textureFeatures; for (int i = 0; i < gaborFilters.size(); i++) { Mat filteredImage; filter2D(grayImage, filteredImage, CV_32F, gaborFilters[i]); textureFeatures.push_back(filteredImage); } // 归一化纹理特征 normalize(textureFeatures, textureFeatures, 0, 255, NORM_MINMAX, CV_8U); return textureFeatures; } // 图像检索 void imageRetrieval(Mat queryImage, vector<Mat> databaseImages) { // 计算查询图像的纹理特征 Mat queryFeatures = calculateTextureFeatures(queryImage); // 计算数据库图像的纹理特征 vector<Mat> databaseFeatures; for (int i = 0; i < databaseImages.size(); i++) { Mat databaseFeatures = calculateTextureFeatures(databaseImages[i]); databaseFeatures.push_back(databaseFeatures); } // 计算查询图像与数据库图像的相似性 vector<double> similarities; for (int i = 0; i < databaseFeatures.size(); i++) { double similarity = compareHist(queryFeatures, databaseFeatures[i], HISTCMP_CORREL); similarities.push_back(similarity); } // 根据相似性排序数据库图像 vector<int> sortedIndices; for (int i = 0; i < similarities.size(); i++) { sortedIndices.push_back(i); } sort(sortedIndices.begin(), sortedIndices.end(), [&](int a, int b) { return similarities[a] > similarities[b]; }); // 输出相似性最高的图像 for (int i = 0; i < sortedIndices.size(); i++) { int index = sortedIndices[i]; cout << "Similarity with database image " << index << ": " << similarities[index] << endl; imshow("Database Image " + to_string(index), databaseImages[index]); } waitKey(0); } int main() { // 读取查询图像 Mat queryImage = imread("query_image.jpg"); // 读取数据库图像 vector<Mat> databaseImages; databaseImages.push_back(imread("database_image1.jpg")); databaseImages.push_back(imread("database_image2.jpg")); databaseImages.push_back(imread("database_image3.jpg")); // 进行图像检索 imageRetrieval(queryImage, databaseImages); return 0; } ``` 这段代码演示了如何使用OpenCV库实现基于纹理的图像检索。首先,通过Gabor滤波器提取图像的纹理特征,然后计算查询图像与数据库图像的相似性,并根据相似性对数据库图像进行排序,最后输出相似性最高的图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值