필터 지우기
필터 지우기

How to plot radial profile of a diffraction pattern?

조회 수: 6 (최근 30일)
MD DIDARUL ALAM
MD DIDARUL ALAM 2018년 1월 16일
답변: Sergey Loginov 2021년 11월 5일
My goal is to radially average a diffraction pattern (please see the attached image) obtained from femtosecond laser and then convert it to pixel vs intensity graph.

답변 (3개)

Sergey Loginov
Sergey Loginov 2021년 11월 5일
Better use accumarray based profiling! it is much much faster:
https://www.mathworks.com/matlabcentral/fileexchange/101480-very-fast-radial-profile

KSSV
KSSV 2018년 1월 16일
YOu got the image in hand.
1. Use imread to get the pixles of the image i.e to read the image.
2. USe imfindcircles to find the circles on the image.
3. Once you have circle in hand, you can get the pixel values lying inside the circle, to get the average.

Hugo Trentesaux
Hugo Trentesaux 2019년 2월 7일
Or you can program a function like this to do the averaging :
function profile = radialAverage(IMG, cx, cy, w)
% computes the radial average of the image IMG around the cx,cy point
% w is the vector of radii starting from zero
[a,b] = size(IMG);
[X, Y] = meshgrid( (1:a)-cx, (1:b)-cy);
R = sqrt(X.^2 + Y.^2);
profile = [];
for i = w % radius of the circle
mask = (i-1<R & R<i+1); % smooth 1 px around the radius
values = (1-abs(R(mask)-i)) .* double(IMG(mask)); % smooth based on distance to ring
% values = IMG(mask); % without smooth
profile(end+1) = mean( values(:) );
end
end

카테고리

Help CenterFile Exchange에서 Import, Export, and Conversion에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by