一、图形学
图形学的目标是创造一个真实的三维场景供你在里面漫游,它是所有三维游戏的基础。它的原理很简单,在一个空间里放上三角形、箱子、机器人或云,摆好摄像头,放置光源,然后计算摄像头应该看到什么,把结果显示在电脑屏幕上。不仅是静态的成像,动态的物理过程也可以实现,比如雾、碰撞、重力等等。

辐射3截图
<img src="https://pic3.zhimg.com/2d3ba041625b71b880e51e4a2349f67a_b.jpg" data-rawwidth="1280" data-rawheight="720" class="origin_image zh-lightbox-thumb" width="1280" data-original="https://pic3.zhimg.com/2d3ba041625b71b880e51e4a2349f67a_r.jpg">
1.1 三维漫游
你可以用OpenGL和C++轻松实现一个三维漫游程序(流畅性优先),然后不断往里面添加各种模型(球体、三角面片几何体、飞机)和属性(遮挡、抗锯齿、透明、玻璃、爆炸),最终把你的漫游程序变成一个精美的实时游戏。

三维海战(图片来自百度图片)
<img src="https://pic2.zhimg.com/26a81166108094e18ecc29f03592e5a5_b.jpg" data-rawwidth="1920" data-rawheight="1054" class="origin_image zh-lightbox-thumb" width="1920" data-original="https://pic2.zhimg.com/26a81166108094e18ecc29f03592e5a5_r.jpg">
1.2 光线追踪器
可以着重研究光线是如何照射和成像的(精美性优先),实现各种相机(双目、鱼眼、弱投影),材质(金属、玻璃),光源类型(点光源、方向光源、区域光源)以及光照模型(BRDF、路径追踪),最终你想画啥都能画得惟妙惟肖。光线追踪器的渲染速度很慢,程序要追踪海量光线的反射和折射分量,比如下方的钻石图案需要运行5分钟才能画完。虽然不能实时移动和旋转相机,但是渲染的结果极其逼真。

用C++实现的玻璃材质
<img src="https://pic2.zhimg.com/d000de4f3f183120b19ff73258990481_b.jpg" data-rawwidth="600" data-rawheight="400" class="origin_image zh-lightbox-thumb" width="600" data-original="https://pic2.zhimg.com/d000de4f3f183120b19ff73258990481_r.jpg">

用光线追踪器pov-ray画的钻石
<img src="https://pic4.zhimg.com/82b5f5a3959ea09b760551140df76c2b_b.jpg" data-rawwidth="720" data-rawheight="405" class="origin_image zh-lightbox-thumb" width="720" data-original="https://pic4.zhimg.com/82b5f5a3959ea09b760551140df76c2b_r.jpg">
1.3 基于GPU的加速渲染
当然,你也可以兼顾渲染质量和动画帧速,这个时候就需要使用更强大的计算资源,可以并行计算的GPU是不二的选择。看看CUDA的代码,你可以做一个体渲染模块来实时观察CT图像,卖给医学图像处理公司(也许)能赚大钱。

Volume rendering(图片来自网络)
<img src="https://pic1.zhimg.com/004f7ece2b37399f8135eff2fed8377c_b.jpg" data-rawwidth="1280" data-rawheight="1024" class="origin_image zh-lightbox-thumb" width="1280" data-original="https://pic1.zhimg.com/004f7ece2b37399f8135eff2fed8377c_r.jpg">
二、图像处理
很多图像应用都需要对图像进行必要地预处理,如去噪、融合、分割、去雾、去模糊、视频去抖动等等,这个领域非常广泛,有大量模型和理论支撑。各位常用的Photoshop和美图秀秀里面成百上千的滤镜,可以说每一个背后都有一个数学模型。下面举一个例子。
2.1 分割
有一种简单的分割算法叫Superpixel,它可以把一幅图像分割成好多个小块,保证每一个小块中颜色都差不多。当然,还有其他许多分割算法,Superpixel的好处是简单,并且很容易推广到三维空间。

Superpixel分割(图片来自这里)
<img src="https://pic3.zhimg.com/d2fd61d8d2c95613849fd4253839d872_b.jpg" data-rawwidth="321" data-rawheight="481" class="content_image" width="321">

