libsvm驱动的图像分类实战与海洋森林样本选取
本资源是一份MATLAB脚本,名为"libsvm图像分类",由xiaochou编写并最后更新于2016年1月26日。该脚本的目标是使用libsvm进行图像分类,通过实例化一个图像分类任务,演示如何将五类不同的图像(海洋、森林、海滩、地球和小型树木)根据用户选择的区域划分训练数据集。以下是主要步骤的详细解释: 1. 图像读取与显示: - 使用`imread`函数加载名为"1.bmp"的图像,并通过`imshow`显示。 2. 图像划分与标注: - 定义六个空矩阵,分别对应六种类别的训练数据。用户被提示选择海洋样本,然后通过`ginput`函数获取鼠标点击位置,提取对应区域的RGB值,存储在`TrainData_sea`矩阵中。 3. 随机划分训练数据: - 对`TrainData_sea`中的数据进行随机排列,选取前100个样本作为海洋类别训练数据。同样过程重复进行,分别用于森林、海滩、地球和小型树木的样本划分,用不同颜色的点标记输入位置。 4. 使用libsvm进行分类: - 由于脚本中并未实际展示libsvm的使用,我们可以推测后续会涉及到将这些预处理后的图像特征向量(每张图像表示为3维特征向量)转换为libsvm所需的格式,然后利用libsvm的分类算法进行训练。这可能包括创建SVM模型(如线性核、多项式核或高斯径向基函数核),设置参数,以及执行训练。 5. 预测与评估: - 训练完成后,可以对新的图像进行同样的区域选择,将其转换为特征向量,然后通过已训练的模型进行预测,判断其属于哪一类。 此脚本提供了一个基础的图像分类案例,展示了如何结合libsvm进行图像特征提取和分类,对于学习MATLAB中的机器学习和图像处理应用具有实践价值。然而,要完成完整的libsvm图像分类,还需要进一步处理图像特征(例如,通过色彩直方图、纹理特征等),以及调用libsvm的接口进行模型训练和测试。
% a litter test of image classification based on libsvm
% by xiaochou
% last modified 2016.01.26
%% 清空环境变量
close all;
clear;
clc;
format compact;
%% 读取图像
pic = imread(‘1.bmp’);
figure;
imshow(pic);
%% 选定训练集合测试集
TrainData_sea = zeros(100,3,’double’);
TrainData_forest = zeros(100,3,’double’);
TrainData_beach = zeros(100,3,’double’);
TrainData_earth = zeros(100,3,’double’);
TrainData_Smalltree = zeros(100,3,’double’);
TrainData_Road = zeros(100,3,’double’);
% 采样
msgbox(‘Please separate sea samples’,’sea Samples’,’help’);
pause;
[x,y] = ginput(2);
hold on;
plot(x,y,’r*’);
x = uint16(x);
y = uint16(y);
TrainData_seas = pic(y(1):y(2),x(1):x(2),1:3);
[X,Y,P] = size(TrainData_seas);
for i = 1:X
for j = 1:Y
TrainData_sea(run,1) = TrainData_seas(i,j,1);
TrainData_sea(run,2) = TrainData_seas(i,j,2);
TrainData_sea(run,3) = TrainData_seas(i,j,3);
run = run+1;
end
end
randindex = randperm(X*Y);% 这个是1到X*Y的随机组合
TrainData_sea = TrainData_sea(randindex(1:100),:);
msgbox(‘Please separate forest samples’,’forest Samples’,’help’);
pause;
[x,y] = ginput(2);
hold on;
plot(x,y,’bo’)
x = uint16(x);
y = uint16(y);
TrainData_forests = pic(y(1):y(2),x(1):x(2),1:3);
[X,Y,P] = size(TrainData_forests);
run = 1;
for i = 1:X
for j = 1:Y
TrainData_forest(run,1) = TrainData_forests(i,j,1);
TrainData_forest(run,2) = TrainData_forests(i,j,2);
TrainData_forest(run,3) = TrainData_forests(i,j,3);
run = run+1;
end
end
剩余6页未读,继续阅读
- 粉丝: 1
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ExtJS 2.0 入门教程与开发指南
- 基于TMS320F2812的能量回馈调速系统设计
- SIP协议详解:RFC3261与即时消息RFC3428
- DM642与CMOS图像传感器接口设计与实现
- Windows Embedded CE6.0安装与开发环境搭建指南
- Eclipse插件开发入门与实践指南
- IEEE 802.16-2004标准详解:固定无线宽带WiMax技术
- AIX平台上的数据库性能优化实战
- ESXi 4.1全面配置教程:从网络到安全与实用工具详解
- VMware ESXi Installable与vCenter Server 4.1 安装步骤详解
- TI MSP430超低功耗单片机选型与应用指南
- DOS环境下的DEBUG调试工具详细指南
- VMware vCenter Converter 4.2 安装与管理实战指南
- HP QTP与QC结合构建业务组件自动化测试框架
- JsEclipse安装配置全攻略
- Daubechies小波构造及MATLAB实现