Image Processing & Machine Vision 2022 图像处理与机器视觉
本系列为2022年同济大学电信学院控制系图像处理与机器视觉课程笔记。笔记已经全部更新完成,欢迎大家批评指正!
Email: rfan@tongji.edu.cn
Teaching Support Assistants: Yi Feng & Shuai Su
author:Yi Yang & Zhengpu Wang
textbook:Computer Stereo Vision for Autonomous Driving
课程大纲解读:
最核心的三门课,
- Perspective Transformation
- Camera Calibration
- Epipolar Geometry
比较独立的课
- Optical Flow
- Stereo Matching
目前CV顶会深度学习内容占95%以上,所以讲了
- Deep Learning Applications
比较传统、基础的一些课
- Image Filtering
- Image Pyramid
- Edge,Corner,Line,BLod, & Keypoint Features
没讲到的一些内容
- Fourier transform
- Wavelet transform
- Superpixel clustering 超像素聚类(一些区域的像素相近,所以这一块看成超像素)
- Image/video compression
- Image restoration
- Surface normal estimation
- Photometric stereo
笔记采用wolai平台完成,排版漂亮,打公式也很方便。如果notion用不习惯,可以试试这个。
ps:wolai可以正常显示的公式在其它平台好像有点问题,逐个修改工作量太大了。也尝试过各种办法,为了保证良好的阅读体验,建议大家去wolai平台阅读。
欢迎大家批评指正!
课程笔记主页
Lecture2 Human Visual Perception ,Cameras & Images
第二章主要介绍人类视力的原理,一些研究会用的相机(如鱼眼相机、线性扫描相机、事件相机等),以及图像和色彩的相关知识。
Lecture2_Human_Visual_Perception,Cameras_&_Images (wolai.com)
Lecture3 Perspective Transformation
第三章先铺垫了一些线性代数预备知识,如向量、范数、反对称矩阵、坐标变换矩阵等。然后介绍了成像几何的四个坐标系及坐标系之间的变换的知识。学完这一章,世界坐标系、相机坐标系、图像坐标系以及像素坐标系就可以相互转换了。
Lecture3_Perspective_Transformation (wolai.com)
或者看这一篇:水云身:Lecture3_Perspective_Transformation
Lecture4 Camera Calibration
第四章首先复习了前面坐标变换的内容,然后讲解了齐次坐标系和齐次变换,以及镜头畸变矫正和相机标定的原理和步骤。
Lecture4_Camera_Calibration (wolai.com)
Lecture5 Epipolar Geometry (I) 对极几何
先介绍一下Ran.F 组织的会议/竞赛——AVVision.
The Autonomous Vehicle Vision (AVVision) Community aims to bring together industry professionals and academics to brainstorm and exchange ideas on the advancement of visual environment perception for autonomous driving.
第五章和第六章难度稍大,但是也极其重要!主要讲了奇异值分解和对极几何模型,其中重点介绍3个矩阵——Essential matrix , Fundamental matrix ,homography matrix。这部分数学推导居多,建议手推一遍。
Lecture5_Epipolar_Geometry_(I)_对极几何 (wolai.com)
Lecture6 Epipolar Geometry (II) 对极几何
第六章是对极几何的第二部分,前面3、4、5章的知识都作为预备知识。这里引入了三角化(三维重建会用到),然后介绍Stereopsis 立体视觉以及双目相机的校正(重要)。
Lecture6_Epipolar_Geometry_(II)_对极几何 (wolai.com)
Lecture7 Image Filtering
第七章开始介绍传统的图像处理内容。介绍了梯度、卷积等知识,以及常用的卷积核如拉普拉斯核、高斯核等。图像处理操作如锐化、模糊、高斯滤波、双边滤波、中值滤波等,最后介绍了卷积神经网络。
图像处理无非就是用一些卷积核把图像卷来卷去。
Lecture7_Image_Filtering (wolai.com)
Lecture8 Image Pyramid 图像金字塔
第八章以图像金字塔为中心,讲解了降采样(和池化)、上采样、等等操作,内容相对简单。在图像处理中,一般会先降采样把图片大小降下来再处理,加快处理速度。上采样会产生一个“模糊化”的图像,因此我们需要超分辨率算法(super-resolution algorithm)去得到高质量图像。其中GAN网络是最常用的技术,Lecture14 IPMV with Deep Learning会讲。
Lecture8_Image_Pyramid_图像金字塔 (wolai.com)
Lecture9 Edges & Lines
第9章主要介绍边缘检测和线检测。其中边缘检测介绍了检测算子Sobel,Prewitt, Scharr,Canny等,线检测介绍了霍夫变换算法和应用,常用于车道线检测,对自动驾驶感兴趣的同学不要错过哦~
Lecture9_Edges_&_Lines (wolai.com)
Lecture10 Interest Points
第10章又来到一个相对硬核的内容,内容丰富,可以当成2章来看。本章讲了角点检测,斑点检测, 关键点检测,最后重点讲了SIFT的原理。本章用途十分广泛。
兴趣点检测是计算机视觉系统中用于提取特定特征和推断图像内容的一种方法。这种技术经常用于图像动作感应、图像配准、视频跟踪、图像拼接、全景图像拼接、三维重建等。
Lecture10_Interest_Points (wolai.com)
Lecture11 Stereo Matching
第11章是本课程的核心内容之一,使用双目相机构建深度图。视差,简单来说就是两张图片的像素亮度差(AD绝对差或SD平方差)。得到视差图的4个步骤——代价计算,视差计算,视差优化以及视差改善。视差匹配算法有局部算法和全局算法,局部算法有SAD,SSD,NCC等,全局算法一般采用马尔科夫链作为几何模型。典型算法是半全局算法SGM,Semi-global matching,OpenCV里面称为SGBM.做视差匹配,重点在于速度和精度的平衡。
这一个Lecture的内容十分的丰富,可以当作两个Lecture来看。
(怎么还不学?快学!!)
Lecture11_Stereo_Matching (wolai.com)
Lecture12 Motion 光流
第12章介绍光流,CV方面比较前沿的研究。介绍了光流的原理,孔径问题以及FlowNet等。
Lecture12_Motion_光流 (wolai.com)
Lecture13 SfMand SLAM
第13章介绍了现在很火的SLAM,Simultaneous localization and mapping 即时定位与地图构建。SLAM是一个机器人应用,通常用于自动驾驶汽车、移动机器人和无人机,获取它们的位置并构建一个全局环境地图。另一部分是Structure from motion (SfM),比如可以用一堆游客的照片来重建罗马。最后带了一点自运动估计。
Sfm : 侧重struction
SLAM : 侧重location ,评估真实轨迹和估计轨迹的相似度
Lecture13_Sfm_and_SLAM (wolai.com)
阅读材料有
- Structure from Motion (CVPR’16):Structure from Motion (CVPR’16)
- Review of visual odometry: Review of visual odometry
Lecture14 IPMV with Deep Learning
第14章讲了机器学习在CV方面的应用,当前CV的研究几乎离不开深度学习。讲了4个主要的应用,图像分类、目标检测、语义分割、GAN网络。
比如现在有一个训练好的分类网,怎么做物体检测?让你去做,你有什么思路?
滑动窗口,比如用一个244x244的窗口去滑动,送到分类网里面。好的结果的位置就是物体的框。没毛病,是不是?事实上也是这么做的。
Lecture14_IPMV_with_Deep_Learning (wolai.com)
Image classfication by 李宏毅-机器学习
Object detection for autonomous driving
Semantic Segentation
GAN
本章内容在当前不管是学术还是工业都很火,相信同学也很感兴趣。这里列一下阅读材料。
Image classification
-
Image classification tutorial:
-
Vision Transformer:
-
Image classification with MATLAB:
-
Image classification with PyTorch:
-
ImageNet:
Object Detection
-
PyTorch tutorial:
-
Deep learning-based object detection survey:
-
- 10.1109/TNNLS.2018.2876865
-
3D object detection survey:
-
- 10.1016/j.patcog.2022.108796
-
Video object detection survey:
-
- 10.1109/TNNLS.2021.3053249
Semantic Segentation
-
PyTorch code:
-
Semantic segmentation survey:
-
SNE-RoadSeg:
-
SNE-RoadSeg+:
Generative Adversarial Network
-
CycleGAN:
-
DCGAN:
-
GAN Survey:
HW–StereoCamera
本章是做课程大作业的日志。课程大作业有三维重建、双目视觉等,我和搭档璞选的是双目视觉(得到深度图)。
数据集网站:
本次大作业,我们实现了相机畸变校正、立体校正得到了对极线对齐后的图像,接着我们实现了局部算法SAD、SSD、NCC以及经典(半)全局算法SGBM,以及后处理步骤如亚像素增强、一致性检查、移除小连通区、视差填充和中值滤波,并且实现了并行加速如omp。最后将视差图转为深度图,三维重建(输出点云图)。
没有双目相机,用手机拍照片,然后利用光流法进行外参自整定,也算是一个小小的创新。后面会更新在gitee仓库。
大作业高分原则:
- 速度越快
- 精度越高
- 调的库越少,手写的方法越多
做了作业(实践)才能对理论内容有更深刻的掌握。
Summary
本章是课程小结,主要理了一下课程的结构和重点。我在文章开头课程大纲处就已经列了出来。本课程到此就结束啦。收获还是蛮大的,CV对我们的生活产生了巨大的影响,也算入个门。
Ran.F 说他大四上接触CV,当时就觉得找到了自己愿意奋斗一生的事业,这里也祝同学们——
愿你找到自己愿意为之奋斗一生的事业!
如果觉得有所帮助,欢迎点赞、收藏、转发走起来!
参考文献:
[1] Hirschmuller H. Stereo processing by semiglobal matching and mutual information[J]. IEEE Transactions on pattern analysis and machine intelligence, 2007, 30(2): 328-341.
[2] Wang H, Fan R, Cai P, et al. PVStereo: Pyramid voting module for end-to-end self-supervised stereo matching[J]. IEEE Robotics and Automation Letters, 2021, 6(3): 4353-4360.
[3] https://www.ruirangerfan.com/pdf/cvapp2022_fan.pdf
[4] Zabih R, Woodfill J. Non-parametric local transforms for computing visual correspondence[C]//European conference on computer vision. Springer, Berlin, Heidelberg, 1994: 151-158.
[5] https://www.cnblogs.com/riddick/p/8486223.html 真实场景的双目立体匹配(Stereo Matching)获取深度图详解
[6] https://ethanli.blog.csdn.net/article/details/105065660 【立体匹配系列】经典SGM:李迎松
[7] https://www.jianshu.com/p/b5ee34507166 初识立体匹配算法
作者:https://www.zhihu.com/people/yang-yang-20-27-99
原答案:https://zhuanlan.zhihu.com/p/532044251