2017-05-09 96 views
1

如何計算由像素形成的簇的質心?在像素簇中查找質心

我用RED,BLUE和GREEN值表示像素(例如,pixel(116 133 55))。

重心應該是集羣的情況下的均值,但我怎麼能計算像素之間什麼意思呢?

[I試圖計算每種顏色的平均(重心[「RED」] = sum_red_pixel_values像素/號等),但它給出錯誤的結果]

如果它有助於以任何方式我使用歐幾里德距離函數。

+0

你怎麼知道結果是錯的? –

+0

@MalcolmMcLean我以這種方式定義了質心,並使用K-Means來分割圖像。在質心重新分配之後,這些簇會變得瘋狂。 –

+1

使用每個組件的平均值(即顏色)是正確的方法。很難說沒有任何代碼或細節的算法有什麼問題,但該邏輯不應該是這樣。 – jdehesa

回答

1

sum_red_pixel_values/number of pixels會給你平均的紅色強度。如果你想要質心,你需要找到像素強度加權的所有像素的平均x和y位置。

centroid.x = sum(pixel.red * pixel.x)/sum(pixel.red) 
centroid.y = sum(pixel.red * pixel.y)/sum(pixel.red) 

其中總和超過所有像素。

您可以分別計算紅色綠色和藍色的平均值,然後平均值,但如果您只是想要平均值,則平均值會更高效(如果您想要亮度,可能是加權平均值),每個紅色綠色和藍色通道像素先然後基於此計算質心。