前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从零开始学图像渲染

从零开始学图像渲染

作者头像
公号sumsmile
修改2023-09-23 16:17:28
2K0
修改2023-09-23 16:17:28
举报
文章被收录于专栏:音视频技术学习笔记

图形学是一门综合学科,涉及的基础学科内容繁多,多用于跨领域的工程应用,比如传统的图像处理、游戏引擎,现在比较热门的图像分割、人脸识别、无人驾驶、AR/VR、三维重建、医学影像等等,未来随着图形硬件、网络带宽的进步,前景更加广阔。

当然,学习有一定门槛,有不少前置的知识依赖,要学好,得耐得住寂寞。

工作方向调整,笔者今年6月份开始接触图形渲染相关工作,这里分享笔者从零开始学习图形渲染和对该领域的前景的思考。

一、图形学roadmap

根据自己的理解,画了一张简单的学习路线图,

上面是按照渲染功能来划分,也可以按照工程职能来划分细分领域

如果工作非常着急使用openGL,可以先单独学习openGL,熟悉openGL提供的API,也能勉强应付简单的渲染。如果时间充裕,建议按照笔者上面列举的顺序,从下至上依次学习,先练好内功,到后面的工程应用会轻松很多,而且理解更透彻。

二、学习资料推荐

网上的资料很多,笔者这里按照自己的喜好列出学习的参考资料

2.1 前置学科基础(非必须)

(1)一元微积分:微积分是计算机视觉的基础,涉及到偏导梯度、傅里叶变换等重要概念。推荐《普林斯顿微积分读本》,深入浅出。作者也很俏皮,千万不要再去读大学的那几本同济版了,有毒。这本书只介绍了一元微积分,还需要补充多元微积分的基础。

(2)多元微积分:参考这位博主的笔记来学习,很精简,适合快速复习https://www.cnblogs.com/bigmonkey/category/1142620.html

时间充裕的朋友,可以另外参考MIT的网易公开课:

网易公开课:MIT单变量微积分35讲

http://open.163.com/special/sp/singlevariablecalculus.html

网易公开课:MIT多变量微积分35讲

http://open.163.com/newview/movie/courseintro?newurl=%2Fspecial%2Fopencourse%2Fmultivariable.html

(3)线性代数

线性代数是图形处理之母,一定要学好,如果时间紧张,至少也要理解“矩阵转置”、“叉乘求法向量”、“求逆”、“投影矩阵”等重要的线代概念。

推荐两套教材

** Sheldon Axler写的《线性代数应该这样学》**,不算厚。换一种思路看线性代数的本质,同样劝退大学的那本教材吧!有毒+1!

image

另外,笔者20年趁疫情期间刷了一遍MIT Gilbert Strang 教授的的线性代数,讲的特别好,有大量工程实践的案例

http://open.163.com/newview/movie/courseintro?newurl=%2Fspecial%2Fopencourse%2Fdaishu.html

中国大学的线代不好学,主要侧重公式运用和计算,脱离实际工程,学生很难理解本质,融会贯通。

感谢这位风趣幽默的老头,贡献了这么好的教程。

再补充一个不错的数学博客,作者博士期间整理的学习笔记:https://zlearning.netlify.app/math/

(4)信号原理:

笔者参考的是北航 江志红老师的《深入浅出数字信号处理》,只看了前5章节,讲脉冲、信号滤波、傅里叶变换、离散傅里叶变换等非常基础的信号理论知识,目前还够用,后面需要再继续深入。

2.2 图形学基础(重要)

如果想深入理解openGL,最好是先学习一遍图形学基础,openGL可以理解是“图形学理论”的具体设计实现。否则直接上openGL涉及一些图形学概念,会很突兀。

笔者参考的是中译本《视觉计算基础》,内容安排的很好,详略得当,作为基础够用了。翻译者是四川大学的赵启军老师,学习过程中,有几处疑似错误,给出版社、四川大学都发了邮件,没有鸟我,伤心~~

2.3 接下来到了有趣的实践环节,openGL学习。

openGL的学习分两部分:

一要学习opengl基础图形API;二****要积累opengl shader的编写,包括常见的特效滤镜实现

同学们也可以选择iOS平台的metal、Android平台的vulkan作为图形渲染的开发接口,笔者这里选择openGL,一方面是工作需要,另一方面考虑openGL在工程领域应用时间较长,有丰富的资料可以查,作为学习入门是比较合适的

2.3.1 opengl基础学习

参考资料:

免费网络资料:https://learnopengl-cn.github.io/

这套资料很良心,一是免费,二是涉及的代码、图片资源都整理的很好,到了工程编码环节,有源码事半功倍,不懂的地方,直接看代码。

笔者参考这套学习资料,把每章节的demo也撸了一遍,受益良多。

有兴趣的朋友们,也可以参考:

opengl学习笔记:https://www.jianshu.com/p/fe01787b1de1

另外推荐一本openGL资料作为补充,《OpenGL ES 3.0编程指南》

注意:openGL ES 是针对移动端的API讲解,接口有点老,有些关键字接口和opengl不一样,学习时不用纠结,知道就好。

想学好openGL没有好办法,就是多练习,多总结。过一段时间,就能慢慢体会到openGL渲染管线的逻辑,体会“为什么说opengl 是一个状态机”,感受GPU编程的魅力。

关于opengl有两张很重要的图,理解好这两张图非常重要。

**1)坐标变换 **

2)渲染流程

2.3.2 shader技巧

1)shader教程:

https://thebookofshaders.com/

2)shader集合,这里面有各种各样的shader 算法实现

https://www.shadertoy.com/

后记:

经典图形学在工程应用上,面对复杂的问题,往往有很多bad case,结合机器学习能解决一部分问题,图形学也是机器学习的一大领域,同时对ML感兴趣的同学可以朝这个方向发展,笔者尚未涉猎该领域,暂不能提供合适的资料。

到此,关于渲染的理论基础和工程应用基础就告一段落了。再往后深入,要结合工作需要,选择一个具体的细分领域深入学习。笔者也是刚进入到图形处理领域,了解的不多,这里推荐一些讲图形渲染的资料。

  1. ** PBR(基于物理的渲染)**,光照是渲染里面比较难的一点,设计一个渲染效果逼真的算法,又能兼顾硬件性能并不容易。网上已经免费公开了该教程: http://www.pbr-book.org/3ed-2018/contents.html
  2. RTR (实时渲染),渲染领域的圣经。这本书第三版比较贵,最新的第四版便宜多了,有兴趣的同学可以在网上找找电子版的(白嫖)

以上,就是笔者关于图形学入门的心得,希望能对你有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档