基于图支配集的高光谱图像波段选择算法 (DSEBS)
一、、 算法原理与数学模型
DSEBS 算法的精髓在于它不只看单个波段的好坏,而是从全局结构出发,同时考量波段的“信息量”与“独立性”。
2.1 Step 1: 构建波段关系图 (Graph Construction)
首先,我们将高光谱图像的
为了衡量波段间的相似度(即边的权重
(注:
同时,定义每个节点
物理意义:
2.2 Step 2: 定义目标函数 (Objective Function)
为了选出最优的
这个函数是一个分式结构:
- 分子(信息量约束):选出来的波段子集总度数越小越好。这鼓励算法去挑选那些“特立独行”、信息丰富的波段。
- 分母(独立性约束):选出来的波段彼此间的相似度越低越好。这强行打散了“抱团冗余”的波段。
最终目标:寻找能让
2.3 Step 3: 提取主导集 (Dominant Set Extraction)
由于在庞大的组合数中找到绝对的最优解(NP-hard问题)极其耗时,DSEBS 借助了图论中的主导集 (Dominant Set) 理论进行高效搜索。通过迭代优化(如复制动力学演化策略),算法能快速收敛,扒出那些最具代表性的“意见领袖”波段。
二、 算法执行流程图示
输入: 原始高光谱数据立方体 (M x N x L)
|
v
[Step 1: 波段图构建]
|- 计算所有波段两两之间的相似度矩阵 (Adjacency Matrix)
|- 计算每个波段的度 (Degree)
|
v
[Step 2: 目标函数计算]
|- 初始化一个候选波段子集 B
|- 计算当前子集的 J(B) 值 (衡量优劣)
|
v
[Step 3: 主导集演化搜索]
|- 模仿生物进化: 淘汰冗余波段, 引入潜力波段
|- 不断迭代直至 J(B) 无法再减小 (收敛)
|
v
输出: 精选出的 k 个最具代表性波段索引
三、 MATLAB 核心实现代码
虽然原版论文的代码较为复杂,但我们可以提炼出它的最核心骨架,让你一睹其底层逻辑。以下为简化的 MATLAB 代码实现:
function [selected_bands] = DSEBS_band_selection(hsi_img, num_bands)
% hsi_img: 输入的高光谱三维数据 (高 x 宽 x 波段数)
% num_bands: 期望选择的波段数量
[~, ~, L] = size(hsi_img);
hsi_reshaped = reshape(hsi_img, [], L); % 将数据重塑为 像素数 x 波段数
% --- 1. 构建邻接矩阵 E 和度向量 d ---
E = zeros(L, L);
sigma = 0.5; % RBF核参数,可根据数据调整
for i = 1:L
vi = hsi_reshaped(:, i);
for j = i+1:L
vj = hsi_reshaped(:, j);
dist_sq = sum((vi - vj).^2);
E(i, j) = exp(-dist_sq / (2 * sigma^2));
E(j, i) = E(i, j); % 对称矩阵
end
end
d = sum(E, 2); % 计算度
% --- 2. 模拟主导集提取 (简化版贪心搜索) ---
% 实际论文中使用的是更复杂的基于replicator dynamics的优化
% 这里用贪心法做原理演示
selected_bands = [];
current_set = [];
for k = 1:num_bands
best_J = inf;
best_idx = -1;
% 遍历所有未选中的波段
for i = 1:L
if ~ismember(i, selected_bands)
temp_set = [current_set, i];
% 计算目标函数 J(B)
sum_d = sum(d(temp_set));
sum_E = 0;
for p = 1:length(temp_set)
for q = 1:length(temp_set)
sum_E = sum_E + E(temp_set(p), temp_set(q));
end
end
J_val = sum_d / sum_E;
% 寻找使得 J 最小的波段加入
if J_val < best_J
best_J = J_val;
best_idx = i;
end
end
end
% 将找到的最佳波段加入集合
selected_bands = [selected_bands, best_idx];
current_set = selected_bands;
fprintf('选中第 %d 个波段: Band %d, J = %.4f\n', k, best_idx, best_J);
end
% 对选中的波段进行排序
selected_bands = sort(selected_bands);
end
参考代码 基于图支配集的高光谱图像波段选择算法 www.youwenfan.com/contentcnu/60028.html
四、 为什么 DSEBS 如此强大?
相比于传统的波段选择方法(如基于信息熵排序或简单的K-Means聚类),DSEBS 具有降维打击般的优势:
- 传统方法往往是“目光短浅”的局部操作,而 DSEBS 通过图论模型洞察了所有波段之间的全局拓扑结构。
- 它的目标函数巧妙地平衡了“信息丰富度”和“波段独立性”。既不怕漏掉关键细节,也绝不允许数据冗余。
- 它是一种无监督算法,不需要耗费人工去标注地物类别,直接靠数据内在的数学结构就能完成特征筛选。
在实际的遥感应用中(如精准农业估产、矿物成分探测、军事伪装识别),使用 DSEBS 将几百个波段压缩到十几个核心波段后,不仅数据传输带宽骤降,后续分类器的运行速度提升数十倍,甚至连最终的分类精度都会不降反升!