我需要将图像水平缩小和垂直, <)。
我想在下采样之前使用有限的低通滤波器。
我应该如何确定低通滤波器参数(和高斯)以将其作为和的函数?
具体来说,我对的情况很感兴趣。
我需要将图像水平缩小和垂直, <)。
我想在下采样之前使用有限的低通滤波器。
我应该如何确定低通滤波器参数(和高斯)以将其作为和的函数?
具体来说,我对的情况很感兴趣。
您必须考虑两个图像之间奈奎斯特频率的变化。如果原始图像的奈奎斯特频率为 N,则下采样图像将具有较低的奈奎斯特频率 xN,其中 x 与最终图像和初始图像之间的尺寸比有关。在对原始图像进行下采样之前,您需要删除那些高于 xN 的空间频率。
图像空间中的高斯功率谱,在频率空间中也是高斯的。如果我们暂时忽略第二维,图像空间中的高斯被定义为 exp(-x^2/s^2),其中 x 代表您的像素。这以 exp(-w^2*s^2) 的形式映射到频率空间,其中 w 是频率。sigma 参数 (s) 表明图像空间中的宽高斯对应于频率空间中的窄高斯。
您想选择一个 sigma 参数,该参数在频率空间中的值对应于下采样图像的奈奎斯特频率。
已经指出,和将根据选择.
我花了一些时间思考如何选择最好的。以下是我的考虑。tl;博士:也许我犯了一些错误,但是看起来像因子 2 下采样的不错选择。
如果您要进行大幅缩小(例如 2x、3x、4x),您可以进行像素平均以实现良好的抗锯齿。这就是为什么抗锯齿使用大量额外的 CPU/GPU 以使视频游戏看起来更清晰的原因。
由于您要从 1000x1000 到 707x707 图像(只是比例因子的一个示例),所以您认为混叠可能是一个问题是正确的。
值得庆幸的是,这是许多人已经遇到的问题,并且已经做了很多工作来解决。在许多情况下,双三次插值是要走的路。这里有一些不同插值方法的示例:
http://www.compuphase.com/graphic/scale.htm
OpenCV 的 resize 内置了几个这样的方法:
http://opencv.willowgarage.com/documentation/cpp/geometric_image_transformations.html#cv-resize
如果您已经使用了其中几种插值方法并且它们效果不佳,请发布某种示例源图像和示例结果图像,以显示不足之处。我们需要它来诊断问题并尝试提出一个好的解决方案。
我真的没有给你一个好的答案,但这里有两个你可以尝试的选项: