低通滤波器处理图像java

时间:2013-11-17 14:07:57

标签: java image-processing filter fft

如何实现低通滤波器,我有:

BufferedImage img;
int width = img.getWidth();
int height = img.getHeight();

int L = (int) (f * Math.min(width, height));

for (int y = 0 ; y < height ; y++) {
    for (int x = 0 ; x < width ; x++) {
        if (x >= width / 2 - L && x <= width / 2 + L && y >= -L + height / 2 && y <= L + height / 2) {
            img.setRGB(x, y, 0);
        }
        else {}
    }
}

但首先我应该改变图像,但是如何?

1 个答案:

答案 0 :(得分:0)

您编写的代码只会将图像边缘附近的像素设置为黑色。如果你在频域中进行此操作,则会有一个低通滤波器,因为图像边缘附近的像素将是高频分量,因此将它们设置为0将只留下低频分量。要在频域中操作,您需要应用傅里叶变换。但是,您需要注意变换图像中低频分量的最终位置,因为傅立叶变换的不同实现可能会将低频分量放在变换图像的中心或其中一个角落。 / p>