calculate the centre of mass of an image

Average rating
(0 votes)

This function calculates the centre of mass of an image. Needs to be supplied with image wave, and abscissa and ordinate values.

Function/c centreofMass2D(w,xx,yy)
wave w,xx,yy
//w is a 2D image wave.
//xx and yy are abscissa and ordinates of image wave
//xx and yy should be 1 point larger than w, as we are considering an image wave
//return C-O-M via a complex value
 
variable ii,jj,totalmass=0,sumrmx=0,sumrmy=0
 
for(ii=0;ii<dimsize(w,0);ii+=1)
	for(jj=0;jj<dimsize(w,1);jj+=1)
		totalmass+=w[ii][jj]
		sumrmx += w[ii][jj]*(xx[ii]+xx[ii+1])/2
		sumrmy+=w[ii][jj]*(yy[jj]+yy[jj+1])/2
	endfor
endfor
return cmplx(sumrmx/totalmass,sumrmy/totalmass)
 
End

Back to top