Как сделать минимальным изменение положения центра кластеров при кластеризации пикселей по цветам?
Требуется разбить пиксели фотографии на кластеры по цветам с помощью KMeans так, чтобы красные или близкие к красному цвету пиксели лежали в определённом кластере. Проблема в том, что при кластеризации с заданными центрами сами центры очень сильно меняются. Т.е. на картинке малого одного цвета и много оттенков другого и центр кластера переходит на оттенок другого цвета.
Вот код, что у меня есть:
image=cv2.imread("2.JPG")
w_1,h_1,c=image.shape
image=np.asarray(image)
w_1,h_1,c=image.shape
reshape=np.reshape(image,(w_1*h_1,-1))
df=pd.DataFrame(reshape,columns=["R","G",'B'])
centroid_start = np.array([[0,0,0],#black
[255,74,58], #r
[0,255,0], #g
[0,0,255],#b
[255,255,255]], np.float64)
model=KMeans(n_clusters=5, max_iter=300,init=centroid_start,tol=5,verbose=0)
model.fit(df)
df['cluster'] = model.labels_
print(model.cluster_centers_)
А это то, какие центры кластеров получаются:
[[ 32.33945893 25.82406996 24.38820703]
[109.68861814 116.17874769 122.84376928]
[ 78.64083836 78.05760559 79.82114957]
[ 92.76858345 113.44600281 146.63113604]
[254.81742351 254.88062439 254.89208085]]
Как сделать так, чтобы смещение данных центров кластеров было минимальным?