快速傅里叶函数用于图像变换问题

时间:2015-08-02 15:02:38

标签: java image fft

我编写了以下函数,对输入图像应用快速傅立叶变换。我在行“F [2 * k] = F [2 * k] .plus(w_ux.mul(f_even));”中有空指针异常。“。

  1. 请问有人给我任何建议吗? [解决]
  2. 完成变换运行需要相当长的时间,时间类似于普通的傅里叶变换。并且结果图像不符合预期。

    private Complex[] fft(byte[] img, int width, int height) {
    // M - height  N - width , u - height v - width
    Complex[] F = new Complex[width*height];  // one single point
    Complex w;
    int size = F.length;
    double w_ux_exp, w_u_exp;
    double f_even, f_odd;
    for (int u=0; u<size/2;u++){
        for (int k=0; k<size/2; k++){
            f_even = (double)(img[2*k]&0xFF)*Math.pow(-1, k);  // f(x) for even, centering
            f_odd = (double)(img[2*k+1]&0xFF)*Math.pow(-1, k);  // f(x) for odd, centering
            w_u_exp =-2.0 * Math.PI*2*(img[u]&0xFF) / size;
            w_ux_exp =-2.0 * Math.PI*(2*k)*(img[u]&0xFF) / size;  //even
            Complex w_ux = Complex.fromPolar(1, w_ux_exp);
            Complex w_u = Complex.fromPolar(1, w_u_exp);
            F[2*u]= F[2*u].plus(w_ux.mul(f_even)); 
            F[2*u+1]=F[2*u+1].plus(w_u.mul(f_odd));
        }
    }
    
    return F;
    

    }

  3. 非常感谢你的帮助。

0 个答案:

没有答案