Hello.

I'm developing a video extensometer based on the identification of center of mass of circular white mark on  a black rubber specimen.

In order to deal with data in real time I have to be fast (over 100 fps). So I first identify the Zones Of Interests using this example :
http://scikit-image.org/docs/dev/auto_examples/plot_label.html

Then I compute the center of mass on each ZOI.

As I have a fast camera the ZOI between two successive images doesn't  change much. So if I extend the bounding box of my current ZOI I could be pretty confident in the fact that given circular mark in the next picture will be in the extended ZOI and the recompute an updated extened ZOI for the next image.

So this is the big picture.

You will find bellow the function I use in order to get it  :
`def barycenter(image_,minx_,miny_,maxx_,maxy_,thresh_,border_):  bw_=image_[minx_:maxx_+1,miny_:maxy_+1]>thresh_  [Y,X]=np.meshgrid(range(miny_,maxy_+1),range(minx_,maxx_+1))  region=regionprops(bw_)  minx,miny,maxx,maxy=region[0].bbox  Px_=(X*bw_).sum().astype(float)/bw_.sum()  Py_=(Y*bw_).sum().astype(float)/bw_.sum()  minx_=X[minx,miny]-border_  miny_=Y[minx,miny]-border_  maxx_=X[maxx,maxy]+border_  maxy_=Y[maxx,maxy]+border_  return Px_,Py_,minx_,miny_,maxx_,maxy_ `
As you can see I don't use region[0].centroid. I compute the moment myself

if I time my function on a 141x108 ZOI I get 504 µs

If I time this function :

`def barycenter2(image_,minx_,miny_,maxx_,maxy_,thresh_,border_):  bw_=image_[minx_:maxx_+1,miny_:maxy_+1]>thresh_  [Y,X]=np.meshgrid(range(miny_,maxy_+1),range(minx_,maxx_+1))  region=regionprops(bw_)  Px_,Py_=region[0].centroid  Px_+=minx_  Py_+=miny_    minx,miny,maxx,maxy=region[0].bbox  minx_=X[minx,miny]-border_  miny_=Y[minx,miny]-border_  maxx_=X[maxx,maxy]+border_  maxy_=Y[maxx,maxy]+border_  return Px_,Py_,minx_,miny_,maxx_,maxy_`

I get 10ms per loop !

What is really strange is if I time :

`%timeit region[0].centroid`
I get 58.6 ns per loop !

So I don't really understand why this time explose when I use it in a function ?

If someone have some insight it will be very helpfull. Even If I can use my first function, it's a pity to have to use less optimized functions.

Best regards.