简介这是一份面向计算机视觉课程期末复习的习题整理资料基于章毓晋《计算机视觉教程》微课版第3版章节内容编排覆盖距离计算、图像采集设备、相机成像、梯度与拉普拉斯算子、哈夫变换、形状分析、双目立体视觉、运动分析与动态背景建模等核心考点。资源以PDF格式提供共1个文件压缩包大小5.77MB方便打印或电子阅读。目前已有4521人浏览学习适合正在备考计算机视觉期末考试、需要针对计算题与概念题进行强化的本科生或自学者。内容包含单选、多选、判断、简答和综合习题并附有部分解题思路与参考解析例如基于罗伯特交叉算子、索贝尔算子的梯度图计算、哈夫变换检测直线、双目视差计算、高斯混合模型背景建模步骤等可帮助读者系统回顾知识框架、熟悉典型题型并对照检查理解漏洞。1. 计算机视觉教程期末复习题看懂教材不等于做对题我见过很多同学在期末复习时拿着一本《计算机视觉教程第3版》从头翻到尾觉得每节都读得通概念都能讲上几句但一翻开期末复习部分的习题就卡壳——卷积核怎么摆放拿不准、直方图均衡化映射表算到一半就乱、SIFT描述子该写多少维答案时犹豫半天。问题不在记忆力而在于教材正文是叙述逻辑习题要求的是输出逻辑两者之间有一道需要专门训练的鸿沟。这篇笔记想做的事情很简单以这门课的期末复习习题为线索把会看变成会做——先看清习题覆盖了哪些知识模块再按题型逐个击破最后把错题沉淀成自己的复习材料。适合正在备考这门课程、手头有配套习题但不知道从哪下手的同学也适合想通过习题反向梳理计算机视觉核心考点的自学者。2. 把复习题映射回教材模块先建知识地图再做题拿到期末复习习题我建议不要按题目顺序从头做到尾而是先花半小时把题目按教材的知识模块归类。原因很简单期末复习题的编排顺序不一定等于教材章节顺序它往往把多个章节的考点打散混编直接顺着做容易产生这题考哪章的迷失感。先把题目分类你才能看出哪些模块是考试重点哪些模块只是零星出现。2.1 图像增强与滤波模块卷积和直方图的典型考法教材前几章围绕图像增强展开这部分几乎是期末复习习题的必考区。常见的题目形式有三种一是给一个3×3或5×5的图像矩阵和一个2×2或3×3的卷积核要求写出卷积后的输出矩阵二是给一张小图像的灰度分布直方图要求做直方图均衡化并写出新旧灰度映射关系三是问均值滤波、中值滤波、高斯滤波分别适合处理什么类型的噪声。做这类题的基本功是清楚卷积的计算约定卷积核的中心对准哪个像素、边界怎么处理补零、镜像还是截断、步长是多少。教材里的习题通常默认补零和步长为1但题目若没写明要在答案开头就把假设说清楚。直方图均衡化要按统计直方图→计算累计分布→求映射函数→代入原图灰度的顺序写每一步都要留出中间结果因为阅卷时过程分占比很高。2.2 特征提取与描述模块SIFT、HOG、LBP各怎么考特征提取是这本教材的中间章节重点期末复习习题里基本不会缺席。SIFT相关的题通常让你简述特征提取流程或者给出两幅有旋转、尺度变化的图像问如何用SIFT完成匹配。HOG多与行人检测挂钩问特征向量的维度怎么算、为什么要分块归一化。LBP则常以概念题出现问它为什么对光照变化不敏感。这类题的难点不在计算而在表述的完整性。比如答SIFT很多同学只写在高斯差分金字塔中检测极值点生成128维描述子这些关键词单独看都对但连在一起缺步骤。标准答案要按四步来写尺度空间极值检测、关键点精确定位、关键点方向分配、描述子生成。缺一步就被扣一步的分。建议把这类题当作流程默写题来准备每个算法的步骤在大脑中过三遍以上。2.3 分割与检测模块概念题和流程题的分布规律图像分割的目标是从像素中提取有意义区域常见方法包括阈值分割、区域生长、边缘检测辅助分割等。复习习题在该模块的考察以概念辨析和算法选择为主例如给出一幅图像的特点前景背景灰度差异明显、有噪声、目标形状不规则问选择哪种分割方法更合适并说明理由。这类题没有唯一标准答案但答题时要踩中关键点阈值分割适合目标和背景灰度差异大的场景区域生长能处理灰度不均匀的目标但种子点选择影响大边缘检测得到的边界可能不闭合、需要后续连接处理。回答时要主动写出选什么方法、为什么、该方法有什么局限三要素不要只写一个方法名就结束。检测与识别部分如果出了题大概率是简述某个检测框架的流程或者比较两种特征描述子在某一场景下的优劣按书上给出的流程框架往里填内容即可。2.4 立体视觉与运动分析模块计算题集中在哪些公式立体视觉和运动分析是教材后半部分的难点期末复习习题在这里出的多是计算题。最典型的是双目视觉的深度计算给定焦距、基线长度、视差求目标深度其次是光流计算中约束方程的简单应用偶尔会有相机标定相关的基本概念题。这部分对公式的依赖很强建议把教材中涉及的几个核心公式集中抄在一张纸上Z fB/d深度与视差关系、对极约束的矩阵表达、光流基本方程等。做题时先把公式写出来再代入数值最后统一单位。很多同学不是不会公式而是算到一半发现单位不对整个结果失去意义。后面第4章我会专门讲这个坑。3. 分题型拆解答题方法计算题、概念题与流程题各有一套归完类之后下一步是把同一类型的题目一起做。题型不同作答策略完全不同计算题考的是步骤严谨性概念题考的是对比的覆盖面流程题考的是关键词的完整性。下面按题型各给一套可操作的答题路径。3.1 卷积与滤波计算题从矩阵到输出的四步推演卷积计算题在期末复习习题中出现频率很高也是新手失分重灾区。以一道典型题为例给定3×3图像矩阵和2×2卷积核步长为1边界补零求卷积输出。我的四步推演法如下。第一步确认参数。输出尺寸由公式 (H - K 2P)/S 1 计算H为输入高K为卷积核尺寸P为填充数S为步长。代入本例(3 - 2 0)/1 1 2所以输出是2×2矩阵。第二步固定锚点。将卷积核的中心视为锚点按锚点在输入图像上从左到右、从上到下滑动。这里的中心对偶数尺寸核来说有所歧义题目一般会明确约定没约定时按左上角对齐处理。第三步逐点计算。每次滑动时取输入图像上被核覆盖的区域与核逐元素相乘再求和。第四步核对边界。补零后边界出现的额外元素要确认没有漏算或重算。import numpy as np # 输入图像 3x3 img np.array([[1, 2, 1], [0, 1, 2], [3, 0, 1]]) # 卷积核 2x2 kernel np.array([[1, 0], [0, 1]]) def conv2d_manual(image, k, stride1, padding0): h, w image.shape kh, kw k.shape # 边界补零 padded np.pad(image, padding, modeconstant) out_h (h 2*padding - kh) // stride 1 out_w (w 2*padding - kw) // stride 1 out np.zeros((out_h, out_w)) for i in range(out_h): for j in range(out_w): region padded[i*stride:i*stridekh, j*stride:j*stridekw] out[i, j] np.sum(region * k) return out result conv2d_manual(img, kernel, padding0) print(result)这段代码用最基本的三重循环实现了卷积计算没有任何并行或加速技巧目的就是让你能把每一步的中间结果打印出来跟手算过程逐项对照。参数说明padding0表示不补零此时输出尺寸正好是2×2stride1表示核每次平移一个像素。如果你把padding改成1输出就会变成4×4第一步手算前先想清楚这一点。3.2 直方图均衡化计算题累计直方图、映射表与新灰度直方图均衡化是期末复习的计算题常客考察你对映射关系是否真懂。以一张4×4图像、灰度等级为0到3为例各灰度像素数分别为3、5、4、4。给你看一套错误率很高的解法再给正确步骤。正确步骤第一步写灰度分布[0级3个1级5个2级4个3级4个]总像素数16。第二步计算累计分布函数CDF[3, 8, 12, 16]。第三步归一化CDF即每个累计值除以总像素数[3/16, 8/16, 12/16, 16/16] [0.1875, 0.5, 0.75, 1.0]。第四步乘上灰度范围3-12得到连续映射值再四舍五入取整0级映射为11级映射为22级映射为23级映射为3。最终映射关系写成0→11→22→23→3。import numpy as np def hist_equalize(hist, levels): hist: 各灰度级像素数列表levels: 灰度级总数 total np.sum(hist) cdf np.cumsum(hist) # 累计直方图 cdf_norm cdf / total # 归一化 mapping np.round(cdf_norm * (levels - 1)).astype(int) return mapping hist np.array([3, 5, 4, 4]) mapping hist_equalize(hist, 4) print(映射表:, mapping)输出结果会得到 [1, 2, 2, 3]与手算一致。注意代码里astype(int)做了截断取整而非四舍五入这里要和教材约定保持一致——部分版本用四舍五入部分用向下取整习题答案以教材采用的取整规则为准。映射表有一个现象值得注意1级和2级映射后都变成2这说明均衡化并不是保证每级都用上而是尽量铺开灰度范围。3.3 概念辨析题把相似考点整理成对比表再作答期末复习习题中概念题占比不低常考的是那些长得像但本质不同的名词。比如边缘检测和图像分割是什么关系、均值滤波与高斯滤波的差异、SIFT与HOG各自适应的场景。直接空对空地答很容易说不到点子上我的习惯是先做一张对比表考试时遇到类似题直接调用。均值滤波与高斯滤波的对比是高频考点之一均值滤波用窗口内像素的平均值代替中心像素实现简单但会模糊边缘高斯滤波用高斯权重加权平均中心像素权重更大边缘保留相对更好。另一个高频对比是SIFT与HOGSIFT基于关键点局部区域适合旋转和尺度变化明显的场景HOG基于密集网格的梯度统计适合行人等刚性目标的整体描述。做对比表时注意维度要对齐原理、计算过程、适用场景、局限、典型应用五列各写一行。考试作答时不用把整表写出但表中踩中的每一行都是一条得分点。准备这个表的过程比结果更重要——你写表时被迫比较两者的异同这个比较动作本身就是最好的记忆。3.4 算法流程描述题套用三步模板减少漏点流程描述题在复习习题中最容易丢分因为你觉得差不多说清了但阅卷看到的是关键词缺失。以SIFT特征匹配为例我建议用三步模板作答。先写输入输出输入是两幅图像输出是匹配的特征点对集合。再写主干流程四步构建高斯差分金字塔检测空间极值点、剔除低对比度和边缘响应点以精确定位关键点、为每个关键点分配主方向、基于梯度直方图生成描述子。最后写匹配方式用描述子间的欧氏距离做最近邻匹配必要时用比值法或交叉验证提纯匹配。这个模板的关键在于每一步都要给足限定词空间极值点、非极大值抑制去除、主方向直方图统计、描述子128维。这些关键词既是得分点也是区分你真懂还是背过话术的依据。做题时把模板先默写一遍再往里面补细节比直接凭印象写要可靠得多。4. 期末复习习题中最容易踩的五个坑看到这些现象赶紧排查刷题过程中有些错误你不会只犯一次它们几乎成为每个考生的共同记忆。下面整理五类高频失分场景每一条都按现象→原因→解决给出可操作的排查路径。4.1 现象直方图均衡化的映射结果和答案对不上原因出在步骤选择上。最常见的是直接拿累计像素数当映射值例如累计像素数为8就映射到8完全忘记要除以总像素数来归一化其次是取整规则与教材不一致教材用四舍五入你用了向下取整结果自然偏离还有一个隐蔽错误是灰度级数搞混把灰度范围写成256而不是题目给定的灰度级总数。解决的办法是把均衡化固定成四个步骤统计直方图、算CDF、归一化CDF、乘灰度范围取整。每一步的中间结果写出来最后用原灰度→新灰度的对账表验证一遍。如果发现映射后灰度分布逼近均匀但不完全均匀这是正常的如果映射后出现灰度级大量合并到一个值就要回头检查CDF是否算错。4.2 现象SIFT匹配题答完感觉完整得分却比预期低原因是缺少匹配环节。很多同学把SIFT的流程写在特征提取就停了没描述如何根据描述子做匹配。期末复习题目的题干常是如何匹配两幅图像中的同一物体只答特征提取相当于完成了一半。解决的办法是答题时把匹配的判定标准写全两幅图中关键点的描述子做最近邻搜索常用欧氏距离为避免误匹配用最近邻距离与次近邻距离的比值做筛选进一步可用随机抽样一致算法剔除外点。把这几个关键词带进去整个流程才闭环。4.3 现象视差计算题算出的深度数值离谱单位不一致是元凶。双目深度公式 Z fB/d 中焦距 f 通常给像素单位基线 B 给长度单位厘米或毫米视差 d 给像素单位。三者代入时f 和 d 单位相消结果单位与 B 一致。例如 f 500 像素B 120 毫米d 32 像素那么 Z 500 × 120 / 32 1875 毫米。如果把 B 写成 12 厘米来算得到 187.5 厘米数值上对但单位标注不同写错单位会被直接扣分。解决的办法是代入前先把所有量转成统一单位制公式写完后先看量纲是否合理。深度结果的量级也可以用来粗验一副双目系统基线十几厘米算出深度几十米或几毫米大概率哪里算错了。4.4 现象边缘检测和阈值分割的题目混答边缘检测和阈值分割都涉及目标轮廓但一个是找像素梯度突变的位置一个是按灰度分布划分像素集合。题目问用Canny边缘检测提取目标边界时你答先计算直方图再选阈值就跑偏了。解决的办法是在复习时就把两者的适用前提划清界线边缘检测不做分类决策只输出边界响应阈值分割直接对像素做标签分配。做题时先看问题到底要求找边界还是分区域再决定写哪套算法流程。4.5 现象答题只写结果和公式略过代入步骤期末复习的评分习惯是采点给分跳过中间过程等于主动放弃过程分。比如视差计算题直接写个最终数值即使结果正确也只有结果分推导过程分全丢。解决的办法是养成题干摘录→公式→代换→结果→单位的书写习惯。题干摘录用一句话写清楚已知量公式单独一行代换时把数字连同单位一起写出来。这个习惯平时做题时不显眼考场上能救回不少分。5. 把单次刷题变成可复用的自测题库错题矩阵、三遍刷题法与验证脚本期末复习习题不只是一份要做完的作业更是一套可以反复使用的自测资源。做完一遍只是开始真正的价值在于把题目拆解成你自己的错题集和知识点图谱。这一章介绍三件可落地的事错题归因矩阵、三遍刷题法、以及用脚本验证手算结果的小工具。5.1 错题归因矩阵一道错题对应一个公式、一个知识点错题不要只看答案对不对还要归因到具体知识点。我的做法是建一个三层映射表题目编号、错因类型、对应教材章节。错因类型分四类计算粗心、公式记错、流程遗漏、概念混淆。每个错题在表中占一行统计后你会发现自己的错误集中在某几类后续复习就专攻这些类型。例如直方图均衡化错了10道题归因发现8道是取整规则问题那就把教材的取整约定单独摘出来记住SIFT错了6道全是流程遗漏那就只背流程七步。归因的价值在于让每一道错题都指向一个可修复的知识点而不是停留在这题不会做的情绪里。5.2 三遍刷题法浏览、手写、复盘同一套复习习题至少刷三遍每一遍的目的不同。第一遍浏览只看题不改答案把会与不会的题做标记时间控制在半小时内。第二遍手写按题型做计算题必须完整写出步骤流程题必须默写算法步骤这一遍是主力也是最耗时间的。第三遍复盘只重做第二遍做错的题并且在旁边写一句错因描述。三遍之间有间隔效果更好第一天做第二遍隔两天再做第三遍。间隔期里大脑对错误点的记忆会沉淀重做时更能检验是否真正修复。如果你的复习时间不足一周至少保证第二遍覆盖所有题型第三遍只做错题。5.3 用Python验证手算结果卷积与直方图均衡化的小脚本手算容易出错尤其卷积表和映射表这种几十个数来回折腾的题。复习时我会把常见计算题写成小脚本手算完成后跑一遍脚本对照秒级出结果省出的时间用来理解概念。前面3.1和3.2节的代码可以直接放到本地环境里跑这里再补一个深度计算的验证片段。def depth_from_disparity(f_pixel, baseline_mm, disparity_pixel): f_pixel: 焦距像素单位 baseline_mm: 基线毫米单位 disparity_pixel: 视差像素单位 返回深度单位毫米 depth_mm (f_pixel * baseline_mm) / disparity_pixel return depth_mm # 示例f500, B120mm, d32px depth depth_from_disparity(500, 120, 32) print(f深度: {depth:.1f} mm / {depth/10:.1f} cm)参数说明里有个细节值得注意函数内部没有做单位转换单位一致性由调用者保证。这个设计是有意为之因为考试时单位换算出错是高频失分点脚本如果自动转换反而会掩盖问题。手动输入时每次都以毫米为单位换算关系一目了然。6. 考前一周的冲刺技巧三天一轮模块轮换把习题当试卷限时做完考前一周里复习习题的价值从学会知识转向稳定输出。这时候不要再逐题细抠而是把习题当考试卷来做。我的做法是排一个三天轮换计划每天一个模块三天覆盖一轮考前能轮两到三轮。第一天做主攻模块的整套计算题包括卷积、均衡化、视差计算限时90分钟做完并对照答案第二天做特征提取与分割的流程题和概念题不需要限时但要求每道题都按第3章的三步模板写完整第三天把前两天做错的题重做一遍同时把公式卡拿出来快速过一遍。轮换期间每天用半小时朗读关键流程把SIFT四步、均衡化四步这类固定流程读成肌肉记忆。考试当天的答题顺序也是学问。我的建议是快速浏览全卷后先做流程题和概念题再做计算题。理由很简单计算题需要状态一旦卡住容易消耗大量时间流程题靠记忆输出开考时头脑最清醒先拿稳这部分分数。每道计算题先写公式再代入最后给结果带上单位。如果某个公式一时想不起来先跳过不要停在那里硬想——后面的题往往能触发记忆。这里说一个我自己的教训当年复习时我专攻计算题流程题只背了关键词没按顺序默写结果考试遇到SIFT流程描述写出来的步骤顺序颠倒被扣了两步的分。那次之后我养成了流程题必须完整默写、不允许跳步的复习习惯。希望这篇笔记能帮你绕过同样的坑期末稳稳拿下。复习习题做透做到位考试时你会发现试卷上的题目全部似曾相识区别只在于你愿不愿意平时多花那半小时把步骤写完整。希望帮到你。本文还有配套的精品资源点击获取