計算機視覺,計算機圖形學和數字圖像處理,三者之間的聯繫和區別是什麼?
導師課上講的,覺得簡潔明了地闡述了四者的區別與聯繫。
先說區別:
Computer Graphics,簡稱 CG 。輸入的是對虛擬場景的描述,通常為多邊形數組,而每個多邊形由三個頂點組成,每個頂點包括三維坐標、貼圖坐標、rgb 顏色等。輸出的是圖像,即二維像素數組。
Computer Vision,簡稱 CV。輸入的是圖像或圖像序列,通常來自相機、攝像頭或視頻文件。輸出的是對於圖像序列對應的真實世界的理解,比如檢測人臉、識別車牌。
Digital Image Processing,簡稱 DIP。輸入的是圖像,輸出的也是圖像。Photoshop 中對一副圖像應用濾鏡就是典型的一種圖像處理。常見操作有模糊、灰度化、增強對比度等。
再說聯繫:
CG 中也會用到 DIP,現今的三維遊戲為了增加表現力都會疊加全屏的後期特效,原理就是 DIP,只是將計算量放在了顯卡端。
CV 更是大量依賴 DIP 來打雜活,比如對需要識別的照片進行預處理。
最後還要提到近年來的熱點——增強現實(AR),它既需要 CG,又需要 CV,當然也不會漏掉 DIP。它用 DIP 進行預處理,用 CV 進行跟蹤物體的識別與姿態獲取,用 CG 進行虛擬三維物體的疊加。
對於 OpenCV 和 OpenGL 之間的關係感興趣的推薦閱讀這篇文章
OpenCV 為啥勾搭上 OpenGL? - 黑客與畫家 - 知乎專欄
從問題本身來說,這三者主要以兩類問題區分:是根據狀態模擬觀測環境,還是根據觀測的環境來推測狀態。
假設觀測是Z,狀態是X:
Computer Graphics是一個Forwad Problem (Z|X): 給你光源的位置,物體形狀,物體表面信息,你如何根據已有的變數的狀態模擬出一個環境出來。
Computer Vision正好相反,是一個Inverse Problem (X|Z):你所有能得到的都是觀測信息(measurements), 根據得到的每一個Pixel的信息(顏色,深度),我要來估計物體環境的特徵和狀態出來,比如物體運動(Tracking),三維結構(SFM),物體類別(Classification and Segmentation)等等。
對於Image Processing來說,它恰好介於兩者之間,兩種問題都有。但對於State-of-art的研究來說,Image Processing更偏於Computer Vision, 或者看上去更像Computer Vision的子類。
儘管這三類研究中,隨著CV領域的不斷進步,以及越來越高級相機感測器出現(Depth Camera, Event Camera),很多演算法都被互相用到,但是從Motivation來看,並沒有太大變化。
得益於這幾個領域的共同進步,所以你能看到Graphics和Computer Vision現在出現越來越多的交集。如果根據觀測量(圖片),Computer Vision可以越來越準確的估計出越來越多的變數,那麼這些變數套到Graphics演算法中,就可以模擬出一個跟真實環境一樣的場景出來。與此同時,Graphics需要構建更真實的場景,也希望能夠將變數更加接機與實際,或者通過演算法估計出來,這就引入了Vision的動機。這也是近年來三維重建演算法,同時大量發表在Graphics和Vision的會議的原因。隨著CV從2D向3D發展,以後兩者的交集會越來越大,除了learning以外的其他很多問題融合併到一個領域我也不會奇怪。引用Harry Shum大神的一句話:計算機圖形是把牙膏擠出來,計算機視覺是把牙膏灌回去。
Computer Graphics和Computer Vision是同一過程的兩個方向。Computer Graphics將抽象的語義信息轉化成圖像,Computer Vision從圖像中提取抽象的語義信息。Image Processing探索的是從一個圖像或者一組圖像之間的互相轉化和關係,與語義信息無關。
不確切的描述:
計算機視覺≈看圖
計算機圖形學≈畫圖
數字圖像處理≈看圖前沐浴更衣焚香做好各種儀式,然後再看圖
計算機圖形學的輸入是模型,輸出是圖像(像素)
計算機視覺的輸入是圖像(攝像機拍攝的照片或視頻),輸出是模型
數字圖像處理的輸入是圖像(像素),輸出也是圖像(像素)
關於 @劉留 「Computer Graphics和Computer Vision是同一過程的兩個方向。」有個經典的說法:
X表示真實世界,真實世界經過一個變換F,得到它的一副圖像Y,也就是Y=F(X)。F包含了物體對光的反射和相機、人眼對光的感知。
圖形學就是一個模擬F的過程,給定一個物體X,研究出最好的F使得F(X)像真的一樣。難點在於F非常複雜,且模擬起來計算量很大。
計算機視覺就是一個尋找F^(-1)的過程,有了F^(-1),給我一個圖像Y,我的計算機就能理解出X。難點在於,F^(-1)更加複雜,而且二點陣圖像中無法保留三維世界的全部信息(好比說F不是單射),因此是一個所謂不適定問題(ill-posed problem)。
我用最簡單的例子來說吧
數字圖象處理,ps就是最淺顯的例子,把一幅圖像去去躁,做做直方圖均衡化之類
計算機視覺,人臉識別,指紋識別。別告訴我連這倆你也沒聽過
計算機圖形學,迪士尼的各種3維動畫片,好萊塢的各種特效
說深了,則包含很多子分類內容以及交叉領域
計算機視覺一般都要用到數字圖象處理,比如灰度、二值、直方圖
計算機圖形學也會使用計算機視覺,比如好萊塢做特效的時候一般都是用標記以及綠幕,這就是方便將特效部分替換上去,而為了替換的更加真實,就會涉及到識別的東西
至於圖像處理,裡面也會包含到其他領域
計算機視覺(Computer Vision),計算機圖形學(Computer Graphics)和數字圖像(Image Processing)
從學科分類:
Computer Science/ Artificial Intelligence/ Computer Vision
Computer Science/ Computer Graphics and Visualization
Electrical Engineering/ Signal Processing/ Digital Signal Processing/ Digital Image Processing
Computer Vision: 照相機笑臉識別
Computer Graphics: 3D遊戲電影製作
Image Processing: PhotoShop 以及App中的各種照片濾鏡特效
舉例來說:iPhone5S的指紋識別
1. 圖像處理:首先採集圖像,對圖像進行預處理(如灰度化、平滑、增強等)
2. 圖像分割:將指紋線從圖像中分割出來(注意這時還是數字圖像)
3. 計算機視覺:將分割出來的指紋轉換為語義信息(如幾何信息【角點、曲線等】,統計信息)
4. 計算機圖形學:將幾何信息通過計算機繪圖繪製出來,即我們看到的顯示在手機中的指紋線。
--通常1和2都被稱為圖像處理。
PS:向土豪金致敬哈哈
簡單而本質的概括一下。圖像處理的輸入是一副圖像,輸出還是一副圖像。計算機視覺可以理解為圖像分析,其輸入是圖像,但輸出是對圖像的描述。而計算機圖形學則與計算機視覺相反,其輸入是描述性內容,輸出是圖像。
計算機視覺本質上是模式識別 是人工智慧的東西,這方面我不太了解,我更多說說圖形學。
計算機圖形的主要目的是用計算機生成具有三維真實感的畫面,應用舉例來說比如皮克斯的三維動畫。
圖形學要解決的問題主要包括,建模,渲染,以及某些物理模擬。 建模就是用曲面生成現實世界物體的模型,比如三角面片或者四邊形網格,或者是用粒子來模擬流水火焰。
渲染是對模型和場景上色的過程,這也是最耗時的一個步奏,基本上渲染可以分為物理真實的(physically based)和NPR(非照片級真實的)兩類,physically based 渲染往往需要大量時間,演算法有 path tracing; radiosity等等。本質上都是Monte-carlo方法和有限元法在計算機領域的應用。 而遊戲里的渲染基本上做不到physically-based 往往是接近這個效果,遊戲里的渲染很多採用基於屏幕空間的延遲渲染來實現。
物理模擬也有很多方面,最複雜的當然是流體的模擬,比如火焰,爆炸等等
贊 @孫佳明 圖片非常準確概括哈。
可以從三個方向的終極目標來理解:
Computer Vision 的終極目標是模仿人眼和大腦對看到的真實事物的理解,關鍵詞是「真實」和「理解」,如人臉識別;
Computer Graphics 的終極目標是創造非真實的視覺感知,關鍵詞是「非真實」和「創造」,如3D特效;
Image Processing 的終極目標是圖像轉換,像素級的處理,關鍵就是圖像與圖像的轉換。
感覺大神們回答的很高端,但是我覺得都太複雜了。簡單的說圖形學與圖像處理互為逆過程。圖形學是利用計算機生成圖像,這是得依靠演算法實現的。例如樣條曲線等等。圖像處理則是將外部攝入的圖像進行處理,對圖像進行增強.分析.通信等操作。
其實呢,只要知道圖形與圖像的區別,這些概念還是很簡單的。
CG和CV的最大區別:CG是模型到圖像,CV是圖像到模型
計算機圖形學和數字圖像處理是比較老的技術。計算機視覺要遲幾十年才提出。
計算機圖形學和數字圖像處理的區別在於圖形和圖像。
圖形是矢量的、純數字式的。圖像常常由來自現實世界的信號產生,有時也包括圖形。
而圖像和圖形都是數據的簡單堆積,計算機視覺要從圖像中整理出一些信息或統計數據,也就是說要對計算機圖像作進一步的分析。
以上是它們的區別,下面來說聯繫:
計算機圖形學的研究成果可以用於產生數字圖像處理所需要的素材,計算機視覺需要以數字圖像處理作為基礎。計算機視覺與數字圖像處理的這種關係類似於物理學和數學的關係。
————
拋磚啦,等更好的完整答案。
CG:腦袋裡有個東西,我沒見過,我用計算機點線,加點顏色,紋理,把我腦袋裡的東西表現出來。恩,這樣。
CV:腦袋裡有個東西,顯示里也有個東西,我搞一搞,用計算機看看這現實里的東西是不是就是我腦袋裡想的。
圖像:現實里有的,我照下來了,但是感覺我想要拍的那個不明顯,我搞一搞,用計算機處理一下,別人一看就知道我想拍的是表達的什麼。通俗易懂的說法
Computer Vision 關係於 AI (Artificial Intelligence)
Computer Graphics 涉及於 交互 繪製 等 例如 幾何圖形的輸入和存儲 虛擬現實技術 動畫技術 這就是我們常說的CG
Digital Image Processing 涉及於信號處理 圖像的降噪 壓縮 等
簡直吐血,好像計算機圖形學就是搞渲染。
計算機是為了「計算「的,「顯示「只是副產品。
圖形學的核心是幾何,幾千年來如此。
至於渲染火過那麼一陣,只是圖形學為了將就一下落後的二維顯示器。
翻翻siggraph近年的paper,還有幾個搞渲染的。
推薦閱讀:
※裝滿的硬碟中是 1 多還 0 多?
※Windows API 編程還能走多遠,長遠的考慮學習它的價值能有多大?
※物理系學生如何學習人工智慧?
※計算機科學與技術專業的學生要怎樣做才能避免成為 一個低級的碼農?
※想要完全掌握金融工程需要哪些學科的哪些教材?