当前位置: 首页 > news >正文

高光谱图像分类MATLAB代码实现(多方法对比)

一、数据预处理与特征提取
1. 数据加载与格式转换
% 读取ENVI格式高光谱数据(Indian Pines数据集)hdr=read_envihdr('Indian_pines.hdr');img=multibandread('Indian_pines.raw',hdr.dims,'uint16',hdr.headerOffset,'b',hdr.interleave);X=double(reshape(img,hdr.dims(1)*hdr.dims(2),hdr.dims(3)));% 21025x220矩阵gt=load('Indian_pines_gt.txt');% 标签文件

关键处理

  • 数据归一化:(X - min(X(:))) ./ (max(X(:)) - min(X(:)))

  • 空间块采样:生成11×11像素的样本块平衡类别分布

2. 特征选择与降维
% 主成分分析(PCA)[coeff,score,explained]=pca(X);cum_explained=cumsum(explained);num_components=find(cum_explained>=95,1);X_pca=score(:,1:num_components);% 保留95%方差% 连续投影算法(SPA)selected_indices=successive_projections_algorithm(X,30);% 选择30个特征

二、传统机器学习方法
1. SVM分类器(RBF核)
% 数据划分(70%训练,30%测试)cv=cvpartition(labels,'HoldOut',0.3);X_train=X_pca(training(cv),:);y_train=labels(training(cv));X_test=X_pca(test(cv),:);y_test=labels(test(cv));% 模型训练template=templateSVM('KernelFunction','rbf','BoxConstraint',10,'KernelScale','auto');model=fitcecoc(X_train,y_train,'Learners',template,'Coding','onevsone');% 性能评估predicted=predict(model,X_test);accuracy=sum(predicted==y_test)/numel(y_test);confusionchart(y_test,predicted);

优化策略

  • 贝叶斯优化参数:BoxConstraintKernelScale

  • 多类评估指标:计算Kappa系数和类别F1-score

2. 稀疏表示分类器(SRC)
% 字典构建(每类前20%样本)train_indices=[];fori=1:length(unique_labels)class_idx=find(labels==unique_labels(i));train_indices=[train_indices;class_idx(1:round(0.2*length(class_idx)))];endA=X(train_indices,:);% OMP稀疏编码coeffs=omp(A,X_test',10);% 稀疏度设为10% 分类决策residuals=zeros(size(unique_labels));fori=1:size(X_test,1)forj=1:length(unique_labels)residuals(j)=norm(X_test(i,:)-A(labels==unique_labels(j),:)*coeffs(:,i));end[~,pred]=min(residuals);end

优势:对噪声鲁棒性强,适合小样本场景

三、深度学习方法
1. 3D-CNN模型
layers=[image3dInputLayer([1111200](@ref)% 输入层(空间11×11,光谱200波段)convolution3dLayer(3,32,'Padding','same')batchNormalizationLayer reluLayermaxPooling3dLayer(2,'Stride',2)convolution3dLayer(3,64,'Padding','same')batchNormalizationLayer reluLayermaxPooling3dLayer(2,'Stride',2)fullyConnectedLayer(256)reluLayerdropoutLayer(0.5)fullyConnectedLayer(num_classes)softmaxLayer classificationLayer];options=trainingOptions('adam',...'MaxEpochs',50,...'MiniBatchSize',32,...'InitialLearnRate',0.001,...'Shuffle','every-epoch',...'ValidationData',{X_val,y_val});net=trainNetwork(X_train,y_train,layers,options);

性能:在Indian Pines数据集上达到91.3% OA

2. CNN-LSTM-Attention混合模型
layers=[sequenceInputLayer([1001]% 输入层(100个时间步,1特征)convolution2dLayer([31],32,'Padding','same')batchNormalizationLayer reluLayermaxPooling2dLayer([21]lstmLayer(128,'OutputMode','last')attentionLayer(4,16)% 4头注意力,键维度16dropoutLayer(0.3)fullyConnectedLayer(num_classes)softmaxLayer classificationLayer];options=trainingOptions('adam',...'MaxEpochs',100,...'LearnRateSchedule','piecewise',...'LearnRateDropFactor',0.1,...'LearnRateDropPeriod',20);net=trainNetwork(X_train,y_train,layers,options);

创新点:融合空间CNN与时间LSTM特征,注意力机制聚焦关键波段

四、模型评估与可视化
1. 性能指标计算
function[accuracy,kappa,report]=evaluate(y_true,y_pred)accuracy=sum(y_true==y_pred)/numel(y_true);C=confusionmat(y_true,y_pred);kappa=cohenkappa(C);report=struct();classes=unique(y_true);fori=1:length(classes)TP=sum((y_true==classes(i))&(y_pred==classes(i)));FP=sum((y_true~=classes(i))&(y_pred==classes(i)));FN=sum((y_true==classes(i))&(y_pred~=classes(i)));report(i).Precision=TP/(TP+FP+eps);report(i).Recall=TP/(TP+FN+eps);report(i).F1=2*(report(i).Precision*report(i).Recall)/(report(i).Precision+report(i).Recall+eps);endend
2. 特征可视化
% t-SNE降维Y=tsne(X_pca,'NumDimensions',2,'Perplexity',30);gscatter(Y(:,1),Y(:,2),labels);title('t-SNE特征分布');% 注意力热力图[activations,~]=activations(net,X_test(1,:),'attention','OutputAs','rows');heatmap(activations);

参考代码 高光谱图像分类代码www.youwenfan.com/contentcsr/54947.html

五、方法对比与选型建议
方法优点缺点适用场景
SVM小样本学习,泛化性强高维数据计算量大标注样本有限(<1000)
SRC对噪声鲁棒,无需迭代特征选择敏感线性可分数据
3D-CNN自动提取时空特征需要大量标注数据复杂场景(如城市监测)
CNN-LSTM-Attention多模态特征融合模型复杂度高时序遥感数据

工程建议

  1. 小样本场景优先尝试SVM+特征选择(如CARS算法)

  2. 大规模数据使用3D-CNN+迁移学习

  3. 实时处理推荐轻量化模型(如MobileNetV2改进版)


六、扩展应用
  1. 混合像元分解:结合非负矩阵分解(NMF)提升分类精度

  2. 迁移学习:使用Sentinel-2预训练模型进行跨域适应

  3. 实时处理:部署到Jetson Nano平台,帧率>30fps

http://www.jsqmd.com/news/432644/

相关文章:

  • 管道巡检效率提升 50%:图扑 3D 大屏让运维人员不用再“扒图纸“
  • 测试老鸟,性能测试面试题+回答分析,项目案例(详细)
  • 基于Rothman-Keller模型的LBM两相流模拟实现
  • 从 0 到生产,用这个方法让 AI Agent 少走了 3 个月弯路!
  • 2026年开篇|一文盘点:2025年开源LLM模型年度回顾
  • 氨氮超标的处理方法,污水处理达标必看指南
  • 开发者实战:基于IEC 61162规范构建边缘计算与隔离的合规海事网关架构
  • 看似无关的方式技术,如何让中央空调能耗大幅下降?
  • 物联网毕设 基于单片机的姿态检测与可视化系统(源码+硬件+论文)
  • 至尊园联系方式:园区概况与联系信息参考 - 海棠依旧大
  • 福寿园联系方式:园区概况与联系信息参考 - 海棠依旧大
  • 2026年佛山单片机技术培训机构最新推荐榜:成人、零基础、新手、入门、进阶、实战、高薪、聚焦单片机培训、FPGA培训、LINUX嵌入式培训、物联网培训、教学品质与实战课程竞争力深度剖析 - 海棠依旧大
  • 清竹园联系方式:园区概况与联系信息参考 - 海棠依旧大
  • 手机常见 rom 记录
  • 写论文又慢又累?有哪些好用的论文写作工具品牌
  • 【2026亲测可玩】FC模拟器下载安装全攻略:电脑玩500+经典红白机游戏(附资源包) - xiema
  • 高并发经验对Java程序员来说为什么很重要?
  • 有哪些靠谱的 AI 论文写作工具?2026 最新排行榜
  • 阿里Java二面:聊聊你用过的限流方案?
  • 金三银四Java面试题及答案汇总(2026持续更新)
  • 竹茶园联系方式:园区概况与联系信息参考 - 海棠依旧大
  • 北京餐饮小程序定制开发指南|2026年助力本地餐饮企业数字化升级 - 品牌2026
  • 满足最新 IEC 61162-460 标准的网络安全网关厂商推荐与架构实战
  • 龙山源墓地联系方式:园区概况与联系信息参考 - 海棠依旧大
  • 大模型工作原理全揭秘:一文看懂LLM如何从0到1生成答案
  • ICLR 2026 Oral | 西湖大学发布Real PDE Bench
  • 构建生产级Agent核心概念教程(非常详细),AI Agent技术栈深度剖析,收藏这一篇就够了!
  • Infoseek字节探索媒介投放实战:技术赋能精准投放,基于热门案例的代码化落地
  • 2026异丙醇市场风向标:这些厂商值得一看,洗车水/二氯甲烷/ECS/120#白电油/四甲苯,异丙醇源头厂家怎么选择 - 品牌推荐师
  • 搜索逻辑范式转移:推荐一家深耕生成式引擎优化(GEO)的专业团队 - 品牌2026