電腦圖像學

(由電腦圖學跳轉過嚟)

電腦圖像學英文computer graphics)係研究電腦圖像嘅一個電腦科學子領域。

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

二維圖像

編輯

點陣圖

編輯
内文:點陣圖

一幅點陣圖(raster image)由若干粒像素(pixel)組成。一部電腦所顯示嘅點陣圖每一幅都係由一大柞像素所組成嘅,每一粒像素都有一個坐標記住佢喺邊個位置,並且有一隻色水,隻色水係由唔同濃度嘅紅、綠、同藍結合形成(例如紅溝藍會出紫),從而一齊組成一幅圖。舉個例說明,喺用紅綠藍色彩模式(RGB model)將一幅圖存入去佢嘅記憶體嗰陣,部電腦會記住類似

 [[207, 229, 78], [141, 159, 138], [146, 109, 81], ...]

噉嘅一系列數字,每組數字有三個數,每個最細可以係 0 最大可以係 255,第一個數代表嗰一點有幾多紅(R),第二個數代表嗰一點有幾多綠(G),而第三個數代表嗰一點有幾多藍(B),而成串嘢當中有   組「每組三個數」嘅數-  就係幅圖嘅像素;最後形成一個矩陣,令到部電腦可以記住幅圖嘅樣[2][3]

一幅點陣圖嘅解像度(resolution)係指幅圖有幾多粒像素( ),解像度愈高,幅圖就會愈精細,但同時亦都需要嘥更多嘅記憶體嚟保存。廿一世紀嘅電腦經已先進到幅幅圖像都閒閒地都有過 1,000,000 粒像素,用佢哋整嘅圖像就噉用肉眼睇望落好似冇點點噉,但係無論一幅電腦圖像幾精細都好,如果靠得夠近,係可以睇到佢由一點點組成嘅[2][4]

 
一幅點陣圖近睇嘅話就會睇得出係由好多點點所組成嘅。

向量圖像

編輯
内文:向量圖像

向量圖像(vector graphics)係相對於點陣圖嘅一種圖像記憶法。點陣圖嘅做法將一幅圖像以一大柞像素同埋「每粒像素係乜嘢色水」嘅方式嚟代表,並且要部電腦死記住每粒像素嘅色水數值。相比之下,向量圖像用嘅係一種冇咁靠死記嘅做法:喺向量圖像當中,部電腦會記住幅圖有啲乜嘢形狀同每個形狀喺乜嘢位置(每種形狀都可以用一條數學式表達;睇幾何學),仲有係幅圖每一忽係乜嘢色水,當個用家想睇幅圖像嗰時,部電腦再用呢啲資訊即場砌返幅圖出嚟。例:部電腦記住一幅向量圖像當中背景係白色,有一個紅色嘅圓形,圓形直徑係幾多幾多,圓心坐標喺邊(唔使好似點陣圖噉死記一大柞數字),然後當個用家叫部電腦顯示幅圖像嗰時,部電腦就即刻按照佢所知嘅呢啲資訊即刻砌返幅圖出嚟。喺某啲情況下,向量圖像儲起上嚟比較慳記憶體,而且無論放幾大,幅圖都唔會起格[5][6]

記住啲顏色

編輯

電腦圖像學界有研究唔同嘅方法嚟向部電腦表示一點嘅顏色。頭先提到嘅紅綠藍色彩模式(Red Green Blue)係最常用嘅,幅圖每點用三個由 0 到 255 嘅數嚟表達嗰點有幾多紅幾多綠同幾多藍,但電腦圖像學界仲有第啲方法嚟向部電腦表示一點嘅顏色,例如 HSV 色彩模式(HSV model)噉,都係用三個數字代表一點嘅顏色,不過三個數字代表嘅唔係紅綠藍嘅濃度,而係代表色相Hue;基本顏色屬性)、飽和度Saturation;色彩純度)、同光度Value;色彩光度)。有電腦圖像學方面嘅學者指出,一般人類思考一隻顏色嗰陣都係傾向諗「呢隻係乜嘢色」(色相),而唔係諗「呢隻係幾多紅幾多綠幾多藍」,所以 HSV 色彩模式比較合乎直覺,對唔係專業做圖像嘢嘅人嚟講比較易用[7]

 
坦克遊戲當中嘅平面圖像。喺二維電腦圖像當中,每幅圖都係由多幅細啲嘅二維圖像砌出嚟嘅,嗰兩架坦克喺個遊戲程式入面都有各自嘅精靈圖。

精靈圖

編輯
内文:精靈圖

