Así que tengo una matriz bidimensional que representa un plano de coordenadas, una imagen. En esa imagen, estoy buscando píxeles "rojos" y encuentro (con suerte) la ubicación de un objetivo LED rojo basado en todos los píxeles rojos encontrados por mi cámara. Actualmente, estoy simplemente golpeando mi punto de mira en el centro de gravedad de todos los píxeles rojos:Weighted Centroid of a Array
// 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
El problema con este método es que, si bien este algoritmo, naturalmente, coloca el centro de gravedad más cerca de la burbuja más grande (el área con la la mayoría de los píxeles rojos), sigo viendo que mi mira salta del objetivo cuando un poco de rojo parpadea hacia un lado debido al deslumbramiento u otras pequeñas interferencias.
Mi pregunta es la siguiente:
¿Cómo cambio este patrón a buscar un mayor ponderada baricentro? En pocas palabras, quiero hacer que las manchas más grandes de rojo sean mucho más importantes que las más pequeñas, posiblemente incluso ignorando completamente las pequeñas gotas.
Si tuviera puntos rojos "idénticos" a la izquierda ya la derecha de su avión. ¿El algoritmo centroide no dibujaría su cruz en el centro de la imagen donde no hay rojo? El problema aún persistirá si agregas peso a la ecuación, aunque sería menos probable. – aLevelOfIndirection
Sí, ese es un caso en el que el algoritmo se comporta de forma bastante horrible. Sin embargo, todo esto se relaciona con una demostración real que planeo realizar, que involucra el seguimiento de un objetivo específico, y la idea es que si bien habrá alguna interferencia, nunca debería haber nada ni cerca de ser idéntico al objetivo en el campo (es un objetivo muy distinguible). La idea aquí es hacer que el algoritmo preste más atención a mi mayor fuente de rojo, manteniendo al mismo tiempo cierta capacidad para mantenerlo "enganchado" si se aleja o se dificulta un poco. – Andrew