计算机图形学简单介绍

一,计算机图形学


什么是计算机图形学呢?最先开始,本人对计算机图形学的理解就是,运用算法通过计算机进行基本图形的绘制,然后通过组合生成复杂的图像。但是,在上学期学习了计算机视觉和数字图像处理之后,便稍微有点把这几部分都看成是比较类似的方向了,因为也都涉及到一些画图的算法,和图像绘制。但是事实上不是这样的,他们或许在算法上都有一些共通的地方,但是它们在目的上有所不同。

计算机视觉 Computer Vision

计算机视觉的目的,就蕴含在视觉这两个字当中。视觉,自然是为了visualize,也就是识别,所以计算机视觉的目的,应该更偏向于目标对象的匹配识别,希望通过计算机来实现一种类似人类的认识能力,而计算机又有比人类更加强大的计算能力,可以完成许多相对于人类来说比较繁琐和复杂的任务。而要想让计算机知道它所识别的东西是什么,那显然必须让计算机经历一个学习的过程,所以在计算机视觉的领域中,一些机器学习,深度学习,卷积神经网络得到非常广泛的应用。

数字图像处理 Digital Image Processing

数字图像处理的目的,更加偏向解决一个与图片相关的实际问题,例如我们所熟悉的,图像恢复和重建,图像效果的增强,可以使得原本效果比较一般的图片获得更好的质量。

计算机图形学 Computer Graphic

有看到一句话是这么说的:计算机图形学的工作实际上可以认为是上面两个的逆过程。例如,一张汽车的图片,计算机可以识别并告诉我们,“是的,这是一辆车”;而计算机图形学的目的则是:“给我一辆车,要这样这样这样。。。”,“好的,给,这是您要的车”,也就是反过来,我们已经知道是一辆车,并且告诉计算机我们想要一辆车,然后计算机能够为我们画出一辆车来。所以,如果从终点和起点来看的话,是可以这么理解的。也就是说,事实上计算机图形学的目的,很直白的来说,就是要让计算机来画出东西来(可能不只是三维,也包括一些二维图像),也就是一个绘制的过程,通过基本的结构单元,比如说,在三维模型上经常能看到的三角形网格,拼成一个模型,然后再通过一些算法处理,使得模型呈现出我们期望的效果,比如说真实渲染,或者是在动画中的,也就是反过来要生成一些非真实的效果;然后就是模型的动画,这也是计算机图形学的一个重要的内容。此外,一些像游戏还有直播效果,这种涉及到对渲染具有实时性的要求,也是计算机图形学所要解决的问题。

二,相关API


要实现某种成熟的效果,需要我们通过比较复杂的编码来实现。我们可以通过利用一些API帮助我们更加方便且更好的实现我们所需要的效果。

OpenGL

API,即一个应用程序接口,包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。

OpenGL ES

OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。

Web GL

WebGL(全写Web Graphics Library)是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。

Vulkan

Vulkan是一个跨平台的2D和3D绘图应用程序接口(API),最早由科纳斯组织在2015年游戏开发者大会(GDC)上发表。
科纳斯最先把VulkanAPI称为“次世代OpenGL行动”(next generation OpenGL initiative)或“glNext”, [1] 但在正式宣布Vulkan之后这些名字就没有再使用了。就像OpenGL,Vulkan针对实时3D程序(如电子游戏)设计,Vulkan并计划提供高性能和低CPU管理负担(overhead),这也是Direct3D12和AMD的Mantle的目标。Vulkan兼容Mantle的一个分支,并使用了Mantle的一些组件。

DirectX

DirectX,(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口。由C++编程语言实现,遵循COM。被广泛使用于Microsoft Windows、Microsoft XBOX、Microsoft XBOX 360和Microsoft XBOX ONE电子游戏开发,并且只能支持这些平台。

P.S. all from 百度百科

三,OpenGL Library


gl.h

这个是OpenGL 1.1的基本库,包含OpenGL最基本的函数功能,如果需要使用高于这个版本的OpenGL的话,需要我们自己添加OpenGL的扩展库。而这是一件非常枯燥的工作,所以我们一般都会使用一些已经写好的接口。

glew.h

OpenGL Extension Wrangler Library,OpenGL扩展库,这是一个简单的工具,用于帮助C/C++开发者初始化扩展(OpenGL扩展功能)并书写可移植的应用程序。

glu.h

这是OpenGL的基本功能库,已经长时间没有更新了,初学者写一些简单的demo可以稍微了解一下。

四,GLFW & freeglut


GLFW

这是一个专门针对OpenGL的c语言库,它提供了一些渲染物体所需的最低限度的接口,定义窗口参数和处理用户输入。我们可以使用这个扩展库来实现OpenGL上下文的编写。

freeglut

同样,这也是一个可以用来实现OpenGL上下文的库,并且具有跨平台的优点,替代了原来老旧的glut,并且可以100%实现glut可以实现的功能。

五,Siggraph


Siggraph1967年成立于美国的计算机协会图形专业组Siggraph,(Special Interest Group on Graphics and Interactive Techniques),自1974年起开始举办的研讨会及展览,是全球多媒体动画界以及研究互动技术人士公认,最重要的学术和创作发表的国际盛事。是世界上最大的电脑绘图大会。

Siggraph 2018: facial stylization 人脸风格迁移

Siggraph每年都有一些很有趣的内容,因为最近我在看一些和风格迁移相关的东西(就是将风景图片迁移到给定的一张世界名画的绘画风格上,基于深度学习卷积神经网络,tensorflow的相关实现),由捷克科技大学和Adobe的一个脸部艺术动画的开发这个内容引起了我的兴趣。通过捕捉视频中人物的脸部动画,迁移到其他不同风格的人脸上。来自知乎的相关内容

显然这是涉及到了深度学习方面的技术,通过提前针对几种风格的图片进行大量的训练,可以直接根据当前的脸部动画快速的迁移到相应的风格,我觉得应该计算机图形学的实时渲染技术,从gif图中可以看到,在迁移效果的影像中,几乎是和原影像是同步的。

你可能感兴趣的:(计算机图形学简单介绍)