1
如何計算由像素形成的簇的質心?在像素簇中查找質心
我用RED,BLUE和GREEN值表示像素(例如,pixel(116 133 55)
)。
重心應該是集羣的情況下的均值,但我怎麼能計算像素之間什麼意思呢?
[I試圖計算每種顏色的平均(重心[「RED」] = sum_red_pixel_values像素/號等),但它給出錯誤的結果]
如果它有助於以任何方式我使用歐幾里德距離函數。
如何計算由像素形成的簇的質心?在像素簇中查找質心
我用RED,BLUE和GREEN值表示像素(例如,pixel(116 133 55)
)。
重心應該是集羣的情況下的均值,但我怎麼能計算像素之間什麼意思呢?
[I試圖計算每種顏色的平均(重心[「RED」] = sum_red_pixel_values像素/號等),但它給出錯誤的結果]
如果它有助於以任何方式我使用歐幾里德距離函數。
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)
其中總和超過所有像素。
您可以分別計算紅色綠色和藍色的平均值,然後平均值,但如果您只是想要平均值,則平均值會更高效(如果您想要亮度,可能是加權平均值),每個紅色綠色和藍色通道像素先然後基於此計算質心。
你怎麼知道結果是錯的? –
@MalcolmMcLean我以這種方式定義了質心,並使用K-Means來分割圖像。在質心重新分配之後,這些簇會變得瘋狂。 –
使用每個組件的平均值(即顏色)是正確的方法。很難說沒有任何代碼或細節的算法有什麼問題,但該邏輯不應該是這樣。 – jdehesa