如何学习计算机图像学(来自人人数学的美学世界小站)

标签: 学习 计算机 图像学 | 发表时间:2012-11-21 15:23 | 作者:atupal
出处:http://blog.csdn.net

IT人一定要记住,不要指望通过一本教材就学会计算机图形学,它比你想象的要复杂的多。


一、 引言 

        计算机图形学是用计算机来画东西的学科,数字图象处理是把外界获得的图象用计算机进行处理的学科。在法国,图形图象是一门课程。 

        如何学习计算机图形学呢?除了计算机图形学的基础知识以外,你还需要有以下的知识,你懂的越多,当然做的越好。 

        1、英语。你一定要把英语学好,如果你想学习计算机图形学的话,尽量看英文的书籍和资料。国内的资料一者比较少,二者涉及到原理性的东西不多。

        2、数学。计算机图形学里面的数学用的比较多,我们可以列举一些常用的:高等数学、数值分析、微分几何、拓扑,概率、插值理论、(偏)微分方程等等。 

        3、物理。如果你要进行基于物理的建模,一些物理理论是要学习的:力学(运动学,动力学,流体力学…),光学,有限元… 

        4、编程语言。C或C++是计算机图形学最通用的'普通话'。 

        5、数据结构。你需要数据结构来描述你的图形对象,除了通用的链表、树等数据结构外,图形学还有自己特殊的数据结构。

        6、其他类别。有的时候你需要其他学科的知识,根据你的需要去学习吧。 

        上面列举的不是你必须学习的东西,而是计算机图形学可能会用到的东西。一定要记住,不要指望通过一本教材就学会计算机图形学,它比你想象的要复杂的多。  

