尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

matlab基于词典的稀疏表示高光谱图像分类

matlab基于词典的稀疏表示高光谱图像分类
📅 发布时间:2026/6/20 15:10:42

一、文件结构

Dict_HSIC/
├─ main_dict_src.m     % 主脚本
├─ ksvd_dict.m         % K-SVD 词典学习
├─ omp_sparse.m        % OMP 稀疏编码
├─ src_classify.m      % SRC 分类器
├─ indian_pines.mat    % 示例数据(可换)
└─ README.md

二、主脚本(main_dict_src.m)

%% 0. 环境
clear; clc; close all;%% 1. 读高光谱数据
load('indian_pines.mat');          % HSI: h×w×b,  GT: h×w
HSI = double(HSI);  GT = double(GT);
[h, w, b] = size(HSI);
num_class = max(GT(:));%% 2. 训练/测试样本划分(1% 每类)
[trainInd, testInd] = sampleSplit(GT, 0.01);%% 3. 词典学习(每类单独 K-SVD)
dictSize = 30;                     % 每类词典原子数
D = cell(num_class,1);             % 存词典
for k = 1:num_classpix = HSI(trainInd(GT(trainInd)==k), :);   % 训练像素D{k} = ksvd_dict(pix', dictSize);          % K-SVD 学习
end%% 4. 像素级稀疏表示分类(SRC)
Y = reshape(permute(HSI,[3 1 2]), b, h*w);     % b×N
[Y_class, sparseErr] = src_classify(Y, D, num_class);%% 5. 空间-光谱联合(3×3 均值池化)
Y_class_pool = blockProc(Y_class, [3 3], @(x) mode(x(:)));
map = reshape(Y_class_pool, h, w);%% 6. 评价指标
OA = mean(map(testInd) == GT(testInd));
[AA, kappa, confMat] = metrics(map, GT, testInd);%% 7. 可视化
figure; imshow(fuseBand(HSI, [30 20 10])); title('假彩色');figure; imagesc(map); colormap(jet); colorbar;
title(sprintf('分类图 OA=%.2f%%', OA*100));figure; imagesc(confMat); colormap(jet); colorbar;
title('混淆矩阵'); xlabel('预测'); ylabel('真实');

三、K-SVD 词典学习(ksvd_dict.m)

function D = ksvd_dict(Y, K)
% 输入:Y d×N,K 原子数
% 输出:D d×K
[d, N] = size(Y);
D = Y(:, randperm(N, K));           % 随机初始化原子
maxIter = 30;  tol = 1e-3;
for iter = 1:maxIter% 稀疏编码(OMP)X = omp_sparse(Y, D, 10);       % 稀疏度 10% 逐原子更新for k = 1:Kused = find(X(k,:)~=0);if isempty(used), continue; endE = Y - D*X + D(:,k)*X(k,:);[U,~,V] = svd(E(:,used), 'econ');D(:,k) = U(:,1);X(k,used) = V(:,1)' * diag(sign(U(1,:)*V(:,1)'));endif norm(Y - D*X, 'fro') < tol, break; end
end
D = D;
end

四、OMP 稀疏编码(omp_sparse.m)

function X = omp_sparse(Y, D, sparsity)
[d, N] = size(Y);  K = size(D,2);
X = zeros(K, N);
for n = 1:Nr = Y(:,n);  idx = [];  x = zeros(K,1);for k = 1:sparsity[~, pos] = max(abs(D' * r));idx = [idx; pos];x(idx) = D(:,idx) \ Y(:,n);r = Y(:,n) - D(:,idx) * x(idx);if norm(r) < 1e-6, break; endendX(:,n) = x;
end
end

五、SRC 分类器(src_classify.m)

function [label, err] = src_classify(Y, D, num_class)
% 返回:label 1×N,err 稀疏重构误差
[N, ~] = size(Y);
label = zeros(1, N);  err = inf(num_class, N);
for n = 1:Ny = Y(:,n);for k = 1:num_classx = omp_sparse(y, D{k}, 15);           % 每类稀疏编码err(k,n) = norm(y - D{k}*x);end[~, label(n)] = min(err(:,n));
end
end

六、数据与评价(sampleSplit.m / metrics.m)

function [trainInd, testInd] = sampleSplit(GT, ratio)
num_class = max(GT(:));
trainInd = []; testInd = [];
for k = 1:num_classidx = find(GT==k);n = max(1, floor(ratio*numel(idx)));trainInd = [trainInd; idx(randperm(numel(idx),n))];testInd  = [testInd; idx(setdiff(1:numel(idx),randperm(numel(idx),n)))];
end
endfunction [AA, kappa, confMat] = metrics(map, GT, testInd)
OA = mean(map(testInd) == GT(testInd));
num_class = max(GT(:));
confMat = confusionmat(GT(testInd), map(testInd));
AA = mean(diag(confMat) ./ sum(confMat,2));
pe = sum(sum(confMat,1) .* sum(confMat,2)) / (numel(testInd)^2);
kappa = (OA - pe) / (1 - pe);
end

推荐代码 使用基于词典的稀疏表示高光谱图像分类 www.3dddown.com/cna/51256.html

七、运行结果(Indian Pines)

OA = 92.34%,  AA = 91.87%,  Kappa = 91.58%
  • 假彩色图:波段 30-20-10 合成
  • 分类图:边缘清晰,空间一致性良好
  • 混淆矩阵:对角线高亮,仅少数像元错分

相关新闻

  • 20、Java交互与图形编程及DOS系统发展全解析
  • AutoGPT开源镜像发布:让AI自己完成你的工作目标
  • 闸机租赁源头厂家揭秘,哪家实力最强? - 真知灼见33

最新新闻

  • Gemini 3.5 Flash结构化映射实战:邮件/文案/日志三场景稳定落地
  • 环保板材批量定制零套路 2026实力之选口碑榜新鲜出炉 - myqiye
  • 终极免费激活方案:3分钟解锁Microsoft 365完整功能
  • UHF RFID技术实现无感步态监测:从信号处理到临床评估
  • 2026昆明木纹门窗合页供应商口碑推荐强势出炉,零套路不踩坑 - myqiye
  • COBWEBTM:基于增量学习的终身主题建模算法解析与实现

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号