Image processing 傅里叶域并行图像滤波

Image processing 傅里叶域并行图像滤波,image-processing,fft,convolution,dft,Image Processing,Fft,Convolution,Dft,我们正在进行一个项目,我们将在ApacheHadoop上进行图像处理。我们希望通过将图像分成更小的部分(图像非常大)来加快计算速度,在每个部分上应用傅里叶域中的任何滤波器,然后在将所有部分合并到一起之前将其转换回空间域。我们知道如何在空间域中过滤,方法是在每个部分填充来自相邻部分的像素(根据掩码大小)。如果在频域中进行滤波,这是否也适用 从数学上讲,我认为我们会失去一些较低的频率,但模糊图像与单独模糊所有区域应该没有太大区别?我想你会发现这比你想象的要困难(并非不可能)通过分割来有效地过滤图像-

我们正在进行一个项目,我们将在ApacheHadoop上进行图像处理。我们希望通过将图像分成更小的部分(图像非常大)来加快计算速度,在每个部分上应用傅里叶域中的任何滤波器,然后在将所有部分合并到一起之前将其转换回空间域。我们知道如何在空间域中过滤,方法是在每个部分填充来自相邻部分的像素(根据掩码大小)。如果在频域中进行滤波,这是否也适用


从数学上讲,我认为我们会失去一些较低的频率,但模糊图像与单独模糊所有区域应该没有太大区别?

我想你会发现这比你想象的要困难(并非不可能)通过分割来有效地过滤图像-尽管这不是一种罕见的方法-因为您必须注意组成分割图像的平铺的交点

正如(我认为)您在问题中所述,大多数空间过滤器(即基于与某些内核的卷积的过滤器)在图像边缘采用启发式方法,其中内核将与图像边界的“外部”重叠。未知像素值可能会被忽略、假定为零、从图像反射回来等。在您的情况下,这些效果将发生在图像分幅之间的分割中,而实际上您有“缺失”像素。这可以通过确保瓷砖相互重叠来克服,以便在应用过滤器时,每个瓷砖都可以包含来自其邻居的像素。同样的情况也适用于傅里叶域——你还需要确保你的瓷砖足够大,能够容纳你想要保留的所有频率

第二点-你说,对于模糊,“从数学上讲,我认为我们会失去一些较低的频率”-但实际上你保留了低频,失去了高频,也就是说,在傅里叶域中,模糊是一个低通滤波器


如果要拆分为足够小的分幅,则大多数过滤操作留在空间域中可能会更快。FFT的成本将抵消您从多线程处理中获得的任何节省。当然,对于某些傅里叶滤波(如反褶积),必须使用整个图像。

是的,同样的原理也适用。这个过程是:

  • 将图像分解为重叠的平铺(每个方向上的重叠量等于过滤器长度-1)
  • 将每个瓷砖归零(以避免)
  • 取每个瓷砖的FFT
  • 将结果乘以滤波器的FFT
  • 逆FFT
  • 将结果重新缝合在一起,确保在重叠区域求和