Skip to content

Commit

Permalink
Update COSC0029.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Emanual20 committed Sep 3, 2023
1 parent 7f4f6fe commit e9e9118
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions courses/grade-3/COSC0029.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,35 @@ Springer IJCV: http://link.springer.com/journal/11263
```

[@YottabyteM, 2023Spring](https://nkucs.icu/#/experiences/minor_trans/):

这个课无论课堂还是作业都蛮硬核的。内容主要包括一些经典的图像处理算法,同时也会引入一些老师之前的工作。老师水平很高,每个知识点都信手拈来,课堂密度在中后期还是挺大的。老师的 PPT 和讲解都很到位,认真听的话不会有太大问题,实在不懂的可以多看看论文或者直接问老师。每节课都有签到,随堂测试计入总成绩,一般报的人相对较少,旷课迟到很容易就会被发现。作业主要是实现一些经典算法,OpenCV只能用来干一些基础操作,今年作业源码都不需要提交,也不用写报告,直接和老师1v1,抄袭、运行bug、原理错误、展示效果不佳等问题都会影响分数,建议至少提前三天开始写。

之前学长说的已经很完整了,我根据个人情况再给出一些补充,适合像我一样的CVnoob:

* 需要复/预习的知识(按照难度排序)
1. 卷积
2. 基本的DP和图论算法
3. 矩阵运算
4. 数字信号处理中频域时域转换和对应关系
5. 传统机器学习和深度学习(入门级别就行)
6. 射影几何(入门级别就行)
* 作业难度和可扩展点(每次作业占总评10分,大作业占40分,实现基础部分给75,实现了但是有问题可能会给60,基础之上加拓展可能会到90+?除了SIFT其余的基础实现都很简单,我根据基础+拓展也按照1-3给出难度分)
0. OpenCV环境配置(5): 不多解释。
1. Hybrid Image(1): 基础实现不难,可做的拓展不是很多,手写卷积等一些基础工作可能不会给太高的分数,可以试试把卷积过程用二维FFT写出来,也可以试试并行优化。(核心代码量大概300)
2. Canny Edge Detector(2): 基础实现有点难,容易出现各种各样不好的效果,可以考虑输出一下中间结果,比如连边的时候可以把每条边用一种颜色标出来看看连续性(老师教的)。拓展的话可以把之前的手写FFT迁移过来,然后写写floodfill什么的(写起来简单,不容易出错),还可以考虑一下自适应阈值(里面还可以加点二维前缀和之类的小优化)。(核心代码量大概500-600)
3. Feature Match(1): 基础实现很简单,直接ratio test即可。拓展的也不是很困难,可以实现一下课上提到的GMS。(核心代码量大概300)
4. SIFT(3): 基础实现就非常难,需要结合作业3检验特征点质量。拓展反倒不困难,可以试试ASIFT,也可以试着换一下descriptor,当然还可以并行优化。(核心代码量大概800-1000+)
5. Depth Estimation(3): 我和队友都是视差匹配,基础的可以基于ssd或者ncc。拓展的话可以试试sgm、sgbm、adcensus、graphcut等算法(选一个就行)。每一个都不是很容易,建议尽早做,gc算法我只给自己留了一晚上,网络流建图建错了,寄得彻底。(核心代码量大概500-800+)
6. Final(3): 首先建议找靠谱的队友,不求带飞,但是要有输出。其次建议基于传统算法做,既能体现工作量同时也容易有创新。基于深度学习的太简单容易给低分(比如backbone),太复杂了时间不够卡不够训不完结果还不一定能保证,解释性也很差。老师的代码功底和理论功底都非常强大,基本一眼就能看出工作量和难度,大伙要认真对待。我们队是直接调研拓展了视差匹配,两个人各拓展一类传统算法,另一个人整了深度学习算法,最后给分还不错。
* 新手(我)使用OpenCV常常遇见的问题
1. 数据类型: 尽量使用浮点类型(CV_64F*或者CV_32F*),直接用整型最后效果可能会非常差,浮点整型混着用容易出一些未知错误,建议写几个宏统一精度。
2. 坐标系选取: 注意一下col/row和x/y,容易混。
3. 内存管理: 莫名其妙有些Mat被析构了,我认为这个主要是编译器优化的bug,建议写的时候省去没有用的中间变量传递。
4. 图片显示: 有时候imshow了发现是全黑的,一方面可以用老师推荐的Image Watch(确实好用,强烈推荐)看一下像素值,另一方面可以给Mat乘一个较大的数值(比如100)增加亮度,之后还有问题再找程序的bug。

大伙如果有充足的时间,并且对CV方向感兴趣的话,一定不要错过这门课!

[@ashun989, 2022Spring](https://github.com/ashun989):

一门很硬核的课,早有耳闻这课的难度较高,我抱着感兴趣+挑战自己的心态选了课,收获也是比较多的:
Expand Down

0 comments on commit e9e9118

Please sign in to comment.