☰
遥感复试上机通关指南:核心考点与易错点解析
2026/10/26 13:32:23 网站建设 项目流程

简介:这份资料汇集了武汉大学遥感信息工程学院2004至2010年间研究生入学复试的上机考试题目,面向备考该院研究生复试的考生,也适合希望了解遥感与计算机编程结合类上机题型的学习者。压缩包共76个文件,约306KB,以cpp源码、txt数据与结果文件为主,辅以doc说明文档、raw与dat原始数据,以及dsp、dsw、opt、ncb等工程配置与调试文件,基本还原了历年上机练习的完整工程结构。已有537人学习下载。内容覆盖多个年份的独立练习工程,涉及最邻近规则试探法聚类、计算机能力测试等典型题目,并配有原始数据与运行结果,便于读者对照题目理解算法思路、复现编程过程、检验输出是否正确,是梳理复试上机命题风格与查漏补缺的实用参考。

1. 遥感复试上机:三道题定胜负,机房里没有后悔药

遥感信息工程学院研究生复试的上机环节,真正拉开差距的从来不是谁会背多少公式,而是能不能在有限时间里把一道遥感数据处理题跑通、跑对、跑出可解释的结果。这场考试考三样东西:读题后能否迅速判断该用哪套处理流程,代码能否在无网络、无现成工程的环境下独立写完,结果能否用遥感语言讲清楚。分值通常压在影像预处理、指数计算与分类、几何与辐射处理这几个模块上,操作分和结果分各占一半。适合已经过了一遍遥感原理、但上机手感不稳的考生——尤其是初试分数不占优、想靠复试实操翻盘的人。机房里没有后悔药,平时练的是手速,考场拼的是流程肌肉记忆。

2. 影像预处理考点:读进来、配准、裁切,一步错步步错

2.1 读题先判数据源,别急着写代码

上机题给的数据通常是一景多波段影像加一个矢量范围,或者两期影像做变化检测。第一件事不是打开编辑器,而是看清三件事:波段顺序、数据类型、有没有配套的坐标信息文件。遥感影像的波段排列在不同数据源里不一样,可见光近红外常按蓝绿红近红外的顺序堆叠,但题目若明确给了波段说明,就必须按说明取索引。数据类型决定了后续计算会不会溢出,整型影像直接做指数运算,分母一除就可能截断成零,这是机房翻车的高频点。

读入之后先打印影像的尺寸、波段数和数据类型,再决定是否转浮点。很多考生上来就写完整流程,跑到一半报错才发现波段索引取反了,回头改一处、连带后面全要重跑。这类题通常这么答:先用几行代码把元信息摸清楚,把关键参数打印出来,确认无误再进入正式处理。面试官看操作过程时,最想听的是你为什么先做这一步,而不是你背了多少函数名。

# 读取影像并检查元信息,确认波段顺序与数据类型 import numpy as np from osgeo import gdal ds = gdal.Open("scene.tif") cols, rows, bands = ds.RasterXSize, ds.RasterYSize, ds.RasterCount dtype = ds.GetRasterBand(1).DataType print("尺寸:", cols, rows, "波段数:", bands, "类型:", gdal.GetDataTypeName(dtype)) # 整型影像先转浮点,避免指数计算时截断 arr = ds.ReadAsArray().astype(np.float32) print("数组形状:", arr.shape) # 期望 (bands, rows, cols)

这段代码的重点不在读文件本身,而在两个检查动作:形状是否符合「波段在前」的约定,类型是否已经转成浮点。参数上,ReadAsArray默认按波段、行、列组织,若题目数据是单波段多时相,形状会变成三维但含义不同,必须靠打印结果判断。失败时先看形状对不对,再看类型有没有被悄悄转回整型,这两处是预处理阶段最常见的报错来源。

2.2 配准与裁切的答题模板

配准题一般给两期影像或影像与矢量,要求把两者对齐到同一网格。答题思路分三步说:先说明配准依据(控制点、地理参考还是影像匹配),再说明重采样方法的选择理由,最后说明裁切范围怎么定。最近邻适合分类图,双线性适合连续影像,三次卷积适合需要保留细节的场景,选哪个要在答案里给一句理由,不能只写函数调用。

裁切则要区分按矢量掩膜裁和按窗口裁。按矢量裁要先把矢量投影到影像坐标系,再栅格化掩膜;按窗口裁要算清行列起止,别把边界算错导致少一行。易错点是裁切后没有更新地理变换参数,结果影像坐标整体偏移,这种错误在结果检查时一眼就能看出来,但考场上很多人只顾着出图忘了改元数据。

提示:配准和裁切都涉及重采样,重采样会改变像元值分布,后续若要做指数计算,尽量在原始分辨率上算完再重采样,顺序反了结果会有系统偏差。

2.3 真题演练:两期影像配准后做差异分析

