Package de.dfki.km.text20.services.evaluators.gaze.util.metrics

Source Code of de.dfki.km.text20.services.evaluators.gaze.util.metrics.FixationMetrics

package de.dfki.km.text20.services.evaluators.gaze.util.metrics;

import java.util.List;

import de.dfki.km.text20.services.evaluators.gaze.listenertypes.fixation.Fixation;
import de.dfki.km.text20.services.evaluators.gaze.util.FixationUtil;
import de.dfki.km.text20.services.trackingdevices.eyes.EyeTrackingEvent;

/**
* Various metrics regarding fixations
*
* @author Eugen Massini
*/
public class FixationMetrics {
    /**
     * Calculates the density of a fixation based on the farmost element. 
     *
     * @param fixation
     *
     * @return TODO.
     */
    public static double calculateOpenDensity(final Fixation fixation) {
        final List<EyeTrackingEvent> trackingEvents = fixation.getTrackingEvents();
        final int lstSize = trackingEvents.size();

        double res = 0.;
        for (int i = 0; i < lstSize; ++i) {
            for (int j = i + 1; j < lstSize; ++j) {
                final EyeTrackingEvent ei = trackingEvents.get(i);
                final EyeTrackingEvent ej = trackingEvents.get(j);
                final double dist = ei.getGazeCenter().distance(ej.getGazeCenter());
                res += dist;
            }
        }
        res = res / lstSize;
        return res;

        /*
        double max = 0.0;
        List<TrackingEvent> trackingEvents = fixation.getTrackingEvents();

        for (TrackingEvent i : trackingEvents) {
            double dist = fixation.getCenter().distance(i.getGazeCenter());
            if (dist > max) max = dist;
        }

        return calculateOpenDensityWithRadius(fixation, max);
        */
    }

    /**
     * Calculates how healthy the fixation event is.
     * 
     * @param fixation
     *
     * @return .
     */
    public static double calculateTemporalHealthiness(final Fixation fixation) {
        double baseValue = 1.0;

        final FixationUtil fixationUtil = new FixationUtil(fixation);
        final long fixationDuration = fixationUtil.getFixationDuration();

        // Improve this ...
        if (fixationDuration < 50) baseValue *= 0;
        if (fixationDuration > 400) baseValue *= 0;

        return baseValue;
    }
}
TOP

Related Classes of de.dfki.km.text20.services.evaluators.gaze.util.metrics.FixationMetrics

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.