*
* @author Florian Frankenberger
*/
+@LATTICE("R<CT,R*")
+@METHODDEFAULT("OUT<THIS,THIS<IN,THISLOC=THIS,RETURNLOC=OUT")
public class LEAImplementation {
+ @LOC("CT")
private ClassifierTree classifierTree;
+ @LOC("R")
private Rectangle2D lastRectangle;
public LEAImplementation() {
this.loadFaceData();
}
- public FaceAndEyePosition getEyePosition(Image image) {
+ @LATTICE("OUT<V,V<THIS,THIS<IN,V*,THISLOC=THIS,RETURNLOC=OUT")
+ @PCLOC("THIS")
+ public FaceAndEyePosition getEyePosition(@LOC("IN") Image image) {
if (image == null)
return null;
-
- Rectangle2D faceRect = classifierTree.locateFaceRadial(image, lastRectangle);
- System.out.println("FACE RECT=" + faceRect);
- EyePosition eyePosition = null;
+ @LOC("THIS,LEAImplementation.R") Rectangle2D faceRect =
+ classifierTree.locateFaceRadial(image, lastRectangle);
+ if (faceRect.getWidth() > image.getWidth() || faceRect.getHeight() > image.getHeight()) {
+ return null;
+ }
+ @LOC("V") EyePosition eyePosition = null;
if (faceRect != null) {
-
lastRectangle = faceRect;
- Point point = readEyes(image, faceRect);
+ faceRect = null;
+ @LOC("V") Point point = readEyes(image, lastRectangle);
if (point != null) {
- eyePosition = new EyePosition(point, faceRect);
+ eyePosition = new EyePosition(point, lastRectangle);
}
+ } else {
+ lastRectangle = null;
}
- System.out.println("eyePosition="+eyePosition);
-
- return new FaceAndEyePosition(faceRect, eyePosition);
+ System.out.println("eyePosition=" + eyePosition);
+
+ return new FaceAndEyePosition(lastRectangle, eyePosition);
}
- private Point readEyes(Image image, Rectangle2D rect) {
- EyeDetector ed = new EyeDetector(image, rect);
+ @LATTICE("OUT<P,P<IN,OUT<THIS,THISLOC=THIS,RETURNLOC=OUT")
+ @PCLOC("P")
+ private Point readEyes(@LOC("IN") Image image, @LOC("IN") Rectangle2D rect) {
+ @LOC("OUT") EyeDetector ed = new EyeDetector(image, rect);
return ed.detectEye();
}
FileInputStream inputFile = new FileInputStream("facedata.dat");
- classifierTree = new ClassifierTree();
-
int numClassifier = Integer.parseInt(inputFile.readLine());
- System.out.println("numClassifier=" + numClassifier);
+ classifierTree = new ClassifierTree(numClassifier);
for (int c = 0; c < numClassifier; c++) {
int numArea = Integer.parseInt(inputFile.readLine());
classifier.setPossibilityFaceYes(Integer.parseInt(inputFile.readLine()));
classifier.setPossibilityFaceNo(Integer.parseInt(inputFile.readLine()));
- classifierTree.addClassifier(classifier);
+ classifierTree.addClassifier(c, classifier);
}
}
- // private Point readEyes(BufferedImage image, Rectangle2D rect) {
- //
- // // now we cluster the black image points and try to find the inner eye
- // /*
- // * BlackHoleDetector bhd = new BlackHoleDetector(image, rect);
- // * bhd.detect(20);
- // *
- // * return bhd.getPosition();
- // */
- //
- // EyeDetector ed = new EyeDetector(image, rect);
- // return ed.detectEye();
- // }
}