非整数比的三角​​核过滤问题

信息处理 图像处理 过滤器 下采样
2022-01-26 21:14:27

我正在尝试使用三角形滤波器实现图像缩小(它很窄,因此很快,并且在放大时与线性插值齐头并进),并且用于过滤的三角形函数具有与缩小比例成比例的跨度。

人工制品

唉,当比率为非整数时,缩小的图像上会出现网格伪影(如上所示)。下图显示了在这些情况下输入图像的每个像素的三角形重叠并相加的方式会发生什么:

阴谋

我不知道我应该做些什么来解决/解决这个问题,但我确信其他人之前一定遇到过这个问题(谷歌没有帮助)。

1个回答

我接受了Jason R调整线性过滤的想法,但我不喜欢对每个输出像素进行除法的想法,而不仅仅是使用简单的内核,或者这种方式如何标准化会破坏平滑的边界。所以我修改了内核本身,结果证明是通过压平三角形的峰值来完成的。

图片

这似乎是一个很好的解决方案,您可以看到三角形的总和如何演变成类似于高斯函数的东西。

这是它的完成方式,首先有一个“膝盖”将平顶与三角形的其余部分连接起来。它像这样在 0 到 0.5 之间的水平轴上打乒乓球。注意:是内核宽度和缩小尺寸的缩放倍数,它始终为 1 或更低,它是动画顶部显示的数字的倒数。越小,输出图像越小,原始图像上的核越宽。nn

knee=0.5|(n1mod1)0.5|

接下来我们需要计算扁平三角形顶部的高度,如下所示:

m=n1+0.5

top=1kneen2mnm2

最后我们把它变成一个仿射函数,我们可以在计算权重时直接使用它:

c1=topn1knee

c0=c1n

以上只计算一次,并且在计算权重时会存储和使用kneetopc1c0

f(x)={top if |x|knee c1x+c0 if knee<|x|n1 0 otherwise