de.unihalle.informatik.MiToBo.apps.singleCellTracking2D
Class TrackAnalyzer

java.lang.Object
  extended by de.unihalle.informatik.MiToBo.apps.singleCellTracking2D.ReportGenerator
      extended by de.unihalle.informatik.MiToBo.apps.singleCellTracking2D.TrackAnalyzer

public class TrackAnalyzer
extends ReportGenerator

class for analyzing movement and shape of already tracked objects in a given label image

Author:
glass

Field Summary
private  java.util.Hashtable<java.lang.Integer,java.util.Vector<java.awt.geom.Point2D.Double>> centroids
           
private  double maxDist
           
private  java.util.Hashtable<java.lang.Integer,java.lang.Integer> offsets
           
private  java.util.Vector<Trajectory2D> trajectories
           
 
Fields inherited from class de.unihalle.informatik.MiToBo.apps.singleCellTracking2D.ReportGenerator
bgLabel, deltaT, deltaX, deltaY, minTrackLength, naString, nf, unitAngle, unitT, unitXY
 
Constructor Summary
TrackAnalyzer(MTBImage labelImg, int minTrackLength)
           
TrackAnalyzer(java.util.Vector<Trajectory2D> trajectories)
           
 
Method Summary
private  double angle(java.awt.geom.Point2D.Double p, java.awt.geom.Point2D.Double q)
           
private  double distance(java.awt.geom.Point2D.Double p, java.awt.geom.Point2D.Double q, double deltaX, double deltaY)
           
private  void extractTrajectoriesWithOffsets()
          extract Hashtables containing the centroid locations of each trajectory
and the offsets for the starting time of each trajectory
private  java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getDirectionalDifferences(java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> directions)
           
private  java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getDirectionalities(java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> netDistances, java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> totalDistances)
           
private  java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getDirections()
           
private  java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getDistances()
           
private  java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getNetDirections()
           
private  java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getNetDistances()
           
private  java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getNumberOfFrames()
           
private  java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getPersistences(java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> speeds, java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> dirDiffs)
           
private  java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getSpeeds(java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> distances)
           
private  java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getTotalDistances(java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> distances)
           
 java.lang.String makeReport()
           
 
Methods inherited from class de.unihalle.informatik.MiToBo.apps.singleCellTracking2D.ReportGenerator
getAverageMean, getAverageStdDev, getObjectsMeans, getObjectsStdDevs, getSettings, hashtableToString, hashtableToString, numberToString, pointHashtableToString, pointHashtableToStringX, pointHashtableToStringY, pointVectorToString, pointVectorToStringX, pointVectorToStringY, setDeltaT, setDeltaX, setDeltaY, setMinTrackLength, setUnitAngle, setUnitT, setUnitXY, trim, vectorToString, vectorToString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

centroids

private java.util.Hashtable<java.lang.Integer,java.util.Vector<java.awt.geom.Point2D.Double>> centroids

maxDist

private double maxDist

offsets

private java.util.Hashtable<java.lang.Integer,java.lang.Integer> offsets

trajectories

private java.util.Vector<Trajectory2D> trajectories
Constructor Detail

TrackAnalyzer

public TrackAnalyzer(MTBImage labelImg,
                     int minTrackLength)

TrackAnalyzer

public TrackAnalyzer(java.util.Vector<Trajectory2D> trajectories)
Parameters:
trajectories -
Method Detail

angle

private double angle(java.awt.geom.Point2D.Double p,
                     java.awt.geom.Point2D.Double q)
Parameters:
p -
q -
Returns:
angle (degree [0, 359]) between the vector formed by the points p and q and the x-axis (vector (1,0))

distance

private double distance(java.awt.geom.Point2D.Double p,
                        java.awt.geom.Point2D.Double q,
                        double deltaX,
                        double deltaY)
Parameters:
p -
q -
deltaX -
deltaY -
Returns:
euclidean distance between p an q scaled by parameters deltaX and deltaY

extractTrajectoriesWithOffsets

private void extractTrajectoriesWithOffsets()
extract Hashtables containing the centroid locations of each trajectory
and the offsets for the starting time of each trajectory


getDirectionalDifferences

private java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getDirectionalDifferences(java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> directions)
Parameters:
directions -
Returns:
differences in directions of movement (degree [0, 180]) of each object from one frame to another
key: object-id, value: list of directions

getDirectionalities

private java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getDirectionalities(java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> netDistances,
                                                                                                      java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> totalDistances)
Parameters:
netDistances - net distance the objects moved
totalDistances - total distance the objects moved
Returns:
directionalities of the distinct objects
key: object-id, value: directionality

getDirections

private java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getDirections()
Returns:
directions of movement (degree [0, 359]) of each object from one frame to another
key: object-id, value: list of directions

getDistances

private java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getDistances()
Returns:
distances that the objects moved from one frame to another
key: object-id, value: list of distances

getNetDirections

private java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getNetDirections()
Returns:
net directions (degree [0, 359]) of the single objects,
i.e. the angle between the vector formed by the first and the last position of an object and the x-axis
key: object-id, value: net direction

getNetDistances

private java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getNetDistances()
Returns:
net (euclidean) distances the objects moved
key: object-id, value: net distance

getNumberOfFrames

private java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getNumberOfFrames()
Returns:
number of frames each object is available

getPersistences

private java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getPersistences(java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> speeds,
                                                                                                  java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> dirDiffs)
Parameters:
speeds -
dirDiffs -
Returns:
persistence values of each object in every frame calculated as speed / (1 + (100 / 360) * directional change) key: object-id, value: list of persistences

getSpeeds

private java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getSpeeds(java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> distances)
Parameters:
distances - distances the objects moved
Returns:
key: speeds of the objects between consecutive frames
key: object-id, value: list of speeds

getTotalDistances

private java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> getTotalDistances(java.util.Hashtable<java.lang.Integer,java.util.Vector<java.lang.Double>> distances)
Parameters:
distances - distances that the objects moved from one frame to another
Returns:
total (euclidean) distances the objects moved
key: object-id, value: total distance

makeReport

public java.lang.String makeReport()
Specified by:
makeReport in class ReportGenerator
Returns:
report (String) that contains information about the movement of the labeled objects from the input image