Assignment 4: Multiple Object Tracking

Yunchong Fu
Yanru Chen

Problem Definition

This homework has 2 parts: one is segmenting and tracking the bat database using alpha beta filter and bipartite matchign and one is tracking cell database with similar techniques. This assignement give a deep glance into tracking with practical circumstances.

Method and Implementation

tracking, bipartite matching, and filter:
Used greedy method with implementation of a graph and node class. The vertices are stored in adjacency list and graph in an array. The implementation of graph is from geeksforgeeks. However, we find that implementating the greedy method effects too much for the result so we used another algorithm call Hungarian method.
For the alpha-beta filter since it is a prediction algorithm for location, we use it to first predict location of certain object and use it optimize frame per frame object detection, which we could know whether the constant alpha-beta is correct. And use the constant to draw lines across the movement of objects.

Part2: cell segmentation:
There are two parts for this implementation: segmenting and tracking. First we identify cell location in each frame by eliminating noise finding contours through canny edge detection and eliminating small area contour as noise. Then we identify centers and dimensions of the cell and compare cell location between two frames where each cell was assgined a name and the cell that is most closed to that location in the next frame was assigned the same name. New name was added when new cells are detected. However, since the noise is still prominent between frames, the algorithm has difficulty identifying the same cell between two frames. Also, the program seem to identify multiply cell in the same location thus confused the labeling algorithm.

Part1:Multiple Object Tracking
1. beta alpha filter:
We defined KalmanFilter class with init, predict, correct function
2. bipartite matching:
AdjNode and Graph class, then the main method that implements the bipartite matching
3. tracking results:
We defined Track class with init which was implemented in Tracker class which contain init and update

Part2: cell segmentation:
thresh_callback(val, img, diffimg)
opencv2 method: cvtColor, Canny, findContours, approxPolyDP, boundingRect, minEnclosingCircle, contourArea, imshow
other method from library: deepcopy,randint, and other files for reading and writing images


Describe your experiments, including the number of tests that you performed, and the relevant parameter values.

Define your evaluation metrics, e.g., detection rates, accuracy, running time.


List your experimental results. Provide examples of input images and output images. If relevant, you may provide images showing any intermediate steps. If your work involves videos, do not submit the videos but only links to them.

part1: bat

part2: cell (without labeling)

part2: cell (with labeling and tracking)


Discuss your method and results:


From experiementing with labeling cells under images that are uneasy to segment, it is extremely difficult to label and compare movement between frame to frame except using motion history to both identify the origin of the cell and the cell's movement. Also, only contouring the cell and label based on bad filtered contour will either cause multiply identification of the same cell or mislabeling. Also, the algorithm I used has trouble identifying new cell that is adding to the group apart from old cell. This occurance can be shown the cluster of labels on the top right corner of the picture where thare are many noises and thus result in excessive identification of cell.

Credits and Bibliography

Graph and its representations
object tracking
multi tracking
multi-object tracking

Creating Bounding boxes and circles for contours

Credit any joint work or discussions with your classmates.