NivaarExam PrepOfficial exam papers ↗

20-Bio-B4 Robotics · December 2016

Question 5 of 6: Application — Cell Tracking

Nivaar worked solution (AI-drafted; not reviewed by a licensed engineer)

Notes on this paper

Paper format: National Exams, December 2016 — 04-Bio-B4 Image Processing. Three hours, open book (any paper notes or textbooks permitted, but no calculator or computer). Six questions of equal value (20 marks each); five constitute a complete paper and only the first five appearing in the answer book are marked. All six are solved here, because this set is a study resource rather than an examination script. Every question is essay/descriptive (definitions, algorithm/system design) except the convolution-size arithmetic and FFT/3D-convolution items in Question 2, and the illustrative numeric design examples worked into Questions 5 and 6.

Reference texts (the books a candidate should have reviewed for this subject):

Question 5: Application — Cell Tracking (20 marks)

Question text not reproduced: the examination questions are © Engineers and Geoscientists BC. Open the official past paper (linked at the top of this page) to read the question, then follow the worked solution below.

Given. A per-frame detection function returning $(x,y,p)$ triples (position + confidence), a 1-minute frame interval, a maximum inter-frame displacement of 20 px (one cell diameter), and detections that can be false positives (spurious, typically low $p$) or false negatives (a real cell missed).

Find. A tracking system that returns, for every currently-detected cell, its trajectory across all past frames in which it was present, robust to the stated detector imperfections.

Approach. Because the detector already supplies a confidence score, filter out low-confidence (likely spurious) detections BEFORE attempting to associate anything across frames, then solve the remaining association problem with a bounded-radius nearest-centroid search, using the stated maximum-displacement bound to disambiguate ordinary motion from cell division.

find_cells(I_t)(x,y,p) detectionsConfidence filterp >= thresholdData associationnearest centroid,search r = 1 diameterClassify match:1-1 move / 1-2 divide/ 0 lostUpdate trajectories+ report divisionsper-celltrajectories
Confidence-aware cell-tracking pipeline: reject spurious low-confidence detections first, then track and classify via bounded-radius nearest-centroid data association.
  1. Filter by confidence. Discard every detection with $p$ below a fixed threshold (e.g. $p\ge0.5$) BEFORE any temporal reasoning, since a spurious detection has no real trajectory to join and would otherwise corrupt the association step; this directly reuses the confidence score find_cells already provides rather than inventing a separate spurious-detection filter.
  2. Associate by nearest centroid within the motion bound. For every surviving detection in frame $t$, search frame $t{+}1$ for every surviving detection within the stated maximum displacement (20 px). Because the bound is physically stated (one cell diameter per minute), this search radius is not a tuning parameter to guess — it follows directly from the problem statement.
  3. Classify each match by count. Exactly one candidate within range $\Rightarrow$ ordinary tracked motion (append the new position to that cell's trajectory). Zero candidates within range $\Rightarrow$ the cell was lost (moved out of frame, or missed by the detector that frame) — log it as lost rather than forcing an incorrect match to a distant, unrelated detection. Two or more candidates within range of one frame-$t$ detection is the signature of division: record a division event at that location and start a new trajectory for each daughter.
  4. Handle a missed detection (false negative) gracefully. If a tracked cell has zero candidates in frame $t{+}1$ but reappears within the motion bound of its LAST known position in frame $t{+}2$, treat that as a one-frame detector miss rather than a genuine loss (interpolate the missing frame's position) — distinguishing a true exit/occlusion from a transient detector failure without ever needing to re-run find_cells itself.
RequirementSystem componentDesign justification
Reject spurious detectionsConfidence-threshold filter (step 1)Uses the confidence $p$ the detector already reports
Per-cell trajectory (x,y, all past frames)Nearest-centroid association (steps 2–3)Search radius = the stated maximum displacement (20 px)
Robust to missed detectionsShort-gap interpolation (step 4)Distinguishes a transient detector miss from a true exit
Division event log1-to-2 match classification (step 3)A division is, by definition, one parent centroid mapping to two nearby daughters

The pipeline filters detections by confidence (threshold $p\ge0.5$) so that spurious low-confidence detections are dropped, tracks a cell that moves by less than the 20 px bound as a single one-to-one match, and flags a cell that splits into two daughters both within the search radius of the parent's centroid as a one-to-two division event. Detections more than 20 px apart are reported as "lost" rather than forced into a spurious long-range match.

Check: assumes the confidence-threshold and search-radius parameters (here $p\ge0.5$, 20 px) generalize across the whole recording; a real deployment would tune the threshold against a small labelled validation clip rather than fixing it a priori, and the short-gap interpolation in step 4 assumes at most one consecutive missed frame per cell.