2.2 医学图像处理
经过分割后,图像被过度分割成了很多小块,这时就可以用模式识别的算法把属于同一类的小块们再合在一起。利用分割+分类的算法,可以把三维CT图像中的骨头全自动剔除。

CT图像去骨的结果
<img src="https://pic2.zhimg.com/0b94486bb65d41ff2b023c879c183ded_b.jpg" data-rawwidth="720" data-rawheight="238" class="origin_image zh-lightbox-thumb" width="720" data-original="https://pic2.zhimg.com/0b94486bb65d41ff2b023c879c183ded_r.jpg">

三、计算机视觉
计算机视觉的目标是理解摄像机拍摄的图像,它的研究范围极其广泛,比如人脸识别、文字识别、目标追踪等等。在此介绍这一领域几个重要的方向。
大家都知道图像是二维的,而真实世界是三维的,上面介绍的图形学的原理是预先建一个三维场景然后研究摄像头看到的图像是什么样子,计算机视觉的野心则大得多:给你几幅二维图像,还原三维场景是什么。
3.1 一幅图像与测量
拿到一幅图像,可以获得平行关系,测量图像中不同物体的长度比值,在知乎也有不少朋友关心这个问题,感兴趣可以戳如何根据一张 A 楼照 B 楼的照片判断出这张照片是 A 楼的几层?以及如何测量一副图片中物体的实际尺寸?

单目测量(图片来自文献Single view metrology)
<img src="https://pic3.zhimg.com/14b929d28065a6eda5a153e30ad1259e_b.jpg" data-rawwidth="506" data-rawheight="309" class="origin_image zh-lightbox-thumb" width="506" data-original="https://pic3.zhimg.com/14b929d28065a6eda5a153e30ad1259e_r.jpg">
3.2 两幅图像与双目视觉
拿到两幅在不同位置拍摄的同一场景的图像,就可以恢复出场景,在知乎也有相关讨论:使用两张角度不同的静态图像合成连贯的动画,难度有多大?

3.3 多幅图像与三维重建
计算机视觉在这二十年最激动人心的成果之一就是完成了从多幅图像序列重建三维场景的研究,从数学上和编程实现上解决了这一从二维重建三维的过程。试想你拿着摄像机在街上绕一圈,像CS地图那样的三维游戏场景就实时重建出来是多么激动人心啊。

三维重建更具体的定义是:通过同一场景的多幅图像,恢复出每一幅图像拍摄时相机的位置和姿态,以及每一幅图像上的每一个点在三维空间中的位置。

邻居家的一系列照片之一
<img src="https://pic2.zhimg.com/06c9398d147a58bd89bbe6f2cbd6a7f9_b.jpg" data-rawwidth="400" data-rawheight="300" class="content_image" width="400">
恢复出的相机位姿和稀疏特征点位置
<img src="https://pic4.zhimg.com/07337176ba8be87338471d0f818cd22b_b.jpg" data-rawwidth="640" data-rawheight="480" class="origin_image zh-lightbox-thumb" width="640" data-original="https://pic4.zhimg.com/07337176ba8be87338471d0f818cd22b_r.jpg">
三维稠密重建(图片来自文献Accurate, Dense, and Robust Multiview Stereopsis)
<img src="https://pic1.zhimg.com/0e5c0a34be457dc8f589e62e25b5b078_b.jpg" data-rawwidth="1036" data-rawheight="307" class="origin_image zh-lightbox-thumb" width="1036" data-original="https://pic1.zhimg.com/0e5c0a34be457dc8f589e62e25b5b078_r.jpg">
四、模式识别
模式识别研究输入和输出的关系,比如给你一系列病人的体征和谁有病谁没病,模式识别需要找一个模型建立体征和是否有病之间的函数关系。在图像处理、计算机视觉、医疗、生物、社会学中具有非常广泛的应用。在The Elements of Statistical Learning的第一章里提出了四个典型问题:

  • 垃圾邮件和正常邮件的区分
  • 前列腺癌症确诊
  • 数字手写字符识别
  • DNA序列和性状的关系

