资源简介
这是一个提取图像的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\
评论
共有 条评论