最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

不負(fù)責(zé)任想想小波變換實(shí)現(xiàn)海面Shader的思路

2023-02-07 02:23 作者:DeadCyber  | 我要投稿

最近ShaderToy上有一個(gè)實(shí)時(shí)GI讓人眼前一亮

https://www.shadertoy.com/view/ctSGWm

àtrous Wavelet Denoising

我對(duì)這個(gè)實(shí)現(xiàn)并不是很感興趣,只不過這個(gè)畫面(主要是兩個(gè)金屬管)特別有真實(shí)感。

其中有一個(gè)詞Wavelet。以前瞎研究的時(shí)候經(jīng)常碰到它,于是想去搞搞清楚。


以前的印象中說,

1.對(duì)于一些特殊應(yīng)用場景,傅里葉變換的效果不是特別滿意。

2.于是有了滑動(dòng)窗口傅里葉變換。比如如果我們提前知道信號(hào)有一些特性,比如分3部分周期各相迥異,就可以分塊變換。當(dāng)然變體有很多,叫法也不一樣。

3.但是滑動(dòng)窗口傅里葉變換,顯然需要我們手動(dòng)賦予一些參數(shù),窗口怎么設(shè)置...效果不一定好。

4.于是直到最近(1974),才開發(fā)出一種方法叫Wavelet Transform(小波變換),貌似解決了這方面的問題。

5.也就是說,小波變換大體是傅里葉變換的plus utilmate pro max版(當(dāng)然具體場景肯定具體應(yīng)用,不能說完全代替)。


今天找到了一個(gè)視頻介紹得特別清楚,https://www.youtube.com/watch?v=jnxqHcObNK4。

讓我影響深刻的有幾點(diǎn):

  1. 深刻點(diǎn)一,小波變換的基函數(shù)(以下簡稱base)就是一個(gè)設(shè)計(jì)好的“小波函數(shù)”,可以有不同的形狀:


特征1:定積分為0

特征2:模的定積分有限

顯然這個(gè)條件比較寬泛,不過一般都會(huì)Normalize,方便查看百分比。

最典型的一個(gè)是:

2.深刻點(diǎn)二,如果說FT(傅里葉變換,以下簡稱FT)的base是無數(shù)個(gè)不斷調(diào)整freq(頻率,以下簡稱freq)的sin函數(shù),那么WT的base就是無數(shù)個(gè)不斷調(diào)整freq和tao(時(shí)域位移)的wavelet函數(shù)。以前我看不懂的?%5Cfrac%7Bwavelet(t)-b%7D%7Ba%7D%20也能看懂了,b就是tao,a就是freq。整個(gè)函數(shù)在沿著時(shí)域軸變tao對(duì)b卷積,沿著頻域軸變freq對(duì)a卷積。

3.深刻點(diǎn)三,從信息角度來講,如果原函數(shù)是(100%時(shí)域,0%頻域),其FT是(0%時(shí)域,100%頻域),那么WT是兩者的折中,并且其實(shí)就是“海森堡不確定性原理(Heinsberg's Uncertainty Principle)”,所以小波變換同時(shí)犧牲了兩邊的一些信息量,換來了平衡。 可以看作是一個(gè)函數(shù)Func(in time,in freq,out realComp, out imgComp),通過計(jì)算復(fù)數(shù)的模長,可以獲得類似頻域中的占比信息,但它同時(shí)還帶時(shí)域軸的信息:

圖4

如果能將整個(gè)視頻看完,那應(yīng)該是比較清楚的。

看完之后,我覺得這個(gè)WT的思路比FT清晰多了,而且我一直沒有實(shí)現(xiàn)過FFT海面,因?yàn)槭裁春惴ㄌ垓v了,我腦子不夠用。但全流程換成WT,好像簡單清晰了不少。

隨便想想的WT海面思路

1.首先有一個(gè)時(shí)間周期的原海面(in x,in y,out z),不管怎么來的。

這個(gè)周期海面足夠復(fù)雜,但也是一個(gè)周期函數(shù),也就是說不管哪一個(gè)(x,y)的點(diǎn),都會(huì)遍歷到所有可能的z。那么(x,y)最后只是轉(zhuǎn)換成一個(gè)相位差。所以根本來說還是h(t)。

2.對(duì)h(t)進(jìn)行WT,獲得一張類似圖4的scalogram(占比百分度)。我們可以分幾個(gè)優(yōu)化擋位,lod0,先把紅色的點(diǎn)沿著time軸采出來,如果按圖4,就是大概(2,1),(4,2),(6,2.4),(8,2.5),(10,5)的點(diǎn),也就是說在第2s,freq為1的base最匹配,以此類推,所以比如第3s,就可以lerp(wavelet[2,1],wavelet[4,2],0.5)這樣來采樣高度。然后lod1,lod2...是紅色稍弱,白色,藍(lán)色...的點(diǎn),由于它們的百分占比不夠高,所以不影響波形的主體形象,從圖4上也很直觀,也就是一開始低頻占主體形象,后來高頻占主體形象。

3.因?yàn)榉凑闅v看最大,不如暴力求和。也就是說每幀都根據(jù)當(dāng)前t,在縱軸上由scalogram作權(quán)重全部求和,這就有點(diǎn)像FT還原原信號(hào)的意思。假設(shè)我們的scalogram圖片分辨率是64*64,那么其實(shí)就是一張1*64的圖片所有像素“求和”。這其實(shí)就類比FFT里的蝴蝶法,但是由于我們的base都是wavelet,且scalogram已經(jīng)是復(fù)數(shù)的合了,所以只要作“并行折疊加法“就行了,從1*64->1*32->1*16...一共6次Compute Shader的Dispatch,不算高不算低。不管怎么說,我覺得比FFT容易理解。


不負(fù)責(zé)任想想小波變換實(shí)現(xiàn)海面Shader的思路的評(píng)論 (共 條)

分享到微博請遵守國家法律
左贡县| 黎城县| 抚松县| 扬中市| 武陟县| 鹤岗市| 称多县| 桂平市| 揭阳市| 云林县| 新疆| 襄垣县| 双柏县| 镇雄县| 灵山县| 克东县| 岑溪市| 肥西县| 宁陵县| 会同县| 休宁县| 古田县| 兴山县| 海城市| 五河县| 沈阳市| 九江县| 云霄县| 云和县| 乌兰浩特市| 固安县| 金秀| 鹿邑县| 台北市| 泰安市| 博乐市| 永州市| 石柱| 新田县| 阳朔县| 昌平区|