Fundamentals of Computer Graphics(4th Ed)--Raster Image (計算機圖形學翻譯級筆記)

轉載請註明出處
歡迎留言、討論、指正
本文未註明出處圖片均來自 個人 或 Fundamentals of Computer Graphics(4th Ed)

Raster Image電子圖片以柵格的形式呈現給用戶,光柵由規則排列的像素點(pixel=picture element)組成,以2D數組的形式保存,每個像素值通常由RGB三色素的值組成。但經常遇到伸縮,旋轉,顏色修正,甚至運動物體表面貼圖的需求。顯示設備與圖像像素點不等,圖像光柵與設備沒有直接關係,處理圖像時將設備視爲理想設備。
Vector image使用表示方向長短的向量描述線條,線條包圍顏色,不依靠任何特定網格。這種方法存放的是“畫圖指令”而不是所需像素,故能夠無上限滿足顯示設備的分辨率,但在顯示直線仍需要光柵化。適用於高精度高分辨,且無光影要求的簡單圖像存儲。

本章主要討論光柵圖像與顯示的基礎知識,尤其需要重視標準非線性顯示(nonlinearities of standard display),以及光強和像素值的關係(在後面的章節中至關重要)。

顯示設備
透射型(transmissive displays):控制背光(backlight)的透射量
在這裏插入圖片描述
發光型(emissive displays):控制流過有機或無機半導體的電流從而控發光量
在這裏插入圖片描述在這裏插入圖片描述
顯示設備的分辨率又被稱作"原始分辨率"(native resolution,其他分辨率圖像可以通過內部轉化被顯示出來)------1920*1200像素顯示屏意味着它由1200行1920列像素點組成。

硬拷貝設備(Hardcopy Device)
使用像素密度衡量分辨率。
噴墨打印機 通過噴灑打印頭噴頭攜帶的顏料,打印出二進制 (噴or不噴)圖像,有逐行掃描和主軸旋轉等種類。打印分辨率 (dpi) 取決於墨滴大小步進距離。 由於"二進制"打印,需要較高的分辨率避免鋸齒。高分辨率可以通過變密度點 模擬半色調 (halftones)。
在這裏插入圖片描述在這裏插入圖片描述
熱轉印機則是模擬量 打印,染料紙(donor ribbon)被夾在長條形的加熱棒 和 打印紙中間,通過控制加熱棒上的微小加熱單元,分離染料紙上的燃料並熱印在打印紙上,溫度越高,上料越多,顏色越深,使得 色調連續橫向分辨率 (ppi) 取決於加熱單元的密度,縱向取決於加熱、冷卻速度紙張移動速度 之比。

輸入設備
非算法計算得到的光柵圖必來自於光柵輸入設備,如攝像機、掃描儀。設備由感光元件陣列組成。數字攝像機,分爲CMOS(complimentary metal-oxide-semiconductor,互補金屬氧化物半導體)和CCD(charge-coupled devices,電荷耦合器件)兩種。濾色鏡將場景光分散爲RGB三分量使得1組三個感光元件分別記錄RGB值,交由圖像軟件平滑鋸齒或缺失點(demosaicking)。3000列*2000行=600萬像素(MP,megapixel)相機。馬賽克傳感器如下左,Faveon式(同種硅材料不同波長穿透深度不同)如下右,因此在同像素條件下,Faveon式得到的信息更豐富(3\approx3倍)。
在這裏插入圖片描述在這裏插入圖片描述
掃描儀類似熱轉印機,分辨率 ppi 取決於\frac{採樣頻率}{採樣移動速度}

圖像,像素,和幾何
通過以上方法得到圖像,是關於位置的函數,RR2R\in R^2,灰度圖像V=R+V=R^+,彩色圖像V=R3V=R^3
I(x,y):RZI(x,y):R\to Z 圖像的每個像素值是實際圖像相應位置周圍(vicinity)小範圍內的平均值,被稱爲圖像的採樣點。歷史原因(如電視)有些API(application program Interface)是上到下正方向的。
在這裏插入圖片描述
採樣點在整數中間,注意圖像採樣到的矩形域(rectangular domain)實際範圍是R=[0.5,nx0.5]×[0.5,ny0.5]R=[-0.5,n_x-0.5]\times[-0.5,n_y-0.5],其中n-0.5由n-1+0.5得到。也有些系統將"邊"放在整數點上。
每個像素點用一個32bit-float存儲單通道或灰度圖像,彩色需要RGB三個,1000萬像素的照片會消耗10M=30M*4Byte=118MB(爲啥是118?提示magapixel的故事||滑稽~)內存。多數情況下光照強度出處在一定範圍內(現實無上限),像素值範圍設定在[0,1]=[02n,12n,...2n2n][0,1]=[\frac{0}{2^n},\frac{1}{2^n},...\frac{2^n}{2^n}],稱爲固定範圍圖像(fixed-range),若動態可調範圍較大,稱作HDR(high dynamic range)圖像,若範圍較小整數存儲稱爲LDR(low dynamic range)圖像。

