How can I get the intensity sum of a circular region around a particular pixel?

11 visualizaciones (últimos 30 días)
I have two regions of light, in circles for which i want to calculate the intensity of region 1 (center circle) and region 2 (outher ring, for which i want to substract this center circle to only get the intensity only in the outher ring.).
How can i do this?
sum(sum(Img)) gives the total pixel intensity of the whole picture, but i want to know the different regions contributions.
According to my analysis my center circle have a high amplitude (dynamic range), while my outher ring region is very low in amplitude but is spread out within a larger area. I want to double check that big part of my measured intensity is distributed within this larger low amplitude region (noise region) compared to my high peak but small center circle.
Many thanks for any help.
  2 comentarios
Jan
Jan el 4 de Feb. de 2021
Did you determine the pixel position of the center and the radius of the ring already? Is the ring a circle or geometrically distorted?
Happy PhD
Happy PhD el 4 de Feb. de 2021
Editada: Happy PhD el 4 de Feb. de 2021
Is this the intensity inside the cirle or outside?
Yes, well I manually set the center of the mage. the regions im looking at are pretty ccircular.

Iniciar sesión para comentar.

Respuesta aceptada

Jan
Jan el 4 de Feb. de 2021
If you do have the position of the center and the radius already:
% Assuming that img is a 2D matrix/a grey scale image:
img = rand(640, 480);
x = 170; % Position of center
y = 400;
r = 31; % Radius
h = size(img, 1);
w = size(img, 2);
mask = ((1-x:h-x).' .^2 + (1-y:w-y) .^2) <= r^2;
Result = sum(img(mask), 'all')
  3 comentarios
Happy PhD
Happy PhD el 8 de Feb. de 2021
Editada: Happy PhD el 8 de Feb. de 2021
@Jan Does this claculate the area inside the circle or outside?
Jan
Jan el 8 de Feb. de 2021
Editada: Jan el 8 de Feb. de 2021
You do see the code. Then you can simply try it:
img = zeros(10, 10);
x = 6; % Position of center
y = 4;
r = 3; % Radius
[h, w] = size(img);
mask = ((1-x:h-x).' .^2 + (1-y:w-y) .^2) <= r^2;
disp(mask)
img(mask) = 2;
disp(img)
Result = sum(img(mask), 'all')
Maybe you want < instead of <=, but both use the inside of the circle. The outside would be > or >=.
Another way to find out, if this is the inside or outside: Increse the radius until the complete image is covered, e.g. r=1e6. Then you will get the sum over all existing pixels, if it is the inside of the circle, or 0 if it is the outside.
Or calculate the output for two different radii, r1 < r2. If the output is smaller for the smaller radius, you can be sure, that the algorithm measures the inside of the circle.

Iniciar sesión para comentar.

Más respuestas (0)

Community Treasure Hunt

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

Start Hunting!

Translated by