青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Raytrace world

Chaos 的光線跟蹤世界

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  4 隨筆 :: 0 文章 :: 63 評論 :: 0 Trackbacks

關(guān)于 Fast Poisson-Disk Sample Generation

Chaos Chiao


一、隨便說說

  從MSRA回來后仔細地想了很多事情,看著自己一度覺得很了不起的渲染器,覺得有點可笑。大而全的東西,注定是非常容易失敗的,尤其對于單干,把東西鋪得太開,就很危險了。盡管我再做GS的時候已經(jīng)有過這樣的教訓(xùn)了。

  感覺這段時間有非常強烈變強的欲望,但知道欲速則不達,所以還是停下了項目,重新找出來了很多布滿塵土的數(shù)學(xué)書,翻著做題。不知為什么,很多以前一看見就撓頭的題目,現(xiàn)在卻變得非常簡單,可能是長期的編程徹底地改變了我的思維方式吧。

  但還是受不了Coding的誘惑,就像抽煙一樣(雖然我不抽煙,但也知道它很上癮),于是想找一些課題研究一下,便打開SIGGRAPH 2006的Paper list,搜索一些感興趣的。第一眼就看到了< A Spatial Structure for Fast Poisson-Disk Sample Generation >這篇文章。感覺挺驚訝的,近來很少看到Sampling Pattern的研究,似乎已經(jīng)沒什么可以再深入下去的余地了,但它卻提到了在O(NlogN)的復(fù)雜度內(nèi)可以生成Poisson Disk Pattern。不可思議呢,以前我在做Sampling & Reconstruction的時候曾經(jīng)嘗試過研究Poisson Disk,但還是用一貫的思路,就是所謂Dart-Throwing。也有想要改進這種方法的念頭,但最后還是沒有深入下去,因為用Sobol Pattern生成的圖像質(zhì)量已經(jīng)非常不錯了,而且Sobol可以預(yù)計算序列,運行時幾乎沒有任何耗時。

  稍微看一下,了解了大概的算法,覺得雖然有一定的難度,但要做一個這樣的Implementation還是不太困難的。奮戰(zhàn)一天下來,算是做出來了一個,然后下面分享一些我的想法。


二、Sampling & Reconstruction、Poisson Disk


  這已經(jīng)是我第二篇文章討論Sampling & Reconstruction了,上一篇只是因為ChinaDV有一個瘋子出來說什么反混淆與反走樣,我詳細解說一下什么是Sampling & Reconstruction。當然,這其實屬于圖形學(xué)、乃至信號處理里面最簡單的概念。

  Sampling主要分為Uniform Sampling、Adaptive Sampling和Stochastic Sampling。Uniform Sampling是直接在一個網(wǎng)格或者經(jīng)過抖動的網(wǎng)格Pattern上進行采樣,它受網(wǎng)格分辨率限制。當網(wǎng)格分辨率遠低于Source的頻率時,Uniform Sampling會出現(xiàn)非常大的誤差,其直接結(jié)果就是不連續(xù)的鋸齒,未經(jīng)抖動的網(wǎng)格采樣還可能會產(chǎn)生嚴重的水紋波。Adaptive Sampling是在Uniform Sampling的基礎(chǔ)上進行改良的,當鄰近兩個采樣點之間的差大于閥值時,再兩點之間插入一個新的采樣點,這樣可以極大地避免不連續(xù)情況。但當首個Sample Pattern的分布和Source的頻率相距太大時,雖然鄰近兩點的差值在閥值內(nèi), 有可能Source在兩點之間有更多的連續(xù)變化存在,這樣的重構(gòu)會忽略掉采樣點之間的高頻變化。

  Stochastic Sampling是完全的隨機采樣,它不受網(wǎng)格限制,使用一系列在采樣區(qū)域內(nèi)的散亂采樣點進行采樣,不根據(jù)網(wǎng)格劃分采樣點。Stochastic Sampling非常依賴Pattern的特性,Pattern的分布直接決定了采樣的質(zhì)量。Cook提出了使用Poisson Disk分布的Pattern會非常適合二維的采樣,他指出人眼中的感光細胞也成Poisson Disk分布。所謂Poisson Disk Pattern即所有的采樣點到其余所有的采樣點的距離都大于一個閥值,可以認為未抖動的網(wǎng)格是Poisson Disk Pattern的其中一個特例。

  這樣Poisson Disk就要求任意兩點之間的距離不小于閥值,比如10x10的區(qū)域內(nèi)生成100個(以上)的采樣點,閥值可以采用0.9(大于等于1將有可能使有的采樣點不能放到區(qū)域內(nèi))。

  傳統(tǒng)生成Poisson Disk序列的方法為Dart-Throwing??梢园堰@個原始算法看作買六合彩。它不斷“Throw”一個隨機的采樣點,然后和已有的采樣點集合比較距離,若遇到小于閥值的就Discard,再重新“Throw”一個新的隨機采樣點;如果符合條件則“Dart”中了,添加到采樣點集合里。就這樣不斷循環(huán)直到完全填滿區(qū)域,或者生成的采樣點“足夠多”為止。如果采樣區(qū)域非常大、或者采樣點數(shù)目巨大,那么要計算完所有采樣點的幾率真的比中六合彩還要低得多。上了10,000個點的填充計算是基本上不可能完成的(根據(jù)我的經(jīng)驗……),所以在程序運行時生成Poisson Disk Pattern是非常不切實際的做法。

  可是Poisson Disk分布的確太好,太適合各種圖像重構(gòu)的采樣了,所以很多人會預(yù)計算一個足夠大的Pattern,再把它Tile到采樣區(qū)域里。

  另外也提一下Sobol序列,Sobol是一個Quasi-Monte Carol序列,可以擴展到任意維度,它是一個穩(wěn)定的、覆蓋率非常好的隨機序列,用在Stochastic Sampling中也可以得到非常高質(zhì)量的采樣效果。Sobol已經(jīng)被廣泛運用到各種圖形圖像系統(tǒng)中。


