Welcome to Seunghun Oh's web page


Assignment 3: Segmentation, Object Shape Analysis, and Labeling

Collaborated with Lang Gao


the goal of this programming assignment is to design and implement two algorithms that delineate objects in video images and analyze their shapes.

The three datasets out of the given four) that we have utilized in our program are the aquarium, bats, and cells datasets.

Program Report Questions

  1. The two segmentation algorithms utilized for all three datasets are absolute thresholding and region growing/watershedding. For absolute thresholding, there were different thresholding values required when creating the binary images. The cell dataset requires a much lower binary threshold than the other two. Also, the absolute thresholding method required some morphing (one iteration of erosion/dilation). Region growing/watershedding also required different threshold values. The cell required around 65 for the delineation to be optimal, while the other two required around 100 in order to have opitmal results.
  2. The connected component labeling algorithm that we used was a recursive contour-defining algorithm that we originally saw online and then integrated into our program. The recursive contour-defining method runs through and delineates each object in the foreground and gives it a rancom color. However, a change in frame will not preserve the color of each object labeled.
  3. In order to clean up background noise, we first created a binary image. Then, a single iteration of erosion/dilation was performed. Usually, this method got rid of most of the noise. However, in the case of the aquarium, we were unable to cleanly delineate fish.
  4. The cell dataset had very small data and rather good circularity ratios, while the bat dataset tended to not have good circularity ratios. The fish dataset's circularity ratios were very hard to discern properly, due to the immense amount of background noise. The bats' wing structure tended to lower their circularity because it was horizontally elongated, while the cell dataset's circularity was high because the cells tended to be rounder. While the areas were unpredictable, the bats' areas changed frequently because of the 2D nature of the video.
  5. If we had more time, we would have liekd to clean up our code as well as focusing on finding a better way to reduce background noise. Because o the immense amount of background noise in the fish dataset, we were not able to pick out many of the smaller fish in the tank. Another thing my partner and I dicussed was the potential usage of color in order to delineate objects. Fish in the tank tended to be bluer than their environment. We would have attempted to detect the fish more accurately with such an algorithm. Also, with more time, my partner and I wish that we could have implemented more accurate algorithms. While the images were able to be discerned with little background noise, a realistic dataset (such as the fish dataset) completely ruined our algorithms' abilities to discern objects. However, in terms of the assignment, I believe that my team has succeeded in creating algorithms that discern objects from the background with a relatively good accuracy.

Overall, I have learned a lot about segmentation, mostly that it is very difficult to correctly discern objects in real-life settings. I would imagine that industry-standard algorithms would also be insanely difficult to program and would still produce inaccurate results relative to the human brain.


Below are the screenshots of the circularity calculations as well as both algorithms' results:

Algorithm: Absolute thresholding

Cell

Bat

Fish


Algorithm: Region Growth/Watershed

Cell

Bat

Fish


Source: https://www.packtpub.com/books/content/segmenting-images-opencv