Интересно, что вы предлагаете это, и еще более интересно то, что вы называете это наивным, потому что я на самом деле рассматривал нечто очень похожее на это, прежде чем отклонить это как глупое и хакерское понятие. Я сказал себе, что должен придерживаться более традиционных путей. Однако, как вы и tkerwin показали сегодня, я не единственный, кто придумал эту концепцию, и она, очевидно, широко используется и довольно эффективна. Я попробую реализовать это завтра. Спасибо!

у меня есть двумерный массив, представляющий координатную плоскость, изображение. На этом изображении я ищу «красные» пиксели и нахожу (надеюсь) местоположение красной светодиодной мишени на основе всех красных пикселей, найденных моей камерой. В настоящее время я просто шлепаю свое перекрестие по центроиду всех красных пикселей:

// 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

Проблема этого метода заключается в том, что, хотя этот алгоритм естественным образом размещает центроид ближе к самому большому шарику (области с наибольшим количеством красных пикселей), я все еще вижу, как мои перекрестия прыгают с цели, когда немного красного цвета мерцает в сторону из-за блики или другие незначительные помехи.

У меня вопрос такой:

Как мне изменить этот шаблон, чтобы искать болеевзвешенный медиан? Проще говоря, я хочу сделать большие красные шарики гораздо более важными, чем маленькие, возможно, даже не обращая внимания на маленькие шарики.

Ответы на вопрос(2)

Ваш ответ на вопрос