Vous pourriez vouloir changer l'image de RVB à indexée, puis vous pourriez utiliser un histogramme normal et détecter les images (Matlab fait cela avec rgb2ind(), comme vous le savez probablement déjà), et alors le problème serait réduit à votre habituelle "recherche de pics dans un tableau".
Dans ce cas n = hist(Y,nbins) répartit les éléments du vecteur Y en 10 conteneurs également espacés et renvoie le nombre d'éléments dans chaque conteneur sous la forme d'un vecteur de lignes.
Ces valeurs en n vous donneront le nombre d'éléments dans chaque case. Il suffit ensuite de jouer avec le nombre de cases pour qu'elles soient suffisamment larges et avec le nombre d'éléments dans chacune d'elles pour que cette case soit considérée comme une couleur prédominante, puis de prendre les cases qui contiennent ces nombreux éléments, de calculer l'indice qui correspond à leur milieu et de le convertir à nouveau en RVB.
L'outil de traitement que vous utilisez a probablement des fonctions similaires à celles qui sont décrites ci-dessous.