可变半径高斯模糊,近似于内核

时间:2011-09-24 20:45:38

标签: algorithm math blur numerical-methods gaussian

我正在编写具有可变半径(标准偏差)的高斯模糊,即图像的每个像素使用不同的内核进行卷积。计算高斯模糊的标准技术在这里不起作用:FFT,轴分离,重复框模糊 - 它们都假设整个图像的内核是相同的。

现在,我正在尝试使用以下方案来近似它:

用由轴对齐矩形R k 的集合N和系数α k定义的分段常数函数f(x,y)近似高斯核K(x,y) as:

f(x,y)=Σ k = 1 N α k ·χ R k (X,Y)

设g(x,y)为我们的图像,然后

sub 2 K(x,y)·g(x,y)dxdy是什么意思 ∬ 2 f(x,y)·g(x,y)dxdy =Σ k = 1 N α k ·∬ R k g(x,y)dxdy

RHS上的积分是一个矩形的简单积分,因此可以通过预先计算整个图像的部分和来在恒定时间内计算。

得到的算法在O(W·H·N)中运行,其中W和H是图像的维数,N是(AFAIK)与近似误差成反比。

剩下的部分是找到一个好的近似函数f(x,y)。 如果给定矩形数N(最小化误差)或给出误差(最小化矩形数),如何找到高斯的最佳近似值?

1 个答案:

答案 0 :(得分:0)

考虑到矩形的位置和大小,计算系数应该相当容易,所以真正的问题在于找出放置矩形的位置。

由于您接近高斯,因此将我们的注意力限制在中心与高斯中心重合的矩形似乎至少是合理的,因此我们实际上只有一维问题 - 计算出嵌套集的大小矩形,我认为是正方形或类似于高斯,如果你有一个非整数的宽高比。

这可以通过动态编程来解决。假设你从外部工作到中间。在阶段N,你已经制定了一个nxk表,它可以提供最好的近似误差来自1,2 ... N个外部像素环,用于向上1,2,... k个不同的矩形,以及最里面的矩形的大小对最佳错误负责。为了计算N + 1阶段,你考虑到目前为止最内层矩形的每个可能的大小,为外部区域贡献x个像素环。你计算出那个矩形的alpha值,它最适合新环中的像素,而外面的环不会留给外部矩形。使用已计算的表中的值,您知道当您留出k个外部矩形以覆盖这些区域时将获得的最佳错误,因此您可以计算出现在N + 1个像素环的最佳总误差。这允许您填写N + 1个外部像素的表条目。当您按照自己的方式进入该区域的中间时,您将能够为整个区域制定最佳解决方案。