其他分享
首页 > 其他分享> > 【MATLAB】基于支持向量机的简单图像识别实现

【MATLAB】基于支持向量机的简单图像识别实现

作者:互联网

支持向量机是一种较好的分类算法,在此可通过调用libsvm的外部包并编译以及配置环境变量后在matlab中实现支持向量机。此处实现简单图像识别的思想是通过将图片转化为特征矩阵后,运用支持向量机对其进行训练并得到分类依据。由此可进行简单的图像识别。在此处通过11个训练样本来预测3个图片,能够较好的判断出20*20像素的数字2。代码部分如下
在这里插入图片描述

%% 初始化
clc;clear;close all;
%% 图像读入,灰度化,二值化,显示二值图
aimg = zeros(100,15);        %存放图片,列向量为图片
for i=1:15
    img=imread([num2str(i),'.jpg']);
    img = rgb2gray(img);  
    BW=~im2bw(img);         % 背景用0表示,有效区域用1表示
    aimg(:,i)=BW(:);
    figure;imshow(BW),title('二值显示');
end
close all;
%% 读取数据
features = aimg'; %特征
class = [1,0,1,1,0,0,0,0,0,1,1,1,0,0,0]'; %类型
%% 归一化
temp = mapminmax(features',0,1); %归一化到0-1之间
featuresn=temp'; %转置为列向量
train_id = [1:11]; %训练样本序号
test_id = [12:15]; %测试样本序号
%% 构建支持向量机
cmd = ['-c 100 -g 0.1 -s 0 -t 2']; %支持向量机参数设置
model = svmtrain(class(train_id),featuresn(train_id,:),cmd); %对数据进行训练
%% 使用支持向量机预测
[predict_class,accuracy,dec_value] = svmpredict(class(test_id),featuresn(test_id,:),model);
%% 预测结果作图
figure;
plot(class(test_id),'bo');
hold on;
plot(predict_class,'r*');
grid on;
xlabel('样本序号');
ylabel('类型');
legend('实际类型','预测类型');
set(gca,'fontsize',12);

标签:图像识别,img,%%,id,MATLAB,test,class,向量
来源: https://blog.csdn.net/m0_53163870/article/details/121716935