電腦圖像

出自維基百科,自由嘅百科全書
Jump to navigation Jump to search
Blender 軟件整嘅一個立體模型;個模型係一隻黑猩猩塊面。
猶他茶壺(Utah teapot);呢個立體模型喺電腦圖像學當中成日俾人攞嚟做例子。
一幅用電腦畫、有三條軸嘅立體坐標圖;幅圖將一啲數據呈現出嚟,等研究者唔使齋靠睇啲數字,亦都方便佢哋發表研究結果俾人睇。

電腦圖像粵拼din6 nou5 tou4 zoeng6英文computer graphics / computer-generated imagery,簡稱「CG」或者「CGI」)係指用電腦整嘅圖像或者影片。呢啲噉嘅圖像有好多各式各樣嘅用途,例如係用嚟整等嘅藝術作品、用嚟處理由現實世界嗰度探測到嘅影像、又或者喺科研上將一啲理論所模擬嘅現象呈現出嚟[1][2]。整電腦圖像大致上涉及以下嘅工作[3][4]

  1. 如果係二維(2D)嘅圖像,噉部電腦要以某啲方式記住幅圖,通常嘅做法係,幅圖嘅每一點都有一柞數字俾部電腦記住,而柞數字就代表咗嗰點「乜嘢色」同埋「有幾光」等嘅資訊;
  2. 如果係三維嘅模型(3D model),噉部電腦要以某啲方式記住個模型嘅樣,例如個模型每隻角都有柞數字俾部電腦記住,數字表達佢個坐標位置,然後每兩隻角之間有數字表達佢哋之間「有冇表面」同埋「塊表面乜嘢色」等嘅資訊;
  3. 幾何變換(geometric transformation)喺整電腦動畫嗰陣會用到:部電腦會用一啲算式計出幅圖像或者個立體模型要點郁,達到某啲視覺效果。例:假想幅圖喺熒光幕中心點,佢會有個坐標值,然後下一刻部電腦將幅圖嘅 X 坐標值(打橫坐標值)加 40 個像素-就會令到幅圖向右手邊跳 40 像素(喺實際應用上,通常 X 坐標值愈右愈大)[5]:Ch. 4

電腦圖像呢家嘢係喺 1960 年嗰時由美國圖像設計師威廉·費他(William Fetter)同佢嘅同事搞起嘅[6]。及後電腦圖像大幅度噉改革咗好多行業,好似係電子遊戲產業呢個大行業,就係因為有電腦圖像先至搞得成嘅,而拍戲圖像設計等嘅領域亦都因為電腦圖像嘅技術而多咗好多花款。到咗廿一世紀,電腦圖像學經已係電腦科學上相當有影響力嘅一個子領域,大學同技術學院嘅電腦科學相關課程基本上實會教電腦圖像嘅相關知識,而且科技界仲出咗好多專化嘅硬件同軟件幫手整電腦圖像[1][3]

概論[編輯]

定義[編輯]

最廣義嚟講,「電腦圖像」呢個詞可以包嗮所有「用電腦整出嚟但係又唔係字或者聲嘅嘢」[1],多數包括咗以下呢幾樣:

  • 用電腦呈現同埋操作嘅影像;
  • 用嚟整同操作影像嘅電腦技術;
  • 電腦圖像學,專門研究點樣用數碼方式合成同操控視像訊息嘅電腦科學子領域。

到咗廿一世紀,第一同第二意義上嘅電腦圖像周圍都係,喺電視報紙天氣報告、各種嘅大眾媒體、同埋醫療上嘅程序都會用到,而喺科研上一幅整得靚嘅電腦圖像可以用嚟清楚噉表達啲數據,令到啲數據更加容易明同詮釋,而且又可以用嚟將研究緊嘅現象以視覺型式呈現出嚟[5][7]。因為電腦圖像噉有經濟價值,社會對識整電腦圖像嘅人才嘅需求開始提升,而電腦圖像學亦都變成咗電腦科學一個好緊要嘅子領域。喺廿一世紀頭,電腦圖像學嘅發展仲勁到開始有咗一啲子領域,好似係科學視覺化(scientific visualization)噉,就專門研究點樣有效同準確噉用電腦圖像模擬現實世界嘅現象,例如係建築物天氣、同人體呢啲嘢嘅影像化[8]