题目常这样出:给两期同区域影像,要求配准到同一网格,裁切重叠区,输出差异图并统计变化像元比例。答题思路是先配准、再裁重叠、后做差值,三步各自留检查点。配准后检查控制点残差,裁切后检查两期尺寸是否完全一致,差值后检查数值范围是否合理。面试官最想听的是你如何处理配准误差带来的伪变化——常见做法是设阈值或做形态学滤波,把零星噪点去掉再统计。

# 两期影像差值并统计变化比例(假设已完成配准与裁切) diff = arr_t2 - arr_t1 threshold = 0.15 # 归一化反射率差异阈值,按数据实际情况调整 change_mask = np.abs(diff) > threshold change_ratio = change_mask.sum() / change_mask.size print("变化像元比例:", round(change_ratio, 4))

阈值不是拍脑袋定的,答题时要说明依据:可以看差值直方图的拐点,也可以按经验给一个区间再说明敏感性。参数threshold调大变化比例下降、调小伪变化增多,这个权衡关系要在答案里点出来,否则只交一个数字显得没有分析。

3. 指数计算与分类考点:公式会背不够,边界条件才是分水岭

3.1 归一化指数计算的三个坑

植被指数、水体指数这类题几乎每场都出现,公式本身不难,难在边界条件。第一个坑是分母为零或接近零,直接除会出无效值,必须先构造有效掩膜。第二个坑是波段取值范围,反射率产品通常是零到一,但有些数据放大了一万倍,不归一化直接套公式结果全错。第三个坑是无效值标记,影像边缘或云区常有填充值,不剔除就参与统计会污染结果。

这类题通常这么答:先说明数据是否已定标、量纲是什么,再写公式,最后说明无效值怎么处理。面试官听到「我先检查了数据量纲」这句话,基本就知道你上机不是第一次。反过来,上来就写公式、跑出一堆异常值的,多半是平时只对着教材例题练,没碰过真实数据。

# 归一化植被指数计算,含无效值掩膜 nir, red = arr[3], arr[2] # 按题目波段说明取索引 denom = nir + red valid = (denom > 1e-6) & np.isfinite(denom) # 排除分母过小与非有限值 ndvi = np.full_like(nir, np.nan, dtype=np.float32) ndvi[valid] = (nir[valid] - red[valid]) / denom[valid] print("有效像元比例:", valid.mean())

关键在valid掩膜:分母过小、含非有限值的像元全部排除,结果用 NaN 标记而不是零,避免后续统计把无效区当成低值区。参数1e-6是防止除零的下限,实际可结合数据精度调整。若题目要求输出分类结果,NaN 区要单独归为无效类,不能混进水体或植被类里。

3.2 监督分类的流程与结果评价

分类题一般给训练样本或要求自己选样本,流程是选样本、训练、预测、评价。答题时要把样本选择策略说清楚:每类样本是否空间分散、数量是否均衡、有没有混分严重的类。分类器选最大似然还是支持向量机,要结合样本量和数据维度给理由,样本少维度高时复杂分类器容易过拟合。

结果评价不能只报总体精度,要提混淆矩阵和 Kappa 系数,并说明 Kappa 为什么比总体精度更能反映分类质量——它扣除了随机一致的概率。易错点是训练样本和验证样本重叠,精度虚高,考场上若被追问样本独立性,答不上来就是硬伤。

评价指标含义答题时的用法
总体精度正确分类像元占全部像元比例先报,给整体印象
生产者精度某类被正确识别的比例说明漏分情况
用户精度分为某类的像元中真正属于该类的比例说明错分情况
Kappa 系数扣除随机一致后的分类一致性佐证分类可靠性

3.3 真题演练:指数阈值分割提取水体

题目给一景多光谱影像,要求用指数法提取水体并统计面积。答题思路是算指数、定阈值、做后处理、算面积。阈值可以按直方图双峰之间的谷值定,也可以用大津法自动定,选哪种要说明理由。后处理通常做开运算去掉零星噪点,再做闭运算填补空洞。面积统计要用像元分辨率换算,别忘了单位。

from scipy import ndimage water_index = (arr[1] - arr[3]) / (arr[1] + arr[3] + 1e-6) # 示例指数,按题目公式替换 thr = np.nanpercentile(water_index, 60) # 示例阈值,实际按直方图或大津法确定 water = water_index > thr water = ndimage.binary_opening(water, iterations=1) # 去噪点 water = ndimage.binary_closing(water, iterations=2) # 填空洞 area = water.sum() * 30 * 30 / 1e6 # 假设 30 米分辨率,换算为平方公里 print("水体面积(平方公里):", round(area, 3))

阈值用百分位只是示例,答题时要换成有依据的定法并说明。开闭运算的迭代次数影响结果,次数过多会吃掉细小水体,要在答案里点出这个取舍。面积换算的分辨率参数必须来自题目元数据,不能默认。

4. 几何与辐射处理考点:投影、重采样、定标,细节决定成败

4.1 投影转换与重投影的答题顺序

几何处理题常要求把影像从一种投影转到另一种,或把矢量与影像统一坐标系。答题顺序是先确认源投影和目标投影,再选重投影方法,最后检查转换后的范围与分辨率是否合理。易错点是只转影像不转矢量,或转了之后没检查范围,导致两者错位。另一个易错点是重投影后分辨率变化,面积统计若还用原分辨率换算就全错了。

