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 }