電腦圖像學
電腦圖像學(英文:computer graphics)係研究電腦圖像嘅一個電腦科學子領域。
二維圖像
[編輯]點陣圖
[編輯]一幅點陣圖(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)電子遊戲入面,個遊戲嘅程式會內含主角嘅精靈圖同埋啲怪獸嘅精靈圖,而個主角瑪利奧嘅精靈圖又會包含咗(例如)佢企喺度嗰陣嘅樣、佢行路嗰陣嘅樣、同埋佢跳嗰陣嘅樣等等。喺每一個時間點,個程式都會
- 接收玩家俾嘅輸入(例:如果玩家撳咗個「跳」掣,就將遊戲主角向上移動),
- 按照「個主角同每隻怪獸喺邊個位置,喺度做緊乜」呢樣資訊,揀應該用邊幾幅精靈圖,並且
- 按照每件物件嘅位置(可以睇埋物件導向程式編寫),將呢啲精靈圖同個背景合拼埋一齊,最後形成一個畫面[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]。
攷
[編輯]- ↑ 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.0 2.1 Rudolf F. Graf (1999). Modern Dictionary of Electronics. Oxford: Newnes. p. 569.
- ↑ Noll, A. Michael (March 1971). "Scanned-Display Computer Graphics". Communications of the ACM. 14 (3): 143–150.
- ↑ Goldberg, Adele and Robert Flegal. "ACM president's letter: Pixel Art". Communications of the ACM. Vol. 25. Issue 12. Dec. 1982.
- ↑ Greenberg, Ira (2007). Processing: Creative Coding and Computational Art. Apress.
- ↑ Amy Arntson (2011). Graphic Design Basics (6th ed.). Cengage Learning. p. 194.
- ↑ 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.0 8.1 Hague, James. "Why Do Dedicated Game Consoles Exist? 互聯網檔案館嘅歸檔,歸檔日期2018年4月23號,.". dadgum.com.
- ↑ 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.
- ↑ 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.
- ↑ Sikos, L. F. (2016). Rich Semantics for Interactive 3D Models of Cultural Artifacts. Communications in Computer and Information Science. 672.
- ↑ VRML Annotated Reference 互聯網檔案館嘅歸檔,歸檔日期2007年1月9號,..
- ↑ 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.0 14.1 Bruce Baumgart, Winged-Edge Polyhedron Representation for Computer Vision. National Computer Conference, May 1975.
- ↑ Blythe, David. Advanced Graphics Programming Techniques Using OpenGL. Siggraph 1999.
- ↑ Wang, Huamin. "Texture Mapping 互聯網檔案館嘅歸檔,歸檔日期2019年7月11號,." (PDF). department of Computer Science and Engineering.