GV12/3072
Coursework 1
This is the first
coursework for course GV12/3072 on Image Processing. The subject of the
coursework is simple image segmentation. For a basic pass in the
coursework, you need to make a good attempt at the core section. To get
full marks you need to have a good go at one or more of the additional
sections.
I recommend you use matlab, but you are free to use any programming
language you choose.
Hand in a short report on your work, which should be two written sides
of A4 at most, plus any pictures and plots showing your results and a
print out of your code. The short report should start with a brief list
of what you have attempted and to what extent you have acheived each
item. Next, write a short description of the methods you used for each
part together with any conclusions you have drawn from your
experiments.
The hand-in deadline for this coursework is 12:00 on 22nd October. Hand
in your report to JJ or Tricia in the CS departmental office. Make sure
you attach a completed coursework cover
sheet to your work.
Core section
Here is a classic image processing
test-image called girlface:
We would like to separate the skin region from the background of the
image and surrounding parts of the head.
- Download the image above and
plot a histogram of the grey levels it contains.
- Write a short program to threshold the image and try to identify
a good threshold by trial and error.
- Create a ground truth segmentation. If you are using Matlab,
look up the function
roipoly
, which will allow you to do
this easily.
- Use your ground truth segmentation to plot an ROC curve for your
thresholding algorithm. What threshold does the ROC curve suggest? How
does it compare to your trial and error estimate?
NOTE: Feel free to use another image
in addition to this one, but clearly define how that segmentation task
has different challenges to the girlface.
Additional section
You do not need to do all of this, but
to get more than a basic pass have a go at one part at least.
- Examine the effects of noise on
the performance of your segmentation algorithm. Add various levels of
synthetic noise to the face image and see how the performance changes.
You can choose from several types of noise, but be careful that the
image grey levels remain valid after you add the synthetic noise.
- Implement a region growing algorithm and compare its performance
at segmenting the face in the image above with the performance of the
thresholding algorithm.
- Implement the ad-hoc algorithm for automatic threshold
selection. How well does its suggestion match the thresholds chosen by
trial and error and from the ROC curve?
- Attempt to improve segmentation by first normalizing by a
hand-made background. Where does this help or hurt?