Vision processing algorithms operate in real time on the system's single processor. Detecting the bins on the floor of the pool works as follows. First, the image's gradient field is calculated (both horizontal and vertical). Then, edge pixels are selected by thresholding on the magnitude of the gradient, around the mean gradient level plus one standard deviation. Then, a fast queue-based flood fill algorithm computes non-edge connected regions. Regions that are too small are discarded. Each surviving region's star-shaped boundary is determined by scanning its edge pixels rotationally from the center of mass of the region. The resulting boundary is simplified by merging nearly-collinear consecutive segments. The longest segments of the resulting coarsened boundary are selected, and their intersections are found. These intersections are used as the vertices of a candidate shape. The shape's angles are checked, and if they fall within specified bounds, the object is considered a bin.