Mina tankar, för vad de är värda:
Ett enkelt mått på skillnaden är: abs(r1-g2)+abs(g1-g2)+abs(b1-b2) Max-värdet är då 765 (3*255) för motsatsfärger och min-värdet är 0. Du skulle också kunna ge varje skillnad en koefficient - ögat är långt mer känsligt för grönt än för andra färger. Jag kan se om jag kan gräva fram lite länkar om ämnet, det finns en del forskning kring det, men jag skulle rekommendera något i stil med 0.8*abs(r1-g2)+1*abs(g1-g2)+0.8*abs(b1-b2) som ger mer vikt åt grön.
Vad gäller en algoritm för att faktiskt försöka utvinna den mest förekommande färgen skulle jag göra typ så här:
Dela upp bilden i 2*2 pixlar stora block. Beräkna skillnaden mellan varje par av pixlar, totalt 6 par (alt. endast de 4 kantgrupperna) sedan väljer du ut det par i varje block som har minst skillnad och beräkna medelvärdet mellan dessa färger. Detta kan du kalla för det blockets medianfärg. Sedan gör du samma sak med 2*2 sådana block. Och sedan samma sak med 2*2 sådana block, ändå tills du har "zoomat ut" hela vägen. Det sista värdet du får ut "may or may not be" ett bra värde. Jag har inte provat algoritmen, jag kom på den när jag såg ditt inlägg. :)
Men det kan kanske vara värt att prova den.
