//The alignment of the features is assumed to be AVG, VAR, CSD, GABOR
import java.io.*;
import javax.imageio.*;
import java.awt.*;
import java.awt.image.*;
class retrievalGabor
{
public static void main(String args[])
{
if(args.length!=6 && args.length!=7)
{
System.out.println("The parameters are {Query Image} {Query Gabor file} {Features File} {Gabor Text File} [blocks] {Relevant Features} {EPS directory}");
System.exit(0);
}
int BLOCKS=1, FEATURES=15, SCALE=3, ORIENTATION=4;
BufferedImage bi, bi1;
GraphicsEnvironment ge= GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd=ge.getDefaultScreenDevice();
GraphicsConfiguration gc=gd.getDefaultConfiguration();
Graphics2D g2D=null;
ColorModel cm=null;
DataInputStream dis, dis1;
BufferedReader br, br1;
float features[][], diff[], query[], tmp=0;
String names[], tmps=null, tokens[];
int images=0, wt[], bitcount=0;
char ch;
try{
bi=ImageIO.read(new File(args[0]));
bi1=gc.createCompatibleImage(bi.getWidth(null), bi.getHeight(null));
g2D=bi1.createGraphics();
g2D.drawImage(bi, null, 0, 0);
bi=bi1;
dis=new DataInputStream(new FileInputStream(args[2]));//opening the features file
br=new BufferedReader(new FileReader(args[3]));//opening the texture features file
if(args.length==7)
{
BLOCKS=Integer.parseInt(args[4]);
dis1=new DataInputStream(new FileInputStream(args[5]));//opening the relevant features file
}
else
dis1=new DataInputStream(new FileInputStream(args[4]));//opening the relevant features file
query=myFinalToolkit.computeColorSampleImage(bi, BLOCKS, SCALE*ORIENTATION);
br1=new BufferedReader(new FileReader(args[1]));//opening the Query texture file
tokens=(br1.readLine()).split(" ");
for(int i=3;i<2*BLOCKS*SCALE*ORIENTATION;i++)
query[BLOCKS*6+120+i-3]=Float.parseFloat(tokens[i]);
br1.close();
//reading the features file
images=dis.readInt();
features=new float[images][BLOCKS*(6+SCALE*ORIENTATION*2)+120];
names=new String[images];
for(int i=0;i<images;i++)
{
names[i]=new String();
while((ch=dis.readChar())!='\n')
names[i]+=ch;
for(int j=0; j<BLOCKS*6+120;j++)
features[i][j]=dis.readFloat();
dis.readChar();
tokens=(br.readLine()).split(" ");
for(int j=3;j<BLOCKS*2*SCALE*ORIENTATION;j++)
features[i][BLOCKS*6+120+j-3]=Float.parseFloat(tokens[j]);
}
dis.close();
br.close();
//reading the feature relevancy
wt=new int[BLOCKS*(FEATURES-1)+1];
for(int i=0;i<BLOCKS*(FEATURES-1)+1;i++)
{
wt[i]=dis1.readInt();
System.out.print(wt[i]+" ");
}
System.out.println();
dis1.close();
diff=new float[images];
for(int i=0;i<images;i++)
{
//average and variance in color
for(int j=0;j<BLOCKS;j++)
{
for(int k=0;k<2;k++)
{
tmp=0;
if(wt[j*(FEATURES-1)+k]==1)
{
for(int l=0;l<3;l++)
tmp+=Math.abs(query[j*6+k*3+l]-features[i][j*6+k*3+l]);
diff[i]+=tmp/3;
}
}
}
//CSD
tmp=0;
if(wt[BLOCKS*(FEATURES-1)]==1)
{
for(int k=0;k<120;k++)
tmp+=Math.abs(query[BLOCKS*6+k]-features[i][BLOCKS*6+k]);
diff[i]+=tmp/120;
}
//texture features
for(int j=0;j<BLOCKS;j++)
for(int k=0;k<SCALE*ORIENTATION;k++)
{
tmp=0;
if(wt[j*(FEATURES-1)+2+k]==1)
for(int l=0;l<2;l++)
{
tmp+=Math.abs(query[BLOCKS*6+120+j*SCALE*ORIENTATION+2*k+l]-features[i][BLOCKS*6+120+j*SCALE*ORIENTATION+2*k+l]);
}
diff[i]+=tmp/2;
}
}
//sort the entries in the sorted order
for(int i=0;i<images-1;i++)
for(int j=0;j<images-i-1;j++)
{
if(diff[j+1]<diff[j])
{
tmp=diff[j];
diff[j]=diff[j+1];
diff[j+1]=tmp;
tmps=names[j];
names[j]=names[j+1];
names[j+1]=tmps;
tmps=null;
}
}
/* //sort the entries in the sorted order by name
for(int i=0;i<29;i++)
for(int j=0;j<29-i;j++)
{
if(names[j].compareTo(names[j+1])>0)
{
tmp=diff[j];
diff[j]=diff[j+1];
diff[j+1]=tmp;
tmps=names[j];
names[j]=names[j+1];
names[j+1]=tmps;
tmps=null;
}
}
*/
Runtime rt=Runtime.getRuntime();
String arr[]=new String[3], dir[]=new String[2];
dir[0]=new String("/bin/mkdir");
if(args.length==6)
dir[1]=new String("/tmp/"+args[5]+args[0].substring(args[0].lastIndexOf('/')+1, args[0].lastIndexOf('.')));
else
dir[1]=new String("/tmp/"+args[6]+args[0].substring(args[0].lastIndexOf('/')+1, args[0].lastIndexOf('.')));
rt.exec(dir);
arr[0]=new String("/bin/cp");
for(int i=0;i<30;i++)
{
System.out.println(names[i]+" "+diff[i]);
arr[1]=new String(args[0].substring(0,args[0].lastIndexOf("/")+1)+names[i]);
if(i<10)
arr[2]=new String(dir[1]+"/0"+i+".jpg");
else
arr[2]=new String(dir[1]+"/"+i+".jpg");
rt.exec(arr);
}
}
catch(Exception e)
{
e.printStackTrace();
System.exit(0);
}
}
}
errors:
Gaborretrieval.java:54:cannot find symbol
symbol:method computeColorSampleImage(java.awt.image.BufferedImage,int,int)
location:class myFinalToolkit.java.retrievalGabor
query=myFinalToolkit.computeColorSampleImage(bi,BLOCKS,SCALE*ORIENTATION);
^
ANYONE PLEASE HELP ME TO REMOVE THESE ERRORS!