我目前正在优化我的代码以提高图像处理效率。我的第一个问题是由于打开每个框架需要vision.VideoFileReader
很step
长时间。我通过将灰度图像压缩成 1 个 RGB 帧中的 3 个帧来加速我的代码。这样我可以使用加载 1 个 RGB 帧vid.step()
并导入 3 个帧以供处理。
现在我的代码在高斯拉普拉斯 (LoG) 滤波上运行缓慢。我读到使用该函数imfilter
可用于执行 LoG,但它似乎是下一个速率限制步骤。
经过进一步阅读,这似乎imfilter
不是速度的最佳选择。显然 MATLAB 引入了一个LoG 函数,但它是在 R2016b 中引入的,不幸的是我正在使用 R2016a。
有没有办法加快速度,imfilter
或者有更好的功能来执行 LoG 过滤?
我应该调用python来加快进程吗?
代码:
Hei = gh.Video.reader.info.VideoSize(2);
Wid = gh.Video.reader.info.VideoSize(1);
Log_filter = fspecial('log', filterdot, thresh); % fspecial creat predefined filter.Return a filter.
% 25X25 Gaussian filter with SD =25 is created.
tic
ii = 1;
bkgd = zeros(Hei,Wid,3);
bkgd(:,:,1) = gh.Bkgd;
bkgd(:,:,2) = gh.Bkgd;
bkgd(:,:,3) = gh.Bkgd;
bkgdmod = reshape(bkgd,720,[]);
while ~isDone(gh.Video.reader)
frame = gh.readFrame();
img_temp = double(frame);
img_temp2 = reshape(img_temp,720,[]);
subbk = img_temp2 - bkgdmod;
img_LOG = imfilter(subbk, Log_filter, 'symmetric', 'conv');
img_LOG = imbinarize(img_LOG,.002);
[~, centroids, ~] = gh.Video.blobAnalyser.step(img_LOG);
toc
end