Centroid Pesado de uma Matriz

ntão, eu tenho uma matriz bidimensional que representa um plano de coordenadas, uma imagem. Nessa imagem, estou procurando pixels "vermelhos" e encontrando (espero) a localização de um alvo de LED vermelho com base em todos os pixels vermelhos encontrados pela minha câmera. Atualmente, estou simplesmente colocando minha mira no centróide de todos os pixels vermelhos:

// pseudo-code

for(cycle_through_pixels)
{
   if( is_red(pixel[x][y]) )
   {
      vals++; // total number of red pixels
      cx+=x;  // sum the x's
      cy+=y;  // sum the y's
   }
}
cx/=vals; // divide by total to get average x
cy/=vals; // divide by total to get average y

draw_crosshairs_at(pixel[cx][cy]); // found the centroid

O problema desse método é que, embora esse algoritmo coloque o centróide naturalmente mais próximo do maior blob (a área com mais pixels vermelhos), ainda estou vendo minha mira pular do alvo quando um pouco de vermelho pisca para o lado devido a ofuscamento ou outras interferências menore

Minha pergunta é esta:

Como altero esse padrão para procurar maispesad centróide? Simplificando, quero tornar as bolhas maiores de vermelho muito mais importantes do que as menores, possivelmente até ignorando completamente as pequenas bolhas distante

questionAnswers(2)

yourAnswerToTheQuestion