OpenGL中的常量重建和雙線性重建的基本原理

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é)


重建(Reconstruction)

現(xiàn)在讓我們關(guān)注對立問題:假定一個具體圖像I[i][j],我們怎樣生成一個連續(xù)圖像I(x,y)虐急?正如我們將會看到的,這個問題對于圖像尺寸調(diào)整以及紋理映射是中心問題被辑。例如盼理,在碎片著色器中俄删,我們可能希望借助落入(兩個)紋理像素之間的紋理坐標(biāo)從紋理中獲取色彩畴椰。在這種情形中,我們需要決定使用什么紋理色彩抓艳。這個處理被稱為重建壶硅。

17.1 常量重建(Constant)

讓我們再次假設(shè)我們的像素對應(yīng)整數(shù)值化的(x,y)地址销斟,同時我們希望在某種小數(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,y)域上的連續(xù)圖像鼻吮。我們稱此為“常量重建(constant reconstruction)”椎木,因為最終的連續(xù)圖像由常量色彩的小正方形塊組成香椎。例如脖母,圖像在正方形區(qū)域:?.5 < x < .5?.5 < y < .5中擁有常量值I[0][0]谆级。每個像素?fù)碛?img class="math-inline" src="https://math.jianshu.com/math?formula=1%5Ctimes1" alt="1\times1" mathimg="1">的影響范圍。參考圖示\text{Figure 17.1}的左側(cè)脚仔。

Figure17.1.png

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)
}

在這種代碼中忆畅,我們首先在x坐標(biāo)上應(yīng)用線性插值邻眷,跟著在y坐標(biāo)上應(yīng)用前面所獲結(jié)果的線性插值。

在整數(shù)坐標(biāo)上,我們有I(i, j) = I[i][j]岖常;重建的連續(xù)圖像I認(rèn)同具體圖像I竭鞍。在整數(shù)坐標(biāo)之間,色彩值被連續(xù)混合冯乘。每個具體圖像中的像素以一種可變的程度影響著連續(xù)圖像中2\times2正方形區(qū)域中的每個點(diǎn)裆馒。圖示\text{Figure 17.1}比較了常量和雙線性重建丐怯。

讓我們更仔細(xì)一點(diǎn)觀察坐標(biāo)i < x < i + 1, j < y < j + 1所確定的1\times1正方形读跷,其中ij為某種固定值梗搅。在這個正方形上无切,我們可以表達(dá)重建為
\normalsize{ \begin{array}{rl} I(i + x_f , j + y_f ) & \leftarrow & (1 ? y_f )((1 ? x_f )I[i][j] + (x_f)I[i + 1][j]) \\ & & +(y_f)((1 ? x_f )I[i][j + 1] + (x_f)I[i + 1][j + 1]) \end{array} \qquad\qquad \tag{17.1} }
此處x_fy_f為上面的fracxfracy哆键。重新排列各項我們得到
\normalsize{ \begin{array}{rrl} I(i + x_f , j + y_f) & \leftarrow & I[i][j]\\ && + (?I[i][j] + I[i + 1][j])x_f \\ && + (?I[i][j] + I[i][j + 1])y_f \\ && + (I[i][j] ? I[i][j + 1] ? I[i + 1][j] + I[i + 1][j + 1])x_fy_f \end{array} }
完成上面步驟洼哎,我們看到重建函數(shù)在變量(x_f,y_f)上擁有常量項噩峦,線性項,和雙線性項凭涂,因此在(x,y)上也是相同的情況。這就是雙線性名稱的來源澎胡。同時這也清晰無誤地表明了這種重建對于水平和垂直方向是對稱的,因而偽碼中水平優(yōu)先的順序表達(dá)不是影響對錯的關(guān)鍵因素。

17.3 基礎(chǔ)函數(shù)(Basis Functions)

