Shape Matching using Discrete Fourier Transform
This is the very first time messing around with DFTs so apologizes inadvance if the Math just flies over my head or my question sounds rather stupid.
Disclaimer: I have not used OpenCV API for any DFT related steps stated below
What I have done so far
Let T represent the template image and S be an image I get from the camera feed
- Grabbed the contours from T
- Applied DFT on them
- Made the attained DFTs scale invariant by dividing them with their magnitude i.e.
F[i] = F[i]/|F[i]|
- Computed their magnitude spectrum
- Log-polar transformed the magnitudes and calculated the phases i.e. angles
My questions are:
- Just to confirm, after performing Step 2, my attained descriptors are translation invariant correct?
- How do I make them rotation invariant?
- Now this is where I get really confused. After reading a couple papers on image registration, Steps 4 and 5 are needed. This is in order to calculate the phase correlation then trying to maximize this value. For my application, is this really necessary? Or do I just have to make the descriptors rotation invariant then calculate the euclidean distance to the descriptors of S and trying to minimize this value my final step?
Any help/suggestions are sincerely appreciated!
did you miss recently contributed FourierDescriptors implementation by @LBerger
You have got to be kidding! I'll look into it. Well just to quench my thirst for knowledge (I feel like I'm so close to getting it done), any thoughts on my three questions? Same goes to @LBerger
Applied DFT on them = Applied DFT on coordinates point
.... F[i] = F[i]/|F[i]| no F[i] = F[i]/Surface (except F(0) = gravity center)
How do I make them rotation invariant? you have to adjust fourier descriptors relative to reference shape
questions 3 adjust coefficient
http://fourier.eng.hmc.edu/e161/lectu...