模式识别把这些具体问题背后共同的模式抽象出来,集中精力研究什么样的特征判别能力更强以及什么样的模型正确分类效率高。

五、综合应用
当你掌握的知识和技能足够多了,就可以做一些需要很多环节的大项目,随便举几个例子:

  1. 在你家门口摆一台摄像机,自动识别和记录身高在1米7到1米8之间、身材姣好、长发、爱笑的女生的一举一动。一旦记录到一个符合要求的女生,将她加入数据库,以后单独更新,不同女生之间不能搞混。
  2. 买一个机器人(带轱辘能自由移动并且安有摄像头的电脑),让它自己漫游探测环境,建立三维地图,搞清楚自己在哪,这也是计算机视觉中的一个已经理论上完美解决的重要问题:即时定位与地图构建 (Simultaneous localization and mapping, SLAM)。
  3. 做一架飞机,它的功能是无论谁在追它都尽量甩掉;做一枚导弹,它的功能是尽量追上飞机,或者在附近爆炸;再做一个酷炫的供军区司令观赏的三维场景显示环境,把一些飞机和导弹放进去追着打去吧。

六、如何入手
6.1 看优秀教材

首先,学好高等数学、概率统计和线性代数(矩阵论)足矣,其他数学知识可以在具体学习模型的过程中掌握。
然后,看一些优秀的外文教材译文版,比如:

  • 图形学:OpenGL超级宝典(第5版)、交互式计算机图形学:基于OpenGL着色器的自顶向下方法(第6版)
  • 光线追踪器:光跟踪算法技术(Ray Tracing from the Ground Up)
  • 图像处理:数字图像处理(第3版, 冈萨雷斯著),图像处理、分析与机器视觉(第3版)
  • 计算机视觉:计算机视觉中的多视图几何(Multiple View Geometry in Computer Vision),计算机视觉:算法与应用(Computer Vision: Algorithms and Applications)
  • 模式识别与机器视觉:模式分类(第二版),模式识别(第四版),The Elements of Statistical Learning, Pattern Recognition and Machine Learning

6.2 看文献
6.3 看代码

OpenGL、OpenCV、CUDA都有相应的文档和代码实例,也可以在网上找附有代码的教材,研究代码,模仿先人的代码。首先练习基本的函数,然后依照兴趣实现几个非常简单的应用。自己找一个问题,实现一个最简单的解决方案,然后不断精进代码、尝试新的模型,最后就精通了这个领域。

作者:王小龙
链接:http://m.zhihu.com/question/24752071/answer/28860514
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

转载于:https://www.cnblogs.com/huty/p/8518787.html

