@ALDAOperator(genericExecutionMode=ALL, level=STANDARD, shortDescription="Assigns unique labels to regions representing individual cells in the input binary image sequence.") public class CellTrackerBipartite extends MTBOperator
Modifier and Type | Field and Description |
---|---|
private double |
currentMax |
private int |
DISAPPEARED |
private static double |
inf |
private MTBImage |
inImg |
(package private) MTBImage |
labelImg |
private double |
maxAreaChange |
private double |
maxDist |
private Vector<Integer> |
objectLabels |
private Boolean |
objects8Connected |
private MTBImage |
resultImg |
private int |
sizeT |
private int |
sizeX |
private int |
sizeY |
private int |
totalNumberOfObjects |
private boolean |
useAutoDistance |
Constructor and Description |
---|
CellTrackerBipartite() |
CellTrackerBipartite(MTBImage inImg) |
Modifier and Type | Method and Description |
---|---|
private byte[][] |
assign(MTBRegion2DSet currentRegions,
MTBRegion2DSet nextRegions)
assign regions from one frame to regions from another frame
|
private int |
determineGatingDistance()
automatic gating distance determination according to:
"Automated and semi-automated cell tracking: addressing portability challenges" KAN, A. and CHAKRAVORTY, R. and BAILEY, J. and LECKIE, C. and MARKHAM, J. and DOWLING, M.R. |
private MTBImage |
drawRegions(MTBRegion2DSet regions) |
private double[][] |
getAreaFracMatrix(MTBRegion2DSet currRegions,
MTBRegion2DSet nextRegions) |
private double |
getAreaFraction(MTBRegion2D r,
MTBRegion2D s) |
private double |
getDistance(MTBRegion2D r,
MTBRegion2D s) |
private double[][] |
getDistMatrix(MTBRegion2DSet currRegions,
MTBRegion2DSet nextRegions) |
String |
getDocumentation() |
MTBImage |
getResultImage() |
private MTBRegion2DSet |
label(MTBImage img) |
void |
operate() |
private MTBImage |
relabel(byte[][] a,
int n,
int m,
MTBRegion2DSet nextRegions)
find and assign object labels to segmented objects in two frames
|
void |
setMaxAreaChange(double t) |
void |
setMaxDistance(double t) |
void |
setObjectsEightConnected(boolean eightconnected) |
private void |
showMaxDistTextbox() |
private void |
track()
the actual tracking method
|
void |
useAutoDistanceDetermination(boolean useAutoDistance) |
private void |
verbosePrintln(String s)
prints the given text if the verbose flag is set
|
readResolve
addOperatorExecutionProgressEventListener, addParameter, addParameter, addParameterUnconditioned, fieldContained, fireOperatorExecutionProgressEvent, getALDPortHashAccessKey, getConstructionMode, getHidingMode, getInactiveParameterNames, getInInoutNames, getInInoutNames, getInNames, getInOutNames, getMissingRequiredInputs, getName, getNumParameters, getOutInoutNames, getOutNames, getParameter, getParameterDescriptor, getParameterDescriptorUnconditioned, getParameterNames, getParameterUnconditioned, getSupplementalNames, getVerbose, getVersion, handleOperatorExecutionProgressEvent, hasInOutParameters, hasParameter, isAnnotatedParameter, isConfigured, print, print, print, printInterface, printInterface, readHistory, reinitializeParameterDescriptors, removeOperatorExecutionProgressEventListener, removeParameter, runOp, runOp, runOp, setConstructionMode, setConstructionMode, setConstructionMode, setHidingMode, setName, setParameter, setParameterUnconditioned, setVerbose, toStringVerbose, unconfiguredItems, validate, validateCustom, validateGeneric, writeHistory, writeHistory, writeHistory
@Parameter(label="binary input image", required=true, direction=IN, supplemental=false, description="binary input image", dataIOOrder=0) private transient MTBImage inImg
@Parameter(label="determine gating distance automatically", required=false, direction=IN, supplemental=false, description="determine gating distance automatically", dataIOOrder=1, callback="showMaxDistTextbox", paramModificationMode=MODIFIES_INTERFACE) private boolean useAutoDistance
@Parameter(label="maximum distance (pixels)", required=false, direction=IN, supplemental=false, description="maximum distance for two objects to be assigned to each other", dataIOOrder=2) private double maxDist
@Parameter(label="maximum area change", required=false, direction=IN, supplemental=false, description="maximum change in area (fraction) for two objects to be assigned to each other", dataIOOrder=3) private double maxAreaChange
@Parameter(label="are objects 8-connected", required=false, direction=IN, supplemental=false, description="are objects 8-connected", dataIOOrder=4) private Boolean objects8Connected
@Parameter(label="result image", required=true, direction=OUT, supplemental=false, description="result image") private transient MTBImage resultImg
private final int DISAPPEARED
private static double inf
private int sizeX
private int sizeY
private int sizeT
private int totalNumberOfObjects
MTBImage labelImg
private double currentMax
public CellTrackerBipartite() throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
public CellTrackerBipartite(MTBImage inImg) throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
inImg
- de.unihalle.informatik.Alida.exceptions.ALDOperatorException
public void operate() throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException, de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
operate
in class de.unihalle.informatik.Alida.operator.ALDOperator
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
private void track() throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException, de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
private byte[][] assign(MTBRegion2DSet currentRegions, MTBRegion2DSet nextRegions) throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException, de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
currentRegions
- vector containing the n regions from one framenextRegions
- vector containing the m regions from another framede.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
private MTBRegion2DSet label(MTBImage img) throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException, de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
img
- binary imagede.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
private MTBImage relabel(byte[][] a, int n, int m, MTBRegion2DSet nextRegions)
a
- assignment tablen
- number of objects from the current framem
- number of objects from the next framenextRegions
- regions from the next frameprivate double[][] getDistMatrix(MTBRegion2DSet currRegions, MTBRegion2DSet nextRegions)
currRegions
- nextRegions
- private double[][] getAreaFracMatrix(MTBRegion2DSet currRegions, MTBRegion2DSet nextRegions)
currRegions
- nextRegions
- private MTBImage drawRegions(MTBRegion2DSet regions)
regions
- private double getDistance(MTBRegion2D r, MTBRegion2D s)
r
- s
- private double getAreaFraction(MTBRegion2D r, MTBRegion2D s)
public MTBImage getResultImage()
public void useAutoDistanceDetermination(boolean useAutoDistance)
public void setMaxDistance(double t)
public void setMaxAreaChange(double t)
public void setObjectsEightConnected(boolean eightconnected)
private void verbosePrintln(String s)
s
- text to printprivate int determineGatingDistance() throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException, de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
private void showMaxDistTextbox()
public String getDocumentation()
getDocumentation
in class de.unihalle.informatik.Alida.operator.ALDOperator
Copyright © 2010–2020 Martin Luther University Halle-Wittenberg, Institute of Computer Science, Pattern Recognition and Bioinformatics. All rights reserved.