第4章 技术基础:计算机视觉与图像处理

本章聚焦面试高频考点:图像滤波、特征提取、相机模型与经典算子。掌握底层原理与工程权衡是实习生的核心竞争力。
图像处理问题 滤波 高斯/中值/双边 特征提取 SIFT/SURF/ORB/角点 相机模型 针孔/畸变/标定 经典算子 Sobel/Canny/LoG

面试问答卡片

🎯 面试问题 1:请解释高斯滤波和中值滤波的区别,各适用于什么场景?

考察点基础滤波理解、噪声类型敏感度、工程权衡(实时性 vs 保边性)
回答框架①定义两者原理(加权平均 vs 排序取中)②噪声类型匹配(高斯噪声 vs 椒盐噪声)③关键特性对比(线性和非线性、模糊程度、边缘保持)④应用场景举例
简短示例回答高斯滤波用邻域加权平均去除高斯噪声,但会模糊边缘;中值滤波取中值,对椒盐噪声极好且保边。在机器人视觉中,预处理常用高斯滤波降噪,若传感器出现孤立噪点则用中值滤波。
可能追问双边滤波如何保留边缘?核大小和sigma如何选择?实时嵌入式如何权衡计算量?
避坑提醒❌ 避免只背定义不举实际场景;❌ 不要误说中值滤波对高斯噪声效果更好;✅ 提及OpenCV中cv::GaussianBlur和cv::medianBlur。

🎯 面试问题 2:请简述SIFT特征提取的流程,它为什么具有旋转和尺度不变性?

考察点特征点检测原理、尺度空间理论、描述子构建、不变性来源
回答框架①尺度空间构建(LoG近似差分高斯DoG)②关键点定位(极值点检测+亚像素定位)③方向分配(梯度直方图主方向)④生成描述子(4x4x8=128维向量)⑤绕开细节,突出关键设计
简短示例回答SIFT通过构建高斯金字塔在不同尺度下检测极值点,实现尺度不变;再为每个关键点计算邻域梯度直方图主方向并旋转至主方向,实现旋转不变。描述子统计梯度方向,对光照部分鲁棒。
可能追问SIFT为什么比SURF慢?为什么现在深度学习特征提取更常用?如何改进实时性?
避坑提醒❌ 避免把DoG说成LoG(LoG是理论,DoG是其近似);✅ 强调尺度不变性来自金字塔,旋转不变性来自主方向归一化。

🎯 面试问题 3:请解释针孔相机模型以及实际相机为什么要做畸变校正?

考察点相机模型基本假设、内参外参理解、畸变类型(径向/切向)、标定原理
回答框架①针孔模型:小孔成像→相似三角形,表达为u = f·X/Z + cx,v = f·Y/Z + cy②实际偏差:镜头畸变(径向畸变:桶形/枕形;切向畸变:装配误差)③校正方法:用棋盘格标定得到畸变系数→remap图像④总结:校正后像素坐标与空间点满足线性关系
简短示例回答针孔模型假设光线直线传播,实际镜头会使图像产生径向(桶形/枕形)和切向畸变。通过OpenCV校准获取k1,k2,p1,p2,然后用cv::undistort将像素重新映射到理想位置,保证后续SLAM或3D重建输入准确。
可能追问标定时最少需要几张不同姿态的棋盘格图?为什么?畸变模型阶数如何选择?在鱼眼镜头上如何扩展模型?
避坑提醒❌ 不要把相机内参写成归一化坐标(注意f的单位);✅ 答出fx, fy, cx, cy是内参矩阵元素,畸变系数k1,k2(k3), p1,p2。

项目案例模板

项目名称:基于双目视觉的障碍物测距系统(实习项目片段)
业务背景机器人避障场景中需实时检测前方障碍并给出精确距离,使用低成本双目摄像头代替激光雷达。
规模指标处理720p图像对,帧率≥25fps,测距误差<5%(5m内),延迟<40ms。
技术栈C++、OpenCV(Rectification、SGBM)、Eigen、ROS(节点通信)
核心难点1. 相机标定与畸变校正的精度 2. 立体匹配在弱纹理区域产生空洞 3. 嵌入式平台计算资源受限
面试高频追问①为什么选择SGBM而不是BM或全局匹配?②视差图后处理如何剔除离群点?③从标定到测距整个pipeline有哪些关键环节?④如何验证测距精度?
可迁移回答话术“在项目中我负责相机标定和立体匹配模块。首先用10对以上棋盘格图进行双目标定,得到内参和畸变系数;然后利用OpenCV的stereoRectify进行极线校正;最后采用SGBM算法得到视差图,并通过左右一致性检查和连通域滤波去除错误匹配。在Tegra X2上通过调整SGBM参数(P1、P2、窗口尺寸)平衡了精度与速度。”
💡 复习建议:本章内容在面试中常作为“你做过哪些图像处理工作”的铺垫。建议手推一遍相机内参矩阵公式,并刷OpenCV常见API(GaussianBlur、Sobel、Canny、SIFT、stereoBM等)。项目案例可结合实习/竞赛经历换用,但务必保留“标定→校正→匹配→后处理”的逻辑链。
⚠️ 常见失分点:1.只知概念不知工程参数选择(如sigma、滤波核K)。2.混淆特征点检测与描述子生成。3.标定棋盘格数<3张导致精度不足。