用matlab实现gabor小波对图…

原文地址:用matlab实现gabor小波对图片的纹理特征提取(转) 作者:爱你随风

用matlab实现gabor小波对图片的纹理特征提取
过程如下:
(1)在matlab中,用gaborfilter.m程序实现对三种农作物(小麦、棉花和大豆)蚜虫图片的做gabor小波变换。 (2)对gabor小波变换处理过的图片在做二维卷积变换.
(3)对上述经过两种变换后的图片进行均值和方差提取,作为分类特征
(4)用libsvm对提取的特征进行模型训练 改天有时间把这些过程及代码全部写写供大家学习讨论。

今天特写一下libsvm的使用方法:

训练模型 1. 进入doc命令C:libsvmwindows下面输入: svmtrain heart_scale运行 则同目录(C:libsvmwindows)下会出现训练的模型文件heart_scale.model文件

预测模型 1.格式 svmpredict test_file model_file output_file test_file 是要 predict 的数据。它的格式跟 svmtrain 的输入,也就是 training_set_file 是一样的 model_file 就是 svmtrain 出来 的档案, output_file 是存输出结果的档案。

例如: 进入doc命令C:libsvmwindows下面输入: svmpredict heart_scale heart_scale.model heart_scale.out heart_scale.out文件得到分类结果 Svmtrain的用法:svmtrain [options] training_set_file [model_file]

Options:可用的选项即表示的涵义如下

-s svm类型:SVM设置类型(默认0)
0 -- C-SVC
1 --v-SVC
2 – 一类SVM
3 -- e -SVR
4 -- v-SVR

-t 核函数类型:核函数设置类型(默认2)
0 – 线性:u'v
1 – 多项式:(r*u'v + coef0)^degree
2 – RBF函数:exp(-r|u-v|^2)
3 –sigmoid:tanh(r*u'v + coef0)

-d degree:核函数中的degree设置(默认3)
-g r(gama):核函数中的?函数设置(默认1/ k)
-r coef0:核函数中的coef0设置(默认0)
-c cost:设置C-SVC,?
-SVR和?-SVR的参数(默认1)
-n nu:设置?-SVC,一类SVM和?- SVR的参数(默认0.5)
-p e:设置? -SVR 中损失函数?的值(默认0.1)
-m cachesize:设置cache内存大小,以MB为单位(默认40)
-e :设置允许的终止判据(默认0.001)
-h shrinking:是否使用启发式,0或1(默认1)
-wi weight:设置第几类的参数C为weight?C(C-SVC中的C)(默认1)
-v n: n-fold交互检验模式 其中-g选项中的k是指输入数据中的属性数。

option -v 随机地将数据剖分为n部分并计算交互检验准确度和均方根误差。

以上这些参数设置可以按照SVM的类型和核函数所支持的参数进行任意组合,如果设置的参数在函数或SVM类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。

training_set_file是要进行训练的数据集;

model_file是训练结束后产生的模型文件,文件中包括支持向量样本数、支持向量样本以及lagrange系数等必须的参数;该参数如果不设置将采用默认的文件名,也可以设置成自己惯用的文件名。

Svmpredict的用法:svmpredict test_file model_file output_file model_file是由svmtrain产生的模型文件;
test_file是要进行预测的数据文件;
Output_file是svmpredict的输出文件。
svm-predict没有其它的选项。

svmtrain -s 0 -c 1000 -t 1 -g 1 -r 1 -d 3
data_file 训练一个由多项式核(u'v+1)^3和C=1000组成的分类器。
svmtrain -s 1 -n 0.1 -t 2 -g 0.5 -e 0.00001
data_file 在RBF核函数exp(-0.5|u-v|^2)和终止允许限0.00001的条件下,训练一个?-SVM (? = 0.1)分类器。

svmtrain -s 3 -p 0.1 -t 0 -c 10 data_file 以线性核函数u'v和C=10及损失函数?= 0.1求解SVM回归。

3. svmscale 的用法 对数据集进行缩放的目的在于:
1)避免一些特征值范围过大而另一些特征值范围过小;
2)避免在训练时为了计算核函数而计算内积的时候引起数值计算的困难。因此,通常将数据缩放到[ -1,1]或者是[0,1]之间。

用法:svmscale [-l lower] [-u upper] [-y y_lower y_upper] [-s save_filename] [-r restore_filename] filename (缺省值: lower = -1,upper = 1,没有对y进行缩放) 其中,
-l:数据下限标记;lower:缩放后数据下限;
-u:数据上限标记;upper:缩放后数据上限;
-y:是否对目标值同时进行缩放;y_lower为下限值,y_upper为上限值;
-s save_filename:表示将缩放的规则保存为文件save_filename;
-r restore_filename:表示将缩放规则文件restore_filename载入后按此缩放; filename:待缩放的数据文件(要求满足前面所述的格式)。

缩放规则文件可以用文本浏览器打开,看到其格式为: lower upper lval1 uval1 lval2 uval2 其中的lower 与upper 与使用时所设置的lower 与upper 含义相同;
index 表 示特征序号;
lval 为该特征对应转换后下限lower 的特征值;
uval 为对应于转换后上限upper 的特征值。

数据集的缩放结果在此情况下通过DOS窗口输出,当然也可以通过DOS的 文件重定向符号“>”将结果另存为指定的文件。

使用实例:
1) svmscale –s train3.range train3>train3.scale 表示采用缺省值(即对属性值缩放到[ -1,1]的范围,对目标值不进行缩放) 对数据集train3 进行缩放操作,其结果缩放规则文件保存为train3.range,缩放集的缩放结果保存为train3.scale。
2) svmscale –r train3.range test3>test3.scale 表示载入缩放规则train3.range 后按照其上下限对应的特征值和上下限值线 性的地对数据集test3 进行缩放,结果保存为test3.scale。

 

你可能感兴趣的:(用matlab实现gabor小波对图…)