【杂谈】数学,计算机视觉,图形图像处理相关推荐

  1. 矩阵实验:图形图像处理

    矩阵实验 矩阵 工程应用:图像平滑 看待矩阵的四种视角:数据.系统.变换.空间 线性变换 工程应用:图形变化 矩阵变化的推导 总结 矩阵 在线性代数里,用的最多的概念是[矩阵]. 一个具体的矩阵: 一 ...

  2. 图形图像处理-之-高质量的快速的图像缩放 中篇 二次线性插值和三次卷积插值

    from:http://blog.csdn.net/housisong/article/details/1452249 图形图像处理-之-高质量的快速的图像缩放 中篇 二次线性插值和三次卷积插值    ...

  3. c# 计算空格宽度像素_分享计算机视觉之图像处理Python之opencv

    start 计算机视觉 计算机视觉信息的处理技术主要依赖于图像处理方法,经过处理后输出图像的质量得到相当程度的改善,既改善了图像的视觉效果,又便于计算机对图像进行分析.处理和识别. 01 ♡♡♡ &q ...

  4. 【转】 计算机视觉、图像处理学习资料汇总

    计算机视觉.图像处理学习资料汇总 分类: 数字图像处理2012-07-19 09:24 2629人阅读 评论(1) 收藏 举报 图像处理processingimage微软compressionreso ...

  5. 第二章--图形图像处理技术——基础理论和基本工具的使用

    2.1.1人类视觉特性 眼睛对光的感觉被称为光觉,对颜色的感觉被称为色觉,它们是眼睛的基本特性. 1.光觉 视觉系统要产生光感觉,就需要有一定量的光进入眼球,我们把产生光觉的最小亮度称为光觉门限或光觉 ...

  6. OpenCV-Python图形图像处理专栏文章目录

    ☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 注: 1.部分文章前面标星号表示文章为付费专栏文章 2.本专栏的伴生付费专栏<htt ...

  7. MATLAB图形图像处理——图像灰度变换

    MATLAB图形图像处理--图像灰度变换 一.MATLAB入门知识 1.什么是MATLAB 2.MATLAB处理图像 图像数据 数据类型 位深 函数 imread imwrite 二.图像灰度变换基础 ...

  8. 计算机在多媒体技术中的应用研究,计算机技术在图形图像处理中的应用研究

    计算机技术在图形图像处理中的应用研究 随着信息技术的发展,图像处理技术在日常生活中的应用越来越普遍,下面是小编搜集整理的一篇探究计算机技术在图形图像处理应用的论文范文,供大家阅读参考. 摘要:随着计算 ...

  9. 重拾图形图像处理 ---- 笔试题

    一.填空题(每题1分,共15分) 1.列举数字图像处理的三个应用领域 医学 .天文学.军事 2.存储一幅大小为1024*1024,256个灰度级的图像,需要8M bit. 3.亮度鉴别实验表明,韦伯比 ...

  10. 国内外 计算机视觉及图像处理领域 知名期刊 统计

    **最近做了一份计算机视觉及图像处理领域的知名期刊统计. 国内外计算机视觉及图像处理领域知名期刊** 国内五种知名期刊近十年收录情况 计算机学报近十年有关计算机视觉及图像处理的文章 序号 篇名 1 深 ...

最新文章

  1. word树状分支图_交互设计技能 | 抛弃Word,试试用Excel和Xmind来整理思路吧
  2. EL:集成学习(Ensemble Learning)的概念讲解、问题应用、算法分类、关键步骤、代码实现等相关配图详细攻略
  3. 【大学到研究生自学Java的学习路线】这是一份最适合普通大众、非科班的路线,帮你快速找到一份满意的工作
  4. UVA - 1606 Amphiphilic Carbon Molecules
  5. javaone_JavaOne 2012:使用HTML5和Java构建移动应用程序
  6. matlab有shapely包吗,[哈工大]Modelarts NPU 安装shapely包失败
  7. 现代地图和古代地图下载收集
  8. AirPlay屏幕镜像技术-概述-P1
  9. 中高端洪流已至,酒店企业如何趁势突围
  10. python爬虫论文总结与展望怎么写_论文总结与展望怎么写?
  11. 关于CS1.6中模型导出到3dsmax
  12. css超出div部分用省略号,css实现超出div长度用省略号表示
  13. doc转docx文件会乱吗_Word中doc和docx,到底有什么区别
  14. SDL_UpdateTexture+ffmpeg播放YUV数据程序异常崩溃:VM Regions Near 0x113e3d000:MALLOC_LARGE
  15. 安装mysql5.7防火墙关了为什么远程登录不了呢?
  16. MRI脑影像分析——根据脑图谱获取感兴趣区域mask,以海马体与丘脑为例(matlab+nilearn+nibabel+REST1.8)
  17. 微博舆情 之 自然语言处理
  18. 互联网线下活动一周整理 11月23日—29日
  19. .Net Core 实现WebSocket Server 的另外三种方式
  20. Bad owner or permissions on C:\\Users\\XX/.ssh/config

热门文章

  1. 如何提升测试环境的稳定性?来看看阿里内部的实践总结
  2. 数据复盘《糖豆人》爆火营销过程:怎么做到以小博大?
  3. 英雄联盟手游火线妹上线了!金克丝也想成为第一AD吗?
  4. 【2022年蓝桥杯】蓝桥杯第一次海选考试题(5题考试大二)
  5. TCP/IP的七层模型
  6. ASP.NET Core微服务(五)——【vue脚手架解析接口】
  7. Ubuntu 16.04安装Tomcat 8 图解
  8. Oracle 11g 数据统计量Pending处理
  9. 雷林鹏分享:CSS 链接
  10. centos6 python 安装 sqlite 解决 No module named ‘_sqlite3′