Как использовать центроид, обнаруженный фильтром Калмана с венгерским алгоритмом, чтобы связать движущиеся цели в верхнем и нижнем кадрах? - PullRequest
0 голосов
/ 07 апреля 2019

Как использовать венгерский алгоритм для сопоставления соответствующих целей между двумя последовательными кадрами и, наконец, понять, что он может судить, существует ли движущаяся цель в следующем кадре или уже существует?Я не знаю, как начать в реальной реализации программы с использованием библиотеки C ++ и Opencv3?

Теперь я могу получить центроиды движущейся цели, обнаруженные фильтром Калмана в каждом кадре.

// Это часть основной функции.

kalmanv.clear();
initKalman(0, 0);
Point s, p;//s:kalmanCorrect,p:kalmanPredict

//variable definition
vector<vector<Point>> contours;//rectangular frame position around the contour
vector<Vec4i> hierarchy;
int count = 0;
Mat frame, gray, mogMask;
char numText[8];

while (capture.read(frame)) {
    ...
    findContours(mogMask, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE, Point(0, 0));

    //definition of moment and center moment
    vector<Moments> mu(contours.size());
    vector<Point2f> mc(contours.size());

    ...
        mu[t] = moments(contours[t], false);//calculate moment
        mc[t] = Point2f(mu[t].m10 / mu[t].m00, mu[t].m01 / mu[t].m00);//calculate center moment
        measurement(0) = mc[t].x;
        measurement(1) = mc[t].y;

        p = kalmanPredict();
        Point center = Point(selection.x + (selection.width / 2), selection.y + (selection.height / 2));//calculate centroid
        s = kalmanCorrect(center.x, center.y);
                    //I don't know what to do next.



}

У меня есть набор точек центроидов для движущейся цели, а затем как использовать данные в сочетании с венгерским алгоритмом?

...