View Javadoc

1   /*
2    * @(#)$Id: BatchTest3DMain.java
3    *
4    * Author		:	Arthur Vogels, arthur.vogels@gmail.com
5    *                  
6    *
7    * Purpose		:   Main for running batch tests.
8    *
9    * -----------------------------------------------------------------------
10   *
11   * Revision Information:
12   *
13   * Date				Who			Reason
14   *
15   * 15.01.2009		vogelsar	Initial Release
16   *
17   * -----------------------------------------------------------------------
18   *
19   * Copyright 1999-2009 ETH Zurich. All Rights Reserved.
20   *
21   * This software is the proprietary information of ETH Zurich.
22   * Use is subject to license terms.
23   * 
24   */
25  
26  package org.ximtec.igesture.algorithm.rubine3d.tools;
27  
28  import java.io.File;
29  import java.util.Iterator;
30  import java.util.List;
31  
32  import org.ximtec.igesture.batch.BatchResult;
33  import org.ximtec.igesture.batch.BatchResultSet;
34  import org.ximtec.igesture.core.GestureSet;
35  import org.ximtec.igesture.core.TestSet;
36  import org.ximtec.igesture.storage.StorageManager;
37  
38  public class BatchTest3DMain {
39  
40  	/**
41  	 * @param args
42  	 */
43  	public static void main(String[] args) {
44  		
45  		// ******************GET GESTURE AND TEST SET FROM DATABASE PART******************
46  		
47  		// Create storage manager for gesture set
48  		StorageManager storageGesture = new StorageManager(StorageManager.createStorageEngine(new File("C:\\GestureDB\\demogestureset.db")));
49  		// Get first gesture set from database
50  		GestureSet gestureSet3D = storageGesture.load(GestureSet.class).get(0);
51  		
52  		// Create storage manager for test set
53  		StorageManager storageTest = new StorageManager(StorageManager.createStorageEngine(new File("C:\\GestureDB\\demotestset.db")));
54  		// Get first gesture set from database
55  		GestureSet testSet3D = storageTest.load(GestureSet.class).get(0);
56  		
57  		
58  		
59  		//******************SPLIT 3D GESTURE AND TEST SET TO 3 2D SETS PART******************
60  		
61  		// Gesture set
62  		List<GestureSet> gestureSets2D = BatchTest3DTool.splitSetToPlanes(gestureSet3D);
63  		GestureSet gestureSetXY = gestureSets2D.get(0);
64  		GestureSet gestureSetYZ = gestureSets2D.get(1);
65  		GestureSet gestureSetZX = gestureSets2D.get(2);
66  		// Test set
67  		List<GestureSet> testSets2D = BatchTest3DTool.splitSetToPlanes(testSet3D);
68  		GestureSet testSetXY = testSets2D.get(0);
69  		GestureSet testSetYZ = testSets2D.get(1);
70  		GestureSet testSetZX = testSets2D.get(2);
71  
72  		
73  		
74  		//******************CONVERT TO TEST SETS PART******************
75  		
76  		//Make XY 2D test set
77  		TestSet xyTestSet = BatchTest3DTool.convert2DGestureSetToTestSet(testSetXY);
78  		//Make XY 2D test set
79  		TestSet yzTestSet = BatchTest3DTool.convert2DGestureSetToTestSet(testSetYZ);
80  		//Make XY 2D test set
81  		TestSet zxTestSet = BatchTest3DTool.convert2DGestureSetToTestSet(testSetZX);
82  		// Make 3D test set
83  		TestSet testGestureSet3D = BatchTest3DTool.convert3DGestureSetToTestSet(testSet3D);
84  		
85  		
86  		gestureSetZX.setName("GesturesZX");
87  		zxTestSet.setName("TestZX");
88  		
89  //		StorageManager store = new StorageManager(StorageManager.createStorageEngine(new File("C:\\gesture+testsets.igz")));
90  //		store.store(gestureSetZX);
91  //		store.store(zxTestSet);
92  //		store.commit();
93  		
94  		
95  		
96  //
97  //		System.err.println("\nGESTURE SET NAME: " + gestureSet3D.getName());
98  //		for(int i = 0; i < gestureSet3D.getGestureClasses().size(); i++){
99  //			System.err.println("  GESTURE CLASS " + i + " NAME: " + gestureSet3D.getGestureClasses().get(i).getName());
100 //			for(int j = 0; j < gestureSet3D.getGestureClasses().get(i).getDescriptor(Sample3DDescriptor.class).getSamples().size(); j++){
101 //				System.err.println("    SAMPLE: " + gestureSet3D.getGestureClasses().get(i).getDescriptor(Sample3DDescriptor.class).getSample(j));
102 //			}
103 //		}
104 //		
105 //		System.err.println("\nTEST SET NAME: " + testGestureSet3D.getName());
106 //		for(int i = 0; i < testGestureSet3D.getTestClasses().size(); i++){
107 //			System.err.println("  TEST CLASS " + i + " NAME: " + testGestureSet3D.getTestClasses().get(i).getName());
108 //			for(int j = 0; j < testGestureSet3D.getTestClasses().get(i).getGestures().size(); j++){
109 //				System.err.println("    SAMPLE: " + testGestureSet3D.getTestClasses().get(i).getGestures().get(j));
110 //			}
111 //		}
112 		
113 //
114 //		System.err.println("\nGESTURE SET NAME: " + gestureSetXY.getName());
115 //		for(int i = 0; i < gestureSetXY.getGestureClasses().size(); i++){
116 //			System.err.println("  GESTURE CLASS " + i + " NAME: " + gestureSetXY.getGestureClasses().get(i).getName());
117 //			for(int j = 0; j < gestureSetXY.getGestureClasses().get(i).getDescriptor(SampleDescriptor.class).getSamples().size(); j++){
118 //				System.err.println("    SAMPLE: " + gestureSetXY.getGestureClasses().get(i).getDescriptor(SampleDescriptor.class).getSample(j).getGesture().getClass());
119 //			}
120 //		}
121 //		
122 //		System.err.println("\nTEST SET NAME: " + xyTestSet.getName());
123 //		for(int i = 0; i < xyTestSet.getTestClasses().size(); i++){
124 //			System.err.println("  TEST CLASS " + i + " NAME: " + xyTestSet.getTestClasses().get(i).getName());
125 //			for(int j = 0; j < xyTestSet.getTestClasses().get(i).getGestures().size(); j++){
126 //				System.err.println("    SAMPLE: " + xyTestSet.getTestClasses().get(i).getGestures().get(j).getGesture().getClass());
127 //			}
128 //		}
129 //		
130 		
131 //		
132 //		
133 		// ******************TEST BATCH PART******************
134 		
135 		// Create a testbatchtool
136 		BatchTest3DTool batchTool = new BatchTest3DTool(testGestureSet3D,gestureSet3D,"C:\\configuration3d.xml",null);
137 		BatchResultSet batchResultSet = null;
138 		// Try to get a result out of it
139 		try {
140 			batchResultSet = batchTool.runBatch();
141 			System.out.println("Number of Batch Results: " + batchResultSet.getBatchResults().size());
142 		} catch (Exception e) {
143 			e.printStackTrace();
144 		}
145 		
146 		
147 		// ******************TEST RESULTS PART******************
148 		
149 		//Check for the best result
150 		BatchResult bestResult = batchResultSet.getBatchResults().get(0);
151 		Iterator<BatchResult> i = batchResultSet.getBatchResults().iterator();
152 		while(i.hasNext()){
153 			BatchResult tempResult = i.next();
154 			if(tempResult.getPrecision() > bestResult.getPrecision()){
155 				bestResult = tempResult;
156 			}
157 		}		
158 		System.out.println("Highest precision: " + bestResult.getPrecision());
159 
160 		
161 		// Indicate end of code
162 		System.out.println("End of test main.");
163 
164 	}
165 
166 }