三、改進的Dart-Throwing


  Dart-Throwing屬于一種隨機算法,無法計算它的大O,因為它甚至不可能結(jié)束,所以一直無法在程序中用作即時計算。但Poisson Disk的分布有非常獨特的特點,可以讓我們預(yù)先一些不可能中標的區(qū)域Discard掉,然后在100%中Dart的區(qū)域中Throw,這樣可以保證我們的算法每次都是神投手。

  哪些區(qū)域會100%中標?先看Poisson Disk的定義,即距離其它所有采樣點的距離都在閥值外。這樣在閥值距離內(nèi)的所有范圍都不可能中。如果閥值為r,已知采樣點P,則以P為中心半徑r~2r的圓環(huán)內(nèi)是最佳的采樣點出現(xiàn)區(qū)域。把隨機數(shù)映射到這個范圍內(nèi),可以得到符合條件的采樣點。根據(jù)Paper,可以建立一個能進行布爾運算的貝殼形representation,每次把新的采樣點和圓環(huán)(或者貝殼)相減,得到一個貝殼狀的區(qū)域,那么新的采樣點可以在貝殼區(qū)域內(nèi)生成。

  可是貝殼狀的區(qū)域,而且涉及二維布爾運算,這會非常復(fù)雜,況且r~2r范圍內(nèi)生成的采樣點,并不能保證覆蓋率達到最大化,也有可能出現(xiàn)采樣點過于稀疏而導(dǎo)致無法插入新點。

四、Boundary Sampling


  當我們把r~2r的定義再進一步深入研究下去,可以得到實際上如果新建立的點在半徑等于r的圓上,可以使覆蓋率最大化,即浪費的空間最少(但這部等于所有采樣點之間的距離都是r)。那么我們就把隨機序列映射到一個貝殼區(qū)域內(nèi)簡化到直接把單個隨機數(shù)映射到圓(或者弧線)上。

  套用原來的思路,建立一種以圓弧為基礎(chǔ)的representation,可以進行圓弧與圓之間的布爾運算,相比之下計算要簡單很多,只用極坐標和簡單的三角函數(shù)計算已經(jīng)可以完成了。然后通過指定一個原始的采樣點,我們可以一步一步地在新的點的圓弧上生成符合條件的新點。

?

  在正方形區(qū)域內(nèi)生成一個Poisson Disk Pattern,從點0開始??梢钥吹揭渣c0為中心,r為半徑的圓上任意一點插入的采樣點都符合Poisson Disk分布,所以可以很簡單地直接在圓上進行隨機插值。


?
  點1是新插入的采樣點。分別以兩點為圓心、r為半徑的圓面相交的區(qū)域是不可能出現(xiàn)符合Poisson Disk分布的區(qū)域,所以可以直接把這部分的圓弧刪除掉(藍色),剩下(白色)的圓弧則是可以插入新的采樣點的區(qū)域。


