基于CBIR的服装款式图检索
引言
1.1 背景
随着工业4.0升级浪潮的到来,作为服装生产和消费大国,我国的服装行业正在经历产业转型升级的考验。服装消费者的消费心理也正在向个性化等更高等级的需求发展。
在传统的产销模式中,服装款式生产厂商的
师批量化设计生产的,无法满足部分消费者的个性化需求。此外,面对海量的现有服装款式,消费者如何挑选到预期的款式信息,也是一个有挑战的技术难
。
而计算机图像处理技术的发展支撑了服装设计、生产、销售密切相关的相关的领域的技术向着智能化发展,例如虚拟试衣系统、虚拟购物Buy+系统等等,而这系统的基础支撑算法和技术都已经相对成熟。
为此,本文以满足消费者个性化需求出发,采用计算图像内容识别检索技术,设计和开发了一款服装款式图的特征提取和检索系统。
1.2 研究内容
针对本课题的研究内容,以本项目为例,确定基本的研究内容如下所述:
(1)基于内容识别的服装特征提取和匹配方法研究。
(2)完成产品需求的分析和功能模块的设计。
(3)完成基于MATLAB的系统框架搭建以及系统原型实现。
第2章图像内容的多特征描述
基于内容的图像检索目前主要使用图像的颜色、 纹理、 形状和空间关系等中低层特征进行检索。 这几种视觉特征尽管不能完全描述更高层的语义内容,但其之间存在着一定的关联性,每种视觉特征都具有多种描述方式 ,每种方式都从不同角度对视觉特征进行了可算性描述,利用这几种中低层视觉特征的检索算法,不仅可以检索到视觉上相似的图像,还会包含一些语义相关的图像。
2.1 图像颜色特征描述
颜色是图像检索中使用最广泛的视觉特征,它和图像中所包含的物体和场景关系非常密切,并且与其他的视觉特征相比,受旋转、平移和尺度变化等的影响较小,具有较高的稳定性。
颜色直方图是最常用的表达颜色特征的方法,它所描述的是不同颜色在整幅图像中所占的比例,计算图像的颜色分布,即各种颜色出现的概率,并利用直方图相交算法计算图像之间的相似度,而不关心每种颜色所处的空间位置,所以它并没有识别图像中的对象。 直方图比较适合用于描述那些难以进行对象识别且不需要考虑颜色空间位置的图像。
图像的匹配方法目前有很多,如何用数值来有效的表示图像在颜色上的相似度,这便是图像的相似性度量问题[2]。 在模式识别技术中,特征的相似性度量一般采用距离法,即用特征向量的空间距离来表示。
在直方图检索中,通过对直方图之间的距离的设定,当它们的距离小于给定的阈值时,即认为符合检索结果。 常用的距离度量方法有多种,其中 L-1 度量法,图像 I 和 H 之间的距离可定义为
(2-1)
其中 i 和 h 分别是落入图像 I 和 H 中的颜色区间 l 的像素数。另外常用的还有欧式距离、 马氏距离、 二次距离等。
由于颜色直方图不能反映空间信息,Strickcr 提出的颜色矩(Color Moments)可以弥补这个缺陷,其原理是先将图像分割为适当的分块再用颜色直方图和颜色矩提取每个分块的局部颜色特征。 它对于只包含有明确对象的图像特别有效,与其他颜色特征相比较简洁,但同时也可能降低对图像的分辨能力,因此经常在其他颜色特征之前使用,以缩小其他颜色特征的搜索空间。
除了对颜色直方图法的改进以外,还有一些颜色特征提取方法也加入了颜色的空间信息[3],如颜色相关向量法就通过将属于不同颜色区域的像素分为相关和不相关两类来加入了一定的空间信息。 另一种是颜色聚类法,将图像中的颜色按照预先设定的误差来进行聚类,这样就可以通过颜色所占的比例反映区域颜色的分布。
2.2 图像纹理特征描述
纹理特征和颜色特征一样,描述的是图像的全局分布特性。它描述了图像事物表面的纹路分布,但是纹理特征不依赖色彩或者亮度,反映了图像灰度模式的空间分布,包含关于表面的结构安排及周围环境的关系。
纹理的表示方法可以分为两类:结构法和统计法。 结构化的方法通过定义结构化的原语和它们的位置
描述纹理,比较适用于处理纹理特征十分规则的图像。 统计的方法包括 Tamura 纹理特征、共生矩阵、分形模型、马尔可夫随机场、小波变换、Gabor 变换等,这些方法通过统计图像强度的分布情况来描述图像的纹理特征,常被有效利用于很多基于内容的图像检索系统中。
20 世纪 90 年代初,研究人员开始使用小波变换及其理论框架研究纹理表示。 用子带小波中提取的统计量作为纹理特征,采用树结构小波变换提取中带特征来进一步提高分类的准确率,用共生矩阵和小波变换来分析纹理。 对不同小波变换表示的纹理特征进行评估,例如树结构小波变换、正交和双正交小波变换以及 Gabor 小波变换,发现 Gabor 小波变换最符合人类视觉感知特性。
因此针对某些特殊的图像库,纹理特征是比其他视觉特征更加适合的一种图像内容信息描述方法。纹理特征也是CBIR系统广泛使用的一种视觉特征,通过纹理特征表述图像内容信息,以检索类似纹理分布的图像。
纹理特征的缺点是当图像的分辨率变化不大的时候,所计算出来的纹理可能会有较大的偏差。区分纹理的关键在于纹路的粗细、疏密、形状等,当这些分辨信息之间相差不大的时候,通常的纹理特征只是描述图像展示的表面纹理的统计分布,很难准确地反映出人视觉感觉上细节处纹理之间的差别。
2.3 图像形状特征描述
图像经过边缘提取和图像分割,就会得到对象的边缘和区域,进而获得对象的形状。 基于形状的检索技术的关键是形状的表示和匹配,目前的检索方法大多围绕着从形状的边缘特征和形状的区域特征建立图像索引。 在二维图像空间中,形状通常被认为是一条封闭的轮廓曲线所包围的区域,所以对形状的描述涉及到对轮廓边界的描述以及对这个边界所包围区域的描述。 根据采用的信息是形状的边界还是形状的内
部,其描述方法可以分为两种:一种是基于边界的;一种是基于区域的。 前者仅使用形状外边界,而后者则用了整个形状的区域信息。
基于边界的形状特征提取往往是抽取图像的轮廓特征,这类方法有直线段描述、样条拟合曲线、傅立叶描述子等[4],傅里叶描述子的基本思想是用对图像进行傅里叶变换得到的边界作为形状描述。 其中一个优点就是把二维问题简化为一维问题。 傅里叶变换的高频分量对应细节而低频分量对应总体形状。 所以可以只用一些对应低频分量的傅里叶系数来近似描述边界形状。 基于区域的形状特征提取主要是指各种矩技术,矩技术具有数学上的简明性、多样化等特点,形状特征提取通过使用图像分割算法将一幅图像分解为若干对象区域。 这种对象级的表示更接近于人类视觉系统的理解,但由于自动获取对象区域的形状十分困难,仍然需要依赖于人工对图像进行分割、提取目标,还不能实现自动提取形状特征的功能,并且从不同的视角获得的形状可能会有很大差别,为了准确进行形状匹配,需要解决平移、 缩放、 旋转中的不变性问题。 所以形状特征一般仅限于细节较为简单的物体,在目前的检索系统中使用最多的仍然是颜色和纹理特征,因为人眼对这些特征比较敏感,提取方法也相对比较简单。
2.4 图像空间特征描述
颜色、纹理和形状等特征反映的是图像的整体特征,没有体现图像内对象之间的空间关系,如拓扑、方位、距离等。 在某些基于内容的图像检索系统中,用户通过交互界面提供的绘图工具简单描绘出示例图像,希望检索结果中对象间的空间关系和示例图像中的类似。 基于空间关系进行图像检索时,首先对图像进行自动分割,划分出图像中所包含的对象或颜色区域;然后定义拓扑、方位、距离等各种空间关系;最后根据这些定义提取出每幅图像的空间关系特征向量。 系统还会为这些特征向量建立索引,检索时会根据相应的相似性匹配准则,利用索引检索出具有相似空间关系的图像。
基于空间关系特征检索的步骤:1)将图像数据库中的所有图像映射为多维特征空间的点,这种映射是通过最初在数据库中为每幅图像构建一个 ARG(属性关系图)来完成的。2)对应每种相似性准则来定义一个距离度量。 由于检索时基于拓扑、方位和距离共三种相似性准则来完成的,所以最终的距离度量是这三个部分的聚集,可以根据情况设置各部分的权重。 3)建立多维特征点的索引(如 R 树)。4)将所
查询的图像映射到特征空间的一个点或一个区域,然后选取与查询点靠近或者位于查询区域范围内的点。5)作为检索结果,返回选择点所对应的图像。
以上四种特征在应用于图像检索时各有其优点和缺点。 颜色特征侧重于图像整体信息的描述,对图像的方向、大小等变化不敏感,因此不能捕捉图像中对象的局部特征。 纹理特征更偏重于局部,在模式匹配中具有较大的优越性,不会因为局部的偏差而无法匹配成功,且其具有旋转不变性。 但是纹理只描述物体表面的特性,并不反映物体的本质属性,当图像的分辨率发生变化时,计算出的纹理可能会有较大偏差。
基于形状特征的检索可以比较有效地利用图像中具体的目标进行检索,但是检索方法目前还缺乏较完善的数学模型。 空间关系特征的使用能够更好的描述图像的内容,但在视觉应用中,它不能有效地表达场景信息,为了保证有较好的效果,还需结合其他特征进行检索。
综合利用颜色、纹理、形状和空间关系特征进行检索可以两两结合,也可以使用两种以上的特征来完成。 如在颜色特征的基础上加上纹理特征可弥补缺乏空间分布信息的不足又能保留颜色特征计算简便的优点,加上形状特征不仅可描述图像的整体彩色性质还可以描述目标局部的彩色性质。 综合特征检索可以达到不同特征优势互补的效果,还可以提高检索的灵活性和系统的性能,满足实际应用的需求。
图像特征相似度匹配方法
基于文本的检索方法采用的是文本内容的精确匹配,而在基于内容的图像检索的过程,是通过计算查询图像与候选图像之间视觉特征向量的相似度来完成,是模糊匹配。采用各种图像特征描述算法,将图像的颜色、纹理、形状等特征提取出来并且形成特征向量以后,就可以用这些特征向量来代表相应的图像,然后进行图像相似度的衡量。 因此,一个稳定的相似度计算方式与特征提取方法一样,都会对图像检索结果产生很大的影响。
因此,定义一个合适的视觉特征相似度度量方法对检索的效果有很大的影响。由于上一章中的视觉特征人都可以表示成向量的形式,常用的相似度方法都是向量空间模型,即将视觉特征看作是向量空间中的点,通过计算两个点之间的接近程度来衡量图像特征间的相似度。
2.5 L1距离和L2距离
如果图像特征的各分量之间是正交无关的,各维度的重要程度相同,两个特征向量A和B之间距离可以用L1距离或者L2距离(也称为欧拉距离)来度量。其中L1距离可以表示为:
(3-1)
其中D是特征向量的维数。类似地L2可以表示为
(3-1-1)
2.6 标准欧氏距离
欧几里德距离Euclidean distance但也有明显的缺点。
1.它将样品的不同属性(即各指标或各变量)之间的差别等同看待,这一点有时不能满足实际要求。2.它没有考虑各变量的数量级(量纲),容易犯大数吃小数的毛病。所以,可以先对原始数据进行规范化处理再进行距离计算。
标准化欧氏距离是针对简单欧氏距离的缺点而作的一种改进方案。标准欧氏距离的思路:先将各个分量都“标准化”到均值、方差相,样本集的标准化过程(standardization)用公式描述就是:
标准化后的值 = ( 标准化前的值 -分量的均值 ) /分量的标准差。
(3-2)
2.7 马氏距离
如果特征向量的各个分量间具有相关性或者具有不同的权重,可以采用马氏距离(Mahalanobis distan
ce)来计算特征之间的相似度。马氏距离是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的(scale-invariant),即独立于测量尺度。对于一个均值为μ,协方差矩阵为Σ的多变量向量,其马氏距离为sqrt( (x-μ)'Σ^(-1)(x-μ) )。
(3-3)
马氏优缺点:
1)马氏距离的计算是建立在总体样本的基础上的,因为C是由总样本计算而来,所以马氏距离的计算是不稳定的;
2)在计算马氏距离过程中,要求总体样本数大于样本的维数。
3)协方差矩阵的逆矩阵可能不存在
2.8 余弦距离
余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量。
向量,是多维空间中有方向的线段,如果两个向量的方向一致,即夹角接近零,那么这两个向量就相近。而要确定两个向量方向是否一致,这就要用到余弦定理计算向量的夹角。
余弦定理描述了三角形中任何一个夹角和三个边的关系。给定三角形的三条边,可以使用余弦定理求出三角形各个角的角度。假定三角形的三条边为a,b和c,对应的三个角为A,B和C,那么角A的余弦为:
第3章系统设计与实现
3.1 需求分析
3.1.1 系统开发目的
实现一个能提供基于图像内容的服装款式检索原型系统,作为算法研究平台为后续的其他科研及实际生产工作奠定基础。
3.1.2 系统概述
1. 系统名称:基于CBIR的服装款式图检索系统
2. 本系统使用范围:在PC端实现基于服装款式图的颜色、纹理、形状等内容特征的图像检索系统。
3. 软件描述:本软件以文件目录形式存放待检索图像数据,以Matlab的*.mat数据集文件作为保存图像特征集的后台数据库,通过选择一幅示例图像,用户可以检索所选择的图像数据库目录中与示例图像在指定的相似度方法下最相似的图像集合。并预留了一些分析工具。
4. 软件功能
a.通过图像预处理模块对图像进行为了适应后续特征提取的统一化预处理处理。
b.通过特征提取模块提取图像的多种特征,并集成为多维度综合特征,存入数据集。
c.选择待查询图像可在图像集合中检索到候选图像。
d. 操作简单直观,可以调整检索参数满足研究需求。
3.1.3 系统具体需求
菜单栏需求:
在系统UI的顶部显示菜单栏。
在菜单栏需要提供检索图像必须的选择数据集,选择待检索目标图像这两个菜单选项,同时也需要提供预处理必须的选择查询图像库以及对查询图像库创建特征数据集的菜单选项。
待检索图像预览需求:
在UI的主要区域显示待检索图像,供用户确认。
检索结果查看列表需求:
在UI的主要区域显示检索结果图像,结果数量可选,以多行多列的形式罗列。待检索图像与候选图像应该并列查看,以便对比。
多特征融合需求:
单一的特征描述方法不能准确描述服装款式图像的全部特征,通过将颜色、纹理、形状和空间关系特征组合成综合特征,根据综合特征检索可以达到不同特征优势互补的效果,提高检索的准确度,满足实际应用的需求。
相似性度量方法选择需求:
服装款式检索,主要是通过比较不同服装款式图的特征向量的相似度的匹配程度来实现的,即通过计算待检索图像与候选图像之间综合特征向量的匹配程度来实现。不同的相似性度量方法会对图像检索结果产生不同的影响,用户可以选择不同的度量方法来得到最符合期望的检索结果。
分析工具需求:
需要对数据集进行SVM分析,计算查询对象所属类别。
需要分析SVM模型在数据集上的分类精度和查全率。
3.2 概要设计
本系统将基本功能模块划分为:图像预处理模块、服装款式图特征提取模块、数据存储模块、款式图特征匹配检索模块、检索结果分析工具模块等几个基本部分。其中服装款式图特征提取模块和款式图特征匹配检索模块是整个系统的核心部分。各个模块主要功能描述如下:
3.2.1 体系结构设计
根据对服装款式图检索系统的工作流程梳理,得出系统的数据流图,如图4-1所示:
图 4.1 系统数据流图
本系统将基本功能模块划分为:图像预处理模块、服装款式图特征提取模块、数据存储模块、款式图特征匹配检索模块、检索结果分析工具模块等几个基本部分。其中服装款式图特征提取模块和款式图特征匹配检索模块是整个系统的核心部分。同时,根据对服装款式图检索系统的工作流和需求分析,得出系统的整体体系结构图,如图4-2所示:
图 4.2 系统体系结构图
3.2.2 服装款式图特征提取模块
特征提取模的功能包括:图像颜色特征的提取(颜色直方图、颜色矩、颜色自相关图、颜色聚合向量等),图像纹理特征的提取 (gabor滤波等),图像形状特征的提取(傅里叶描述子、sift特征等)。
3.2.3 数据存储模块
数据存储模块主要负责图像数据及图像特征数据的创建、存放、管理及建立索引等基本功能。
由于本系统的信息管理功能比较单一,仅仅涉及到图像特征数据的创建、存放和检索,故设计成将图像以本地文件的形式存放在文件目录下,而图像特征信息以.mat的数据集文件格式存放在本地目录中。
在数据集的创建过程中,需要记录一些图像信息,设计若干个结构体来记录文件信息和图像信息。文件信息包括文件名、数据大小、目录、创建日期等,图片信息包含图片的格式、尺寸、颜色数量、修改时间等。下面将描述结构体详细内容。
图文件结构体:
该结构体主要作用为存储图片文件信息,每种图片类型对应一个结构体。结构如下表所示:
表4.1 图文件结构体
列名列编码种类介绍
id 0 Integer 主键id
name 1 Text 文件名
data 2 Text 图片数据
bytes 3 Integer 数据大小
didir 4 Text 目录
datenumDate 创建日期
图片信息结构体:
该结构体主要作用为图片的具体信息的结构。这些具体信息包括图片的格式、尺寸、颜色数量、修改
时间等等。结构如下表所示:
表4.2 图片信息结构体
列名列编码种类介绍
id 0 Integer 主键id
format 1 Text 格式
colornum 2 Integer 颜色数量 bytes 3 Integer 尺寸
datenum 4 date 修改时间 特征数据集:
该数据集主要作用为保存服装款式图片的特征向量。这些具体信息包括颜色、纹理、形状等特征以及
图片名字等。如下所示:
表4.3 特征数据集向量
列名列编码种类介绍
id 0 Integer 主键id
hsv_hist 1 Vector 颜色直方图 auto_correlogram 2 Vector 自相关 color_moments 3 Vector 颜色矩
mean_amplitude 4 Vector 振幅频率域特征 ms_energy 5 Vector 能量分布特诊
wavelet_moments 6 Vector gabor滤波纹理 sift 7 Vector Sift描述子
fourier 8 Vector 傅里叶描述子
name 9 Text 文件名称
3.2.4 款式图特征匹配检索模块
图像检索匹配模块主要负责利用像相似度模型多各种特征相似度计算,并根据用户的输入样例及检索
数量要求返回检索结果。
3.2.5 检索结果分析工具模块
分析工具模块主要作用是,对数据集作SVM分解,并计算相应的分类精度; 判别当前查询对象类别。
以及SVM模型在原数据集上的分类精度和查全率。 3.3 详细设计
3.3.1 开发环境介绍
根据需求分析和概要设计,确定开发方式如下所述: (1) 操作系统:Windows7(64bit)。
(2) 开发环境:Matlab 2014b。
(3) 代码管理工具:SourceTree。
(4) 测试数据集:来自网络收集。
3.3.2 颜色特征提取及数据集创建
在进行样例查询之前,需要选择图片库所在的目录,并为该图片库创建特征向量数据集,实现菜单如图4-1与4-2所示:
图 4.1 创建特征数据集菜单
图 4.2 选择数据集目录
本文为了测试系统的检索结果,创建了一个包含1747张服装款式图片的图片数据库,部分截图如图4-3所示。
图 4.3 服装款式图片库(部分)
点击创建数据集->新建菜单,则进入数据集创建过程。该动作将为每个图像创建一个191维的特征向量。图4-4为命令行窗口下的特征向量数据集创建过程。
图 4.4 特征向量数据集创建过程
创建过程耗时漫长,创建结束之后会提示保存数据集的位置和名称。
3.3.3 基于图例的图像检索方法
数据集创建结束之后就可以进行款式检索了。进行款式检索之前,需要指定数据集以及检索图例。操作菜单如图4-5,4-6所示。
图 4.5 款式检索菜单
图 4.6 数据集选择图
数据集加载成功后会有提示,如图4-7。
图 4.7 数据集加载成功
数据集加载成功之后 ,选择查询样例款式图像,在选中查询样例款式图像之后,系统将对该图像进行图像特征向量计算,用于后面的匹配查询。如图4-8,4-9,4-10所示。
图 4.8选择查询样例款式图
图 4.9 查询图像选中后预览图
图 4.10 查询样例特征计算
本文提供了多种相似性度量方法供查询比较,在选择相似性度量方法和返回结果数量之后,点击查询按钮,即可检索相似度最高的款式图像,不同的相似性度量方法会导致不同的结果,如图4-11,4-12,4-13所示。
图 4.11 相似度度量选择
图 4.12 L1相似性度量查询结果
图 4.13spearman相似性度量查询结果
3.3.4 检索结果分析工具
精度分析工具Precision
精确度(Precision),召回率、查全率(Recall)是信息检索、分类、识别、翻译等领域两个最基本指标,召回率也叫查全率,准确率也叫查准率,概念公式:
召回率(Recall) = 系统检索到的相关文件 / 系统所有相关的文件总数本文中,tp/tp+fn, 其中 tp 为正确分类样本, fn 表示把当前种类样本判定为其他类别。
准确率(Precision) = 系统检索到的相关文件 / 系统所有检索到的文件总数,本文中,tp/tp+fp, 其中 tp 为正确分类样本, fp 表示把其他种类的样本判定为当前类
图 4.14精度分析工具
由于样本数量有限,本文中这两个个工具仅仅作为例示,不具有实际应用价值。
function varargout = imgRetrieval(varargin)
% IMGRETRIEVAL MATLAB code for imgRetrieval.fig
% IMGRETRIEVAL, by itself, creates a new IMGRETRIEVAL or raises the existing
% singleton*.
%
% H = IMGRETRIEVAL returns the handle to a new IMGRETRIEVAL or the handle to % the existing singleton*.
%
% IMGRETRIEVAL('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in IMGRETRIEVAL.M with the given input arguments. %
% IMGRETRIEVAL('Property','Value',...) creates a new IMGRETRIEVAL or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before imgRetrieval_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to imgRetrieval_OpeningFcn via varargin. %
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help imgRetrieval % Last Modified by GUIDE v2.5 08-May-2017 12:03:34
% Begin initialization code - DO NOT EDIT gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @imgRetrieval_OpeningFcn, ... 'gui_OutputFcn', @imgRetrieval_OutputFcn, ... 'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT % --- Executes just before imgRetrieval is made visible. function imgRetrieval_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to imgRetrieval (see VARARGIN) % Choose default command line output for imgRetrieval handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes imgRetrieval wait for user response (see UIRESUME) % uiwait(handles.imgRetrieval);
% setappdata() 添加需要共享的变量
setappdata(handles.imgRetrieval, 'folder_name', 0);
setappdata(handles.imgRetrieval, 'image_dataset', 0); setappdata(handles.imgRetrieval, 'image_query_feature', 0); setappdata(handles.imgRetrieval, 'num_of_returned_images', 0); setappdata(handles.imgRetrieval, 'similarity_metrics', 0); setappdata(handles.imgRetrieval, 'flag1', 0);
setappdata(handles.imgRetrieval, 'flag2', 0);
% 在查询结果返回之前,禁用工具菜单项
% set(handles.tool, 'Enable', 'off');
% --- Outputs from this function are returned to the command line. function varargout = imgRetrieval_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output;
% --------------------------------------------------------------------
function start_Callback(hObject, eventdata, handles)
% hObject handle to start (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --------------------------------------------------------------------
function start_database_Callback(hObject, eventdata, handles) % hObject handle to start_database (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % uigetfile()加载数据集
% uigetfile: 显示一个模态对话框,对话框列出了当前目录下的文件和目录
% 此函数的用法为
% [FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle,DefaultName)
% FileName:返回的文件名
% PathName:返回的文件的路径名
% FilterIndex:文件类型索引值(非0表示打开成功)
% FilterSpec:文件类型设置(包含文件名的字符串;包含文件路径的字符串) % 如果FilterSpec是一个单元数组,则其第一列为扩展名列表,其他为描述列表;
% DialogTitle:打开对话框的标题
% DefaultName:默认指向的文件名
[filename, pathname] = uigetfile('*.mat', '选择数据集'); if isequal(filename, 0) || isequal(pathname, 0)
disp('用户取消选择数据集~');
return
else
dataset_fullpath = fullfile(pathname, filename);
% 对选择的文件类型进行判断,确保为'.mat'格式
% fileparts 将全路径拆分为路径、文件名、扩展名,返回str类型 [pathstr, name, ext] = fileparts(dataset_fullpath);
if ( strcmp(lower(ext), '.mat') == 1)
filename = fullfile( pathstr, strcat(name, ext) );
setappdata(handles.imgRetrieval, 'image_dataset', load(filename)); helpdlg('数据集加载成功~');
else
errordlg('数据集文件类型错误~');
end
end
% -------------------------------------------------------------------- function start_query_image_Callback(hObject, eventdata, handles) % hObject handle to start_query_image (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % 确定数据集已正确加载
if isequal(getappdata(handles.imgRetrieval, 'image_dataset'), 0) msgbox('请先加载数据集~');
return
end
% 打开待查询的图像
[query_filename, query_pathname] = uigetfile('*.jpg; *.png; *.bmp', '选择查询图像');
if isequal(query_filename, 0) || isequal(query_pathname, 0) disp('用户取消选择图像~');
return
else
query_fullpath = fullfile(query_pathname, query_filename);
[pathstr, name, ext] = fileparts(query_fullpath);
% 如果图像格式正确,则读取图像数据
if (strcmp(lower(ext), '.jpg') == 1 || strcmp(lower(ext), '.png') == 1 ...
|| strcmp(lower(ext), '.bmp') == 1)
query_image = imread(query_fullpath);
% 将图像在界面左侧的坐标轴框中显示,作为预览
% axes命令设定当前操作的坐标轴框是axes_img_query(坐标轴空间的Tag域名称)
% flag 标记预览次数
flag = getappdata(handles.imgRetrieval, 'flag1');
第4章总结
4.1 总结
在本次基于CBIR的服装款式图检索系统的设计与实现过程中,对于图像特征的提取和匹配方法的实现是本课题的关键所在。最终我们采用了HSV色彩空间直方统计、色矩等色彩特征、gabor滤波等纹理特征、sift等形状特征等构成的综合特征向量作为本系统的最终数据集结构,同时,采用了L1、L2,标准欧氏距离、马氏距离、闵式距离、切比雪夫距离、兰氏距离、夹角余弦距离、相关距离、汉明距离等相似性度量方式进行检索匹配,最终完成了本次设计与实现的关键部分。
关于本次毕业设计,已经实现了服装款式图像库特征的提取和整合,待查询图像和检索结果图像的查看,根据不同的相似度和检索数量要求进行服装款式图检索。但是,分部位的款式检索功能没有实现,图
像特征之间的语义性关联不是很强烈。对于某些特殊格式的图像还处理不了,作为图像检索类软件,服装款式的针对性不是很强。今后,可以考虑从以上方面加强检索精确度和鲁棒性的提高。
在本次毕业设计的过程中,我的开发技术能力有了很大的提高,对于知识的掌握有了更深的理解,更重要的是除了开发技术以外,我还加强了以下几方面的能力:
(1)编码的规范
在刚开始的时候,对于类、方法、变量等的命名十分的随意,在代码的分布上以及格式的控制上,也没有什么规定的格式。以至于在调试的时候,甚至都不能找到自己定义的方法。后来经过老师的指导,查看了一些关于代码规范的书籍和资料,最终,定义了一些简单的编码规范,对代码进行了重构,使得代码的重用性、可扩展性和维护性都有了很大的提高。
(2)资料查询的能力
确定研究的课题之后,需要查阅相关的背景资料以及研究现状,还有在编写相关的过程资料、毕业
以及管理系统的设计与实现的过程中,都需要进行大量的资料查询。经过了大量的查询工作之后,现在已经能够熟练地使用Google、百度等专业的搜索工具进行检索。
(3)文档的书写能力
在本次毕业设计的论文以及其他
的编写中,经过指导老师的反复指导以及多次的修正,使得我的文档的书写能力有了很大的提高,对于文档的格式以及排版都有和很大的进步。
(4)团队协作的能力
通过本次的毕业设计,我深深地认识到了个人的能力是有限的,一个项目的完成,需要的是团队的协同合作,在团队协作中,我学会了使用SVN、CVS以及Git等版本控制器工具来进行团队开发。
(5)软件开发经验
在本次的毕业也是的过程中,我了解到了一个项目的流程是怎样的,一个项目的完成,都需要进行需求分析,概要设计,详细设计,编码实现以及功能测试等流程。在开发过程中,我学会了使用MATLAB等
工具来进行协助开发,对于开发经验有了一些深刻的认识。最后,衷心的希望本系统能够在以后被进一步
的完善和推广。
参考文献
[1] Bruno Santos Pimentel,Joao Hilario de Avila Valgas Filho,Rodrigo Lacerda Campos,Antonio Otavio Fernandes,Claudionor Jose Nunes Coelho.?A FPGA Implementation of a DCT-Based Digital Electrocardiographic Signal Compression Device[J]. IEEE,201,,0-7695-1333-6/01: 44-49
[2] L.Naviner, J.Danger, and C.Laurent. Efficient implementation for high accuracy DCT processor based on FPGA. Technical report, Ecole Nationale Supérieure des Télécommunications, Paris, France, 1998.
[3] (美)Uwe Meyer-Baese. 刘凌,胡永生译. 数字信号处理的FPGA实现[M]. 北京:清华大学出版社,
2003.1。
[4] 汤林, 陈建明, 尚笑梅. 基于机器学习的服装款式知识库设计[J]. 计算机与现代化, 2011, (03): 9
-11+14.
[5] 陈起进. 基于图像内容的服装检索与搭配技术研究 [D]; 浙江大学, 2013.
[6] ZHOU C, LIU C. Semantic image segmentation using low-level features and contextual cues[J]. Computers & Electrical Engineering, 2014, 40(3): 844-857.
[7] ZHOU J, YE M, DING J, et al. Clothing-to-words mapping using word separation method[J]. Computers & Electrical Engineering, 2013, 39(2): 361-372.
[8] JAN F, USMAN I, AGHA S. Reliable iris localization using Hough transform, histogram-bisection, and eccentricity[J]. Signal Processing, 2013, 93(1): 230-241.
[9] WANG Z, ZHONG Y, WANG S. A new shape factor measure for characterizing the cross-section of profiled fiber[J]. Textile Research Journal, 2012, 82(5): 454-462.
[10] FU H, QIU G. Integrating low-level and semantic features for object consistent segmentation[J]. Neurocomputing, 2013, 119(0): 74-81.
[11] EL-GAYAR M M, SOLIMAN H, MEKY N. A comparative study of image low level feature extraction algorithms[J]. Egyptian Informatics Journal, 2013, 14(2): 175-181.
[12] Jain,P.,KulisB.,GraumanK..Fastimagesearchforlearnedmetries,CVPR2008,PP1-8