可变半径高斯模糊,近似内核
我正在写一个可变半径(标准偏差)的高斯模糊图像,即图像的每个像素都使用不同的内核进行卷积。 计算高斯模糊的标准技术在这里不起作用:FFT,轴分离,重复盒模糊 - 他们都假设内核对于整个图像是相同的。
现在,我试图用下面的方案来逼近它:
用由轴对齐矩形Rk和系数αk的集合N定义的分段常数函数f(x,y)近似高斯核函数K(x,y)为:
f(x,y)=Σk= 1Nαk·xRk(x,y)
那么让g(x,y)成为我们的图像
(x,y)dxdy≈∬ℝ2 f(x,y)·g(x,y)dxdy =Σk= 1Nαk·∬Rkg(x,y)dxdy
RHS上的积分是矩形上的简单积分,因此可以通过预计算整个图像的部分和来在恒定时间内计算。
所得到的算法以O(W·H·N)运行,其中W和H是图像的尺寸,并且N是(AFAIK)与近似的误差成反比。
剩下的部分是找到一个好的近似函数f(x,y)。 如果给定矩形的数量N(使误差最小)或给出误差(最小化矩形的数量),如何找到高斯的最佳逼近?
考虑到矩形的位置和大小,计算系数应该相当容易,所以真正的问题是找出将矩形放在哪里。
由于您近似于高斯,因此我们将注意力集中在中心与高斯中心重合的矩形上似乎至少是合理的,所以我们实际上只有一维问题 - 计算嵌套矩形的大小,其中我认为是正方形或与高斯类似,如果你有一个长宽比非统一。
这可以通过动态编程来解决。 假设你从外面工作到中间。 在N阶段,你已经计算出一个nxk表格,它给出了来自1,2 ... N个外部像素环的最佳逼近误差,用于1,2,... k个不同的矩形,以及最内部的矩形的大小负责那个最好的错误。 为了计算N + 1阶段,你考虑到目前为止最内层矩形的每个可能的大小,为外层区域贡献x环像素。 您可以计算出该矩形的alpha值,该值最适合新环中的像素,并且外围的环不会留在外部矩形中。 使用已计算表中的值,可以知道当您留出k个外部矩形以覆盖这些区域时可能获得的最佳误差,因此您可以计算出现在N + 1个像素环所产生的最佳总误差。 这允许您填写N + 1个外部像素的表格条目。 当你在这个区域的中间工作时,你将能够为整个区域制定出最佳的解决方案。
链接地址: http://www.djcxy.com/p/60867.html上一篇: Variable radius Gaussian blur, approximating the kernel