本次实训按照指导书要求,设计并实现了一个简单的图像检索系统,实现了从颜色特征、纹理特征、形状特征三个方面对图像进行匹配。其中颜色特征是提取自RGB颜色空间的颜色矩;纹理特征是来自图像0度、45度、90度、135度四个角度的灰度共生矩阵的纹理一致性、纹理对比度、纹理熵,纹理相关性的期望和标准差;形状特征是采用形状不变矩法提取了图像Hu不变矩u1~u7和离心率e。在图像匹配方面采用了欧氏距离和余弦定理计算相似度。用户在使用该系统时可以设置单特征或某权重比例下的多特征检索,系统将会自动对源图像进行处理并返回库图中相似度最高的图片。本文将从系统设计与实现和结果分析方面重点讲述此次实训成果。
关键词:图像检索系统;颜色矩;灰度共生矩阵;形状不变矩
基于内容的图像检索系统(Content Based Image Retrieval, 以下简称 CBIR),是计算机视觉领域中关注大规模数字图像内容检索的研究分支。典型的CBIR系统,允许用户输入一张图像,在图像数据库(或本地机、或网络)中查找具有相同或相似内容的其它图片。本实训的基本功能要求是实现基于视觉特征的图像检索。具体包括:
(1)实现基于颜色信息的图像检索,可通过颜色直方图、颜色矩、颜色一致性矢量等方法来实现。
(2)实现基于纹理特征的图像检索,可从四个方面进行:统计法、结构法、模型法、频谱法。
(3)实现基于形状特征的图像检索,可分别从图像的边缘信息和区域信息来实现。
(4)实现基于综合信息的图像检索。
该项目的实训内容主要包括:
1.能够利用颜色特征实时从图像库中检索出和输入图像相同或相似的图像,按照相似度大小排列,并显示在系统中。
2.能够利用纹理特征实时从图像库中检索出和输入图像相同或相似的图像,按照相似度大小排列,显示在系统中。
3.能够利用形状特征实时从图像库中检索出和输入图像相同或相似的图像,按照相似度大小排列,并显示在系统中。
Java
MySQL
加利福尼亚理工学院101类图像数据库,包含101个类别,每个类别约40至800张图像,总共9144张。每个图像的大小大约为300 x 200像素。
基于内容的图像检索系统将对载入的图像数据库中的图像进行分析,提取其颜色、形状、纹理三种特征,建立特征索引, 存储于特征数据库中。检索时,用户提交查询的源图像,通过用户接口设置查询条件,可以选择一种或几种的特征组合来表示,然后在图像数据库中提取出查询到的所需关联图像,按照相似度从大到小的顺序,反馈给用户。用户可根据自己的满意程度,选择是否修改查询条件,继续查询,以达到满意的查询结果。
基于内容的图像检索系统框架如图 1 所示。系统的核心是图像特征数据库。图像特征是利用特征提取算法从图像本身提取得到, 并用于计算图像之间的相似度计算。系统框架应主要包含以下几个基本功能模块:检索方法设置、检索结果浏览、数据库管理维护等。其逻辑结构如图 2 所示。
图2 基于内容的图像检索系统逻辑模型
基于实训要求,用户界面应包括:载入数据库、选择需检索的源图像、选择检索方式和检索结果浏览等内容,如图3。
用户选中数据集所存放的位置后,点击加载,系统将自动查找该位置下的所有jpg文件,记录其绝对路径,并进行颜色、纹理、形状特征的提取,保存至txt文件后,再存入相关数据库。
3.2选择需检索的源图像
用户选中需要检索的源图像后,系统界面将自动出现该图像,此后用户可以选择检索方式。
检索方式包括基于颜色特征检索、基于纹理特征检索、基于形状特征检索和用户设置的基于多特征的综合检索。其中综合检索,需要用户设置每种特征在相似度计算时的所占权重。系统将根据用户选择的检索方式,进行源图像的特征计算以及与图库中图像的相似度计算。
系统在相似度计算后,将根据相似度的结果选择与源图像最为匹配的12张图象依次显示在用户界面上,并显示这些图像的存放位置。
图3 图像检索系统界面
图像数据库包括两个部分:图像库和特征库。图像库是图像的集合,存储数字化的图像信息,具体在系统实现中,可以存放图像的路径和文件名称来表示;特征库存储图像中提取出的特征表达的相关信息,并为提取出的各个特征简历索引,且和图像间存在一一对应的关系。
基于实训要求和考虑到移植问题,设计先将图像数据存入txt文件后,再读取txt文件数据存入数据库,此步骤需要先完成图库图像特征提取后,再来构建数据库。
图4 保存图像数据的文件
path.txt记录了图片的绝对路径;
color.txt记录了利用颜色矩法提取的颜色特征值,如图5;
texture.txt记录了利用灰度共生矩阵提取的纹理特征值,如图6;
shape.txt记录了利用形状不变矩法提取的形状特征值,如图7。
图7 shape.txt内容
图像是图像元灰度值的纪录, 以行列数据矩阵表示, 一般信息量比较大。直接读取图像的信息存入数据库中, 不但增加了数据库的容量, 而且增加了计算机的负担。若直接根据图像的路径名称建立图像地址库, 可有效提高计算机的计算效率。当需要提取图像时, 再根据图像的地址, 对图像进行检索, 平时, 只需对图像的基本信息进行管理。建立数图像数据库前,需要先扫描图库目录下的图片,并将图片路径保存至path.txt文件,再读取该文件将路径信息保存至数据库。
设有paths表顺序存放图片的id和路径,图片路径表(paths)表字段内容如下。
字段名称 | 字段描述 | 字段类型 | 备注 |
---|---|---|---|
id | 数据库中的编号 | int | Primary Key |
path | 储存图像的位置 | string | NOT NULL |
由于图库中有大量的图像,每一张图像中有许多像素点,每个像素点又有许多特征值,如果都将其放入内存中,是不可能实现的。因此本实训项目只将提取出的特征值存放在数据库中。
设有3张表分别记录图片的颜色、纹理、形状特征:(根据特征方法不同,提取的特征值数量不同)
颜色特征表(color)
字段名称 | 字段描述 | 字段类型 | 备注 |
---|---|---|---|
id | 数据库中的编号 | int | Primary Key |
color1 | 颜色特征值 | double | NOT NULL |
color2 | 颜色特征值 | double | NOT NULL |
color3 | 颜色特征值 | double | NOT NULL |
color4 | 颜色特征值 | double | NOT NULL |
color5 | 颜色特征值 | double | NOT NULL |
color6 | 颜色特征值 | double | NOT NULL |
color7 | 颜色特征值 | double | NOT NULL |
color8 | 颜色特征值 | double | NOT NULL |
color9 | 颜色特征值 | double | NOT NULL |
纹理特征表(texture)
字段名称 | 字段描述 | 字段类型 | 备注 |
---|---|---|---|
id | 数据库中的编号 | int | Primary Key |
texture1 | 纹理特征值 | double | NOT NULL |
texture2 | 纹理特征值 | double | NOT NULL |
texture3 | 纹理特征值 | double | NOT NULL |
texture4 | 纹理特征值 | double | NOT NULL |
texture5 | 纹理特征值 | double | NOT NULL |
texture6 | 纹理特征值 | double | NOT NULL |
texture7 | 纹理特征值 | double | NOT NULL |
texture8 | 纹理特征值 | double | NOT NULL |
形状特征表(color)
字段名称 | 字段描述 | 字段类型 | 备注 |
---|---|---|---|
id | 数据库中的编号 | int | Primary Key |
shape1 | 形状特征值 | double | NOT NULL |
shape2 | 形状特征值 | double | NOT NULL |
shape3 | 形状特征值 | double | NOT NULL |
shape4 | 形状特征值 | double | NOT NULL |
shape5 | 形状特征值 | double | NOT NULL |
shape6 | 形状特征值 | double | NOT NULL |
shape7 | 形状特征值 | double | NOT NULL |
shape8 | 形状特征值 | double | NOT NULL |
特征提取是计算机视觉和图像处理中的一个概念。它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。特征的好坏对泛化性能有至关重要的影响。由于使用的图像集大小大约都在300*200像素,没有做统一的图像预处理,但在一些特征提取时做了一些处理操作。
颜色特征是在图像检索中应用最为广泛的视觉特征,主要原因在于颜色往往和图像中所包含的物体或场景十分相关。此外, 颜色特征对图像本身的尺寸、方向、视角的依赖性较小,从而具有较高的检索性。本次实训实现了利用颜色矩法提取图像的颜色特征,颜色矩是一种有效的颜色特征,该方法利用线性代数中矩的概念,将图像中的颜色分布用其矩表示。利用颜色一阶矩(平均值Average)、颜色二阶矩(方差Variance)和颜色三阶矩(偏斜度Skewness)来描述颜色分布。与颜色直方图不同,利用颜色矩进行图像描述无需量化图像特征。由于每个像素具有颜色空间的三个颜色通道,因此图像的颜色矩有9个分量。
提取算法步骤:
(1)图像预处理,采用直方图均衡化方法实现图像对比度增强,利用了OpenCV中的函数equalizeHist实现;
(2)获取图像三个颜色通道上的像素值;
(3)分别计算三个颜色通道上所有像素的均值、方差、偏斜度,其计算公式为:
N 表示图片中的总的像素数,pij表示第i个颜色通道在第j个图像像素值,Ei表示第i个颜色通道上所有像素的均值,σi表示第i个颜色通道上所有像素的标准差,si表示第i个颜色通道上所有像素的斜度(skewness)的3次方根。
(4)将计算得到的9个特征值存入color.txt文件,存入特征数据库。
纹理特征是一种不依赖于颜色或亮度的反映图像中同质现象的视觉特征。纹理特征包含了 物体表面结构组织排列的重要信息以及它们与周围环境的联系。用户可通过提交包含有某种纹理的图像来查找含有相似纹理的其他图像。从人类的感知经验出发, 纹理特征主要有粗糙性、方向性和对比度。纹理分析方法,大致可分为两类:(1)统计方法。用于分析像木纹、沙地、 草坪等细致而不规则的物体,并根据关于像素间灰度的统计性质对纹理规定特征及特征与参数 间的关系。(2)结构方法。适于像布料的印刷图案或砖瓦等一类元素组成的纹理及其排列比较规则的图案, 然后根据纹理基元及其排列规则来描述纹理的结构及特征、特征与参数间的关系。本文实现了利用灰度共生矩阵来提取图像纹理特征,灰度共生矩阵灰度共生矩阵是图像中相距为D的两个灰度像素同时出现的联合概率分布。通过计算灰度图像得到它的共生矩阵,然后透过计算这个共生矩阵得到矩阵的部分特征值,来分别代表图像的某些纹理特征。灰度共生矩阵能反映图像灰度关于方向、相邻间隔、变化幅度的综合信息,它是分析图像的局部模式和它们排列规则的基础。
提取算法步骤:
(1)图像灰度化,调用OpenCV的cvtColor函数完成,得到图像的灰度像素矩阵;
(2)降低图像灰度等级,把图像 256 个灰度级按顺序分为 8 个区间,即像素值除以32取整;
(3)然后获得图像 0 度,45 度,90 度,135 度四个方向的灰度共生矩阵;
(4)求每个灰度共生矩阵的纹理一致性,纹理对比度,纹理熵,纹理相关性;
(5)求每个灰度共生矩阵的四个值的期望和标准差,得到 8 个特征值;
(6)将特征值存放在图像特征数据库中。
形状是描述图像内容的本质特征, 在实际检索中, 很多查询可能并不针对图像的颜色, 因为同一物体可能有各种不同的颜色, 但其形状总是相似的。如检索某辆汽车的图像,汽车可 以是红的、绿的等, 但形状决不会像飞机的外形。另外, 对于图形来说, 形状是它唯一重要的特征。目前用于图像检索的形状描述方法主要有两类:基于边缘和基于区域的形状方法。 基于边缘的形状特征提取是利用图像的边缘信息,在边缘检测的基础上,用面积、周长、偏 心率、角点、链码、兴趣点、傅里叶描述子、矩描述子等特征来描述物体的形状,适用于图 像边缘较清晰、容易获取的图像。本文利用形状不变矩法来提取图象的形状特征。
提取算法步骤:
(1)图像灰度化 Gray=0.30R+0.59G+0.11B;
(2)用中值滤波算法对图像进行平滑滤波,用于消除噪声干扰,其中需要用到排序算法, 11 将 33 窗口的像素值进行排序取中间值;
(3)用 sobel 算子对图像进行锐化;
Sobel 算子:
(4)对锐化后的图像用迭代阈值法进行二值化;
选择一个初始阈值 t1,根据 t1 将图像分割为 G1 和 G2 两部分,G1 包含所有小于等于 t1 的 像素,G2 包含所有大于 t1
像素;
分别求出 G1 和 G2 的平均灰度值 u1 和 u2;
计算新的阈值 t2=( u1+ u2)/2;
如果| t1- t2|<=t0(t0 为预先指定的很小的正数),即迭代过程中前后两次阈很接近时, 中止迭代,否则 t1=
t2,重复上述过程。
(5)计算图像的 Hu 不变矩和离心率作为特征值,并对其进行归一化;
(6)将特征值存如图像特征数据库中。
在基于内容的图像检索中,两幅图像是否相似是指图像的特征向量是否相似。常用的图像相似性测度通常采用几何模型,将图像特征看作是向量空间中的点,通过计算两个点之间 的接近程度来衡量图像特征之间的相似度。基于内容的图像检索算法主要有最邻近查询算法和区间查询算法,它们都依赖于距离函数或者相似性度量。本文采用的是欧氏距离和余弦函数来进行相似度计算。
匹配算法步骤:
(1)按照前文方法,计算出待检索图像的特征;
(2)利用距离度量 函数计算待检索图像特征和图像特征库间的距离;
(3)对计算出的距离值按照相似性大小进行高低排序;
(4)对检索出的结果图像进行输出显示。
欧氏距离:指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离),在计算相似度时,值越小说明两个图片越相似。
余弦定理:通过夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似。
飞机由于场景不同导致某些图片中颜色较多分布教杂,下面是对两张飞机图像进行测试,第一张颜色多样,第二张颜色较单一:
基于颜色的图像检索,是利用颜色矩实现的,颜色矩是一种简单有效的颜色特征表示方法,但受图片的颜色影响较大,对颜色比较单一且分布均匀的图像检索效果更为准确。
该类图中纹理较多,但受角度影响,不同角度拍摄的图像中纹理差别较大,从测试结果可以看出纹理较为相似的前几张图片匹配较为准确,但图库中纹理差别较大的数据未能检索出来。
飞机的轮廓都较为相似,但由于存在场景的不同,会受其所在场景中物体影响其纹理特征的数值,下面是两张飞机检索,第一张图中背景包含了一些草树,第二张背景较干净:
该类特征是利用灰度共生矩阵提取的,它对灰度的分布特性是通过对灰度值不同的像素的分布来表示的,所以对那些灰度比较集中,轮廓比较鲜明的图像的识别能力更强。
章鱼由于触手很多,所以形状较为丰富,下面第一张图展示了图库中的图像数据,第二、三张两种不同形状章鱼的测试效果,可以看出该系统可以很好的检索出与形状相同的图片,但同类中形状差别较大的图像检索效果较差:
飞机的形状较为固定且单一,下面两张不同飞机图像的测试效果都较好;
基于形状特征的检索,能够准确检索出形状相同的图像,对形状较为丰富的图像分别能力较低,适用于形状较单一的图像。
根据上面三种测试效果来看,所有图像并不能适用于某种特定方法的检索,所以设计了一种综合以上三种的检索方式,用户可以自己设置每种特征在相似度计算时权重占比,以期达到较好的检索效果,如上面飞机测试中的第一张图像,在颜色和纹理特征方面效果并不是很好,可以根据上面的效果,在设置权重时将效果较差的特征权重设置较低,下面时该飞机图像的不同权重的测试结果:
由上面测试效果可以看出,当颜色和形状权重较大时如颜色0.4、纹理0.2 、形状0.4,可以较好的检测出在类似场景下的飞机图像,比单特征检索时效果更好。
基于颜色矩方法的检索,受图片颜色影响较大,适用于颜色较为单一的图像检索;基于灰度共生矩阵方法的检索,对灰度比较集中,轮廓比较鲜明的图像的识别能力更强;基于形状不变矩方法的检索,对形状较为丰富的图像分别能力较低,但能够准确检索出形状相同的图像;综合检索可以利用图片特点,选择每种特征在不同权重情况下的检索,可以在某种特征检索效果较好的基础上提升效果。