Created Date : 2011.10
Language : C/C++
Tool : Microsoft Visual C++ 2008 Library & Utilized : OpenCV 2.3
Reference : SIFT reference
etc. : template Image, WebCam
I made SIFT matching program using OpenCV 2.3.
I was wondering how to know the object pose.
In the internet, there are many source about sift, surf. But most of code introduced about only descripter and matching. There is no code to find object pose.
So I made this code and I should disclose this code.
This code uses openCV functions very useful.
cvExtractSURF, cvFindHomography...
I made matching code to the class. Class file name is MareMatchingClass.h/cpp.
You can use my class in the source very easily.
1. Create Matching class
CMareMatchingClass MMathing;
2.Input PatchImg
MMathing.ExtractPatchSurf(PatchImg);
3.Find PatchImg in the background img
MMathing.GetObjectRectAndBestH(BackGroundImg, &rect4pt);
4.Drawing the rect(rect4pt).
5.Repeat, go to the 3.
The class is consist of like below process;
1. Extract Feature -> use cvExtractSURF function
2. Find Matching point
3. Select some feature in the mached feature points, randomly.
4. calculate Homography matrix. This is geometry relationship between patch and background image.
5. transform features in the patch image by Homography matrix.
6. compare the transformed features to the background features.
7. evaluate how much is the homography exact.
7. repeat 4~6 and select best H.
<source code>
I think the source code is not best.
There are still shortage the source code.
It would need futher improvemnet.
so I want to discuss with you. Please leave your valueable opinion.
Thank you.
Have a nice day~. ^^
Oh~ english is very difficult.....