Asked by 3omyer 3omayer
on 19 Sep 2011

Hi; someone can help me, how to calculate Gradient using fft ???

Answer by David Young
on 20 Sep 2011

Accepted Answer

It's still not clear what you mean by 'simple "gradient"' - that could refer to a variety of things.

One possibility is that you mean just the differences between adjacent values - what you'd get by computing

diff(im, 1, 2) % x differences - x component of gradient

and

diff(im, 1, 1) % y differences - y component of gradient

for example. You can do a similar operation in the frequency domain using the fact that the differentiation operator transforms to multiplication with ik (where k is the transform variable). The code looks like this for differentiating with respect to x:

im = imread('pout.tif'); % data

% compute differencing operator in the frequency domain nx = size(im, 2); hx = ceil(nx/2)-1; ftdiff = (2i*pi/nx)*(0:hx); % ik ftdiff(nx:-1:nx-hx+1) = -ftdiff(2:hx+1); % correct conjugate symmetry

% compute "gradient" in x using fft g = ifft2( bsxfun(@times, fft2(im), ftdiff) ); imshow(g, []); % see result

As you can see, it's simpler to do it in the space domain. Why use the FFT?

Walter Roberson
on 21 Sep 2011

step 2: in the copy, change all of the x to y

step 3: in the copy, change size(im,2) to something appropriate for calculating the size in the other direction

3omyer 3omayer
on 22 Sep 2011

I actually changed size(im,2) by size(im,1), but it gives me the same results ??

this is the following code

im = imread('pout.tif');

ny = size(im, 1);

hy = ceil(ny/2)-1;

ftdiff2 = (2i*pi/ny)*(0:hy);

ftdiff2(ny:-1:ny-hy+1) = -ftdiff2(2:hy+1);

% compute "gradient" in x using fft

g2 = ifft2( bsxfun(@times, fft2(im), ftdiff2) );

figure(2),

imshow(g2, []);

David Young
on 28 Sep 2011

Sign in to comment.

Answer by Walter Roberson
on 19 Sep 2011

Is that plain "gradient", or is it "conjugate gradient" ?

(I notice you posted the same question to some other locations, all of which seem to have replied asking for clarification.)

3omyer 3omayer
on 20 Sep 2011

I want to calculate simple "gradient" for images by using "fft"

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.