简介:这份《南师大遥感数字图像处理复习题》面向遥感、测绘与地理信息相关专业的本科生及考研备考者,用于梳理课程重点、检验概念掌握程度。内容以名词解释、简答与填空三类题型组织,覆盖数字图像与像素定义、离散与连续两种处理观点、辐射校正与几何纠正、图像增强与信息提取、电磁波谱与分辨率、元数据与HDF、GeoTIFF存储格式等核心考点,并附有参考答案,便于对照自测与查漏补缺。资源包共1个doc文件,约272KB,轻量易携带,可直接打印或导入笔记软件反复翻阅。目前已有67人学习,适合在期末复习或考研冲刺阶段快速过一遍知识框架,也可作为课堂笔记的补充索引,帮助读者定位薄弱环节、强化对遥感数字图像处理基本概念与处理流程的理解。
1. 遥感数字图像处理复习题到底在考什么:从一份 .doc 说起
如果你手里正躺着一份「遥感数字图像处理复习题.doc」,大概率你面对的不是一个知识点,而是一整条从辐射定标到分类精度评价的技术链。遥感数字图像处理这门课的特点是:概念多、公式碎、流程长,复习题往往把辐射校正、几何校正、图像增强、图像变换、分类与精度评价揉在一起考。很多人翻车不是因为不会,而是因为把「处理流程的先后顺序」记反了——比如先做几何校正再做辐射校正,或者把监督分类和非监督分类的适用场景搞混。这份复习题真正要你掌握的,是每个环节的输入输出、参数含义和误差来源。适合正在备考的学生,也适合刚入行、需要把课本概念和工程实现对齐的从业者。
2. 辐射校正与几何校正:复习题里最容易混的两条线
2.1 辐射校正考的是什么:从 DN 值到表观反射率
复习题里出现「辐射校正」时,通常不是让你背定义,而是让你判断某个场景该用哪种校正。常见考点包括辐射定标、大气校正、太阳高度角和日地距离校正。核心逻辑是:传感器记录的 DN 值不是物理量,必须转成辐射亮度或表观反射率,才能跨时间、跨传感器比较。
常见做法是先把 DN 值转成辐射亮度,再转成表观反射率。公式里有两个容易记错的参数:太阳辐照度和太阳天顶角余弦。复习题常在这里设坑,比如给出太阳高度角而不是天顶角,或者把日地距离校正因子写反。
下面用 Python 演示一个最小计算流程,假设你已经从元数据里读到了增益和偏移:
import numpy as np # 假设 DN 矩阵,增益 gain 和偏移 offset 来自元数据 dn = np.array([[120, 135], [110, 150]], dtype=float) gain = 0.002 # 辐射定标增益 offset = -5.0 # 辐射定标偏移 # 第一步:DN 转辐射亮度 radiance = dn * gain + offset # 第二步:辐射亮度转表观反射率 # d 为日地距离校正因子,ESUN 为太阳辐照度,theta 为太阳天顶角 d = 1.0 ESUN = 1000.0 theta = np.deg2rad(30.0) # 天顶角 30 度 reflectance = (np.pi * radiance * d**2) / (ESUN * np.cos(theta)) print(reflectance)逻辑说明:先做线性定标,再做反射率转换。参数说明:gain和offset必须来自对应波段的元数据,不能混用;theta是天顶角,如果元数据给的是高度角,要用 90 度减去它;d是日地距离校正因子,复习题里常给 1 或具体日期对应的值。如果这一步算错,后面所有分类和指数计算都会偏。
2.2 几何校正的复习重点:控制点、重采样和 RMS 误差
几何校正的复习题通常围绕三个问题:选多少控制点、用什么重采样方法、RMS 误差控制在多少。控制点数量没有绝对标准,但常见经验是多项式次数加 1 再乘以 2 以上。一次多项式至少 3 个点,实际至少 6 个;二次多项式至少 6 个,实际至少 12 个。
重采样方法有三种:最近邻、双线性、三次卷积。最近邻不改变像元值,适合分类图;双线性平滑,适合连续数据;三次卷积更锐利,但计算量大。复习题常问「分类结果图应该用哪种重采样」,答案是最近邻,因为不能引入新类别。
RMS 误差是衡量几何校正精度的指标,一般要求小于 0.5 个像元。如果超过 1 个像元,说明控制点选取有问题,常见原因是控制点分布不均或误匹配。
下面用 Python 演示如何计算 RMS 误差:
import numpy as np # 假设有 4 个控制点,source 是原图坐标,target 是参考图坐标 source = np.array([[10, 20], [30, 40], [50, 60], [70, 80]], dtype=float) target = np.array([[11, 21], [29, 41], [51, 59], [69, 81]], dtype=float) # 计算每个点的残差 residuals = target - source # 计算 RMS 误差 rms = np.sqrt(np.mean(residuals**2)) print(f"RMS 误差: {rms:.3f} 像元")逻辑说明:残差是目标坐标减原坐标,RMS 是残差平方均值的平方根。参数说明:控制点要覆盖图像四角和中部,不能全挤在一侧;如果 RMS 偏大,先检查控制点是否选在同名地物上,再考虑增加多项式次数。
2.3 复习题里辐射和几何的先后顺序
常见考题是「先做辐射校正还是几何校正」。答案取决于目的:如果要做光谱分析或指数计算,先做辐射校正;如果要做变化检测或配准,先做几何校正。但实际工程里,很多流程是几何校正后再做辐射校正,因为重采样会改变像元值。复习题里如果问「为什么」,要答:重采样会引入新像元值,先做辐射校正再重采样会导致光谱失真。
3. 图像增强与变换:复习题里的参数和适用场景
3.1 直方图均衡化的复习要点:为什么有时会翻车
直方图均衡化是图像增强的经典考点。复习题常问:均衡化后直方图变成什么样、适合什么图像、有什么缺点。答案是:均衡化后直方图近似均匀分布,适合对比度低的图像,缺点是可能过度增强噪声,或者让原本不连续的区域变得突兀。
常见坑是:对已经高对比度的图像做均衡化,结果反而变差。复习题里如果给出一幅直方图集中在中间窄范围的图像,均衡化是合适的;如果直方图已经覆盖全范围,均衡化意义不大。
下面用 Python 演示直方图均衡化:
import numpy as np def histogram_equalization(image): # 计算直方图 hist, bins = np.histogram(image.flatten(), bins=256, range=(0, 255)) # 计算累积分布函数 cdf = hist.cumsum() cdf_normalized = cdf * 255 / cdf[-1] # 映射 equalized = np.interp(image.flatten(), bins[:-1], cdf_normalized) return equalized.reshape(image.shape).astype(np.uint8) # 假设 image 是 0-255 的灰度图 image = np.array([[50, 60], [70, 80]], dtype=np.uint8) result = histogram_equalization(image) print(result)逻辑说明:先统计直方图,再算累积分布,最后按累积分布映射。参数说明:bins=256对应 8 位图像;如果图像是 16 位,要调整bins和range。注意均衡化后像元值会变,不能用于定量分析。
3.2 主成分变换的复习重点:特征值和累计贡献率
主成分变换(PCA)是图像变换的常考点。复习题通常问:前几个主成分保留多少信息、特征值怎么排序、累计贡献率怎么算。核心是:特征值从大到小排序,累计贡献率是前 k 个特征值之和除以总和。一般保留累计贡献率 85% 到 95% 的主成分。
常见坑是:把 PCA 用于分类时,直接取前三个主成分可能丢失小类别信息。复习题里如果问「PCA 后为什么分类精度下降」,答案可能是小类别信息集中在后面的主成分里。
下面用 Python 演示 PCA 累计贡献率计算:
import numpy as np # 假设有 4 个波段的图像数据,每行一个像元 data = np.array([[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6, 7]], dtype=float) # 中心化 data_centered = data - np.mean(data, axis=0) # 计算协方差矩阵 cov_matrix = np.cov(data_centered, rowvar=False) # 计算特征值和特征向量 eigenvalues, eigenvectors = np.linalg.eig(cov_matrix) # 排序 idx = np.argsort(eigenvalues)[::-1] eigenvalues = eigenvalues[idx] # 累计贡献率 cumulative = np.cumsum(eigenvalues) / np.sum(eigenvalues) print(f"累计贡献率: {cumulative}")逻辑说明:先中心化,再算协方差矩阵,再求特征值。参数说明:rowvar=False表示每列是一个变量;累计贡献率超过 0.9 时,对应主成分数量就是建议保留数。如果复习题给的是相关系数矩阵,要先标准化。
3.3 波段运算和指数计算:NDVI 的复习陷阱
NDVI 是复习题里出现频率最高的指数。公式是(近红外减红)除以(近红外加红)。常见坑有三个:一是用错波段,二是没做辐射校正直接算,三是分母为零。复习题里如果问「NDVI 范围」,答案是 -1 到 1,但实际水体常为负,植被为正。
下面用 Python 演示 NDVI 计算:
import numpy as np # 假设 red 和 nir 是已经辐射校正后的反射率 red = np.array([[0.1, 0.2], [0.15, 0.25]], dtype=float) nir = np.array([[0.4, 0.5], [0.45, 0.55]], dtype=float) # 避免分母为零 denominator = nir + red denominator[denominator == 0] = 1e-10 ndvi = (nir - red) / denominator print(ndvi)逻辑说明:先加分母保护,再算 NDVI。参数说明:red和nir必须是反射率,不能是 DN 值;如果复习题给的是 DN 值,要先做辐射定标。NDVI 对大气影响敏感,如果没做大气校正,结果只能定性看。
4. 分类与精度评价:复习题里最容易丢分的环节
4.1 监督分类和非监督分类的复习对比
复习题常问:监督分类和非监督分类的区别、各自适用场景。监督分类需要训练样本,精度高但费人工;非监督分类不需要样本,但类别含义要事后解释。常见算法:监督用最大似然、支持向量机、随机森林;非监督用 K-means、ISODATA。
常见坑是:监督分类的训练样本必须来自已知类别,不能随便选。复习题里如果问「为什么监督分类精度下降」,答案可能是训练样本不纯或数量不足。
下面用 Python 演示一个最小 K-means 分类:
import numpy as np from sklearn.cluster import KMeans # 假设有 6 个像元,每个像元 2 个波段 data = np.array([[1, 2], [1, 3], [10, 11], [10, 12], [20, 21], [20, 22]], dtype=float) # K-means 分类,k=3 kmeans = KMeans(n_clusters=3, random_state=0).fit(data) labels = kmeans.labels_ print(labels)逻辑说明:K-means 按距离聚类,n_clusters是类别数。参数说明:random_state固定随机种子,保证可复现;实际分类前要标准化波段,否则量纲大的波段会主导距离。
4.2 混淆矩阵和 Kappa 系数的复习计算
精度评价是复习题必考。混淆矩阵的行是真实类别,列是预测类别。总体精度是正确分类数除以总数。Kappa 系数是衡量一致性,公式是(总体精度减随机一致性)除以(1 减随机一致性)。
常见坑是:把混淆矩阵行列写反,或者 Kappa 系数算错。复习题里如果给出一张表,要先确认行列含义。
下面用 Python 演示混淆矩阵和 Kappa 计算:
import numpy as np # 假设混淆矩阵,行是真实,列是预测 confusion = np.array([[50, 5], [10, 35]], dtype=float) # 总体精度 total = np.sum(confusion) correct = np.trace(confusion) overall_accuracy = correct / total # Kappa 系数 row_sum = np.sum(confusion, axis=1) col_sum = np.sum(confusion, axis=0) random_accuracy = np.sum(row_sum * col_sum) / (total**2) kappa = (overall_accuracy - random_accuracy) / (1 - random_accuracy) print(f"总体精度: {overall_accuracy:.3f}, Kappa: {kappa:.3f}")逻辑说明:trace是对角线之和,即正确分类数。参数说明:row_sum和col_sum分别是真实和预测的边际和;Kappa 大于 0.8 表示一致性很好,0.6 到 0.8 表示中等。
4.3 分类后处理的复习要点:众数滤波和类别合并
分类后处理常考众数滤波和类别合并。众数滤波是用邻域内出现最多的类别替换中心像元,去除椒盐噪声。类别合并是把多个小类合并成大类,比如把不同作物合并成耕地。
常见坑是:众数滤波窗口太大,会抹掉小类别。复习题里如果问「窗口怎么选」,答案是一般 3×3 或 5×5,根据噪声程度定。
5. 避坑与排查:复习题里那些容易记反的细节
5.1 现象:辐射校正后反射率大于 1
原因:太阳天顶角用错,或者增益偏移量纲不对。解决:检查元数据里天顶角单位是度还是弧度,增益是否要除以 10000。
5.2 现象:几何校正后图像有黑边
原因:重采样时超出原图范围。解决:设置输出范围时裁剪到重叠区,或者用背景值填充。
5.3 现象:NDVI 出现异常高值
原因:近红外和红波段没做辐射校正,或者波段对应错。解决:先确认波段顺序,再做定标和大气校正。
5.4 现象:监督分类精度虚高
原因:训练样本和验证样本重叠。解决:训练样本和验证样本必须独立选取,最好用不同区域。
5.5 现象:Kappa 系数为负
原因:混淆矩阵行列写反,或者预测结果比随机还差。解决:检查矩阵方向,确认预测类别和真实类别对应。
6. 把复习题变成可复现的代码笔记:一个最小闭环
复习题最大的价值不是背答案,而是把每个知识点变成可运行的代码。我一般会建一个remote_sensing_review目录,按章节放脚本:radiometric.py、geometric.py、enhancement.py、classification.py、accuracy.py。每个脚本只做一件事,输入用模拟数据,输出打印关键指标。
下面是一个最小闭环的目录结构:
remote_sensing_review/ ├── radiometric.py # 辐射校正 ├── geometric.py # 几何校正 RMS ├── enhancement.py # 直方图均衡化 ├── pca.py # 主成分累计贡献率 ├── ndvi.py # NDVI 计算 ├── classification.py # K-means 分类 └── accuracy.py # 混淆矩阵和 Kappa每个脚本都按「输入模拟数据 → 计算 → 打印结果」写,方便复习时快速验证。比如accuracy.py里可以加一个断言,确保 Kappa 在 -1 到 1 之间:
assert -1 <= kappa <= 1, "Kappa 系数超出范围,检查混淆矩阵"参数验证是复习题里最容易被忽略的。我习惯在每个脚本末尾加一个if __name__ == "__main__":块,把关键参数打印出来,比如辐射校正里的theta、几何校正里的rms、分类里的n_clusters。这样复习时一眼就能看到参数和结果的关系。
还有一个技巧:把复习题里的选择题改写成代码里的条件判断。比如「先辐射校正还是先几何校正」,可以写成:
def correct_order(purpose): if purpose == "spectral_analysis": return "先辐射校正" elif purpose == "change_detection": return "先几何校正" else: return "先几何校正再辐射校正"这样复习不再是背,而是推。我当年复习时最大的教训是:只看不写,考试时公式记混;后来把每个考点都写成十行代码,反而记得牢。希望帮到你。
本文还有配套的精品资源,点击获取