?
  如此這般,繼續(xù)在可能的弧線上插入新的采樣點,這些點集就完全符合Poisson Disk分布,而且可以達到最優(yōu)覆蓋率。


?
  當所有的圓弧都用完了以后,我們就得到了一個非常好的Poisson Disk Pattern了。


五、Implementation


  關(guān)鍵在于可以進行布爾運算的圓弧的representation,我用了極坐標來表示圓弧,這樣二維布爾運算變成了簡單的加減運算。同時我建立了一張表來快速查詢鄰近的采樣點,而空閑采樣點集合則使用了std::set儲存。其實上面已經(jīng)解釋得挺清楚的了,附上動態(tài)生成Pattern的Demo和代碼。Demo打開后不斷按 Space 就可以看到采樣點的生成過程。

Demo & Source





posted on 2006-05-21 18:30 Chaos Chiao 閱讀(3458) 評論(5)  編輯 收藏 引用 所屬分類: Chaos on Graphics

評論

# re: 關(guān)于 Fast Poisson-Disk Sample Generation 2006-05-21 22:30 shephard
偶像,偶被您打擊了。中英文夾雜的嘎么厲害,請照顧門外漢好伐  回復(fù)  更多評論
  

# re: 關(guān)于 Fast Poisson-Disk Sample Generation 2006-05-22 09:46 dudu
文章篇幅較長,建議使用摘要方式發(fā)布,如何使用摘要,請博客園FAQ第4項: http://www.cnblogs.com/dudu/articles/52480.aspx 。  回復(fù)  更多評論
  

# re: 關(guān)于 Fast Poisson-Disk Sample Generation 2006-05-22 10:56 史傳紅
很不錯。  回復(fù)  更多評論
  

# re: 關(guān)于 Fast Poisson-Disk Sample Generation 2006-09-17 01:07 bug
真是個好同學(xué)!  回復(fù)  更多評論
  

