Skip to content
Snippets Groups Projects
ProcrustesAnalysisComparison.java 4.6 KiB
Newer Older
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.fidentis.analyst.procrustes;

import cz.fidentis.analyst.face.HumanFace;
import cz.fidentis.analyst.face.HumanFaceFactory;
import cz.fidentis.analyst.feature.FeaturePoint;
import cz.fidentis.analyst.feature.services.FeaturePointCsvLoader;
import cz.fidentis.analyst.feature.services.FeaturePointExportService;
import cz.fidentis.analyst.feature.services.FeaturePointImportService;
import cz.fidentis.analyst.feature.utils.FileResourcesUtils;
import cz.fidentis.analyst.mesh.core.MeshModel;
import cz.fidentis.analyst.mesh.io.MeshObjLoader;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

/**
 *
 * @author Jakub Kolman
 */
public class ProcrustesAnalysisComparison {

    private static final Path FP_FILE_DIRECTORY = Paths.get(
            "Comparison","src", "main", "resources", "cz", "fidentis", "comparison", "procrustesAnalysis", "faces");
    private static final Path FACE_1_PATH = Paths.get(
             "cz", "fidentis", "comparison", "procrustesAnalysis", "faces", "0002_01_ECA.obj");
    private static final Path FACE_2_PATH = Paths.get(
             "cz", "fidentis", "comparison", "procrustesAnalysis", "faces", "0002_02_ECA.obj");

    private static final String FP_HEAD_01 = "0002_01_landmarks.csv";
    private static final String FP_HEAD_02 = "0002_02_landmarks.csv";
    private static final String HEAD_01 = "0002_01_ECA.obj";
    private static final String HEAD_02 = "0002_01_ECA.obj";

    private static final String OLD_FP_HEAD_01 = "3points_head01_landmarks.csv";
    private static final String OLD_FP_HEAD_02 = "3points_head02_landmarks.csv";
    private static final Path OLD_HEAD_01_PATH = Paths.get(
            "cz", "fidentis", "comparison", "procrustesAnalysis", "faces", "3points_head01_ECA.obj");
    private static final Path OLD_HEAD_02_PATH = Paths.get(
            "cz", "fidentis", "comparison", "procrustesAnalysis", "faces", "3points_head02_ECA.obj");




    public static void main(String[] args) throws IOException, URISyntaxException {

        FileResourcesUtils fru = new FileResourcesUtils();
        HumanFaceFactory factory = new HumanFaceFactory();
        FeaturePointImportService featurePointImportService = new FeaturePointImportService();

//        System.out.println("Working Directory = " + System.getProperty("user.dir"));

        // HEADS from the new models
        List<FeaturePoint> fpList01 = featurePointImportService.importFeaturePoints(
                FP_FILE_DIRECTORY.toString(), FP_HEAD_01);
        List<FeaturePoint> fpList02 = featurePointImportService.importFeaturePoints(
                FP_FILE_DIRECTORY.toString(), FP_HEAD_02);
        HumanFace face1 = factory.getFace(factory.loadFace(fru.getFileFromResource(FACE_1_PATH.toString())));
        HumanFace face2 = factory.getFace(factory.loadFace(fru.getFileFromResource(FACE_2_PATH.toString())));

        // HEADS from the old models
//        List<FeaturePoint> fpList01 = featurePointImportService.importFeaturePoints(
//                FP_FILE_DIRECTORY.toString(), OLD_FP_HEAD_01);
//        List<FeaturePoint> fpList02 = featurePointImportService.importFeaturePoints(
//                FP_FILE_DIRECTORY.toString(), OLD_FP_HEAD_02);
//        HumanFace face1 = factory.getFace(factory.loadFace(fru.getFileFromResource(OLD_HEAD_01_PATH.toString())));
//        HumanFace face2 = factory.getFace(factory.loadFace(fru.getFileFromResource(OLD_HEAD_02_PATH.toString())));

        face1.setFeaturePoints(fpList01);
        face2.setFeaturePoints(fpList02);

        ProcrustesAnalysis pa = new ProcrustesAnalysis(face1, face2);
        pa.analyze();

        // import fp export csv
//        List<FeaturePoint> fpList01 = featurePointImportService.importFeaturePoints(
//                FP_FILE_DIRECTORY.toString(), "3points_head02head01.fp");
//        List<FeaturePoint> fpList02 = featurePointImportService.importFeaturePoints(
//                FP_FILE_DIRECTORY.toString(), "3points_top_head02.fp");
//        FeaturePointExportService featurePointExportService = new FeaturePointExportService();
//        featurePointExportService.exportFeaturePoints(fpList01, "head01", "CSV");
//        featurePointExportService.exportFeaturePoints(fpList02, "3points_top_head02", "CSV");