smmustakim 0 Newbie Poster

Hi! everybody. Unable to get the correct fourier image of a simple sinusoid image. The java code is mentioned below. Appreciate help. Thankx.

void freq_spect(){

                       double F[][][];
                       double FX[][];
                       double f_r[];
                       double f_r1[];
                       double NNN[][];
                       double Four[][];
                       int fxy[][];
                       int wd=new_img.getWidth();
                       int ht=new_img.getHeight();
                       F=new double[wd][ht][2];
                       Four=new double[wd][ht];
                       FX=new double[wd][2];
                       f_r=new double[wd*ht];
                       f_r1=new double[wd*ht];
                       NNN=new double[wd][ht];                   img_fourier=newBufferedImage(new_img.getWidth(),new_img.getHeight(),BufferedImage.TYPE_BYTE_GRAY);
                   rstr_f=img_fourier.getRaster(); //writable raster

          for (int u=0;u<new_img.getWidth();u++)
            {
                for (int v=0;v<new_img.getHeight();v++)
                {    
                NNN[u][v]=rstr.getSample(u,v,0); //rstr is the writable raster of the image. 
                NNN[u][v]=NNN[u][v]* Math.pow(-1,(u+v));
                F[u][v][0]=0;
                F[u][v][1]=0;
                             }
            }
  int vv=0;
          for (int u=0;u<new_img.getWidth();u++)
            {

                  FX[u][0]=0; //real array 
                  FX[u][1]=0;  //imaginary array

             for (int a=0; a<new_img.getWidth();a++)
                { 
                   for(int b=0;b<new_img.getHeight();b++)
                    {  
       FX[u][0]=FX[u][0]+(NNN[a][b])* Math.cos(Math.PI/180*( (6.28318*((u*a)/wd)));
       FX[u][1] =FX[u][1]-((NNN[a][b])* Math.sin(Math.PI/180*( (6.28318*((u*a)/wd))));
                       }
                 }
                                   }

 vv=0;

                 for (int u=0;u<new_img.getWidth();u++)
                    {
                   for(int v=0;v<new_img.getHeight();v++)
                    {
                        for(int b=0;b<new_img.getHeight();b++)
                        {  

  F[u][v][0]=F[u][v][0]+(FX[u][0])* Math.cos(Math.PI/180*(6.28318*((v*b)/ht)))+(FX[u][1])* Math.sin(Math.PI/180*(6.28318*((v*b)/ht)));
  F[u][v][1] =F[u][v][1]+(FX[u][1])* Math.cos(Math.PI/180*(6.28318*((v*b)/ht)))-((FX[u][0])* Math.sin(Math.PI/180*(6.28318*((v*b)/ht))));
                           }

                   double sum11=F[u][v][0]*F[u][v][0];
                   double sum22=F[u][v][1]*F[u][v][1];
                   Four[u][v]=(sum11+sum22);
                   f_r[vv]=Four[u][v];
                   f_r[vv]=Math.sqrt(f_r[vv]); //power spectrum
                  vv++;
                 }
               }   
                for (int a=0; a<new_img.getWidth();a++)
                   for(int b=0;b<new_img.getHeight();b++)
                     {
                      rstr_f.setSample(a,b,0,Four[a][b]);
                      }

                     repaint();


                   }
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.