@Override public FImage get(int index) { return aligner.align(data.get(index)); }
private static FImage extractAndAlignFace(FImage img, FKEFaceDetector detector, FaceAligner<KEDetectedFace> aligner) { final List<KEDetectedFace> faces = detector.detectFaces(img); if (faces.size() == 1) return aligner.align(faces.get(0)); return null; }
private static FImage extractAndAlignFace(FImage img, FKEFaceDetector detector, FaceAligner<KEDetectedFace> aligner) { final List<KEDetectedFace> faces = detector.detectFaces(img); if (faces.size() == 1) return aligner.align(faces.get(0)); return null; }
/** * Train on a map of data. * * @param data * the data */ public void train(Map<?, ? extends List<T>> data) { final List<IndependentPair<?, FImage>> list = new ArrayList<IndependentPair<?, FImage>>(); for (final Entry<?, ? extends List<T>> e : data.entrySet()) { for (final T i : e.getValue()) { list.add(IndependentPair.pair(e.getKey(), aligner.align(i))); } } fisher.train(list); }
@Override public EigenFaceFeature extractFeature(T face) { final FImage patch = aligner.align(face); final DoubleFV fv = eigen.extractFeature(patch); return new EigenFaceFeature(fv); }
@Override public FisherFaceFeature extractFeature(T face) { final FImage patch = aligner.align(face); final DoubleFV fv = fisher.extractFeature(patch); return new FisherFaceFeature(fv); }
@Override public IndependentPair<?, FImage> get(int index) { return IndependentPair.pair(data.get(index).firstObject(), aligner.align(data.get(index).secondObject())); }
@Override public LtpDtFeature extractFeature(Q detectedFace) { FImage face = aligner.align(detectedFace); FImage mask = aligner.getMask(); return new LtpDtFeature(face, mask, weighting); }
@Override public FaceImageFeature extractFeature(T face) { FImage faceImage = aligner.align(face); FloatFV feature = FImage2FloatFV.INSTANCE.extractFeature(faceImage); return new FaceImageFeature(feature); }
@Override public void beforeUpdate(MBFImage frame) { if (frame == null) return; final List<CLMDetectedFace> faces = detector.detectFaces(frame.flatten()); if (faces.size() <= 0) return; final CLMDetectedFace face = faces.get(0); DisplayUtilities.displayName(aligner.align(face), "aligned"); DisplayUtilities.displayName(frame, "tracked"); }
@Override public void beforeUpdate(MBFImage frame) { if (frame == null) return; final List<CLMDetectedFace> faces = detector.detectFaces(frame.flatten()); if (faces.size() <= 0) return; final CLMDetectedFace face = faces.get(0); DisplayUtilities.displayName(aligner.align(face), "aligned"); DisplayUtilities.displayName(frame, "tracked"); }
@Override public LocalLBPHistogram extractFeature(T detectedFace) { final LocalLBPHistogram f = new LocalLBPHistogram(); final FImage face = aligner.align(detectedFace); final FImage mask = aligner.getMask(); f.initialise(face, mask, blocksX, blocksY, samples, radius); return f; }
/** * Train on a grouped dataset. * * @param <KEY> * The group type * @param data * the data */ public <KEY> void train(GroupedDataset<KEY, ? extends ListDataset<T>, T> data) { final List<IndependentPair<?, FImage>> list = new ArrayList<IndependentPair<?, FImage>>(); for (final KEY e : data.getGroups()) { for (final T i : data.getInstances(e)) { if (i != null) list.add(IndependentPair.pair(e, aligner.align(i))); } } fisher.train(list); } }
@Override public void beforeUpdate(MBFImage frame) { if (frame == null) return; final List<KEDetectedFace> faces = detector.detectFaces(frame.flatten()); if (faces.size() <= 0) return; final KEDetectedFace face = faces.get(0); DisplayUtilities.displayName(aligner.align(face), "aligned"); for (final FacialKeypoint kp : face.getKeypoints()) { frame.drawPoint( kp.position.transform(TransformUtilities.translateMatrix(face.getBounds().x, face.getBounds().y)), RGBColour.RED, 3); } DisplayUtilities.displayName(frame, "tracked"); }
@Override public void beforeUpdate(MBFImage frame) { if (frame == null) return; final List<KEDetectedFace> faces = detector.detectFaces(frame.flatten()); if (faces.size() <= 0) return; final KEDetectedFace face = faces.get(0); DisplayUtilities.displayName(aligner.align(face), "aligned"); for (final FacialKeypoint kp : face.getKeypoints()) { frame.drawPoint( kp.position.transform(TransformUtilities.translateMatrix(face.getBounds().x, face.getBounds().y)), RGBColour.RED, 3); } DisplayUtilities.displayName(frame, "tracked"); }
ImageUtilities.write(img, new File("/Users/jsh2/keypoints.png")); ImageUtilities.write(model, new File("/Users/jsh2/model.png")); ImageUtilities.write(aligner.align(face), new File("/Users/jsh2/aligned.png"));
ImageUtilities.write(img, new File("/Users/jsh2/keypoints.png")); ImageUtilities.write(model, new File("/Users/jsh2/model.png")); ImageUtilities.write(aligner.align(face), new File("/Users/jsh2/aligned.png"));