減少像素位數將導致兩種典型的人爲缺陷(artifacts or artificially introduced flaws):
第一種:在fixed-range的情況下將導致 “裁剪(clipping)” ----實際值超出編碼的表示範圍,例如陽光下的白色物體,白色物體反射的太陽光會超過白色,但範圍所限只能捕捉到白色物體的“白色”,丟了“反射光”這個信息。
第二種:在有限的精度下,對像素值進行離散化“近似”到離散值上時,可能會得到==“僞像(quantization artifacts)”"色帶化(banding)"==。靜態圖像沒什麼影響,動畫中會非常明顯(個人猜測會出現重影模糊的情況)。

圖片來自wiki百科colour banding詞條

顯示器在關閉狀態時設爲“黑色(black)”,值爲0,全亮時設爲“白色(white)”,值爲1,灰色設爲0.5。
爲了正確的顯示圖像,有兩點必須注意:
1.顯示器可能時非線性顯示的(人類對色彩的感知也是非線性的,我們在第20章討論)。輸入值a=[0,0.5,1],顯示的結果卻像[0,0.25,1],使用γ\gamma來描述這種非線性:
displayedintensity=(maximumintensity)αγdisplayed intensity = (maximum intensity)\alpha^\gamma 這只是一種近似,通常並不需要非常準確的γ\gamma值。比較好的方法是找到a使得顯示亮度爲0.5(灰色),此時aγ=0.5a^\gamma=0.5γ=ln0.5lna\gamma=\frac{\ln0.5}{\ln a},調整a值直到在遠距離觀察以下左右兩圖的亮度一致(模擬顯示器在水平方向上很難[0,1,0,1…]階躍變化,採用黑白條紋相間同樣可以 )。爲糾正非線性,對原圖像素值做α=α1γ\alpha'=\alpha^\frac{1}{\gamma}的處理。

2.顯示設備的輸入是形如[0~255]的整數,但圖像是32位浮點型,意味着實際顯示設備對每個像素點的取值進行了近似。

RGB空間
多數計算機圖像基於RGB空間存儲和顯示。本章僅就用戶的視角和基礎設施進行討論,更詳細的討論將在19章進行,但掌握RGB的原理將有助於編寫大多數圖形程序。RGB的基本思想是三原色(primary–red,green,blue)的混合,三基色的像素值分佈在三個座標上,張成[0,1]3的向量空間。實際使用時多半使用[0,255]範圍的整數(8-bit)值表示,合在一起稱爲"24-bit color"。非線性矯正 同樣適用於RGB的每一個通道(分量,component)。
在這裏插入圖片描述

Alpha通道
有時圖像僅需要改變部分像素的值,比如合成背景啥的。
對於前景(foreground)中的不透明(opaque)像素點,我們直接替換背景(background)相應位置的像素值,直接疊加就可以。對於完全透明的像素點,直接將前景像素點替換爲相應背景點。對於半透明的像素點區域(如玻璃),就需要特別留心了。絕大多數情況是前景部分像素不透明,部分遮蓋(coveragy)背景。這其中最重要的信息是像素覆蓋率α\alpha,表徵了“背景被前景遮蓋的程度”或“表示前景像素值的權重”。覆蓋後合成的相應像素RGB值應當爲:color=αcfore+(1+α)cbackcolor=\alpha c_{fore}+(1+\alpha)c_{back}。表達式在不同應用場景中可能有所變化。α\alpha的值會被存儲在稱爲 “alpha掩膜(alpha mask)”“透明掩膜(transparency mask)” 的灰度數組中,作爲第四個通道(channel)存儲在RGBA圖像當中。

圖像存儲
多數RGB圖像格式每通道分配8bit,但這樣存儲空間吃緊。爲了解決這個問題,多數格式對圖像都進行了不同程度的壓縮(有損壓縮 or 無損壓縮)。

format feature
jpeg 有損,針對人類視覺感知範圍進行的壓縮,適用於自然風光圖片
tiff 無損,適用於黑白或無損8-16bitRGB壓縮
ppm 非壓縮,適用於8bitRGB圖像
png 無損,有很多開源的圖像管理軟件

我們可以使用標準庫例程讀寫相關格式圖像文件。簡單程序更在意簡易性而非效率,因此最簡單的選擇就是使用ppm格式,將內存中的圖像數組寫入外存設備,並加上一個文件頭。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章