我有60秒长的电影,我正在处理它们以拉出移动的物体。我可以通过执行背景减法,过滤图像并使用Blob分析器来做到这一点。
问题在于整个过程很慢,因为从视频中拉帧是最耗时的部分,其中44.96占用了处理视频一半以上的时间。我用profile viewer
来查看时间。
如果您看一下我的功能,我只是在使用Vision
模块加载视频,并使用step
在视频中移动。有没有办法加快速度??
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')
这是我拉框的功能
function frame = readFrame(gh)
frame = gh.Video.reader.step();
end