【发布时间】:2019-05-08 20:12:15
【问题描述】:
我目前正在优化我的代码以提高图像处理效率。我的第一个问题是由于vision.VideoFileReader 和step 需要很长时间才能打开每个框架。我通过将灰度图像压缩成 1 个 RGB 帧中的 3 个帧来加速我的代码。这样,我可以使用vid.step() 加载 1 个 RGB 帧并导入 3 个帧以供处理。
现在我的代码在高斯拉普拉斯 (LoG) 滤波上运行缓慢。我读到使用函数imfilter 可用于执行LoG,但它似乎是下一个速率限制步骤。
进一步阅读后,imfilter 似乎不是速度的最佳选择。显然 MATLAB 引入了 LoG function,但它是在 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
【问题讨论】:
标签: matlab image-processing optimization filtering laplacianofgaussian