Note
這是對MIT Foundation of 3D Computer Graphics第17章的翻譯,本章講解了常量重建和雙線性重建兩種重建算法的基礎(chǔ)知識钳枕。本書內(nèi)容仍在不斷的學(xué)習(xí)中赏壹,因此本文內(nèi)容會不斷的改進(jìn)蝌借。若有任何建議,請不吝賜教ninetymiles@icloud.com自晰。
注:文章中相關(guān)內(nèi)容歸原作者所有酬荞,翻譯內(nèi)容僅供學(xué)習(xí)參考瞧哟。
另:Github項目CGLearning中擁有相關(guān)翻譯的完整資料绢涡、內(nèi)容整理雄可、課程項目實現(xiàn)。
已經(jīng)完成的章節(jié)
- 第一章
- 第二章
- 第三章
- 第四章
- 第五章
- 第六章
- 第七章
- 第八章
- 第九章
- 第十章
- 第十一章
- 第十二章
- 第十三章
- 第十四章
- 第十五章
- 第十六章
- 第十七章
- 第十八章
- 第十九章
- 第二十章
- 第二十一章
- 第二十二章
- 第二十三章
- 附錄B-仿射函數(shù)基礎(chǔ)
重建(Reconstruction)
現(xiàn)在讓我們關(guān)注對立問題:假定一個具體圖像,我們怎樣生成一個連續(xù)圖像
虐急?正如我們將會看到的,這個問題對于圖像尺寸調(diào)整以及紋理映射是中心問題被辑。例如盼理,在碎片著色器中俄删,我們可能希望借助落入(兩個)紋理像素之間的紋理坐標(biāo)從紋理中獲取色彩畴椰。在這種情形中,我們需要決定使用什么紋理色彩抓艳。這個處理被稱為重建壶硅。
17.1 常量重建(Constant)
讓我們再次假設(shè)我們的像素對應(yīng)整數(shù)值化的()地址销斟,同時我們希望在某種小數(shù)值化的地址處決定一個色彩蚂踊。可能最容易的圖形重建方式為常量重建(或稱作最近鄰居)方法棱诱。在這種方法中涝动,一個實數(shù)值化的圖像坐標(biāo)被假定擁有最近的具體像素的色彩醋粟。這種方法可以借助下面的偽碼描述
color constantReconstruction(float x, float y, color image[][]){
int i = (int) (x + .5); //四舍五入到整型值
int j = (int) (y + .5);
return image[i][j]
}
這種“(int)”類型轉(zhuǎn)換近似一個數(shù)字p為不大于p的最近的整數(shù)重归。
我們把這種方法當(dāng)作是定義了在連續(xù)()域上的連續(xù)圖像鼻吮。我們稱此為“常量重建(constant reconstruction)”椎木,因為最終的連續(xù)圖像由常量色彩的小正方形塊組成香椎。例如脖母,圖像在正方形區(qū)域:
和
中擁有常量值
谆级。每個像素?fù)碛?img class="math-inline" src="https://math.jianshu.com/math?formula=1%5Ctimes1" alt="1\times1" mathimg="1">的影響范圍。參考圖示
的左側(cè)脚仔。
Figure 17.1: 頂部行:一個具體圖像鲤脏。底部左側(cè):使用常量重建方式被重建猎醇。底部右側(cè):借助雙線性重建被重建努溃。??Yasuhiro Endo。
17.2 雙線性重建(Bilinear)
常量重建產(chǎn)生塊狀外觀的圖像沦疾。我們可以借助雙線性插值生成更平滑外觀的重建第队。雙線性插值通過在水平和垂直方向都進(jìn)行線性插值來獲得。它可以通過下面的代碼被描述:
color bilinearReconstruction(float x, float y, color image[][]){
int intx = (int) x;
int inty = (int) y;
float fracx = x - intx;
float fracy = y - inty;
colorx1 = (1-fracx) * image[intx] [inty] + (fracx) * image[intx+1][inty];
colorx2 = (1-fracx) * image[intx] [inty+1] + (fracx) * image[intx+1][ inty+1];
colorxy = (1-fracy) * colorx1 + (fracy) * colorx2;
return(colorxy)
}
在這種代碼中忆畅,我們首先在坐標(biāo)上應(yīng)用線性插值邻眷,跟著在
坐標(biāo)上應(yīng)用前面所獲結(jié)果的線性插值。
在整數(shù)坐標(biāo)上,我們有岖常;重建的連續(xù)圖像
認(rèn)同具體圖像
竭鞍。在整數(shù)坐標(biāo)之間,色彩值被連續(xù)混合冯乘。每個具體圖像中的像素以一種可變的程度影響著連續(xù)圖像中
正方形區(qū)域中的每個點(diǎn)裆馒。圖示
比較了常量和雙線性重建丐怯。
讓我們更仔細(xì)一點(diǎn)觀察坐標(biāo)所確定的
正方形读跷,其中
和
為某種固定值梗搅。在這個正方形上无切,我們可以表達(dá)重建為
此處和
為上面的
fracx
和fracy
哆键。重新排列各項我們得到
完成上面步驟洼哎,我們看到重建函數(shù)在變量上擁有常量項噩峦,線性項,和雙線性項凭涂,因此在
上也是相同的情況。這就是雙線性名稱的來源澎胡。同時這也清晰無誤地表明了這種重建對于水平和垂直方向是對稱的,因而偽碼中水平優(yōu)先的順序表達(dá)不是影響對錯的關(guān)鍵因素。
17.3 基礎(chǔ)函數(shù)(Basis Functions)
要獲得重建方法通用形式的更多理解垦搬,我們可以返回到方程(17.1)然后重新排列各項獲得
在這種形式中糟趾,我們看到對于一個固定位置,連續(xù)重建的色彩在
的具體像素值中是線性的非驮。因為這在所有的
上都是確定的,對于函數(shù)
的某種合適選擇,我們看到事實上重建一定是這種形式
這些函數(shù)被稱作基函數(shù)(basis functions)允华;它們描述了像素
多大程度上影響
處的連續(xù)圖像。
在這種雙線性重建中褐隆,這些函數(shù)被稱作帳篷函數(shù)(tent functions)蜜宪,它們被定義如下:讓
作為單變量帽子函數(shù)(hat functions)被定義為
參考圖示。(在1D中,帽子基(hat basis)可以被用于接收在整數(shù)值范圍上的一個值的集合摊聋,同時線性插值它們以獲得一個連續(xù)的單變量函數(shù)。)那么,讓
被定義為雙變量函數(shù)
Figure 17.2: 一個帽子基(hat basis)由10個基函數(shù)組成图张。當(dāng)被線性插值,它們可以生成具體值上(顯示為圓點(diǎn))逐段線性插值讲仰。
這被稱作一個帳篷函數(shù)(參考圖示)“也幔可以驗證把這些帳篷函數(shù)插入方程(17.2)中會給出我們雙線性重建算法的結(jié)果蔓同。
Figure 17.3: 一個雙線性帳篷函數(shù)(tent function)的四個四分之一圓周視圖。在其中心值為1弃揽,并且在像素的正方形邊緣其值降為0.
常量重建也可以用這種形式被建模矿微,但是在這種情形中,基函數(shù)為盒式函數(shù)快骗,其除了圍繞坐標(biāo)
的正方形區(qū)域中擁有常量值為1之外荆萤,其余處處都為0.
更通用的情形中绪抛,我們可以選擇各種尺寸和形狀的基函數(shù)俩垃。在高質(zhì)量圖像編輯工具中蜈垮,比如,重建可以借助參考書目[50]中的某種雙-立方基函數(shù)(bi-cubic basis functions)被實現(xiàn)调塌。在這種意義上羔砾,像素不真正為一個小正方形政溃。它只是一個具體值愤诱,其被用于聯(lián)合基函數(shù)集合以獲得一個連續(xù)函數(shù)淫半。
17.3.1 邊緣保留(Edge Preservation)
線性方法脆粥,尤其那些借助方程(17.2)重建一張圖像的線性方法变隔,僅只是在具體像素之間進(jìn)行簡單填充蟹倾。當(dāng)我們靠近觀察重建的連續(xù)圖像,發(fā)現(xiàn)邊緣會顯得模糊掉了肌厨。存在有更高級的非線性技術(shù)豁陆,這些技術(shù)甚至在重建時也嘗試維護(hù)鋒利(立即過渡)的邊緣,但是超越了我們的學(xué)習(xí)范圍表鳍。關(guān)于這個主題的更多資料譬圣,參考及其中的參考文獻(xiàn)雄坪。