Найти центроид в скоплении пикселей
Как вычислить центроид кластера, образованного пикселями?
Я представляю пиксели по их красным, синим и зеленым значениям (например, pixel(116 133 55)).
Центроид должен быть средним числом экземпляров в кластере , но как я могу вычислить среднее между пикселями?
[я пытался вычислить среднее значение для каждого цвета (центроид ["красный"]=sum_red_pixel_values/количество пикселей и т. д.), Но это дает неправильные результаты]
Если это помогает в любом случае, я использую евклидову функцию расстояния.
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)Где sum-сумма по всем пикселям.
Вы можете вычислить это отдельно для красного зеленого и синего, а затем усреднить, но если вы просто хотите среднее, было бы более эффективно усреднить (возможно, средневзвешенное значение, если вы хотите яркость) красный зеленый и синий каналы для каждого пикселя сначала и только потом. затем вычислите центроид на основе этого.
Comments