Ускорение видения. Функция VideoFileReader для обработки фильмов Matlab - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть фильмы продолжительностью 60 секунд, и я обрабатываю их, чтобы вытащить движущиеся объекты.Я могу сделать это, выполнив вычитание фона, отфильтровав изображение и используя анализатор BLOB-объектов.

Проблема заключается в том, что весь процесс идет медленно, так как извлечение кадров из видео является наиболее трудоемкой частью, а 44,96 занимаетболее половины времени обрабатывает видео.Я использовал profile viewer, чтобы увидеть время.

Если вы посмотрите на мою функцию, я просто использую модуль Vision для загрузки видео и step для перемещения по видео.Есть ли способ ускорить это ??

enter image description here

Log_filter = fspecial('log', filterdot, thresh); % fspecial creat predefined filter.Return a filter.

tic
ii = 1;

bkgd = gpuArray(gh.Bkgd);

while ~isDone(gh.Video.reader)
    frame = gh.readFrame();
    gframe = gpuArray(frame);
    img_temp = double(rgb2gray(gframe));

    subbk = img_temp - bkgd;

    img_LOG = imfilter(subbk, Log_filter, 'symmetric', 'conv');
    img_LOG = img_LOG>.5;
    [~, centroids, ~] = gh.Video.blobAnalyser.step(gather(img_LOG));
    gh.Tracks.centroids{ii} = centroids;
    ii = ii+1;
    toc
end
gh.Video.info.NumberOfFrames = ii-1;
gh.ResetVideo
display('Dots extracted')

Вот моя функция вытягивать кадры

enter image description here

function frame = readFrame(gh)
    frame = gh.Video.reader.step();
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...