1 简介
首先对病灶图片进行gabor小波纹理特征提取,然后输入进经粒子群优化的支持向量机进行训练与测试分类。
支持向量机 (Support Vector Machines, SVM) 是一种应用广泛的机器学习方法, 具有理论知识清晰完备,适应性和泛化能力良好的优点, 核心思想是在特征空间中寻找到一个最优超平面将两类样本尽可能大的分开, 能够较好的处理小样本、非线性和克服“维数灾难”问题, 并且表现出优秀的分类能力和泛化能力而被广泛应用于分类和回归等领域. 但是 SVM 对核函数的参数选取对分类效果影响很大, 不合适的参数可能使得分类器性能大大降低. 针对 SVM 核参数的选取问题, 目前尚没有统一有效的方法. 传统的参数选择方法如实验法、网格搜索法等由于耗时过长和不必要的验证流程等缺点, 更常用的方法是群智能算法如蚁群算法、遗传算法和粒子群算法等优化支持向量机核参数.粒子群算法由于算法结构简单、寻优能力相对较好, 近年来选择粒子群算法优化 SVM 参数成为研究热点之一.。
2 部分代码
clc
clear
close all
%%
addpath gabor
fprintf('开始计算\n');
%%
filter_bank = construct_Gabor_filters(8, 5, [48 48]); %5个尺度8个方向
class1path=dir('正常');
data_matrix1=[];
for i=1:length(class1path)-2
imgpath=['正常\' class1path(i+2).name];%煤炭的路径
img1=imread(imgpath);%读取图片
img2=rgb2gray(img1);%灰度化
img3= double(imresize(img2,[48 48],'bilinear')); %采用'bilinear':采用双线性插值算法扩展为48*48
H2 = filter_image_with_Gabor_bank(img3,filter_bank,64);%%提取gabor纹理特征
data_matrix1=[data_matrix1 H2];%将提取的特征放进data_matrix1中
disp(sprintf('完成正常文件夹中第%i图的gabor特征提取',i));
end
tz_image1=data_matrix1';
%%
class1path=dir('溃疡');
data_matrix1=[];
for i=1:length(class1path)-2
imgpath=['溃疡\' class1path(i+2).name];%煤炭的路径
img1=imread(imgpath);%读取图片
img2=rgb2gray(img1);%灰度化
img3= double(imresize(img2,[48 48],'bilinear')); %采用'bilinear':采用双线性插值算法扩展为48*48
H2 = filter_image_with_Gabor_bank(img3,filter_bank,64);%%提取gabor纹理特征
data_matrix1=[data_matrix1 H2];%将提取的特征放进data_matrix1中
disp(sprintf('完成溃疡文件夹中第%i图的gabor特征提取',i));
end
tz_image2=data_matrix1';
%%
input=[tz_image1;tz_image2];
output=[ones(1,size(tz_image1,1)) 2*ones(1,size(tz_image2,1))]';
save img_tz input output
3 仿真结果
4 参考文献
[1]李飞. 基于改进粒子群算法的支持向量机参数优化[D]. 河北工业大学.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。