精靈圖(sprite)係指一啲用嚟結合埋一齊,並且產生一部大嘅景嘅二維圖像。例如係喺一隻二維嘅超級瑪利奧(Super Mario)電子遊戲入面,個遊戲嘅程式會內含主角嘅精靈圖同埋啲怪獸嘅精靈圖,而個主角瑪利奧嘅精靈圖又會包含咗(例如)佢企喺度嗰陣嘅樣、佢行路嗰陣嘅樣、同埋佢跳嗰陣嘅樣等等。喺每一個時間點,個程式都會

  1. 接收玩家俾嘅輸入(例:如果玩家撳咗個「跳」掣,就將遊戲主角向上移動),
  2. 按照「個主角同每隻怪獸喺邊個位置,喺度做緊乜」呢樣資訊,揀應該用邊幾幅精靈圖,並且
  3. 按照每件物件嘅位置(可以睇埋物件導向程式編寫),將呢啲精靈圖同個背景合拼埋一齊,最後形成一個畫面[8][9][10]

精靈圖喺廿世紀嘅電子遊戲當中極之常見,好似係超任時代嘅遊戲多數都係用精靈圖嚟代表隻遊戲啲人物嘅。但由廿一世紀開始,電子遊戲產業變成以三維圖像做主導,會用精靈圖嘅遊戲已經買少見少,多數都係喺一啲運算能力冇咁勁嘅平台上面出嘅遊戲嗰度先會見到,好似係手機遊戲[8]

 
一隻遊戲入面某個角色嘅精靈圖;遊戲程式入面儲住咗描繪個角色企喺度、行緊、跳緊... 等嘅樣嘅精靈圖。

三維圖像

編輯
 
一個旋轉緊嘅三維模型;個模型由好多個細少嘅簡單立體物件(立方體錐體等等)組成。

三維電腦圖像(3D computer graphics)會要部電腦記住一啲三維嘅圖像。呢啲圖像會要求部電腦記住三維嘅資訊,即係長度、闊度、同高度-相比之下,二維嘅圖像淨係使部電腦記住一幅圖像長度同闊度。三維電腦圖像嘅處理會用到一啲二維圖像會用嘅技術(例如記顏色嘅方法),但又會涉及一啲二維圖像唔需要嘅技術,例如係彩現(睇下面)噉。

三維模型

編輯
内文:三維模型

三維模型(3D model),或者叫「立體模型」,係指一個(對於部電腦嚟講)用數字呈現嘅三維物體。三維模型可以用自動或者手動嘅方法整:有研究者會用一啲架生掃描一件真實嘅物件,再將啲數據傳去部電腦嗰度,等部電腦計算出個三維模型嘅樣,例如個掃描器嘅感應器可以射啲出嚟,喺每一點嗰度量度吓「啲波射出去嘅時間」同「返到個感應器度嘅時間」之間差幾遠,噉就可以知道喺每個點度件物件嘅表面離個感應器幾遠,跟手將呢個數據傳過去部電腦,就係有關件物件嘅形狀嘅數據;另一方面,研究者又有得手動噉整啲 3D 模型出嚟。

舉個簡單例子說明,以下呢段 VRML 原始碼(VRML 係一種廿世紀常用嘅程式語言,專門用嚟整立體模型)代表咗一個喺一條好幼嘅藍色圓柱上面嘅紅色球體(即係好似珍寶珠噉嘅形狀)[11]

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 }     // 設佢色水係紅色。
         }
      }
     ]
}

呢段碼係一個簡單嘅例子,一啲複雜啲嘅模型-好似係一個人類角色嘅立體模型-閒閒地可以有成幾千幾萬行呢啲噉嘅碼[12]

線框模型

編輯
内文:線框模型

線框模型(wire-frame model)係三維模型嘅一種。呢啲模型會用類似上面嗰段 VRML 碼噉嘅源碼,話俾部電腦聽件物體有邊啲(edge),每條連接住兩個喺數學上連續嘅平滑表面,又或者俾部電腦知件物體有邊啲頂點(vertex)同每隻角嘅位置坐標以及邊啲角之間有邊,再俾部電腦喺要睇個模型嗰陣按某啲法則(例如「所有邊都係直線」)做彩現,砌個模型俾個用家睇。線框模型淨係考慮角同邊,唔似得多邊形網格噉會講埋表面嘅色水同光源等嘅資訊,所以一旦一個線框模型做咗彩現,望落會好似用鐵線幫件物體整咗個模型噉。如果喺個線框模型上加色水同光源等嘅資訊,就會變成一個完整嘅多邊形網格(睇下面)[13]。即係好似噉:

 

一個線框模型例子:

每隻角嘅坐標
X Y Z
1 1 1 1
2 1 -1 1
3 -1 -1 1
4 -1 1 1
5 1 1 -1
6 1 -1 -1
7 -1 -1 -1
8 -1 1 -1
個模型有邊幾條邊
起始角 終結角
1 1 2
2 2 3
3 3 4
4 4 1
5 5 6
6 6 7
7 7 8
8 8 5
9 1 5
10 2 6
11 3 7
12 4 8

多邊形網格

編輯

