基于稀疏表示分类器的高光谱图像分类MATLAB实现

news/2025/11/7 13:55:28/文章来源:https://www.cnblogs.com/y4353536666/p/19199490

基于稀疏表示分类器(Sparse Representation Classifier, SRC)的高光谱图像分类MATLAB实现


一、架构

1. 算法流程


二、核心代码

1. 数据加载与预处理

%% 数据加载(ENVI格式)
hdr = read_envihdr('Indian_pines.hdr'); % 读取头文件
img = multibandread('Indian_pines.raw', hdr.dims, 'uint16', hdr.headerOffset, 'b', hdr.interleave); % 读取数据% 转换为MATLAB数组
X = double(reshape(img, hdr.dims(1)*hdr.dims(2), hdr.dims(3))); % 21025x220
gt = load('Indian_pines_gt.txt'); % 加载标签% 数据归一化
X = (X - min(X(:))) ./ (max(X(:)) - min(X(:))); % 最小-最大归一化

2. 字典构建与标签划分

%% 训练样本选择(每类前20%作为训练)
train_ratio = 0.2;
class_labels = unique(gt);
train_indices = [];
for i = 1:length(class_labels)class_idx = find(gt == class_labels(i));train_indices = [train_indices; class_idx(1:round(train_ratio*length(class_idx)))];
end% 构建字典矩阵A
A = [];
labels = [];
for i = 1:length(class_labels)class_idx = find(gt == class_labels(i));train_class = X(train_indices(class_idx), :);A = [A; train_class];labels = [labels; repmat(class_labels(i), size(train_class,1),1)];
end

3. 稀疏编码实现(OMP算法)

function coeffs = omp(A, y, sparsity)% A: 字典矩阵 (n×K)% y: 测试样本 (n×1)% sparsity: 稀疏度[n, K] = size(A);r = y; % 残差初始化idx = zeros(sparsity,1);coeffs = zeros(K,1);for iter = 1:sparsityproj = A' * r;[~, max_idx] = max(abs(proj));idx(iter) = max_idx;A_sub = A(:, idx(1:iter));coeffs(idx(1:iter)) = A_sub \ y;r = y - A_sub * coeffs(idx(1:iter));end
end

4. 分类决策

%% 测试样本处理
test_indices = setdiff(1:size(X,1), train_indices);
X_test = X(test_indices, :);%% 稀疏表示分类
num_classes = length(class_labels);
predictions = zeros(size(X_test,1),1);for i = 1:size(X_test,1)y = X_test(i,:)';coeffs = omp(A, y, 10); % 稀疏度设为10% 计算类间残差residuals = zeros(num_classes,1);for j = 1:num_classesclass_samples = A(labels == class_labels(j), :);residuals(j) = norm(y - class_samples * coeffs(labels == class_labels(j)));end[~, pred_class] = min(residuals);predictions(i) = class_labels(pred_class);
end

参考代码 稀疏表示分类器应用于高光谱图像分类的MATLAB代码实现 www.youwenfan.com/contentcnk/79441.html

三、优化

1. 字典优化

% 使用K-SVD优化字典
options = struct('MaxIter', 10, 'Tol', 1e-6);
[D, X] = ksvd(A, 10, options); % 10次迭代

2. 并行计算加速

% 启用并行计算池
parpool('local');% 并行化稀疏编码
parfor i = 1:size(X_test,1)coeffs(:,i) = omp(A, X_test(i,:), 10);
end
delete(gcp);

3. 特征选择

% 基于互信息的特征选择
[~, idx] = mutualinfo(X, gt);
X_selected = X(:, idx(1:50)); % 选择前50个特征

建议结合ENVI工具进行数据预处理,并使用MATLAB Parallel Server加速大规模计算。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/958787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【能源行业案例】借助TeeChart图表库,将地质数据转化为清晰的见解

自2007年以来,GeoLogismiki一直使用TeeChart Pro VCL/FMX图表库将复杂的数据转化为清晰、交互式的图形。将地质数据转化为清晰的见解 GeoLogismiki是一家总部位于希腊的公司,致力于为地质学家、工程师和环境专业人士…

地图上色

地图上色数据源地级市 地区生产总值(GDP)苏州市 26727.00南京市 18500.81无锡市 16263.29南通市 12421.90常州市 10813.60徐州市 10000.00扬州市 7809.64盐城市 7779.20泰州市 7020.95镇江市 5540.01淮安市 5413.02宿…

TCP快速打开TFO

以上仅供参考,如有疑问,留言联系

2025年双出风中央空调品牌权威推荐榜单:中央空调选购/省电中央空调/6赫兹中央空调源头厂家精选

在现代家居与商业空间中,一股柔和而均匀的气流往往是衡量空调系统品质的隐形标尺。 随着人们对室内环境舒适度要求的不断提高,双出风中央空调以其优越的气流分布能力和温度控制精度,正成为高端住宅和商业空间的首选…

模拟赛SXJ202511061800比赛记录题解

