de.unihalle.informatik.MiToBo.apps.singleCellTracking2D
Class TrackAnalyzer
java.lang.Object
de.unihalle.informatik.MiToBo.apps.singleCellTracking2D.ReportGenerator
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
|
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 |
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
TrackAnalyzer
public TrackAnalyzer(MTBImage labelImg,
int minTrackLength)
TrackAnalyzer
public TrackAnalyzer(java.util.Vector<Trajectory2D> trajectories)
- Parameters:
trajectories
-
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 movedtotalDistances
- 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