基于颜色直方图的图片检索系统
项目介绍
本项目是一个基于MATLAB开发的图像检索工具,利用计算机视觉中的颜色直方图统计理论实现内容检索。系统能够自动分析图像库中的视觉特征,通过量化HSV色彩空间来构建特征向量,并利用欧氏距离算法度量图像间的相似性。该项目通过模拟数据库生成、批量特征提取、相似度匹配和可视化反馈,提供了一个完整的端到端图像搜索解决方案。
功能特性
- 自动演示环境构建:代码具备自愈能力,若检测到图片数据库文件夹不存在,会自动生成包含特定颜色倾向(红、绿、蓝等)的模拟图像库,确保程序开箱即用。
- 色彩空间深度量化:采用HSV色彩模型而非传统的RGB模型,通过对色调(H)、饱和度(S)和亮度(V)进行非等量级划分,更有效地捕捉人类视觉感知的颜色特征。
- 批量特征指纹提取:支持对目标文件夹内的所有JPG图像进行并行化扫描,将复杂的图像信息压缩为128维的正则化特征变量。
- 距离度量匹配:基于欧氏距离计算查询图与数据库图片的几何距离,实现精准的特征相似度排序。
- 可视化检索结果:系统以图形界面形式展示检索请求,并在下方按匹配程度展示前K个最相似的结果,同时标注百分比相似度得分。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 核心工具箱:Image Processing Toolbox(图像处理工具箱)。
- 硬件配置:标准个人电脑即可,由于加入了图像缩放预处理,内存占用极低。
核心实现逻辑
- 初始化与配置:定义数据库存储路径,设定HSV量化级数为8:4:4(共128个特征区间),并指定检索返回的结果数量(Top-K)。
- 数据库预处理:遍历指定文件夹,获取所有图像的路径。若为首次运行,系统会执行模拟图像生成逻辑。
- 特征库构建:
- 循环读取每一张图像。
- 调用特征提取模块计算颜色直方图。
- 将所有图像的特征向量展平并存储在全局特征库矩阵中。
- 检索触发:从库中随机选取或指定一张图像作为查询目标,提取其瞬时特征向量。
- 相似度计算:
- 计算查询特征向量与特征库中每一个向量之间的欧氏距离。
- 将距离值通过动态映射算法转化为0-100%的相似度分数值。
- 排序与反馈:对距离进行升序排列,提取距离最小(最相似)的图像索引,并开启图形窗口展示检索结果。
关键函数与算法细节分析
- 图像标准化处理:在提取特征前,通过算法将所有输入图像统一缩放至128x128像素。这一步骤在不损失主要颜色分布信息的前提下,极大地提高了大规模数据库的扫描速度。
- HSV量化映射算法:
- 算法首先将RGB图像转换至HSV空间,利用其亮度解耦特性增强检索的稳健性。
- 采用向下取整法(floor)将连续的颜色分量线性映射到离散的整数区间。
- 空间降维技巧:通过公式
H + (S-1)*H_max + (V-1)*H_max*S_max 将三维的颜色空间坐标转换为一维的直方图索引,实现了高维特征的紧凑表示。
- 直方图归一化:使用总像素数对频率统计结果进行归一化处理。这一细节确保了系统对不同分辨率、不同尺寸的图像具有尺度不变性,保证了检索结果的准确性。
- 相似度得分映射:系统并不仅展示抽象的距离数值,而是通过
(1 - 当前距离 / 最大距离) * 100 的逻辑,将数学空间中的距离转化为符合人类直觉的百分比进度条或得分展示。
使用方法
- 将MATLAB代码保存到本地工作目录。
- 在代码开头部分修改变量
db_folder 为您存放图片的实际文件夹名称(或者直接运行以使用自动生成的模拟库)。 - 运行代码,程序将自动扫描图片并完成特征库建模。
- 在弹出的可视化窗口中查看原始查询图像以及系统检索出的相似图片预览。
- 控制台将实时打印当前检索的状态信息及匹配的文件名称。