MATLAB: Find center of mass of parts of a matrix

center of masscentroid

Hi, Let us say that I have a matrix as shown below:
Then I apply a treshold to this matrix and am left with a region of interest. As such:
How can I find the center of mass for this region of interest (using values from the corresponding indexes in the first matrix) and the location of this center of mass in the original matrix?
Thanks for any help

Best Answer

Well, go back to the definition of the centre of mass, which is just a weighted mean:
%inputs:
%originalmatrix: the original matrix
%binarisedmatrix = originalmatrix > threshold; %the thresholded matrix, a logical array
[rows, cols] = ndgrid(1:size(originalmatrix, 1), 1:size(originalmatrix, 2));
rowcentre = sum(rows(binarisedmatrix) .* originalmatrix(binarisedmatrix)) / sum(originalmatrix(binarisedmatrix));
colcentre = sum(cols(binarisedmatrix) .* originalmatrix(binarisedmatrix)) / sum(originalmatrix(binarisedmatrix));