MatlabCode

本站所有资源均为高质量资源,各种姿势下载。

您现在的位置是:MatlabCode > 资源下载 > 一般算法 > 基于颜色直方图的图像相似度量工具

基于颜色直方图的图像相似度量工具

资 源 简 介

本项目旨在利用MATLAB平台开发一套图像对比分析系统,核心是通过计算和比较两幅图像的颜色直方图特征来量化它们之间的相似程度。该项目的功能流程非常完整,首先实现图像的读取与预处理,支持JPEG、PNG、BMP等多种主流图像格式,并对输入图像进行尺寸标准化以确保对比的一致性。其次,项目执行颜色空间转换,考虑到RGB空间受光照影响较大,系统会将图像从RGB色彩空间转换至HSV(色调、饱和度、明度)或Lab色彩空间,从而更准确地提取符合人类视觉感知的颜色特征。接着,系统对两幅图像分别计算各通道的颜色直方图,并进行归一化处理以消除图像分辨率差异带来的影响。在核心的相似度计算环节,项目实现了多种经典的统计学度量算法,包括巴哈塔恰里亚距离(Bhattacharyya Distance)、相关系数(Correlation Coefficient)、卡方统计量(Chi-Square)以及直方图交叉法(Histogram Intersection),用户可以根据具体需求选择不同的算法权重。最后,系统将输出两幅图像的直方图可视化对比结果,并给出一个0到1之间的数值作为相似度评分(1表示完全相同,0表示完全不同),该工具广泛适用于基于内容的图像检索(CBIR)、重复图片清洗、视频关键帧提取等应用场景。

详 情 说 明

基于颜色直方图的图像相似性度量工具

项目简介

本项目是一个基于 MATLAB 开发的图像对比分析系统。它通过提取图像的颜色特征,计算并量化两幅图像之间的视觉相似度。系统首先将图像转换至 HSV 颜色空间,提取 H(色调)、S(饱和度)、V(明度)三个通道的直方图特征,并结合四种经典的统计学算法(直方图交叉法、巴哈塔恰里亚系数、相关系数、卡方距离)进行加权综合评分。该工具能够有效地衡量图像在颜色分布上的相似程度,适用于图像检索、去重和分析等场景。

功能特性

  • 交互式图像选择:通过系统文件对话框选择图像,如用户取消选择,系统自动生成随机噪声图像进行演示。
  • 格式广泛支持:支持 JPG, JPEG, PNG, BMP, TIF 等主流图像格式。
  • 图像预处理:自动将输入图像归一化为 double 类型,并统一缩放至 256x256 像素,消除尺寸差异对算法的影响。
  • HSV 颜色空间分析:将图像从 RGB 转换为 HSV 空间,因为 HSV 模型比 RGB 更接近人类对颜色的感知方式。
  • 多维度相似性算法:实现了四种不同的数学度量方法,并对负值和距离进行了归一化映射。
  • 加权评分机制:针对 H、S、V 通道赋予不同权重(H=0.5, S=0.25, V=0.25),更加侧重于色调的对比。
  • 直观的可视化结果:输出包含原图对比、综合相似度评分以及 H/S/V 三个通道的直方图重叠对比曲线。
  • 详细的分析报告:在命令行窗口输出每种算法的具体得分及最终的加权平均分。

系统要求

  • MATLAB R2014b 或更高版本(代码中使用了 histcounts 函数)。
  • Image Processing Toolbox(图像处理工具箱)。

使用方法

  1. 将项目代码保存为 main.m 文件。
  2. 在 MATLAB 命令窗口中运行 main
  3. 系统将弹出第一次文件选择框,请选择“基准图像(图像 1)”。
  4. 系统将弹出第二次文件选择框,请选择“对比图像(图像 2)”。
  5. 等待程序运行完毕,查看弹出的可视化窗口和命令行输出的相似度报告。

核心算法与代码逻辑分析

本项目的主程序 main 严格按照以下逻辑流程执行:

1. 图像读取与预处理

程序首先根据用户选择的路径读取两幅图像。为了确保计算的一致性,使用 im2double 将图像数据转换为双精度浮点型,并利用 imresize 函数将两幅图像强制缩放到 [256, 256] 的标准尺寸。

2. HSV 颜色空间转换

考虑到 RGB 空间中颜色分量之间的高相关性以及对光照的敏感性,代码调用 rgb2hsv 将图像转换至 HSV 空间。
  • H (Hue):色调,描述颜色的种类。
  • S (Saturation):饱和度,描述颜色的纯度。
  • V (Value):明度,描述颜色的亮度。

3. 直方图特征提取

系统通过 computeHSVHistograms 子函数计算直方图:
  • 分箱 (Binning):对 H、S、V 三个通道分别划分 30 个区间(Bins)。
  • 统计:使用 MATLAB 的 histcounts 函数统计像素分布。
  • 归一化:采用 L1 范数(除以总像素数),将直方图转换为概率分布,确保得分为 0 到 1 之间,不受由于图像内容总像素数不同带来的误差影响。

4. 相似度计算策略

代码定义了权重向量 weights = [0.5, 0.25, 0.25],认为色调(H)主要决定视觉相似性。针对每个通道,计算以下四种指标,并按权重加权求和:

  • 直方图交叉法 (Histogram Intersection)
* 原理:计算两个直方图重叠部分的面积。 * 代码实现sum(min(H1, H2))。对于归一化直方图,结果范围 [0, 1],1 表示完全相同。

  • 巴哈塔恰里亚系数 (Bhattacharyya Coefficient)
* 原理:测量两个概率分布的重叠量,通过几何平均数积分近似。 * 代码实现sum(sqrt(H1 .* H2))。结果范围 [0, 1],1 表示完全相同。

  • 相关系数 (Correlation Coefficient)
* 原理:衡量两个直方图分布的线性相关程度。 * 代码实现:使用 corrcoef 函数。 * 处理:原始结果为 [-1, 1]。代码通过 max(0, score) 将负相关截断为 0,仅关注正相关部分。

  • 卡方相似度 (Chi-Square Similarity)
* 原理:基于卡方统计量衡量分布差异。 * 代码实现sum((H1 - H2).^2 ./ (H1 + H2 + epsilon))。 * 映射:原始结果为距离(值越小越相似,归一化数据的最大距离为 2)。代码通过公式 1 - (distance / 2) 将其转换为 [0, 1] 的相似度评分。

5. 综合评分

最终的“综合相似度 (Grand Similarity)”是上述四种加权算法结果的算术平均值: grand_similarity = (final_intersect + final_bhat + final_corr + final_chi) / 4

6. 结果可视化

代码使用 stairs 函数绘制阶梯状直方图,清晰展示离散数据的分布轮廓。同时使用 area 函数在图表中用绿色半透明区域填充两个直方图的重叠部分,直观地反映了“直方图交叉”的物理意义。

输出示例

命令行输出: ======================================== 图像相似度分析报告 ======================================== 算法度量指标 (加权平均后):

  1. 直方图交叉法 (Intersection): 0.8523
  2. 巴氏系数 (Bhattacharyya): 0.9102
  3. 相关系数 (Correlation): 0.8845
  4. 卡方相似度 (Chi-Square): 0.8760
---------------------------------------- 最终综合评分 (0-1): 0.8807 ========================================

图形界面: 窗口顶部显示原图对比,底部显示 H、S、V 三个通道的直方图对比曲线(红线为图1,蓝虚线为图2,绿色区域为重叠相似部分)。