美文网首页
从零开始学图像渲染

从零开始学图像渲染

作者: 天叔 | 来源:发表于2020-10-05 22:07 被阅读0次

图形学是一门综合学科,涉及的基础学科内容繁多,多用于跨领域的工程应用,比如传统的图像处理、游戏引擎,现在比较热门的图像分割、人脸识别、无人驾驶、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 (实时渲染),渲染领域的圣经。这本书第三版比较贵,最新的第四版便宜多了,有兴趣的同学可以在网上找找电子版的(白嫖)

    image

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

相关文章

  • 从零开始学图像渲染

    图形学是一门综合学科,涉及的基础学科内容繁多,多用于跨领域的工程应用,比如传统的图像处理、游戏引擎,现在比较热门的...

  • iPhone 6 图像渲染揭秘

    iPhone 6 图像渲染揭秘 iPhone 6 图像渲染揭秘

  • Cocos Creator 2.4x 笔记 - 从Unity到C

    图像和渲染 基本图像渲染:Sprite 、 Label 、 Mask 组件外部资源渲染:ParticleSyste...

  • 图像渲染

    图像渲染的过程 图像 => GPU将图片解码 => GPU进行图像渲染 => 存储到帧缓存区 => 视频控制器...

  • 图像渲染

    有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。 给你一个坐标...

  • iOS 图像撕裂及解决方法

    1.图像撕裂 1.1 图像显示过程 图像 -> CPU将图片解码,交给GPU -> GPU进行图像的渲染 -> 存...

  • OpenGL的绘制

    OpenGL渲染图像 OpenGL渲染图像需要执行的操作从OpenGL的几何图元中设置数据,用于构建形状。使用不同...

  • 1-2.着⾊器渲染过程

    渲染将图形/图像数据转换成2D空间图像操作叫做渲染(Rendering)图⽚/按钮/视频-->显示绘制到屏幕过程,...

  • iOS 图像渲染

    一、屏幕显像原理 上图显示的是CRT电子枪扫描路径,涉及到两个比较重要的概念:水平同步信号(HSync),垂直同步...

  • 图像渲染原理

    iOS图形渲染底层结构 最底层是图形硬件(GPU);上层是Metal和CoreGraphics,提供一些接口来访问...

网友评论

      本文标题:从零开始学图像渲染

      本文链接:https://www.haomeiwen.com/subject/evhzuktx.html