1. Ne tražiš jednu boju, već opseg boja jer ta naradžasta može da bude i malo svetlija i malo tamnija, malo crvenija ili žuća, itd. Redukovanjem broja boja upravo smanjuješ taj opseg. Takođe, ne tražiš 1 pixel već centar kruga koji je obojen tim nijansama.
2. Ovako kako si napisao, radiš samo na prvom frame-u i u varijanti kada ne možeš da pronađeš lopticu na očekivanoj poziciji.
for (int i=0;i<bmp.Width;i++) {
for (int f=0;f<bmp.Height;f++) {
if(bmp.GetPixel(i,f).ToArgb!="Neka Boja")
bmp.SetPixel(i,f,Black);
}}
3. Pošto se loptica kreće, sledeća očekivana pozicija je "tu negde" blizu prethodne. Dakle, treba da započneš traženje od prethodne pozicije pa, ako je ne nađeš u blizini, tražiš po celoj slici.
4. Na osnovu prvih nekoliko frame-ova moći ćeš da sračunaš vektor brzine loptice, pretpostaviš sledeću poziciju i od nje započneš traženje.
Jedino bitno jeste kako pronaći centar loptice. Ostali koraci donose brzinu izračunavanja. Probe radi, prvo svaki frame konvertuj u crno/belo (1bpp) pa vidi da li ti algoritam radi.
Acta, non verba!