当我在 Inkscape 中模糊一个对象(假设为 10%)时,它会得到一个带有 feGaussionBlur 的滤镜,其 stdDeviation 为 10% * size/2。
然而,过滤器的大小为 124%(实际上就那么大,Inkscape 为了安全起见没有添加一点)。
这个数字从哪里来?我的猜测是 100% + 2.4 * (2*stdDeviation/size)
,但是这个 2.4 来自哪里?
最佳答案
此滤镜基元对输入图像执行高斯模糊。
高斯模糊核是归一化卷积的近似:
G(x,y) = H(x)I(y)
在哪里
H(x) = exp(-x2/(2s2))/sqrt(2* pis2)
和
I(y) = exp(-y2/(2t2))/sqrt(2 pi*t2)
其中“s”是 x 方向的标准偏差,“t”是 y 方向的标准偏差,由“stdDeviation”指定。
“stdDeviation”的值可以是一个或两个数字。如果提供两个数字,第一个数字表示沿当前坐标系 x 轴的标准偏差值,第二个值表示 Y 方向的标准偏差。如果提供一个数字,则该值同时用于 X 和是的。
即使只为“stdDeviation”提供一个值,也可以将其实现为可分离卷积。
对于较大的 's' 值 (s >= 2.0),可以使用近似值:三个连续的框模糊构建分段二次卷积核,将高斯核近似到大约 3% 以内。
设 d = 地板(s * 3*sqrt(2*pi)/4 + 0.5)
...如果 d 是奇数,则使用三个大小为“d”的框模糊,以输出像素为中心。 ...如果 d 是偶数,则两个大小为“d”的框模糊(第一个以输出像素和左侧像素之间的像素边界为中心,第二个以输出像素和左侧像素之间的像素边界为中心)右边的那个)和一个以输出像素为中心的大小为“d+1”的框模糊。
Note: the approximation formula also applies correspondingly to 't'.*
关于svg feGaussianBlur : correlation between stdDeviation and size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781067/