# re: Fast Poisson-Disk Sample Generation 2006-11-22 23:34 strenuous
??paper?????ù??µ?
??paperûãsiggraph?????
?û??о^_^
??ū?
  回復(fù)  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美福利一区二区三区| 日韩一级不卡| 亚洲久色影视| 亚洲精品永久免费| 久久资源在线| 亚洲男女自偷自拍| 欧美精品v国产精品v日韩精品| 亚洲天堂视频在线观看| 欧美性生交xxxxx久久久| 老司机午夜免费精品视频| 国产一区二区三区黄| 亚洲毛片播放| 久久久www成人免费精品| 国产精品日韩在线| 亚洲视频欧美在线| 性欧美1819性猛交| 久久精品一二三| 亚洲精品1234| 亚洲电影免费观看高清完整版在线观看| 91久久精品一区二区别| 亚洲精品一区二区三区av| 国产精品videosex极品| 亚洲福利av| 亚洲欧洲综合另类在线| 亚洲欧美国产另类| 亚洲一区二区在线| 欧美不卡在线视频| 亚洲精品亚洲人成人网| 亚洲国产人成综合网站| 久久精品72免费观看| 亚洲一区国产| 好男人免费精品视频| 午夜天堂精品久久久久 | 亚洲制服av| 欧美国产丝袜视频| 91久久亚洲| 亚洲人成久久| 国产女精品视频网站免费| 亚洲在线视频免费观看| 欧美在线视频观看| 欧美激情一区二区| 免费成人黄色片| 欧美日韩一级片在线观看| 欧美精品一区在线播放| 亚洲在线网站| 欧美电影美腿模特1979在线看 | 欧美精品日韩www.p站| 国产欧美日韩综合精品二区| 亚洲毛片网站| 裸体歌舞表演一区二区| 亚洲一品av免费观看| 欧美日韩精品欧美日韩精品 | 亚洲欧洲一区二区天堂久久| 久久九九久久九九| 亚洲欧美精品| 国产精品入口夜色视频大尺度 | 免费成人高清在线视频| 欧美一级艳片视频免费观看| 国产精品激情电影| 亚洲一区在线播放| 亚洲视频在线视频| 国产精品欧美在线| 欧美一区二区三区播放老司机 | 欧美福利电影网| 久久在线播放| 亚洲国产精品第一区二区| 毛片一区二区三区| 欧美成人精品一区二区三区| 亚洲黄色成人久久久| 欧美激情精品久久久久久黑人| 久久综合国产精品台湾中文娱乐网| 在线观看三级视频欧美| 欧美激情按摩在线| 欧美日韩亚洲综合| 午夜视频在线观看一区| 欧美一级在线亚洲天堂| 一区二区三区在线高清| 欧美国产日韩一区| 欧美日韩色综合| 久久爱www.| 欧美成人性生活| 中文一区在线| 性欧美大战久久久久久久免费观看| 国产欧美视频一区二区| 欧美阿v一级看视频| 欧美精品激情| 久久国产婷婷国产香蕉| 久久亚洲影音av资源网| 洋洋av久久久久久久一区| 亚洲香蕉在线观看| 亚洲国产精品t66y| 亚洲一区激情| 亚洲国产cao| 亚洲自拍偷拍福利| 久久人91精品久久久久久不卡| 久久夜色精品国产欧美乱| 一区二区三区成人| 欧美一区二区三区在线| 日韩午夜视频在线观看| 午夜精品福利一区二区蜜股av| 亚洲精品视频二区| 午夜激情亚洲| 一本色道久久综合亚洲精品不| 欧美一区二区三区四区视频| 亚洲三级免费电影| 欧美一区二视频| 亚洲一级黄色av| 久热国产精品| 欧美在线视频日韩| 欧美日韩在线亚洲一区蜜芽| 老色鬼精品视频在线观看播放| 欧美日韩一区二区免费在线观看| 久久影院午夜片一区| 欧美日韩一区免费| 欧美韩日亚洲| 国产午夜精品美女视频明星a级| 亚洲三级观看| 激情五月综合色婷婷一区二区| 亚洲经典三级| 在线精品福利| 欧美一区二区视频网站| 一区二区三区四区五区精品| 老牛国产精品一区的观看方式| 久久福利视频导航| 国产精品vvv| 夜夜嗨av色综合久久久综合网| 亚洲精品1区2区| 久久九九免费视频| 午夜久久久久久| 国产精品你懂得| 99国产精品久久久久久久久久| 亚洲茄子视频| 欧美久久影院| 亚洲欧洲精品一区二区三区波多野1战4| 国产日韩精品在线观看| 亚洲一区二区三区四区在线观看| 亚洲午夜电影| 欧美视频中文在线看| 91久久精品一区二区三区| 亚洲精品久久久久久久久久久| 久久精品亚洲热| 免播放器亚洲一区| 亚洲国产精品精华液2区45 | 午夜国产精品视频免费体验区| 亚洲男女毛片无遮挡| 国产精品成人免费精品自在线观看| 99国产精品99久久久久久粉嫩| 亚洲在线1234| 国产精品一区二区男女羞羞无遮挡 | 国产精品嫩草99av在线| 亚洲一区综合| 久久精品亚洲精品| 亚洲国产精品成人精品| 欧美成在线视频| 一本色道久久综合| 亚洲欧美日韩一区| 国产欧美精品一区二区三区介绍| 久久久亚洲国产美女国产盗摄| 亚洲影院一区| 久久久久久久激情视频| 一色屋精品视频免费看| 欧美成人国产| 日韩亚洲欧美在线观看| 欧美亚洲一区二区在线观看| 国产一区二区精品在线观看| 久久成人人人人精品欧| 欧美国产日韩一区二区在线观看| 国产精品99久久久久久久vr | 午夜精品久久久久久99热| 久久亚洲综合网| 99热这里只有精品8| 国产精品视频1区| 久久亚洲私人国产精品va| 99视频在线观看一区三区| 欧美一级播放| 亚洲大片在线观看| 国产精品高清网站| 老司机午夜精品视频在线观看| 亚洲人成啪啪网站| 久久人人精品| 亚洲综合精品四区| 伊人久久综合97精品| 欧美日韩在线第一页| 午夜一区不卡| 亚洲黄网站黄| 久热精品视频在线观看| 中日韩视频在线观看| 黄色小说综合网站| 国产精品视频不卡| 欧美极品欧美精品欧美视频| 午夜精品久久久久影视| 亚洲美女黄色| 久热这里只精品99re8久| 亚洲欧美日韩精品一区二区| 亚洲国内精品在线| 国外成人性视频| 国产精品一香蕉国产线看观看 | 国产精品高清网站| 欧美精品九九| 欧美国产三级|