Obraz wypaczenia OpenCV oparty na calcOpticalFlowFarneback

Próbuję wykonać skomplikowaną wypaczenie obrazu za pomocą Dense Optical Flow (próbuję przesłać drugi obraz do mniej więcej tego samego kształtu co pierwszy obraz). Prawdopodobnie źle to rozumiem, ale nie publikuję tego, co próbowałem:

cv::Mat flow;
cv::calcOpticalFlowFarneback( mGrayFrame1, mGrayFrame2, flow, 0.5, 3, 15, 3, 5, 1.2, 0 );

cv::Mat newFrame = cv::Mat::zeros( frame.rows, frame.cols, frame.type() );
cv:remap( frame, newFrame, flow, cv::Mat(), CV_INTER_LINEAR );

Pomysł, że obliczam matę przepływową z 2 ramek w skali szarości. Wracam do maty przepływowej, która wydaje się mieć sens, ale teraz próbuję przemapować mój oryginalny obraz (tj. Nie w skali szarości) używając tej informacji o przepływie.

Założyłem, że funkcja remapowania jest tym, czego chcę, ale otrzymuję bardzo źle zniekształcony obraz. Żadna z moich informacji o kolorze w ogóle nie przetrwa. Po prostu kończę na pomarańczowym i czarnym obrazie, który ma niewielkie podobieństwo do mojego oryginalnego obrazu.

Zgaduję, że źle rozumiem funkcję remapowania i albo nie robi tego, co chcę, albo coś złego dzieje się z tym, co przekazuję.

Jeśli ten pierwszy ma jakieś sugestie, w jaki sposób mogę rozwiązać ten problem? Jeśli to drugie, co się mylę?

Każda ogromnie doceniona pomoc!

questionAnswers(1)

yourAnswerToTheQuestion