基于Gabor小波特征提取和PSO-SVM的胃溃疡分类(MATLAB R2018a)

Gabor滤波器是在测不准原则下能够在时域和频域中唯一能取得最佳的联合分辨率函数(测不准原则:是指在时域与频域中都要获得任何的测量精度那是不可能同时实现的,要使时域分辨率有所提高,必须牺牲频域的分辨率,反之亦然),进而Gabor小波滤波器则是由Gabor滤波器演化而来的,它结合Gabor滤波器多角度和小波滤波器的多尺度的优点,而且它的多通道滤波与人类的视觉系统相似,因为人类的视觉系统针对于不同的视觉信号它的频率还有方向是有不同的感觉特质的,该视觉系统是把我们的视网膜上形成的图像分成好多滤波以后的图像,这些滤波后的图像每一个都刻画描述了视网膜上形成的像在一定范围内的成分,这样的局部的范围研究者们通常就称之为通道。由于多通道滤波与人类的视觉系统相似,所以纹理的特征提取中它具有很大的作用。

Gabor在1046年那一年,为了从信号的Fourier变换提取出局部的信息,从而引入了时间局部化的窗函数,得到了窗口Fourier变换。由于窗口Fourier变换仅仅依赖于部分的时间信号,所以人们把现在的窗口Fourier变换又称为短时Fourier变换,这个变换又称为Gabor变换。称为Gabor变换主要是因为这类变换是1946年由Gabor首先引用的,虽然他当时引入的研究者们现在称之为Gabor变换并不是现今的这种形式,而是窗函数取Gauss函数的特殊情形。由Gabor函数形成的Gabor滤波器其实是一类特殊的加有Gauss窗的Fourier变换,其中窗函数对于图像则决定了其在空间域中的局限特质,如果研究者移动了窗函数窗口的中心,那他就可以获得不同的位置上图像的空间域的信息。除此之外,因为经过Gabor变换后Gauss函数仍旧是Gauss函数,这样子不管是在空间域上还是在频率域上Gabor变换都是局部的。如此说来,如果人们用Gabor变换针对纹理图像来进行纹理分析时,那么就可以既满足空间域上的局部性又可以满足频率域上的局部性。

研究者们常常把各种各样的图像当做是二维的离散序列,正因为如此,在研究中常用二维的Gabor函数所形成的二维的Gabor滤波器来进行图像的纹理特征提取。另外还有一个特别重要的原因就是Gabor函数与人类还有其他的哺乳动物的视觉表皮皮层细胞的感受视野相似,再加上非常好的空间局部特性和方向选择特性,可以捕捉到纹理图像在不同的频率不同的方向上的边缘和局部特性。

鉴于此,采用Gabor小波特征提取和PSO-SVM方法对胃溃疡进行分类,运行环境为MATLAB R2018a。

Matlab 复制代码
% 训练SVM模型
model = svmtrain(train_wine_labels,train_wine,cmd);
[predict1] = svmpredict(train_wine_labels,train_wine,model);
%
[train_wine_labels n]=sort(train_wine_labels);%对结果进行排序,使得画出来的结果图只管一点

figure;
hold on;
stem(train_wine_labels,'o');
plot(predict1(n),'r*');
xlabel('训练集样本','FontSize',12);
ylabel('类别标签','FontSize',12);
legend('实际训练集分类','预测训练集分类');
title('训练集分类结果','FontSize',12);
grid on;

%% SVM网络预测
[predict_label,accuracy] = svmpredict(test_wine_labels,test_wine,model);
% 打印测试集分类准确率
total = length(test_wine_labels);
right = sum(predict_label == test_wine_labels);


%% 结果分析
[test_wine_labels n]=sort(test_wine_labels);

figure;
hold on;
stem(test_wine_labels,'o');
plot(predict_label(n),'r*');
xlabel('测试集样本','FontSize',12);
ylabel('类别标签','FontSize',12);
legend('实际测试集分类','预测测试集分类');
title('测试集分类结果','FontSize',12);
完整代码:https://mbd.pub/o/bread/mbd-Y52YlJ1p
grid on;

担任《Mechanical System and Signal Processing》《中国电机工程学报》《控制与决策》等期刊审稿专家,擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

相关推荐
chnming19875 分钟前
STL关联式容器之map
开发语言·c++
进击的六角龙7 分钟前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python
檀越剑指大厂7 分钟前
【Python系列】浅析 Python 中的字典更新与应用场景
开发语言·python
VertexGeek8 分钟前
Rust学习(八):异常处理和宏编程:
学习·算法·rust
石小石Orz9 分钟前
Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~
javascript·人工智能·算法
湫ccc15 分钟前
Python简介以及解释器安装(保姆级教学)
开发语言·python
程序伍六七18 分钟前
day16
开发语言·c++
Sxiaocai22 分钟前
使用TensorFlow实现简化版 GoogLeNet 模型进行 MNIST 图像分类
分类·tensorflow·neo4j
wkj00123 分钟前
php操作redis
开发语言·redis·php
极客代码28 分钟前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow