基于图像的室内装修风格分类系统(二)---提取颜色特征

来源:互联网 发布:核动力印钞机 知乎 编辑:程序博客网 时间:2024/04/28 18:39

(一)先记下一些当时看的提取颜色特征的文章

  http://blog.csdn.net/passball/article/details/5204132//文章主要讲的是特征的定义以及各种特征提取和匹配的方法http://blog.sina.com.cn/s/blog_adf19c8c0101hvhh.html//(Matlab)实现HSV非等间隔量化--相似判断:欧式距离--输出图片

(二)附上当时做的笔记:
1.显示图像的颜色直方图
I=imread(‘lena.jpg’); %%读取图像
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
figure,imhist(R); %%显示直方图
title(‘R’);
figure,imhist(G);
title(‘G’);
figure,imhist(B);
title(‘B’);

A = rgb2hsv(B) 将RGB颜色空间(B)转化为HSV颜色空间(A)

2.定义函数
function [输出变量] = 函数名称(输入变量)
% 注释
函数体

3.matlab编程为cell模式:以%%开头

4.
save example A B %将变量A,B存在文件example.mat里面
save(‘D:\example.mat’ ,’A’, ‘B’, ‘C’…) %保存到指定文件夹
save example %将当前所有变量存储到example.mat里面
读取:
load example
load example A

5.将数据存储到本地磁盘上
xlswrite(‘D:\writeExcel.xls’,w(:,249:257),’data’);%数据存储至D盘根目录下
//D:\writeExcel.xls 为存储路径及文件名
// w为需要存储的数据
//data为存储至Excel中的表单名


(三)附上提取颜色特征的代码:colorFeature.m(用的是颜色直方图)

%% I. 清空环境变量clc;clear;%提取了所有训练集图片的特征,w:70*256 w存储70张训练集图片的256维颜色特征%group:70*1 保存图像的分类信息 %将w和group存储在example.mat里面,用save函数 代码里没有包括,当时直接在命令窗口输入的。也可以直接用我已经生成的example.mat% 循环读入图像A=dir('F:\文件\dataset\家装图片集\所有图片\*.jpg');  %批量读取文件w=zeros(70,256);for k=1:size(A)   B=strcat('F:/文件/dataset/家装图片集/所有图片/',A(k).name);   %w(k,257)=str2num(A(k).name(1));   Image=imread(B);%endrs=size(Image);M=rs(1);N=rs(2);% 计算每一幅图像的颜色直方图[h,s,v] = rgb2hsv(Image);H = h; S = s; V = v;h = h*360;%将hsv空间非等间隔量化:%  h量化成16级;%  s量化成4级;%  v量化成4级;for i = 1:M    for j = 1:N        if h(i,j)<=15||h(i,j)>345            H(i,j) = 0;        end        if h(i,j)<=25&&h(i,j)>15            H(i,j) = 1;        end        if h(i,j)<=45&&h(i,j)>25            H(i,j) = 2;        end        if h(i,j)<=55&&h(i,j)>45            H(i,j) = 3;        end        if h(i,j)<=80&&h(i,j)>55            H(i,j) = 4;        end        if h(i,j)<=108&&h(i,j)>80            H(i,j) = 5;        end        if h(i,j)<=140&&h(i,j)>108            H(i,j) = 6;        end        if h(i,j)<=165&&h(i,j)>140            H(i,j) = 7;        end        if h(i,j)<=190&&h(i,j)>165            H(i,j) = 8;        end        if h(i,j)<=220&&h(i,j)>190            H(i,j) = 9;        end        if h(i,j)<=255&&h(i,j)>220            H(i,j) = 10;        end        if h(i,j)<=275&&h(i,j)>255            H(i,j) = 11;        end        if h(i,j)<=290&&h(i,j)>275            H(i,j) = 12;        end        if h(i,j)<=316&&h(i,j)>290            H(i,j) = 13;        end        if h(i,j)<=330&&h(i,j)>316            H(i,j) = 14;        end        if h(i,j)<=345&&h(i,j)>330            H(i,j) = 15;        end    endendfor i = 1:M    for j = 1:N        if s(i,j)<=0.15&&s(i,j)>0            S(i,j) = 0;        end        if s(i,j)<=0.4&&s(i,j)>0.15            S(i,j) = 1;        end        if s(i,j)<=0.75&&s(i,j)>0.4            S(i,j) = 2;        end        if s(i,j)<=1&&s(i,j)>0.75            S(i,j) = 3;        end    endendfor i = 1:M    for j = 1:N        if v(i,j)<=0.15&&v(i,j)>0            V(i,j) = 0;        end        if v(i,j)<=0.4&&v(i,j)>0.15            V(i,j) = 1;        end        if v(i,j)<=0.75&&v(i,j)>0.4            V(i,j) = 2;        end        if v(i,j)<=1&&v(i,j)>0.75            V(i,j) = 3;        end    endend%将三个颜色分量合成为一维特征向量:L = H*Qs*Qv+S*Qv+v;Qs,Qv分别是S和V的量化级数, L取值范围[0,255]%取Qs = 4; Qv = 4for  i = 1:M    for j = 1:N        L(i,j) = H(i,j)*16+S(i,j)*4+V(i,j);    endend%计算L的直方图for i = 0:255    Hist(i+1) = size(find(L==i),1);    w(k,i+1)=Hist(i+1);endend%将所有图片的类别(a,b,c)...存到group中group=sym('[a;a;a;a;a;a;a;a;a;a;a;a;a;a;b;b;b;b;b;b;b;b;b;b;b;b;b;b;c;c;c;c;c;c;c;c;c;c;c;c;c;c;d;d;d;d;d;d;d;d;d;d;d;d;d;d;e;e;e;e;e;e;e;e;e;e;e;e;e;e]')
0 0