//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!

peter_budo commented: No code tags, BAD -2

Where in the class myFinalToolkit is the computeColorSampleImage(BufferedImage, int, int) method? I can't see it in the code that you posted, but that could be because you didn't use code tags :P

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.