多方法基于内容的图像检索系统(CBIR)搭建
系统简介
随着数字图像的数量的急速增长,如何快速、高效地从海量图像数据库中检索出客户所需要的数据和信息是当前图像应用领域的重要问题。伴随着数据库管理技术和机器视觉的发展,图像检索技术自20世纪70年代以来,一直成为人们研究研究的热门课题。
基于内容的图像检索关键问题在于图像特征的提取,在本文研究了当前以及过往的特征提取方法,传统方法:包括颜色特征提取(颜色直方图,HSV中心距),纹理特征(灰度共生矩阵,LBP算子),边缘特征(边缘直方图),哈希感知算法(aHash,pHash,dHash算法等),SIFT特征提取。
对于颜色特征,能基本实现功能,但匹配的效果较差,更重要的是,当数据集规模达到数万时,检索性能会大大下降;对于纹理特征中,我做了大量的实验尝试出了提取特征以及提取耗时间最小的灰度级,基本实现了基于纹理特征的检索功能;对于哈希感知算法,基本实现了基于三种哈希算法的特征提取功能,同时针对快速检索目标图片,我采用VP-tree+dHash的结合优化了检索过程,使检索效率提高到了O(logn).实现了基于哈希感知算法的检索功能;对于边缘特征中,采用了边缘直方图提取特征。该方法运算速度快,适合大规模图像的查找,但是没能考虑图块的位置问题,因为它关注的时每个分块的局部特征,所以检索的准确率不是很高。
对于SIFT特征提取,检索性能和检索效果有所提高,但是检索效率较低,这里采用了基于BOW(视觉词典)的图像内容检索。在提取特征完成之后,对提取的SIFT特征点K-means聚类,采用聚类得到的关键点构建BOW向量来表示图片,大大优化了检索效率
对于神经网络的方法提取图像特征,这里选择了使用VGG-16模型进行图像检索。VGG模型是牛津大学的Visual Geometry Group提出的。其本质是增加网络的深度来提高网络的性能。通过VGG-16提取图像特征进行检索,得到了非常优异的效果。
系统总体设计
初步确定采用以下的方法提取图像特征
UI设计
代码模块
检索测试
整个工程已经放在github,有问题欢迎咨询:
https://github.com/KrealHtz/cbir-system