add eye tracking benchmark.
[IRC.git] / Robust / src / Benchmarks / SSJava / EyeTracking / LEAImplementation.java
1 /*
2  * Copyright 2009 (c) Florian Frankenberger (darkblue.de)
3  * 
4  * This file is part of LEA.
5  * 
6  * LEA is free software: you can redistribute it and/or modify it under the
7  * terms of the GNU Lesser General Public License as published by the Free
8  * Software Foundation, either version 3 of the License, or (at your option) any
9  * later version.
10  * 
11  * LEA is distributed in the hope that it will be useful, but WITHOUT ANY
12  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13  * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
14  * details.
15  * 
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with LEA. If not, see <http://www.gnu.org/licenses/>.
18  */
19
20 /**
21  * No description given.
22  * 
23  * @author Florian Frankenberger
24  */
25 public class LEAImplementation {
26
27   // private ClassifierTree classifierTree = null;
28
29   // private Rectangle2D lastRectangle;
30
31   public LEAImplementation() {
32     this.loadFaceData();
33   }
34
35   // public FaceAndEyePosition getEyePosition(BufferedImage image) {
36   // if (image == null)
37   // return null;
38   //
39   // Rectangle2D faceRect = this.classifierTree.locateFaceRadial(image,
40   // lastRectangle);
41   // EyePosition eyePosition = null;
42   // if (faceRect != null) {
43   //
44   // lastRectangle = faceRect;
45   // Point point = readEyes(image, faceRect);
46   // if (point != null) {
47   // eyePosition = new EyePosition(point, faceRect);
48   // }
49   // }
50   //
51   // return new FaceAndEyePosition(faceRect, eyePosition);
52   // }
53
54   public boolean needsCalibration() {
55     return false;
56   }
57
58   /**
59    * This method loads the faceData from a file called facedata.dat which should
60    * be within the jar-file
61    */
62   private void loadFaceData() {
63
64     FileInputStream inputFile = new FileInputStream("facedata.dat");
65
66     int numClassifier = Integer.parseInt(inputFile.readLine());
67     System.out.println("numClassifier=" + numClassifier);
68     for (int c = 0; c < numClassifier; c++) {
69
70       int numArea = Integer.parseInt(inputFile.readLine());
71       Classifier classifier = new Classifier(numArea);
72       // parsing areas
73       for (int idx = 0; idx < numArea; idx++) {
74         // 54,54,91,62,296.0
75         Point fromPoint = new Point();
76         Point toPoint = new Point();
77         fromPoint.x  = Integer.parseInt(inputFile.readLine());
78         fromPoint.y = Integer.parseInt(inputFile.readLine());
79         toPoint.x = Integer.parseInt(inputFile.readLine());
80         toPoint.y = Integer.parseInt(inputFile.readLine());
81         float size = Float.parseFloat(inputFile.readLine());
82         ScanArea area = new ScanArea(fromPoint, toPoint, size);
83         classifier.setScanArea(idx, area);
84       }
85
86       // parsing possibilities face yes
87       float array[] = new float[numArea];
88       for (int idx = 0; idx < numArea; idx++) {
89         array[idx] = Float.parseFloat(inputFile.readLine());
90       }
91       classifier.setPossibilitiesFaceYes(array);
92
93       // parsing possibilities face no
94       for (int idx = 0; idx < numArea; idx++) {
95         array[idx] = Float.parseFloat(inputFile.readLine());
96       }
97       classifier.setPossibilitiesFaceNo(array);
98       classifier.setPossibilityFaceYes(Integer.parseInt(inputFile.readLine()));
99       classifier.setPossibilityFaceNo(Integer.parseInt(inputFile.readLine()));
100
101     }
102   }
103   // private Point readEyes(BufferedImage image, Rectangle2D rect) {
104   //
105   // // now we cluster the black image points and try to find the inner eye
106   // /*
107   // * BlackHoleDetector bhd = new BlackHoleDetector(image, rect);
108   // * bhd.detect(20);
109   // *
110   // * return bhd.getPosition();
111   // */
112   //
113   // EyeDetector ed = new EyeDetector(image, rect);
114   // return ed.detectEye();
115   // }
116
117 }