Вектор скорости (оптический поток и т. Д.) В преобразование цветов RGB - PullRequest
0 голосов
/ 16 января 2019

Я рассчитал оптический поток и хочу преобразовать его в изображения.

Следуя инструкциям opencv2:

    mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1])
    hsv = np.zeros_like(cv2.imread(img_path))
    hsv[...,1] = 255
    hsv[...,0] = ang*180/np.pi/2
    hsv[...,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINMAX)
    bgr = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)

    cv2.imshow('optical flow',bgr)

Я могу сделать это, однако RGB-изображение не такое гладкое и непрерывное, как то, которое поставляется с более поздними работами, такими как высокоточная оценка оптического потока Т. Брокса на основе теории деформации или FlowNet, которая выглядит как гладкие, непрерывные области, как показано здесь: https://www.youtube.com/watch?v=JSzUdVBmQP4

Какие-нибудь рекомендации, как мне добиться этого преобразования вместо того, что я делаю (учебник opencv)?

Я нашел фрагмент сценария Matlab, который может достигать последнего, но я не понимаю, как выполняется преобразование. Может кто-нибудь объяснить?

    flow = mex_OF(double(im1),double(im2));

    scale = 16;
    mag = sqrt(flow(:,:,1).^2+flow(:,:,2).^2)*scale+128;
    mag = min(mag, 255); 
    flow = flow*scale+128;
    flow = min(flow,255);
    flow = max(flow,0);

    [x,y,z] = size(flow);
    flow_image = zeros(x,y,3);
    flow_image(:,:,1:2) = flow;
    flow_image(:,:,3) = mag;

    imwrite(flow_image./255,sprintf('%s/%s/flow_image_%s',save_base,video,frames{k}))

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...