It seems that the radius of each circle is a constant R. (If not, arrange the logic below.)
Organize the data as follows.
Make a list of all colors.
Make a dictionary, the keys are the colors in the above list, the value for a specific color is the list of the centers of the circles of that color.
Make an empty list L, at the end it will contain all needed circles.
We will now loop among colors. Let color0 be such a color.
Let (x0, y0) be the center of a circle of this color. So we are looping among them. If the corresponding circle is already in L, everything is fine, go on to the next center in this color, if any. Else inspect if this center survives, and should be added to the list...
For each other color color1, and for each center (x1, y1) in this other color compare the distance between the centers (x0, y0) and (x1, y1) with the common radius R, if it is smaller than add boths centers to the list L and go to the next point (x0, y0). (If not still search...)
After this search, the list L contains the needed centers. (It may be of course better to add to the list objects that record all the data, e.g. color, center, et caetera depending on the needs.)