Tutorial 10 - Image Processing
In this tutorial you will explore some simple image processing techniques
and investigate the advantages and drawbacks of each.
RGB to HSV conversion
Suppose you would like to determine the location of the object (the
can) in with respect to the camera. The distigushing characteristic
of the can is that it is composed mainly of red. However notice that
the can in the center of the image has multiple shades of red. Therefore,
a threshold value must be determined, which if the red component is
above the threshold, then the pixel will be considered "red".
The primary and secondary colors
To find the can, first find filter for the color red. The first approach
is to check each pixel to see if its red component is larger than some
threshold value. If so then that pixel is accepted as being "red".
Using that filtering technique produces an image like
The can is slightly distinguishable from the background, however not
nowing previously that the image was of a tin can, even a human might
not be able to tell the object from the background.
The problem with the above filtering technique is that white [255,
255, 255] also has a large red component.
Therefore, we can filter for red above a certain value and the other
components below a certain value.
This technique produces a better image
Notice that some of the white is still allowed by the filter as being
red. By adjusting the weights we can achieve a better image
The final image represents a reasonable outline of the can. Now that
you have filtered the image to find the "red" can, we would
like to determine a location in the image which will represent the "center"
of the can. An easy way to do this is to allocate two integer vectors,
lets denote them row_vec
and for each element of each vector, sum the number of pixels which
passed the test for red. Once this is completed for the entire image,
search each array for the largest value. This will give an approximation
for the row and column coordinates for the red can in the image.