柏林噪声,基于Python Numpy,推导了插值方式

前一阵子在小破站看到了关于分型柏林噪声的内容,讲述了关于柏林噪声发生的原理。

视频链接:分形柏林噪声_哔哩哔哩_bilibili

当时正好需要用到这方面的内容,就自己尝试做了一下,过程稍微有点坎坷,隔了一段时间再来写一下。

柏林噪声和值噪声的区别

相信来到这边的小伙伴已经了解了值噪声,而柏林噪声实际上就是把值噪声中的值替换成了一个梯度向量。这个梯度向量我理解为是一个单位向量,方便归一化,但是大家也可以尝试一下替换成模小于等于1的向量。 

值噪声每个区块的运算就是对四个角进行插值,柏林噪声有相似之处。

图片源于b站

柏林噪声的运算首先要将图片划分成若干相同尺寸的区块,然后根据区块形状生成随机的梯度向量表,使得一个区块的四个角都对应一个梯度。在一个区块内,计算点到四个角的向量,然后用该向量和角上的梯度点乘。最后插值。

在一个区块内,如果我们单独对一个角上的向量进行点乘,我们会得到一张简单的渐变图案,这张图案的渐变方向其实是该角的梯度向量的方向。

而柏林噪声就是对四张这样的渐变图案进行插值。

注意,这里的插值很关键,直接影响到柏林噪声的品质。

插值公式的推导

对于一维的插值,可以根据需要列方程

        y(0)=a_0,y(1)=a_1\\y(0)'=0,y(1)'=0

最后求到这个公式,也是网上常见的插值方式:
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值