题目请看 最近被一些模拟赛蹂躏了,这场是来思路来的最快的一场比赛T1So easy,but...很简单,判差值和数量即可,我却漏了细节,82point,磕细节磕了1h,才想出正解,64行贴一下代码 /* User:Kevinrzy103874 Uid:72 Ag…

2025年山东开锁培训学校权威推荐榜单:汽车开锁培训/开锁技术培训/培训汽车开锁源头机构精选

一把钥匙开一把锁,但一名专业的锁匠却能开启千百种锁具,这背后是系统化培训与专业技能的结晶。 随着社会对专业开锁服务需求的日益增长,锁具修理工已成为现代城市服务中不可或缺的技术工种。据统计,中国锁具行业年…

2025年绝缘油滤油机直销厂家权威推荐榜单:润滑油滤油机/真空抽气机组/透平油滤油机设备源头厂家精选

在电力、冶金、石化等工业领域,一滴纯净的绝缘油是设备安全运行的命脉,而滤油机正是这命脉的守护者。 绝缘油滤油机作为工业油品净化的关键设备,其技术水平与过滤精度直接关系到大型机械设备的运行安全与使用寿命。…

国产化文档开发组件Spire.Office 10.10 全新发布!多项文档处理能力重磅升级

近日,国产化文档开发组件Spire.Office 同步更新 .NET和 Java 版本至10.10.0 !本次更新带来了多项全新功能与性能优化,为开发者提供更强大、更高效的文档、表格、PDF、演示文稿处理能力。近日,知名国产化文档开发组…

K8S(一)—— 云原生与Kubernetes(K8S)从入门到实践:基础概念与处理全解析

K8S(一)—— 云原生与Kubernetes(K8S)从入门到实践:基础概念与处理全解析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fa…

fastutil 实战指南:用原始类型集合把性能“薅满”

当你在 Java 里用 `Map<Integer, Double>`、`Set<Long>`、`List<Integer>` 处理大数据,会被装箱/拆箱与对象头开销“慢到怀疑人生”。fastutil 针对每种原始类型提供成套集合与工具(int/long/doub…

如何在关闭浏览器标签前,可靠地发送 HTTP 请求? - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Python 必背内置函数

一、输出与输入类 print() : 打印输出给定内容。示例:print("Hello, Python!") #输出 Hello, Python!input() :接收用户输入并返回字符串。示例:age = input("请输入年龄:") 输入 18 后, ag…

实用指南:【Java并发】深入理解synchronized

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年发电机厂家权威推荐榜:柴油发电机组/康明斯/玉柴/高压/大功率发电机,专业选购指南与实力解析

一、行业背景与发展趋势随着我国工业化进程的加速推进,发电设备行业作为国民经济的重要基础产业,正迎来新一轮发展机遇。特别是在"双碳"目标背景下,发电机组行业正朝着高效节能、智能控制、环保低碳的方向…

2025年磷酸氢二钾定制厂家权威推荐榜单:磷酸氢二钠/磷酸二氢钠/磷酸源头厂家精选

在食品加工、医药制造与工业水处理等领域,磷酸氢二钾及其相关磷酸盐作为重要的功能添加剂与化学中间体,其质量稳定性与定制化服务能力已成为下游用户的核心关注点。行业数据显示,2024年中国磷酸盐市场规模已突破200…

P2P CDN Tracker 技术深度解析(三):会话管理与心跳机制

在支持100万+并发连接的P2P系统中,如何高效管理用户会话、及时检测失效连接、合理回收资源?本文深入剖析Tracker的"生命线"——会话管理与心跳机制。前情回顾 在第1篇中,我们了解了Tracker的整体架构;第…

2025年发电机厂家推荐排行榜,发电机组,柴油发电机组,康明斯发电机,玉柴发电机,高压发电机,大功率发电机公司精选

一、行业背景与发展趋势随着全球能源转型加速和电力需求持续增长,发电设备行业正迎来新一轮技术变革。在工业制造、数据中心、医疗设施、商业建筑等领域,发电机组作为重要的备用电源和主力电源,其技术水平和产品质量…

Modbus Tcp协议

Modbus Tcp协议Posted on 2025-11-07 13:35 懒得理 阅读(0) 评论(0) 收藏 举报⚠️RX 最后的 4/N 个数据字节(xx xx xx xx / xx xx xx xx)是举例的伪数据, 实际内容由设备当前状态决定。 [1]读取输出线圈 功能…

高频电流探头在电源质量与谐波分析中的应用

在现代电力系统中,电源质量对设备运行稳定性、系统能效以及设备寿命有着直接影响。随着非线性负载和电力电子设备的广泛应用,谐波污染、电压波动、三相不平衡等电能质量问题愈发突出。高频电流探头作为关键测量工具,…

抖音 独立 IP 解决方案:独享静态住宅 IP + 环境隔离 + 粘性会话 - Smart

面向矩阵与品牌运营的全球覆盖、低延迟与可观测性基线方案 [1] 核心优势 8000 万+ 真实住宅 IP 资源池,覆盖全球 200+ 国家/地区,支持城市级精准定位 [1] 独享静态住宅 IP,一账号一环境,长时会话稳定不中断 [1] 低…