
This is what my OpenCV implementation looks like on a checkerboard image. The resulting coordinates fall on or near the corners, but most of them have more than 1 point (190 points were plotted). The algorithm was:
- Compute the image gradient.
- Using a 3x3 window for each pixel location, find "lambda_min" -- the minimum eigenvalue of the outerproduct of the gradient in that window.
- Threshold lambda_min to find the corners.
Most of the corners have multiple dots as well (it also detected 190 points). This can be improved on by enforcing a minimum separation space for each detected point. If we use a minimum distance of 3 pixels, the 49 points will be detected correctly :
For this last image I used OpenCV's function cvGoodFeaturesToTrack, which uses Harris' criterion and allows you to specify a minimum separation space. So it looks like I don't have to write any more code for detecting interest points. I'll post some more pictures once I finish creating some test sets.
Resources:
- Y. Ma, S. Soatto, J. Kosecka, S. Sastry, An Invitation to 3D Vision, chapter 4 & 11
- Chris Harris and Mike Stephens, A Combined Corner and Edge Detector, 1988
No comments:
Post a Comment