• 大小: 16KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-06
  • 语言: Matlab
  • 标签: HSV,matlab  

资源简介

这是一个提取图像的HSV特征的代码,使用matlab写的m文件,里面有具体的使用说明及测试图像,用户下载后可以直接运行。

资源截图

代码片段和文件信息

% RGB=imread(‘greens.jpg‘); %将图像格式文件读入为MATLAB图像对象数组数据;
% 16*4*4 这样提取出来的HSV特征是256维的;

function [m]=HSV(RGB)

[MNO] = size(RGB);
[hsv] = rgb2hsv(RGB);
H = h; S = s; V = v;
h = h*360;
%H量化为16级 S量化为4级 V量化为4级
for i = 1:M
    for j = 1:N
        if h(ij)<=15||h(ij)>345
            H(ij) = 0;
        end
        if h(ij)<=25&&h(ij)>15
            H(ij) = 1;
        end
        if h(ij)<=45&&h(ij)>25
            H(ij) = 2;
        end
        if h(ij)<=55&&h(ij)>45
            H(ij) = 3;
        end
        if h(ij)<=80&&h(ij)>55
            H(ij) = 4;
        end
        if h(ij)<=108&&h(ij)>80
            H(ij) = 5;
        end
        if h(ij)<=140&&h(ij)>108
            H(ij) = 6;
        end
        if h(ij)<=165&&h(ij)>140
            H(ij) = 7;
        end
        if h(ij)<=190&&h(ij)>165
            H(ij) = 8;
        end
        if h(ij)<=220&&h(ij)>190
            H(ij) = 9;
        end
        if h(ij)<=255&&h(ij)>220
            H(ij) = 10;
        end
        if h(ij)<=275&&h(ij)>255
            H(ij) = 11;
        end
        if h(ij)<=290&&h(ij)>275
            H(ij) = 12;
        end
        if h(ij)<=316&&h(ij)>290
            H(ij) = 13;
        end
        if h(ij)<=330&&h(ij)>316
            H(ij) = 14;
        end
        if h(ij)<=345&&h(ij)>330
            H(ij) = 15;
        end
    end
end
for i = 1:M
    for j = 1:N
        if s(ij)<=0.15&&s(ij)>0
            S(ij) = 0;
        end
        if s(ij)<=0.4&&s(ij)>0.15
            S(ij) = 1;
        end
        if s(ij)<=0.75&&s(ij)>0.4
            S(ij) = 2;
        end
        if s(ij)<=1&&s(ij)>0.75
            S(ij) = 3;
        end
    end
end
for i = 1:M
    for j = 1:N
        if v(ij)<=0.15&&v(ij)>0
            V(ij) = 0;
        end
        if v(ij)<=0.4&&v(ij)>0.15
            V(ij) = 1;
        end
        if v(ij)<=0.75&&v(ij)>0.4
            V(ij) = 2;
        end
        if v(ij)<=1&&v(ij)>0.75
            V(ij) = 3;
        end
    end
end
for  i = 1:M
    for j = 1:N
        L(ij) = H(ij)*16+S(ij)*4+V(ij); %归一化
    end
end
for i = 0:255
    HSVHist(i+1) = size(find(L==i)1);
end
m=HSVHist/sum(HSVHist);
% 将数据m保存到txt文件中
fid = fopen(‘data_m.txt‘‘w‘);
fprintf(fid‘%f ‘m);
fclose(fid);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2443  2012-11-15 11:07  HSV_OK\HSV.m
     文件        2304  2012-11-15 11:00  HSV_OK\data_m.txt
     文件        2814  2012-11-15 10:53  HSV_OK\data_m1.txt
     文件       10933  2012-11-13 09:37  HSV_OK\greens.jpg
     文件       11370  2012-11-15 11:05  HSV_OK\hs_err_pid16536.log
     文件         395  2012-11-13 17:20  HSV_OK\hsv分量.txt
     目录           0  2012-11-15 11:05  HSV_OK\

评论

共有 条评论

相关资源