How to integrate discrete values over a known x, y coordinate image

6 次查看(过去 30 天)
I know a digital image f (x, y), and the corresponding power spectrum is obtained by Fourier transform, but I need to request the integration of the power spectrum in an annular area, I want to use integral2 It is, but I only have the value of f (x, y) and the coordinate value (x, y), I do n’t know how to use double integration。
ps:the power spectrum like this
and I want to integrate the power spectrum in an annular region like this
and the integral is
is the power spectrum of the image f(x,y)(A random image),and i calculate it by this
I=fftshift(ft2(image);
s_power = abs(I).^2;
But s_powers is (x, y) coordinate, I could not calculate its double integral, ask for help!SOS!
  4 个评论
haha mark
haha mark 2020-5-13
I'm sorry to bother you, but I didn't see your homepage prompt when I emailed you. I'm too anxious to solve this problem. I'm sorry to trouble you. I'm very sorry. I didn't intend to disturb you, but I found your answer very helpful. I sincerely beg your forgiveness. I really need your help, sorry to bring you a bad mood
haha mark
haha mark 2020-5-13
I am so sad,I really didn't mean it.I found a question you answered very useful, so I am too eager to ask you, so that I did not click on your personal homepage, I am really sorry, it is indeed my fault, hope you forgive me.

请先登录,再进行评论。

采纳的回答

darova
darova 2020-5-13
Here is the idea
% calculate increments
dx = x(2)-x(1);
dy = y(2)-y(1);
% assume A is your image
% assume X and Y are your 2d matrices of coordinates
R = hypot(X,Y); % calculate radius
ix = r1 <= R & R <= r2; % boundaries of integration
A1 = A*0; % preallocation
A1(ix) = A(ix); % region of interest
S = 0;
for i = 1:size(A1,1)
for j = 1:size(A1,2)
s = A1(i:i+1,j:j+1); % 4 neigbour values
S = S + sum(s(:)); % sum values
end
end
S = S*dx*dy/4; % value of integral
  3 个评论
darova
darova 2020-5-14
You are calculating volume under the the surface
Volume is average height and dx,dy:
I forgot to add this line. It's because you have a complicated shape, you have to sum only nonzero values
s = A1(i:i+1,j:j+1); % 4 neigbour values
if all(s(:))
S = S + sum(s(:)); % sum values
end
Little explanation

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Numerical Integration and Differentiation 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by