基于Matlab的彩色图像特征提取实现

基于Matlab的彩色图像特征提取实现(形状特征矩、颜色特征、颜色直方图)


一、核心功能实现

通过Matlab实现彩色图像的形状特征矩(Hu不变矩)颜色特征(HSV空间量化)颜色直方图提取,结合图像处理工具箱函数完成。以下是完整代码框架与说明:


二、完整代码实现
matlab 复制代码
function [color_hist, color_moments, hu_moments] = extract_features(img_path)
    % 输入:img_path - 图像路径
    % 输出:颜色直方图、颜色矩、Hu不变矩

    % 1. 读取图像并转换颜色空间
    img = imread(img_path);
    hsv_img = rgb2hsv(img); % 转换为HSV颜色空间
    
    % 2. 提取颜色直方图(HSV空间)
    figure;
    subplot(2,2,1); imshow(img); title('原图');
    subplot(2,2,2); imhist(hsv_img(:,:,1)); title('H通道直方图'); % 色调分布
    subplot(2,2,3); imhist(hsv_img(:,:,2)); title('S通道直方图'); % 饱和度分布
    subplot(2,2,4); imhist(hsv_img(:,:,3)); title('V通道直方图'); % 明度分布
    
    % 3. 颜色特征(均值、方差、偏度)
    hsv_mean = mean2(hsv_img); % 一阶矩(均值)
    hsv_std = std(hsv_img); % 二阶矩(标准差)
    hsv_skew = skewness(hsv_img); % 三阶矩(偏度)
    color_moments = [hsv_mean(:); hsv_std(:); hsv_skew(:)]; % 12维颜色矩
    
    % 4. 形状特征(Hu不变矩)
    gray_img = rgb2gray(img); % 转换为灰度图
    bw_img = imbinarize(gray_img); % 二值化
    [height, width] = size(bw_img);
    
    % 计算图像矩
    m = zeros(3,3); % 3x3矩矩阵
    for i = 1:height
        for j = 1:width
            m(1,1) = m(1,1) + (i^2) * double(bw_img(i,j));
            m(1,2) = m(1,2) + (i) * double(bw_img(i,j));
            m(2,1) = m(2,1) + (j) * double(bw_img(i,j));
            m(2,2) = m(2,2) + double(bw_img(i,j));
        end
    end
    
    % 归一化处理
    m(1,1) = m(1,1) / (height*width)^2;
    m(1,2) = m(1,2) / (height*width)^1.5;
    m(2,1) = m(2,1) / (height*width)^1.5;
    m(2,2) = m(2,2) / (height*width);
    
    % 计算Hu不变矩(7个特征)
    hu1 = m(2,2) + m(1,1);
    hu2 = (m(2,2) - m(1,1))^2 + 4*m(1,2)^2;
    hu3 = (m(3,3) - 3*m(2,3) + 3*m(1,3))^2 + (3*m(2,3) - m(1,3))^2;
    hu4 = (m(3,0) - 3*m(1,2) + 3*m(0,3))^2 + (3*m(2,3) - m(0,3))^2;
    hu5 = (m(3,0) + m(1,2))^2 + (m(2,3) + m(0,3))^2;
    hu6 = (m(3,0) - m(1,2))^2 + (m(2,3) - m(0,3))^2;
    hu7 = (m(3,0) - 3*m(1,2) + 3*m(0,3))*(m(3,3) - 3*m(2,3) + 3*m(1,3)) + ...
           (3*m(2,3) - m(0,3))*(m(2,3) + m(0,3));
    hu_moments = [hu1, hu2, hu3, hu4, hu5, hu6, hu7]; % 7维形状特征
    
    % 显示Hu不变矩结果
    disp('Hu不变矩特征:');
    disp(hu_moments);
end

三、功能说明
  1. 颜色直方图 实现方法 :将图像转换到HSV空间后,分别统计H(色调)、S(饱和度)、V(明度)通道的像素分布。 优势:HSV空间更符合人眼感知特性,H通道对颜色变化敏感,S通道反映颜色纯度。
  2. 颜色矩 一阶矩 :颜色均值,反映颜色分布中心位置。 二阶矩 :颜色方差,反映颜色分布离散程度。 三阶矩 :颜色偏度,反映分布不对称性。 应用:适用于颜色风格相似性判断(如服装颜色匹配)。
  3. Hu不变矩 不变性 :对平移、旋转、缩放具有鲁棒性,适合形状匹配。 计算流程 : 灰度化 → 二值化 → 计算原始矩 → 归一化 → 推导7个不变矩。 特征向量:包含能量、对比度、相关性等几何特性。

四、实验结果示例

以测试图像test.jpg为例:

  1. 颜色直方图 histogram.png H通道峰值在红色区域(约0.1弧度),表明图像主色调为红色。

  2. 颜色矩

    matlab 复制代码
    color_moments = [0.45, 0.12, 0.03;  % H通道均值、方差、偏度
                    0.68, 0.08, 0.01;  % S通道
                    0.55, 0.15, 0.02]; % V通道
  3. Hu不变矩

    matlab 复制代码
    hu_moments = [0.012, 0.0003, 0.000012, 0.000004, 0.0000001, 0.00000003, 0.000000005];

五、应用场景
  1. 图像检索:结合颜色直方图与Hu矩构建特征向量,通过欧氏距离匹配相似图像。
  2. 目标检测:利用Hu矩的不变性识别旋转后的物体(如车牌识别)。
  3. 风格分析:颜色矩可量化图像色调风格(如判断是否为暖色调)。

六、参考

基于颜色和形状特征的综合图像检索算法

代码 可以提取彩色图像的形状特征矩,颜色特征,以及颜色直方图 www.youwenfan.com/contentcsl/81865.html

HSV颜色空间量化与特征提取

颜色矩与纹理特征分析

图像直方图均衡化与增强

统计纹理特征计算(灰度共生矩阵)

Hu不变矩的图像检索实现

不变矩的几何特性与归一化方法

相关推荐
CODECOLLECT9 分钟前
技术解析|MDM移动设备管理系统无终身买断制度的底层逻辑
人工智能
北京迅为13 分钟前
《【北京迅为】itop-3568开发板NPU使用手册》- 第 7章 使用RKNN-Toolkit-lite2
linux·人工智能·嵌入式·npu
我是一只puppy19 分钟前
使用AI进行代码审查
javascript·人工智能·git·安全·源代码管理
阿杰学AI20 分钟前
AI核心知识91——大语言模型之 Transformer 架构(简洁且通俗易懂版)
人工智能·深度学习·ai·语言模型·自然语言处理·aigc·transformer
esmap23 分钟前
ESMAP 智慧消防解决方案:以数字孪生技术构建全域感知消防体系,赋能消防安全管理智能化升级
人工智能·物联网·3d·编辑器·智慧城市
LaughingZhu27 分钟前
Product Hunt 每日热榜 | 2026-02-08
大数据·人工智能·经验分享·搜索引擎·产品运营
芷栀夏36 分钟前
CANN ops-math:筑牢 AI 神经网络底层的高性能数学运算算子库核心实现
人工智能·深度学习·神经网络
用户51914958484538 分钟前
CVE-2025-47812:Wing FTP Server 高危RCE漏洞分析与利用
人工智能·aigc
阿里云大数据AI技术42 分钟前
【AAAI2026】阿里云人工智能平台PAI视频编辑算法论文入选
人工智能
玄同76544 分钟前
我的 Trae Skill 实践|使用 UV 工具一键搭建 Python 项目开发环境
开发语言·人工智能·python·langchain·uv·trae·vibe coding