要獲得重建方法通用形式的更多理解垦搬,我們可以返回到方程(17.1)然后重新排列各項獲得
\begin{array}{rrl} I(i + x_f , j + y_f) & \leftarrow & (1 ? x_f ? y_f + x_fy_f)I[i][j] \\ && +(x_f ? x_fy_f)I[i + 1][j] \\ && +(y_f ? x_fy_f)I[i][j + 1] \\ && +(x_fy_f)I[i + 1][j + 1]\end{array}
在這種形式中糟趾,我們看到對于一個固定位置(x,y),連續(xù)重建的色彩在I的具體像素值中是線性的非驮。因為這在所有的(x,y)上都是確定的,對于函數(shù)B_{i,j}(x,y)的某種合適選擇,我們看到事實上重建一定是這種形式
I(x, y) \leftarrow \sum_{i,j}B_{i,j}(x, y)I[i][j] \tag{17.2}

這些B函數(shù)被稱作基函數(shù)(basis functions)允华;它們描述了像素i,j多大程度上影響[x,y]^t處的連續(xù)圖像。

在這種雙線性重建中褐隆,這些B函數(shù)被稱作帳篷函數(shù)(tent functions)蜜宪,它們被定義如下:讓H_i(x)作為單變量帽子函數(shù)(hat functions)被定義為
\begin{array}{c} H_i(x) & = & x?i+1 & for & i?1<x<i \\ && ?x+i+1 & for & i<x<i+1 \\ && 0 & else & \end{array}
參考圖示\text{Figure 17.2}。(在1D中,帽子基(hat basis)可以被用于接收在整數(shù)值范圍上的一個值的集合摊聋,同時線性插值它們以獲得一個連續(xù)的單變量函數(shù)。)那么,讓T_{i,j}(x,y)被定義為雙變量函數(shù)
T_{i,j}(x, y) = H_i(x)H_j(y)

Figure17.2.png

Figure 17.2: 一個帽子基(hat basis)由10個基函數(shù)組成图张。當(dāng)被線性插值,它們可以生成具體值上(顯示為圓點(diǎn))逐段線性插值讲仰。

這被稱作一個帳篷函數(shù)(參考圖示\text{Figure17.3})“也幔可以驗證把這些帳篷函數(shù)插入方程(17.2)中會給出我們雙線性重建算法的結(jié)果蔓同。

Figure17.3.png

Figure 17.3: 一個雙線性帳篷函數(shù)(tent function)的四個四分之一圓周視圖。在其中心值為1弃揽,并且在像素的正方形邊緣其值降為0.

常量重建也可以用這種形式被建模矿微,但是在這種情形中,基函數(shù)B_{i,j}(x,y)為盒式函數(shù)快骗,其除了圍繞坐標(biāo)(i,j)的正方形區(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)于這個主題的更多資料譬圣,參考[18]及其中的參考文獻(xiàn)雄坪。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市登澜,隨后出現(xiàn)的幾起案子就缆,更是在濱河造成了極大的恐慌,老刑警劉巖空郊,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狞甚,死亡現(xiàn)場離奇詭異廓旬,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)涩盾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門春霍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叶眉,“玉大人,你說我怎么就攤上這事莲趣”ヒ纾” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵絮识,是天一觀的道長次舌。 經(jīng)常有香客問我兽愤,道長挪圾,這世上最難降的妖魔是什么哲思? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任棚赔,我火速辦了婚禮徘郭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胧后。我一直安慰自己抱环,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布眶痰。 她就那樣靜靜地躺著凛驮,像睡著了一般条辟。 火紅的嫁衣襯著肌膚如雪宏胯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天杭棵,我揣著相機(jī)與錄音魂爪,去河邊找鬼艰管。 笑死,一個胖子當(dāng)著我的面吹牛撩笆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播夕冲,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼歹鱼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了南片?” 一聲冷哼從身側(cè)響起蚁阳,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎颠悬,沒想到半個月后定血,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灾票,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年刊苍,在試婚紗的時候發(fā)現(xiàn)自己被綠了正什。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片号杏。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖主经,靈堂內(nèi)的尸體忽然破棺而出庭惜,到底是詐尸還是另有隱情,我是刑警寧澤鉴腻,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站爽哎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏厨内。R本人自食惡果不足惜渺贤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一志鞍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧固棚,春花似錦、人聲如沸厂汗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衷畦。三九已至知牌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背暖释。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纹磺,地道東北人亮曹。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像式矫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子采转,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容