$30
The objective of this assignment is to experiment with one of several image segmentation techniques mentioned in the class. The options are listed below; you only need to implement and experiment with one of them. Several test images are provided for you to do experiments on. You only need to use part of the images, and you can add your own test images if you want to. You should experiment with 4~8 images in this assignment.
Task Option #1: Canny edge detector. You can experiment with different ways to get candidate edge points, choices of the two thresholds, and effects of preprocessing such as smoothing and sharpening. Also you can experiment with color images. You can compare your results with the canny edge detection results from existing library/toolbox functions.
Task Option #2: Watershed algorithm. You can experiment with different ways to compute gradients as well as effects of preprocessing. Try both gray-scale and color images. Also experiment with the use of markers, either identified automatically or interactively. Optionally you can try to implement region merging to reduce over-segmentation.
Task Option #3: Hough transform. You can use the edge points after thresholding the gradient magnitude image as inputs. You can also skip the thresholding and just use the gradient magnitude as the "weight" for each pixel. There are several optional extensions: Identification of line segments from the extracted straight lines, and the Hough transform for the detection of circles. (For this task, try to select test images that have the desired features.)
Task Option #4: The SLIC superpixel algorithm. This is mainly for color images, although you can also try it on gray-scale images. You can also play with different color spaces. Experiment with the different parameters such as the number of superpixels and the relative weights of color and location features. You can compare your results with those from available library/toolbox functions. An optional experiment is to replace the standard k-means with a different clustering algorithm such as DBSCAN and see if there's any difference. (You can use library functions for clustering methods other than k-means.)
As all the four tasks above have existed for a long time, various improvements have been suggested for them in the literature over the years. Although this is not required, you are encouraged to look them up, and even implement one if it's not too complicated. You can use a section in your report to describe what you have found.
The rules about allowed programming environments, limitations on the usage of library functions or external codes, and the submission of your report are the same as those given in the first programming assignment. You can reuse whatever functions you have implemented for the first assignment.