资源简介
基于SVM的RBG图像分割,对图像的前景与后景进行分割

代码片段和文件信息
%% Matlab神经网络43个案例分析
% 基于SVM的图像分割-真彩色图像分割
% by 李洋(faruto)
% http://www.matlabsky.com
% Email:faruto@163.com
% http://weibo.com/faruto
% http://blog.sina.com.cn/faruto
% 2013.01.01
%% A Little Clean Work
tic;
close all;
clear;
clc;
format compact;
%% 读取图像数据
% 读入图像,放在矩阵pic
pic = imread(‘littleduck.jpg‘);
% 查看矩阵pic的大小和类型
whos pic;
scrsz = get(0‘ScreenSize‘);
figure(‘Position‘[scrsz(3)*1/4 scrsz(4)*1/6 scrsz(3)*4/5 scrsz(4)]*3/4);
imshow(pic);
%% 确定训练集
TrainData_background = zeros(203‘double‘);
TrainData_foreground = zeros(203‘double‘);
% % 背景(湖水)采样
% msgbox(‘Please get 20 background samples(点击OK后再按任意键继续)‘ ...
% ‘Background Samples‘‘help‘);
% pause;
% for run = 1:20
% [xy] = ginput(1);
% hold on;
% plot(xy‘r*‘);
% x = uint8(x);
% y = uint8(y);
% TrainData_background(run1) = pic(xy1);
% TrainData_background(run2) = pic(xy2);
% TrainData_background(run3) = pic(xy3);
% end
% % 待分割出来的前景(鸭子)采样
% msgbox(‘Please get 20 foreground samples which is the part to be segmented(点击OK后再按任意键继续)‘ ...
% ‘Foreground Samples‘‘help‘);
% pause;
% for run = 1:20
% [xy] = ginput(1);
% hold on;
% plot(xy‘ro‘);
% x = uint8(x);
% y = uint8(y);
% TrainData_foreground(run1) = pic(xy1);
% TrainData_foreground(run2) = pic(xy2);
% TrainData_foreground(run3) = pic(xy3);
% end
% % 背景(湖水)训练样本 10*3
TrainData_background = ...
[52 74 87;
76 117 150;
19 48 62;
35 64 82;
46 58 36;
50 57 23;
110 127 135;
156 173 189;
246 242 232;
166 174 151];
% % 前景(鸭子)训练样本 8*3
TrainData_foreground = ...
[211 192 107;
202 193 164;
32 25 0;
213 201 151;
115 75 16;
101 70 0;
169 131 22;
150 133 87];
%% 建立支持向量机
% let background be 0 & foreground 1
% 即 属于背景(湖水)的点为0,属于前景(鸭子)的点位1
TrainLabel = [zeros(length(TrainData_background)1); ...
ones(length(TrainData_foreground)1)];
TrainData = [TrainData_background;TrainData_foreground];
model = svmtrain(TrainLabel TrainData ‘-t 1 -d 1‘);
%% 进行预测i.e.进行图像分割
preTrainLabel = svmpredict(TrainLabel TrainData model);
% 求三维矩阵pic的行数m,列数n,页数k
[mnk] = size(pic)
% 将三维矩阵pic转成m*n行,k列的双精度二维矩阵
TestData = double(reshape(picm*nk));
% 查看矩阵TestData的大小和类型
whos TestData;
% 预测前景(鸭子)和背景(湖水)的标签
TestLabal = svmpredict(zeros(length(TestData)1) TestData model);
%% 展示分割后的图像
% 根据预测得到的前景(鸭子)和背景(湖水)标签对整个图像的像素点进行分类,进而达到图像分割目的。
ind = reshape([TestLabalTestLabalTestLabal]mnk);
ind = logical(ind);
pic_seg = pic;
pic_seg(~ind) = 0;
% 展示分割后的图像
scrsz = get(0‘ScreenSize‘);
figure(‘Position‘[scrsz(3)*1/4 scrsz(4)*1/6 scrsz(3)*4/5 scrsz(4)]*3/4);
imshow(pic_seg);
% 分割前和分割后图像对比查看
scrsz = get(0‘ScreenSize‘);
figure(‘Position‘[scrsz(3)*1/4 scrsz(4)*1/6 scrsz(3)*4/5 scrsz(4)]*3/4);
subplot(121);
imshow(pic);
subplot(122);
imshow(pic_seg);
%%
toc;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3273 2013-08-18 11:03 Chapter_ImSegmentUsingLibsvm.m
文件 25237 2010-01-14 21:18 littleduck.jpg
----------- --------- ---------- ----- ----
28510 2
- 上一篇:HC-SR04超声波测距显示LED灯闪烁
- 下一篇:51单片机蜂鸣器音乐盒程序代码
相关资源
- 基于蚁群算法优化SVM的瓦斯涌出量预
- 基于模糊聚类和SVM的瓦斯涌出量预测
- 基于CAN总线与ZigBee的瓦斯实时监测及
- SVM-Light资料,使用说明
- 果蝇算法融合SVM的开采沉陷预测模型
- BoW|Pyramid BoW+SVM进行图像分类
- 基于libsvm的图像分割代码
- 基于SVM及两类运动想象的多通道特征
- 小波包和SVM在轴承故障识别中的应用
- 林智仁教授最新版本LibSVM工具箱
- 台湾林教授的支持向量机libsvm
- 新闻分类语料
- libsvm-3.20
- 7种支持向量机SVM工具包
- A Practical Guide to Support Vector Classifica
- libSVM的代码详细解析,注释非常详细
- 台湾林志恒的LIBSVM的中文简体说明文
- SVM算法-回归拟合程序.zip
- 基于Grid-Search_PSO优化SVM回归预测矿井
- 新冒落带高度算法FOA-SVM预计模型
- 官方最新版本libsvm-3.23
- 基于PCA和SVM的个性化睡眠分期研究
- 基于svm四种工具箱
- 自然语言处理之文本主题判别
- HOG+SVM实现数字识别
- opencv自带SVM分类器使用程序
- 基于HOG特征提取的svm行人头肩训练
- 遗传算法优化支持向量机算法
- 经典的行人检测算法,利用HOG和SVM实
- 基于GA参数优化的在线学习SVM算法及其
评论
共有 条评论