Path: news.mathworks.com!not-for-mail
From: "khoo" <jim_khoo@hotmail.com>
Newsgroups: comp.soft-sys.matlab
Subject: Re: How to calculate the angle between two images?
Date: Mon, 6 Apr 2009 08:25:03 +0000 (UTC)
Organization: haha
Lines: 47
Message-ID: <grce8v$8g$1@fred.mathworks.com>
References: <gr4ten$oks$1@fred.mathworks.com> <gr4u55$add$1@fred.mathworks.com> <gr4v19$60a$1@fred.mathworks.com> <gr82h2$d9h$1@fred.mathworks.com> <gr86ie$m8l$1@fred.mathworks.com> <gr96k1$cgv$1@fred.mathworks.com> <gra0s1$7d0$1@fred.mathworks.com> <gra1tq$a1t$1@fred.mathworks.com> <grad5q$cai$1@fred.mathworks.com> <graed8$ope$1@fred.mathworks.com>
Reply-To: "khoo" <jim_khoo@hotmail.com>
NNTP-Posting-Host: webapp-02-blr.mathworks.com
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Trace: fred.mathworks.com 1239006303 272 172.30.248.37 (6 Apr 2009 08:25:03 GMT)
X-Complaints-To: news@mathworks.com
NNTP-Posting-Date: Mon, 6 Apr 2009 08:25:03 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 1113304
Xref: news.mathworks.com comp.soft-sys.matlab:530627

> 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..