多邊形網格(polygon mesh)係完整過-即係更加接近出得街嘅完成品-線框模型嘅三維模型。呢啲模型又係會用類似上面嗰段 VRML 碼噉嘅語言,話俾部電腦聽個模型有幾多個(vertex)、每隻角嘅位置坐標、每兩個角之間有冇邊(edge)、同埋(更加重要嘅係)塊表面係乜嘢色水呀噉。而當個用家要睇個三維模型嗰陣,部電腦就會即場砌返個模型出嚟,再考慮個用家由乜嘢角度睇緊個模型,計出最後個平面影像應該係點嘅樣(彩現)。廿一世紀開始嘅電腦運算能力勁到可以俾個用家即場改變觀察角度,即刻以肉眼睇唔到嘅速度計出由呢個新角度睇個模型會係乜樣,等個用家可以自由噉睇個模型嘅唔同面[14]

好似係以下呢個立方體嘅立體模型噉:

 

上面幅圖嘅意思係:部電腦記住咗一串數字,代表每隻角嘅坐標位置(vertex list;  代表第   隻角),跟住另一串數字記住每條邊喺邊兩隻角之間(edge list;  代表第   條邊),最後再有一串數字記住邊啲邊之間有表面(face list;  代表第   塊面)。當要用個模型嗰陣,部電腦就會睇吓個用家由乜嘢角度睇緊個模型,計出個模型由嗰個角度睇應該係點嘅樣嘅[14]

材質貼圖

編輯
内文:材質貼圖

材質貼圖(texture mapping)指嘅係,個圖像處理程式要加一啲仔細位、色水、或者表面材質落一個立體模型嗰度。個電腦圖像設計師喺整好咗一個立體模型之後,好多時會想個模型表面唔淨係只係得純色,而係想個模型望落似真實嘅物體,而真實嘅物體嘅表面好少可真係純色嘅,所以佢哋就會想加啲材質(texture)落個模型嗰度,令到個模型表面好似用(例如)木頭造嘅噉;佢要搵一幅二維嘅圖像返嚟,幅圖像望落似佢想要嗰款材質,然後再教部電腦將幅材質圖貼落去個模型嘅表面嗰度[15];成個過程可以想像成將一張有圖案嘅紙包落去一件立體物件嗰度噉[16]

 
材質貼圖嘅圖解;一個立體模型每個表面都有特定嘅材質。
  1. Lehmann, A. S. (2012). Taking the Lid off the Utah Teapot Towards a Material Analysis of Computer Graphics. Zeitschrift für Medien-und Kulturforschung, 2012(1), 169-184.
  2. 2.0 2.1 Rudolf F. Graf (1999). Modern Dictionary of Electronics. Oxford: Newnes. p. 569.
  3. Noll, A. Michael (March 1971). "Scanned-Display Computer Graphics". Communications of the ACM. 14 (3): 143–150.
  4. Goldberg, Adele and Robert Flegal. "ACM president's letter: Pixel Art". Communications of the ACM. Vol. 25. Issue 12. Dec. 1982.
  5. Greenberg, Ira (2007). Processing: Creative Coding and Computational Art. Apress.
  6. Amy Arntson (2011). Graphic Design Basics (6th ed.). Cengage Learning. p. 194.
  7. Toby Berk; Arie Kaufman; Lee Brownston (August 1982). "A human factors study of color notation systems for computer graphics". Communications of the ACM. 25 (8): 547–550.
  8. 8.0 8.1 Hague, James. "Why Do Dedicated Game Consoles Exist? 互聯網檔案館歸檔,歸檔日期2018年4月23號,.". dadgum.com.
  9. Schaul, T. (2013, August). A video game description language for model-based or interactive learning. In 2013 IEEE Conference on Computational Inteligence in Games (CIG) (pp. 1-8). IEEE.
  10. Khalifa, A., Green, M. C., Perez-Liebana, D., & Togelius, J. (2017, August). General video game rule generation. In 2017 IEEE Conference on Computational Intelligence and Games (CIG) (pp. 170-177). IEEE.
  11. Sikos, L. F. (2016). Rich Semantics for Interactive 3D Models of Cultural Artifacts. Communications in Computer and Information Science. 672.
  12. VRML Annotated Reference 互聯網檔案館歸檔,歸檔日期2007年1月9號,..
  13. Zhengxu, Z., Ghosh, S. K., & Link, D. (1990). Recognition of machined surfaces for manufacturing based on wireframe models. Journal of Materials Processing Technology, 24, 137-145.
  14. 14.0 14.1 Bruce Baumgart, Winged-Edge Polyhedron Representation for Computer Vision. National Computer Conference, May 1975.
  15. Blythe, David. Advanced Graphics Programming Techniques Using OpenGL. Siggraph 1999.
  16. Wang, Huamin. "Texture Mapping 互聯網檔案館歸檔,歸檔日期2019年7月11號,." (PDF). department of Computer Science and Engineering.