Интересно, что вы предлагаете это, и еще более интересно то, что вы называете это наивным, потому что я на самом деле рассматривал нечто очень похожее на это, прежде чем отклонить это как глупое и хакерское понятие. Я сказал себе, что должен придерживаться более традиционных путей. Однако, как вы и 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
Проблема этого метода заключается в том, что, хотя этот алгоритм естественным образом размещает центроид ближе к самому большому шарику (области с наибольшим количеством красных пикселей), я все еще вижу, как мои перекрестия прыгают с цели, когда немного красного цвета мерцает в сторону из-за блики или другие незначительные помехи.
У меня вопрос такой:
Как мне изменить этот шаблон, чтобы искать болеевзвешенный медиан? Проще говоря, я хочу сделать большие красные шарики гораздо более важными, чем маленькие, возможно, даже не обращая внимания на маленькие шарики.