这类题通常这么答:先报源与目标坐标系,再说重采样方法及理由,最后说转换后做了哪些一致性检查。面试官追问「你怎么知道转对了」,标准答案是拿已知地物或控制点核对位置,而不是只看图好不好看。

4.2 辐射定标与大气校正的取舍

辐射处理题会给定标参数,要求把 DN 值转成辐亮度或反射率。答题要点是分清定标公式里的增益偏移、太阳高度角、日地距离这些参数各自作用,别把顺序搞反。大气校正是否要做,取决于题目问的是相对比较还是绝对反射率,相对指数计算对大气校正不敏感,绝对反射率反演则必须做。这个判断要在答案里明确说出来,体现你懂原理而不只是会调工具。

注意:定标参数的单位要和公式匹配,增益偏移的量纲弄错,结果会差几个数量级,这类错误在结果检查时表现为数值离谱,回头查参数表就能发现。

4.3 真题演练:定标后计算反射率并检查异常值

题目给定标系数和太阳高度角,要求把影像转成表观反射率并报告异常值比例。答题思路是套定标公式、逐波段计算、统计超出合理范围的比例、分析异常来源。异常值可能来自云、水体镜面反射或填充区,要在答案里分类说明,而不是简单说「有异常」。

# 表观反射率计算示例,参数按题目给定值替换 gain, offset = 0.001, -0.5 # 示例定标系数 sun_elev = np.deg2rad(45.0) # 太阳高度角转弧度 radiance = arr * gain + offset reflectance = np.pi * radiance / (np.cos(sun_elev) * 1.0) # 日地距离因子按题目给 valid = np.isfinite(reflectance) abnormal = (reflectance < 0) | (reflectance > 1) print("异常值比例:", abnormal.sum() / valid.sum())

参数里增益偏移和太阳高度角必须来自题目,日地距离因子若题目未给可近似为一并在答案中说明。异常值比例算出来后要接一句分析,比如负值多来自定标偏移,超一的多为云或高亮地物,这样答案才完整。

5. 易错点:五类考场高频失分,每条都有对答

5.1 波段索引取反

错在哪:把红和近红外波段位置弄反,指数结果正负颠倒。为什么错:不同数据源波段顺序不同,凭记忆取索引必翻车。怎么答对:读入后先打印波段说明或按题目给的顺序核对,代码里用变量名标注波段含义,别直接写数字索引。

5.2 整型溢出与除零

错在哪:整型影像直接做减法或除法,结果截断或报错。为什么错:没在计算前转浮点,也没做分母保护。怎么答对:读入即转浮点,除法前构造有效掩膜,结果用 NaN 标记无效区。

5.3 裁切后元数据未更新

错在哪:影像裁了但地理变换没改,输出坐标整体偏移。为什么错:只关注数组切片,忽略了地理参考同步更新。怎么答对:裁切时同步计算新的起始坐标和变换参数,出图前用范围核对。

5.4 训练样本与验证样本重叠

错在哪:分类精度虚高,被追问时无法解释。为什么错:图省事把同一批样本既训练又验证。怎么答对:样本分区或分层抽样,明确说明训练集与验证集独立。

5.5 面积统计用错分辨率

错在哪:重投影或重采样后仍用原分辨率换算面积。为什么错:没意识到像元大小已变。怎么答对:面积统计前读取当前影像的实际分辨率,换算时带上单位说明。

6. 上机答题节奏:先跑通再优化,留十分钟做结果自检

机房里最值钱的是时间分配。我的习惯是拿到题先花三分钟读数据和题目要求,把流程拆成读入、处理、输出、检查四段,每段先写能跑通的最简版本,再回头补异常处理和参数说明。很多人一上来就追求一步到位,结果卡在某个报错上耗掉大半时间,后面会做的题也没时间写。先跑通再优化,这个顺序在考场上比任何技巧都管用。

结果自检留十分钟,固定查四样:影像范围和坐标系对不对、数值范围是否合理、无效值有没有单独标记、统计数字量纲和单位写没写。这四样查完,答案的完整度就上了一个台阶。面试官翻你的结果时,第一眼看的就是这些细节,而不是代码写得多漂亮。

时间段动作检查点
前 3 分钟读题、看数据元信息波段顺序、类型、坐标系
主体时间写最简可运行流程每步打印中间结果
收尾前 10 分钟补异常处理与参数说明掩膜、阈值依据、单位
最后 2 分钟结果自检范围、数值、无效值、量纲

押题方向上,指数计算加阈值分割、两期影像差异分析、定标后反射率计算这三类出现频率最高,练的时候别只跑通一遍,要换不同数据、不同参数各跑一次,把报错和异常值都见一遍。从那以后我每次带人练上机,都强制走一遍「先打印元信息、再写流程、最后自检」的固定动作,考场上的慌乱多半来自平时跳过了这些看起来多余的步骤。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询