Imagem de distorção OpenCV baseada em calcOpticalFlowFarneback

Eu estou tentando executar uma distorção complexa de uma imagem usando Dense Optical Flow (estou tentando transformar a segunda imagem em aproximadamente a mesma forma que a primeira imagem). Eu provavelmente estou entendendo tudo errado, mas vou postar o que eu tentei:

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 );

A ideia é que eu estou calculando o tapete de fluxo a partir de 2 quadros de escala de cinza. Eu recebo de volta um tapete de fluxo que parece fazer sentido, mas agora estou tentando remapear minha imagem original (isto é, sem escala de cinza) usando essa informação de fluxo.

Eu assumi que a função remapear é o que eu quero, mas eu recebo uma imagem muito distorcida dela. Nenhuma das minhas informações de cor sobreviveu a todos. Eu simplesmente acabo com uma imagem laranja e preta que tem uma pequena semelhança com a minha imagem original.

Eu estou supondo que eu estou entendendo mal a função remapear e isso não faz o que eu quero fazer ou estou recebendo algo errado com o que eu estou passando.

Se o primeiro alguém tem alguma sugestão de como eu posso resolver este problema? Se o último, o que estou errado?

Qualquer ajuda muito apreciada!

questionAnswers(1)

yourAnswerToTheQuestion