二、图形学的问题 

        每个学科都有自己学科的特定问题,图形学要解决的是如何画出图来,得到需要的效果,当然这是图形学最大的一个问题。在开始学习计算机图形学的时候,找一本简单的书看,对计算机图形学有个大概的认识,你就可以开始图形学之旅了。 

        《OpenGL Programming Guide: The Official Guide to Learning OpenGL》( Version 1.4, 4th Edition) 

        《OpenGL SuperBible (3rd Edition) 》

        这两本书是比较好的学习计算机图形学的入门教材,在练中去学。

        不建议一开始就看《Computer Graphics: Principles and Practice, Second Edition in C》,会看的一头雾水,一本什么都讲的书的结果往往是什么都没讲清楚。 

        当你把OpenGL的基本内容掌握之后,你对图形学就有了大概的了解了。那么下面你可以来学习一下计算机图形学的数据结构和算法。Joseph O'Rourke 的《Computational Geometry in C》非常推荐,书里面有C的源代码,讲述简单、清晰,适合程序员学习。

         总的来说,计算机图形学涉及到2大部分:建模和渲染。

        1、建模

        你想画一个东西,首先要有它的几何模型,那么这个几何模型从什么地方来呢?下面的书很不错:  

        (1)Gerald Farin 的《Curves and Surfaces for CAGD: A Practical Guide》这本书有一点难度,呵呵,要努力看啊。

             这本书算是CAGD (计算机辅助几何设计)的经典图书,CAGD方面的全貌。

        (2)还有2本很好的讲述曲面的书,Bezier和Nurbs的书,Les A. Piegl,Wayne Tiller 的《The Nurbs Book 》,里面有NURBS曲线、曲面的程序伪代码,很容易改成C的,书讲的通俗、易懂,但是你要有耐心看。 

        (3)《曲线与曲面数学》 

             这本书是法国人写的中文翻译版,里面还有Bezie本人写的序J,翻译的很不错的,看了你就掌握Bezier曲面技术了。  

        (4)还有其他的一些造型技术,这些技术可以适当的看看,有时可能会用到。

         A、隐式曲面(Implicit Surface)造型:就是用函数形式为F( x ,y ,z ) = 0的曲面进行造型,这样的造型技术适合描述动物器官一样的肉乎乎的东西。有2本书推荐大家: 

                Jules Bloomenthal编辑的《Introduction to Implicit Surfaces》,是一本专著,讲述了Implicit Surface建模型(Modeling),面片化(Polygonization),渲染(Rendering)的问题。

                Luiz Velho 的《Implicit Objects Computer Graphics》也是一本专著,讲述了更新的一些进展。

         B、细分曲面(Subdivision Surface)造型:当用NURBS做造型的时候,曲面拼接是复杂的问题,在动画的时候,可能产生撕裂或者褶皱,Subdivision Surface用来解决这个问题 。

                 Joe Warren的《Subdivision Methods for Geometric Design: A Constructive Approach》就是这方面的专著。  

         (5)光有造型是不够的!开始在你的几何模型做好之后,有一些问题需要对这个模型进一步处理,得到适合的模型,当面片很多的时候,或者模型很复杂的时候,需要对几何模型进行简化,才可以满足一些实时绘制的需要,这个技术叫做层次细节(LOD-Level of Detail)。下面的书就是讲这个的: 

              David Luebke编著的《Level of Detail for 3D Graphics》 

        2、渲染 

       有了模型,怎么把这个几何模型画出来呢?这个步骤就是渲染。

        (1)如果你看了上面的OpenGL的书,那么你就知道一些渲染的知识了,但是别高兴的太早,OpenGL使用的是局部光照模型(Local Illumination Model),不要被这个词吓住了。

         Local illumination Model指的是在做渲染的时候只考虑光源和物体之间的相互作用,不考虑物体和物体之间的影响,所以OpenGL不支持阴影,一个(半)透明物体的效果,这些需要考虑物体之间的影响才可以实现。 

        (2)光线追踪(Ray Tracing)  
        关于Ray Tracing的好书有2本:

        Andrew Glassner 的《An Introduction to Ray tracing》。Glasser是图形界的名人,这本书也是Ray Tracing的经典

        R. Keith Morley, Peter Shirley 的《Realistic Ray Tracing, Second Edition》。这本书第一版是伪代码,第二版是C代码。它的结构不是很清楚,虎头蛇尾的感觉。 

        (3)辐射度(Radiosity)  
        关于Radiosity的好书有4本:  

        Michael Cohen 的《Radiosity and Realistic Image Synthesis》。Cohen获得SIGGRAPH 1998计算机图形学成就奖,他把Radiosity变成实际可用。

        Francois X. Sillion的《Radiosity and Global Illumination》。Sillion是法国人,他的主要研究方向是Radiosity,这本书写的很不错的,非常清晰。 

        Philip Dutre 的新书《Advanced Global Illumination》。看起来还不错,刚拿到手,还没看,呵呵,所以不好评价 

         Ian Ashdown的《Radiosity: A Programmer's Perspective》。有源代码的书啊!! 

         (4)Photon mapping 

         这个我也不知道怎么翻译,呵呵。这个技术出现的比较晚,一本好书! 

         Henrik Wann Jensen的《Realistic Image Synthesis Using Photon Mapping》。Henrik Wann Jensen是Photon mapping技术的发明者。

         3、除了上面讲的'经典'的计算机图形学,还有下面的一些东西,它们也叫计算机图形学吗?是的!!! 

         3.3.1非真实性图形学(Non-Photorealistic Graphics) 

        真实性不是计算机图形学的唯一要求,比如:你给我画一个卡通效果的图出来,或者我要用计算机画水彩画怎么办?或者:把图象用文字拼出来怎么做?,解决这些问题要用到非真实性图形学, 好书继续推荐!!! 

        Bruce Gooch, Amy Ashurst Gooch的《Non-Photorealistic Rendering》。 

        3.3.2体图形学(Volume Graphics) 

        用CT机做很多切片(比如头骨),那么能通过这些切片得到3D的头骨吗?Volume Graphics就是解决这样的问题的。 

        Min Chen 编著的《Volume Graphics》。 

        上面的2个图形学技术就和图象的界限不明显了,实际上他们是图形图象的综合。

        4、还有其他的书吗?还有一些好书啊,呵呵,好书看不完的,继续放送: 

        《Graphics Gems I ~ V》。一大帮子人写的书,包括研究人员,程序员…。有计算机图形学的各种数据结构,编程技巧。 

        Tomas Akenine-Moller 等人编著的《Real-Time Rendering (2nd Edition) 》。讲述了许多最新的计算机图形学进展。 

        David Ebert等人的《Texturing & Modeling: A Procedural Approach, Third Edition》。讲述如何通过程序实现纹理、山、地形等图形学要素。 

         F. Kenton Musgrave号称分形狂(Fractal Mania)。Ken Perlin就是Perlin噪声的发明者,用过3d软件的人对Perlin Noise不会陌生的。

         5、关于图形学的特定对象,有特定的专题图书。 

         《Evan Pipho Focus On 3D Models》。对于图形学的常用模型格式,进行了讲解。 

         Trent Polack的《Focus On 3D Terrain Programming》。讲地形 

         Donald H. House 的《Cloth Modeling and Animation》。讲布料 

         Nik Lever的《Real-time 3D Character Animation with Visual C++》。讲角色动画  

         ……

         6、还有:

         Richard Parent的《Computer Animation: Algorithms and Techniques》,当然是讲动画的啦,呵呵。 

         David H. Eberly的《3D Game Engine Design : A Practical Approach to Real-Time Computer Graphics》,有代码的啊! 

         7、最后,没事情的时候,看看下面的书吧: 

         Alan H. Watt的《3D Computer Graphics (3rd Edition)》。 

         James D. Foley等人的《Computer Graphics: Principles and Practice in C (2nd Edition)》。这本圣经没事的时候再看吧。 

作者:atupal 发表于2012-11-21 15:23:39 原文链接
阅读:0 评论:0 查看评论

相关 [学习 计算机 图像学] 推荐:

如何学习计算机图像学(来自人人数学的美学世界小站)

- - CSDN博客推荐文章
IT人一定要记住,不要指望通过一本教材就学会计算机图形学,它比你想象的要复杂的多.         计算机图形学是用计算机来画东西的学科,数字图象处理是把外界获得的图象用计算机进行处理的学科.         如何学习计算机图形学呢. 除了计算机图形学的基础知识以外,你还需要有以下的知识,你懂的越多,当然做的越好.

我是如何学习计算机编程的

- hi3w - 伯乐在线 -博客
  注:本文转载自外刊IT评论,国外程序员Feross Aboukhadijeh分享的经验.   我在很小年纪的时候就开始学习编程,我学习编程的方法是创建大量的不同的网站. 下面列出的是我创建的主要的网站,其中最早的一个是我11岁时开发的. 我希望读者能从我这些复述中获得的信息是:如果你想学习编程,做大量的练习性的项目是非常必要的.

【外刊IT评论网】我是如何学习计算机编程的

- Randall - 外刊IT评论网
本文是从 How I Learned to Program Computers 这篇文章翻译而来. 我在很小年纪的时候就开始学习编程,我学习编程的方法是创建大量的不同的网站. 下面列出的是我创建的主要的网站,其中最早的一个是我11岁时开发的. 我希望读者能从我这些复述中获得的信息是:如果你想学习编程,做大量的练习性的项目是非常必要的.

怎样看待 12 个月内自学完成 4 年麻省理工学院计算机科学的 33 门课程的 Scott H. Young 所谓的超速学习理论和方法(费曼技巧)以及背后「Get More from Life」的理念?

- - Starming星光社最新更新
我的业余爱好跟Scott Young类似研究有效学习,写了一个同类方向的Blog,看过他写的Learn More, Study Less和How to Change a Habit ,里面的不少方法也跟自己总结出来的技巧类似,谈谈我的观点. 到目前为止,除了@刘虓震的答案回答这个问题的人都对里面所取得的成就不以为然.

学生党最应该知道的资源---技能/软件/编程/英语/二外/计算机二级/其他学习/论文下载/电子书/PPT模板_哔哩哔哩_bilibili

- -
1、技能学习平台:哔哩哔哩、中国大学慕课、coursera、edX. 2、软件操作:up主:oeasy、doyoudo、星月兮、Genji是真想教会你、旁门左道PPT、Excel自学成才、我是于干,+实战演练. 3、编程:基础:菜鸟教程、进阶:CSDN、Github、stackoverflow、leetcode.

计算机学科漫谈

- - 编程 - 编程语言 - ITeye博客
    PHP设计模式之观察者模式. 在这篇博文里,我想和大家聊一聊自己对计算机学科的理解. 当下本科阶段的计算机专业教学涉及计算机学科的方方面面,分类繁杂,有时可能令新人茫然不知所措. 那么,对计算机专业的学者来说,什么是最重要的呢. 我相信,一千个读者,一千个哈姆雷特,同样的,每个计算机的学习者都有自己对专业的一番认识.

天才计算机程序员 -- fabrice bellard

- 山石 - 小美的部落格
这位老兄就是写jslinux的那位,它的主页是:. 上面有他的几个作品,包括qemu,ffmpeg,tcc等. 这个世界从来不缺天才,只缺乏利用天分坚持理想和信念不断创新的人,这些人用恒心和努力缔造一个又一个传奇. 法国人Fabrice Bellard 就是这样一个了不起的程序员. Fabrice Bellard1972年生于法国,曾就读于巴黎高等综合理工学院和法国电信研究院.

计算机爱好者 VS. 程序员

- kapster - 博客园新闻频道
  本文是从 Hackers vs. Coders 这篇文章翻译而来.   优秀的计算机爱好者具有一种无价的技能. 可作为一名程序员会跟计算机爱好者一样吗. 难道程序员跟那些不知道如何编码的计算机爱好者们相比,会在创造性上处于劣势吗.   下面的这个故事让我看清了他们之间的不同.   我最近被邀请在一个周末创业活动中做指导.

计算机的10大经典错误

- chris - 伯乐在线 -博客
10、DOS的Abort,Retry, Fail. 85年以后出生的人可能不知道DOS是什么了,只有那老家伙还知道这是什么. 我还记得当时的我对于Abort和Fail这两个选择还是比较清楚的, 不过,今天完全忘记了Abort和Fail的差别是什么. 这个出是DOS下的经常出现,也相当的经典,以至于在Wikepedia上都有专门的业面 Abort, Retry, Fail?.

当计算机算法控制世界

- 洞箫 - cnBeta.COM
感谢Bluehost中国的投递. BBC的报导称,看不见的 算法正在控制我们在数字世界里的互动,而糟糕的是我们正失 去对这些代码的控制. 从图书和电影推荐算法,到Facebook的朋友推荐和图像标记服务,到搜索引擎,算法已经渗透到了我们生活之中.