Although counting red pixels requires looking at each pixel, just like finding the centroid.
The centroid calculations will sum the locations (much the same as counting).
At the end of the loop the locations are averaged to yield the centroid.
11 milliseconds is pretty fast for 600x600, don't you think?
I can see that once a red pixel is found, one could do a small sub search, say 10x10 to make sure its not an anomaly.
Another approach might be to capitalize on the size of the dot.
Say it has radius 10 pixels, then we can search the image looking at every 10th pixel first.
If is red, do the mini-search, if it is an anomaly proceed with the same main search.
I will do some testing. It looks like the algorithm can be improved.