1 内容介绍
为了满足人工智能在目标识别方法中的应用需求,需要具备对海量数据进行智能分类、识别、判读的能力.进一步挖掘了目标特性数据库数据,并将基于HOG+SVM的目标识别算法应用于红外目标识别过程中.选择采集到的汽车、直升机、飞机、舰船、无人机等目标,并结合HOG算子与SVM分类方法来实现目标检测与分类算法,从而实现了目标智能化分类研究,为后续目标特性的进一步分析以及导引头智能化算法设计提供了支撑.
2 部分代码
%% 用hog特征对图像进行多分类,svm训练,1 VS 1
%% 1 数据集,包括训练的和测试的 (注意自己图片存放路径,附录我给出示例下载图片链接)
imdsTrain = imageDatastore('train_images',...
'IncludeSubfolders',true,...
'LabelSource','foldernames');
imdsTest = imageDatastore('test_image');
%% 显示训练的图片种类Labels和数量Count
Train_disp = countEachLabel(imdsTrain);
disp(Train_disp);
%% 2 对训练集中的每张图像进行hog特征提取,测试图像一样
% 预处理图像,主要是得到features特征大小,此大小与图像大小和Hog特征参数相关
imageSize = [256,256];% 对所有图像进行此尺寸的缩放
image1 = readimage(imdsTrain,1);
scaleImage = imresize(image1,imageSize);
[features, visualization] = extractHOGFeatures(scaleImage);
imshow(scaleImage);hold on; plot(visualization)
% 对所有训练图像进行特征提取
numImages = length(imdsTrain.Files);
featuresTrain = zeros(numImages,size(features,2),'single'); % featuresTrain为单精度
for i = 1:numImages
imageTrain = readimage(imdsTrain,i);
imageTrain = imresize(imageTrain,imageSize);
featuresTrain(i,:) = extractHOGFeatures(imageTrain);
end
% 所有训练图像标签
trainLabels = imdsTrain.Labels;
% 开始svm多分类训练,注意:fitcsvm用于二分类,fitcecoc用于多分类,1 VS 1方法
classifer = fitcecoc(featuresTrain,trainLabels);
%% 预测并显示预测效果图
numTest = length(imdsTest.Files);
for i = 1:numTest
testImage = readimage(imdsTest,i);
scaleTestImage = imresize(testImage,imageSize);
featureTest = extractHOGFeatures(scaleTestImage);
[predictIndex,score] = predict(classifer,featureTest);
figure;imshow(testImage);
title(['预测图像: ',char(predictIndex)]);
end
3 运行结果
4 参考文献
[1]姜经纬, 程传蕊. 基于HOG+SVM的图像分类系统的设计与实现[J]. 漯河职业技术学院学报, 2017, 16(2):4.
[2]宋敏敏, 周泽亚, 邱燕,等. 基于HOG特征和SVM分类器的红外图像智能检测与分类方法[J]. 红外, 2022(043-004).