|
|
Re: How to calculate the angle between two images?
Posted:
Apr 6, 2009 4:54 AM
|
|
"khoo" <jim_khoo@hotmail.com> wrote in message <grce8v$8g$1@fred.mathworks.com>... > > Why on earth are you trying to convert an image into a 1 dimensional vector? you are correlating 2 histograms - histograms are essentially graphs - in your case angle along the x axis, number of pixels of that angle in y direction. If you have say 256 angles, then each bin represents (2*pi)/256 radians. Thus the histogram will be a vector of 256 numbers, each number representing the number of pixels of that angle. > > > > I suggest you carefully read help hist(), doesn't that default to 10 bins - you will need to have much better resolution than that. > > > > I have had a look at your images, and would have thought they were ideally suited to this methodology. > > > > Regards > > > > Dave Robinson > > Bro Dave, this is my code currently...and i ady change the hist not to default 10 binsand set to 256.. > > > clear all;clc > > im1=imread('image1.jpg'); > im11=rgb2gray(im1); > im111=im2double(im11); > [dx,dy]=gradient(im111); > p1=atan2(dy,dx); > im1111=edge(p1,'canny'); > bw1 = bwmorph(im1111,'dilate'); > im11111=p1.*bw1; > im6=hist(im11111(:),256); > im66=fft(im6); > > im2=imread('image2.jpg'); > im22=rgb2gray(im2); > im222=im2double(im22); > im333=zeros(size(im111)); > im333(1:size(im2,1),1:size(im2,2))=im222; > [dx,dy]=gradient(im333); > p2=atan2(dy,dx); > im2222=edge(p2,'canny'); > bw2 = bwmorph(im2222,'dilate'); > im22222=p2.*bw2; > im7=hist(im22222(:),256); > im77=conj(fft(im7)); > im99=im66.*im77; > im8=real(ifft(im66.*im77)); > XXX=hist(im8(:),256); > stem(1:256,XXX, 'Marker', 'none'); > > and this is my new image2.. > http://i278.photobucket.com/albums/kk119/khoo011/image2-1.jpg > > just now i check all the histogram for the im11111 and im22222..all is correct..but once i fft the both histograms..when i inverse the FFT..the histogram cannot inverse and still stay in FFt mode...can you help me check my code got any problem ? and teach me how to fix the problem..so far i find the peak is at left side which is after FFT..
Why are you histogramming im8? which should be the correlation that you are looking for - just plot im8 and if everything else is correct then you should have one dimensional distribution reaching a peak at the position corresponding to the relative rotation angle of the 2 images.
Regards
Dave Robinson
|
|