Neglecting image noise, does the IPAN algorithm return the same "dominant points" as we zoom in on an object? As we rotate the object?
Give the reasons for your answer.
Try it! Use PowerPoint or a similar program to draw an "interesting" white shape
on a black background. Turn it into an image and save. Resize the object several
times, saving each time, and reposition it via several different rotations. Read it
in to OpenCV, turn it into grayscale, threshold, and find the contour. Then use
cvFindDominantPoints()
to find the dominant
points of the rotated and scaled versions of the object. Are the same points found
or not?
Finding the extremal points (i.e., the two points that are farthest apart) in a closed contour of N points can be accomplished by comparing the distance of each point to every other point.
What is the complexity of such an algorithm?
Explain how you can do this faster.
Create a circular image queue using CvSeq
functions.
What is the maximal closed contour length that could fit into a 4-by-4 image? What is its contour area?
Using PowerPoint or a similar program, draw a white circle of radius 20 on a black background (the circle's circumference will thus be 2 π 20 ≈ 125.7. Save your drawing as an image.
Read the image in, turn it into grayscale, threshold, and find the contour. What is the contour length? Is it the same (within rounding) or different from the calculated length?
Using 125.7 as a base length of the contour, run cvApproxPoly()
using as parameters the following fractions of the base
length: 90, 66, 33, 10. Find the contour length and draw the results.
Using the circle drawn in exercise 5, explore the results of cvFindDominantPoints()
as follows.
Vary the dmin and dmax distances and draw the results.
Then vary the neighborhood distance and describe the resulting changes.
Finally, vary the maximal angle threshold and describe the results.
Subpixel corner finding. Create a white-on-black corner in PowerPoint (or similar drawing program) such that the corner sits on exact integer coordinates. Save this as an image and load into OpenCV.
Find and print out the exact coordinates of the corner.
Alter the original image: delete the actual corner by drawing a small black circle over its intersection. Save and load this image, and find the subpixel location of this corner. Is it the same? Why or why not?
Suppose we are building a bottle detector and wish to create a "bottle" feature. We have many images of bottles that are easy to segment and find the contours of, but the bottles are rotated and come in various sizes. We can draw the contours and then find the Hu moments to yield an invariant bottle-feature vector. So far, so good'but should we draw filled-in contours or just line contours? Explain your answer.
When using cvMoments()
to extract bottle contour
moments in exercise 8, how should we set isBinary
?
Explain your answer.
Take the letter shapes used in the discussion of Hu moments. Produce variant images of the shapes by rotating to several different angles, scaling larger and smaller, and combining these transformations. Describe which Hu features respond to rotation, which to scale, and which to both.
Make a shape in PowerPoint (or another drawing program) and save it as an image.
Make a scaled, a rotated, and a rotated and scaled version of the object and then store
these as images. Compare them using cvMatchContourTrees()
and cvConvexityDefects()
. Which is better for matching the shape? Why?