基本演算法[編輯]

顯示電腦圖像嘅過程大致上可以想像成噉嘅演算法[1][3]

  1. 設定背景嘅影像;
  2. 計算下一刻嘅影像大致上係點嘅,包括「嗰一刻每件物件喺乜嘢位置」、「光源喺邊」、「鏡頭喺邊」呀噉;
  3. 基於步驟 2 所得嘅資訊,計算喺下一刻,畫面嘅每一點應該係乜嘢色水;
  4. 將步驟 3 嘅計算結果傳去個熒光幕嗰度,等個熒光幕將個影像顯示俾個用家睇;
  5. 返去步驟 2,直至用家叫部電腦停手為止。

好似係以下呢段簡單嘅 Processing 源碼噉(Processing 係一種專門用嚟整電腦圖像嘅程式語言[9]

float y = 100; // 設 y 呢個變數值做 100。
 
void setup() { // 喺 processing 當中,setup(){} 包括嘅碼淨係會喺個程式開始嗰陣 run 一次。呢個係步驟 1。
  size(640, 360);  // 設定幅圖嘅大細做 640 x 360 粒像素。
  stroke(255);     // 設筆觸做白色(255 代表白色)。
  
  y = height * 0.5; // 設 y 做幅圖嘅高度嘅一半。
}

void draw() { // 喺 processing 當中,draw(){} 包括嘅碼會係噉重複 run 直到個程式結束為止。呢個係步驟 2。
  background(0);   // 將背景設做黑色(0 代表黑色),呢個黑色背景會遮嗮一切之前畫落嘅嘢。
  line(0, y, width, y);  // 喺 (0,y) 同 (width,y) 呢兩點之間畫一條線,線嘅色水同筆觸嘅一樣。
  
  y = y - 1; // 將 y 嘅數值下降 1。
  if (y < 0) { 
    y = height; 
  } // 如果 y 跌到變咗做負數,將佢設做等如幅圖嘅高度。
  // 步驟 3 同 4 喺 processing 當中被省略咗。
} 
// 以上嘅碼會造出一幅背景係黑色嘅圖,背景上有一條白色嘅橫線,而且條橫線仲會一路向上郁,去到最上之後返去最落嘅地方。

基本概念[編輯]

一幅電腦圖像近睇嘅話就會睇得出係由好多點點所組成嘅。
內文: 電腦圖像學

電腦圖像學(英文都係叫「computer graphics」)係電腦科學嘅一門子領域,專門研究點樣用數碼方法合成同操控啲視覺訊息。雖然啲人好多時一講電腦圖像就會諗起立體(3D)嘅圖像,但係呢門學問查實包括埋研究用數碼方法整同處理平面(2D)嘅圖像,包括咗地圖、同工程用嘅草圖呀噉[8]。佢係一門科學領域,所以電腦圖像學主要集中於研究圖像處理喺數學同電腦運算上嘅基礎-主修電腦圖像學嘅電腦科學家主要研究「啲畫圖軟件要點樣整先會出到好嘅圖」或者「某某圖像可以用啲乜嘢數學方程式嚟模擬」等嘅課題,而唔會太深入噉探討美學上嘅問題[10]

像素[編輯]

內文: 像素

像素(pixel)係指一幅點陣圖上面嘅一個點[11]。對於一部電腦嚟講,佢所顯示嘅圖像每一幅都係由一大柞像素所組成嘅,每一粒像素都淨係得一隻色水-而隻色水係由唔同濃度嘅紅、綠、藍結合形成,從而一齊組成一幅圖。舉個例說明,喺將一幅圖存入去佢嘅記憶體嗰陣,部電腦會記住「第一粒像素係幾多紅幾多綠幾多藍」、「第二粒像素係幾多紅幾多綠幾多藍」... 等等,令到佢可以記住幅圖嘅樣。廿一世紀嘅電腦經已先進到幅幅圖都閒閒地都有過 100,000 粒像素,用佢哋整嘅圖像就噉用肉眼睇好似冇點點噉,但係無論一幅電腦圖像幾精細都好,如果靠得夠近,係可以睇到佢由一點點組成嘅。

圖元[編輯]

一個環面模型;呢個模型變吓形就可以攞嚟做(例如)冬甩或者蘋果嘅模型。
內文: 圖元

圖元(primitive)係圖像系統嘅基本單位,可以用嚟砌埋一齊組成複雜啲嘅影像或者模型(無論立體定平面都係)。舉個例子說明,一個環面嘅立體模型可以變少少色水嚟做一個冬甩嘅立體模型,又或者撳扁佢再喺佢中間擺一個球體嘅模型,組合埋一齊做土星嘅立體模型。其他例子包括咗 2D 遊戲當中常用嘅精靈圖(sprite)或者 3D 影像處理當中嘅多邊形網格(polygon mesh)。用圖元嘅好處係,有咗佢哋,啲圖像設計者就有得喺整複雜啲嘅圖像嗰陣時指明「要用邊個邊個圖元同埋要點將個圖元變形」,唔使吓吓都由頭畫過。

三維模型[編輯]

內文: 三維模型

三維模型(3D model),或者叫「3D 模型」,係指一個(對於部電腦嚟講)用數字呈現嘅三維物體[12]。3D 模型可以用自動或者手動嘅方法整:有研究者會用一啲架生掃描一件真實嘅物件,再將啲數據傳去部電腦嗰度等佢計算出個 3D 模型嘅樣,例如感應器可以射啲波動出嚟,喺每一點嗰度量度吓啲波動射出去嘅時間同返到個感應器度嘅時間之間差幾遠,噉就可以知道喺每個點度件物件嘅表面離個感應器幾遠,跟手將呢個數據傳過去部電腦,就係有關件物件嘅形狀嘅數據;另一方面,研究者又有得手動噉整啲 3D 模型出嚟。舉個簡單嘅例子說明,以下呢段 VRML 源碼代表咗一個喺一條好幼嘅圓柱上面嘅球體(即係好似珍寶珠噉嘅形狀):

Shape {     // 整一件物體出嚟。
   geometry Cylinder {    // 設佢形狀係「圓柱體」。
      radius 0.1
      height 3.0}    // 碌圓柱嘅高度係 3.0 個單位,但係半徑得嗰 0.1 個單位-係一碌好幼嘅圓柱。
   appearance Appearance {
      material Material { diffuseColor 0.1 0.1 0.9 }     // 設佢色水係藍色。
   }
}

Transform {     // 整一件新物體
   translation 0 2.5 0     // 將佢移去第一件物體 2.5 單位噉高嘅高度。
   children [
      Shape {
         geometry Sphere { radius 1 }     // 設佢形狀係「球體」,半徑係 1 個單位。
         appearance Appearance {
            material Material { diffuseColor 1 0 0 }     // 設佢色水係紅色。
         }
      }
     ]
}
一個海豚噉形嘅多邊形網格

呢段碼係一個簡單嘅例子,一啲複雜啲嘅模型-好似係人形嘅模型-閒閒地可以有成幾千行呢啲噉嘅碼。多邊形網格係常用嘅 3D 模型,呢啲模型會用類似上面嗰段碼噉嘅程式語言話俾部電腦聽個模型有幾多個角、每個角同角之間有冇表面、同埋嗰啲表面係乜嘢色水呀噉,等部電腦能夠計出個模型由邊個邊個角度睇會係乜嘢樣嘅。

3D 電腦圖像可以話等如係 3D 模型嘅處理,3D 圖像基本上實要經過彩現再顯示喺電腦螢光幕上面俾個用家睇嘅,所以除非係做虛擬實境或者 3D 打印,3D 模型好大程度上衹係以數據嘅型式存在喺部電腦嘅記憶入面。

研究者能夠由 3D 模型嗰度整啲 2D 嘅圖像出嚟,呢個過程叫彩現。

彩現[編輯]

內文: 彩現

彩現(rendering)係指運用電腦程式由 3D 模型嗰度整一幅 2D 影像嘅過程[13][14]。整電腦圖像嘅人會首先整一個景檔案(scene file)出嚟,呢個檔案會包含咗多種訊息,包括係「個景入面用咗啲乜嘢 3D 模型」、「每個 3D 模型喺邊個位置」、「光源喺邊」、同埋「個鏡頭擺喺邊個位置」呀噉。部電腦跟手就會將呢啲訊息結合,用彩現程式處理吓-做一大柞人手做唔嚟嘅運算,計出個鏡頭會睇到嘅影像應該係點嘅樣嘅,並且將個鏡頭所睇到嘅影像俾出嚟做輸出。個彩現程式通常都係內置咗喺個電腦圖像軟件入面嘅,而且好多時會有啲特殊功能嚟做一啲特殊效果。彩現嘅過程涉及好多種演算法

掃描線彩現[編輯]

內文: 掃描線彩現

掃描線彩現(scanline rendering)係最常用嘅彩現演算法之一。是但揾一幅電腦圖像,佢都係由一大柞(好多時數以百萬粒)像素組成嘅。掃描線係指一行像素,掃描線演算法會每粒像素睇一次,並且按照個鏡頭嘅位置、啲 3D 模型嘅位置、以及光源嘅位置同角度等嘅訊息嚟計出嗰粒像素應該顯示啲乜嘢色水。如是者,經過幾百萬次計算,部電腦就可以計出幅圖應該係乜嘢樣嘅[15][16]。喺現代嘅電腦當中,呢啲運算快得好交關-唔使幾秒部電腦經已俾到幅圖出嚟。

主要類別[編輯]

2D 電腦圖像[編輯]

坦克遊戲平面圖像。喺純 2D 嘅電腦圖像當中,每幅圖由多幅細啲嘅 2D 圖像砌出嚟嘅。
內文: 二維電腦圖像

2D 電腦圖像係指用電腦整嘅一啲 2D 嘅圖同埋整佢哋嘅相關技巧。呢啲圖像可以由 3D 模型嘅彩現嗰度整出嚟嘅,又或者可以係用第啲 2D 嘅圖像砌出嚟嘅。呢啲圖像主要用嚟做傳統嘅打印或者畫。喺呢啲應用當中,嗰幅二維圖像唔淨衹係呈現緊一件物體,而係俾部電腦當做一件獨立嘅物體,有佢獨有嘅意涵。

像素畫[編輯]

內文: 像素畫

像素畫(pixel art)係一種數碼藝術,指用點陣圖軟件逐粒逐粒像素噉嚟畫嘅圖像[17]。畫畫嗰個人會逐粒逐粒像素話俾部電腦聽嗰粒像素係乜嘢色水,最後整出一幅圖像,例子有小畫家。呢種方法做得好慢,所以家吓好少人會用,得一啲舊嘅電腦同舊嘅電子遊戲會用呢種方法整 2D 圖像。

精靈圖[編輯]

內文: 精靈圖
精靈圖動畫示範

精靈圖(sprite)係指一啲用嚟結合埋一齊並且產生一部大嘅景嘅 2D 圖像。例如係喺 2D 嘅超級瑪利奧(Super Mario)遊戲入面,個遊戲嘅程式會包括個主角嘅精靈圖同埋啲怪獸嘅精靈圖,而個主角瑪利奧嘅精靈圖又會包含咗(例如)佢企喺度嗰陣嘅樣、佢行路嗰陣嘅樣、同埋佢跳嗰陣嘅樣等等。喺每一個時間點,個程式都會按照「個主角同每隻怪獸喺邊個位置同埋喺度做緊乜」呢樣訊息揀應該用邊幾幅精靈圖,並且將呢啲精靈圖同個背景合拼埋一齊做一個畫面[18]

精靈圖喺廿世紀嘅電子遊戲嗰度極之常見,香港出嘅小朋友齊打交(Little Fighter)系列都係用精靈圖嚟代表佢啲人物嘅。但係喺廿一世紀,電子遊戲產業變成以 3D 模型做主導,會用精靈圖嘅遊戲已經買少見少,多數都係喺一啲運算能力冇噉勁嘅平台上面出嘅遊戲嗰度先會見到,好似係手機遊戲噉。

向量圖像[編輯]

分別用點陣圖同向量圖像代表同一幅圖像;喺呢個個案入面,用向量圖像整仲靚。
內文: 向量圖像

向量圖像(vector graphics)係相對於點陣圖嘅一種圖像。點陣圖會將一幅圖像以一大柞像素同埋「每粒像素係乜嘢色水」嘅方式嚟代表,多數會用嚟代表靜止嘅影像[19]。向量圖像都係用嚟代表靜止嘅影像嘅,但係佢唔係要部電腦死記「每粒像素係乜嘢色水」,而係要部電腦記住幅圖有啲乜嘢形狀同埋色水,再喺個用家要求睇幅圖嗰陣即場砌返幅圖出嚟。喺某啲情況下,用向量圖像好過用點陣圖。

3D 電腦圖像[編輯]

內文: 三維電腦圖像

3D 電腦圖像係指用電腦代表一啲三維嘅圖像。呢啲圖像會要部電腦記住三維嘅訊息,即係長度、闊度、同高度-相比之下,二維嘅圖像淨係會要部電腦記住長度同闊度嘅訊息。呢啲訊息可以攞嚟做彩現整二維嘅圖像,又可以攞去俾打印機做 3D 打印

雖然係噉,處理 3D 電腦圖像所用嘅演算法同處理 2D 圖像嘅好似,喺電腦圖像軟件入面,2D 圖像同 3D 圖像之間嘅界線有陣時幾含糊,2D 嘅應用可能會用 3D 嘅技巧嚟整某啲效果(例如係燈光),而 3D 嘅應用又會用 2D 嘅彩現技術。

電腦動畫[編輯]

內文: 電腦動畫

電腦動畫(computer animation)係一種用電腦整曉郁嘅圖像嘅藝術,係電腦圖像同動畫嘅一個子領域,多數係用 3D 模型嚟整嘅,但係有陣時啲人仲係會因為藝術風格或者低頻寬等嘅因素而用 2D 圖像整電腦動畫[20]。呢種技術廣泛噉俾人攞嚟整戲(好似係彼思動畫製作室就喺呢方面好出名)同埋電子遊戲,而當佢俾人用喺戲上面嗰陣,佢通常都會俾人稱之為「CGI」。

喺整電腦動畫嗰陣,部電腦會記住每個 3D 模型嘅各種屬性-包括佢嘅位置、方位、同埋縮放呀噉,並且將呢啲訊息儲喺件物件嘅變換矩陣裏面,而動畫就即係呢啲屬性隨住時間嘅改變[20]。要造出一幅曉郁嘅圖像有好多方法:最簡單嗰種係建基於關鍵格(keyframe)嘅逐一創造同編輯嘅-個設計者可以設一大柞關鍵格,再逐個逐個關鍵格噉編輯,要部電腦記實嗮喺每一個關鍵格當中每一個 3D 模型要喺邊個位置同埋以啲乜嘢方位擺,再做彩現,每個關鍵格整返一幅 2D 嘅圖,並且形成一串組成嗰段動畫嘅圖像;又有方法會將某啲特定嘅變化用某啲數學算式嚟模擬,例如用牛頓運動定律(Newton's laws of motion;由牛頓諗出嚟,可以用嚟模擬物體郁動嘅一啲方程式)話俾部電腦聽物件應該係點郁動嘅,等部電腦自動計出(例如)一舊物件喺受到某啲力之後會以點嘅速度飛走;跟住又有所謂嘅動作捕捉(motion capture)技術,喺呢種技術當中,啲程式員會俾個受過訓嘅人員戴住啲感應器喺身,再要佢哋做某啲動作,跟住啲感應器就會將嗰個動作嘅訊息傳返去部電腦入面,令到啲人物嘅 3D 模型跟住做同一樣嘅動作。

同傳統動畫一樣嘅係,電腦動畫都係建基於人眼嘅錯覺嘅:一段動畫由好多幅靜態嘅圖組成,而喺播段動畫俾人睇嗰陣,部電腦查實衹係將嗰啲圖逐幅逐幅按佢哋先後次序播出嚟,但係因為每幅圖像之間嘅時間間距極之短,用肉眼睇望落好似啲嘢識郁噉。

電腦動畫可以用動作捕捉嘅方法整。最右手邊嘅係身上戴住啲感應器做動作嘅人員,啲感應器會話返俾部電腦知個人員每個關節同身體部位喺邊個位,跟手部電腦會用呢啲訊息令到個 3D 人物模型嘅身體跟住嗰啲位置排。

電腦圖像軟件[編輯]

睇埋[編輯]

參考書[編輯]

  • L. Ammeraal and K. Zhang (2007). Computer Graphics for Java Programmers, Second Edition, John-Wiley & Sons, ISBN 978-0-470-03160-5.
  • David Rogers (1998). Procedural Elements for Computer Graphics. McGraw-Hill.
  • James D. Foley, Andries Van Dam, Steven K. Feiner and John F. Hughes (1995). Computer Graphics: Principles and Practice. Addison-Wesley.
  • Donald Hearn and M. Pauline Baker (1994). Computer Graphics. Prentice-Hall.
  • Francis S. Hill (2001). Computer Graphics. Prentice Hall.
  • Jeffrey J. McConnell (2006). Computer Graphics: Theory Into Practice. Jones & Bartlett Publishers.
  • R. D. Parslow, R. W. Prowse, Richard Elliot Green (1969). Computer Graphics: Techniques and Applications.
  • Pearson, M. (2011). Generative Art. Manning Publications Co.
  • Peter Shirley and others. (2005). Fundamentals of computer graphics. A.K. Peters, Ltd.
  • M. Slater, A. Steed, Y. Chrysantho (2002). Computer graphics and virtual environments: from realism to real-time. Addison-Wesley.
  • Wolfgang Höhl (2008): Interactive environments with open-source software, Springer Wien New York, ISBN 3-211-79169-8

[編輯]

  1. 1.0 1.1 1.2 1.3 What is Computer Graphics?, Cornell University Program of Computer Graphics. Last updated 04/15/98.
  2. Foley, J. D., Van, F. D., Van Dam, A., Feiner, S. K., Hughes, J. F., Hughes, J., & Angel, E. (1996). Computer graphics: principles and practice (Vol. 12110). Addison-Wesley Professional.
  3. 3.0 3.1 3.2 Foley, J. D., & Van Dam, A. (1982). Fundamentals of interactive computer graphics (Vol. 2). Reading, MA: Addison-Wesley.
  4. Marschner, S., & Shirley, P. (2015). Fundamentals of computer graphics. CRC Press.
  5. 5.0 5.1 Schneider, P., & Eberly, D. H. (2002). Geometric tools for computer graphics. Elsevier.
  6. Herbert W. Franke: Computergraphik Computerkunst. Bruckmann, München 1971, first published.
  7. Vidal, F. P., Bello, F., Brodlie, K. W., John, N. W., Gould, D., Phillips, R., & Avis, N. J. (2006, March). Principles and applications of computer graphics in medicine. In Computer Graphics Forum (Vol. 25, No. 1, pp. 113-137). 9600 Garsington Road, Oxford, OX4 2DQ, UK.: Blackwell Publishing Ltd.
  8. 8.0 8.1 Friendly, M., & Denis, D. J. (2001). Milestones in the history of thematic cartography, statistical graphics, and data visualization. URL http://www. datavis. ca/milestones, 32, 13.
  9. Loop. Processing.org.
  10. Marschner, S., & Shirley, P. (2015). Fundamentals of computer graphics. CRC Press.
  11. Rudolf F. Graf (1999). Modern Dictionary of Electronics. Oxford: Newnes. p. 569.
  12. Sikos, L. F. (2016). Rich Semantics for Interactive 3D Models of Cultural Artifacts. Communications in Computer and Information Science. 672.
  13. Bouknight, W. J. (1970). "A procedure for generation of three-dimensional half-tone computer graphics presentations". Communications of the ACM. 13 (9): 527–536.
  14. Phong, B-T (1975). "Illumination for computer generated pictures" (PDF). Communications of the ACM. 18 (6): 311–316.
  15. Computer Graphics: Scan Line Polygon Fill Algorithm. Own shares in HackerNoon.
  16. Scanline Fill Algorithm.
  17. Goldberg, Adele and Robert Flegal. "ACM president's letter: Pixel Art". Communications of the ACM. Vol. 25. Issue 12. Dec. 1982.
  18. Hague, James. "Why Do Dedicated Game Consoles Exist?". dadgum.com.
  19. Greenberg, Ira (2007). Processing: Creative Coding and Computational Art. Apress.
  20. 20.0 20.1 Beane, Andy (2012). 3D Animation Essentials. Indianapolis, Indiana: John Wiley & Sons.

[編輯]