【发布时间】:2012-08-10 22:59:39
【问题描述】:
使用单个 matlab 工作者,我可以轻松地使用我的相机(使用 matlab imaq 工具箱)实现最大每秒帧数 (fps)。这个简单的代码做到了:
matlabpool(1)
start(vid)
pause(1); % give matlab time to initialize the camera
for j=1:frames
data = getsnapshot(vid);
end
但是,一旦我尝试即时进行一些图像处理,有效率就会下降 50%。由于我在 matlabpool 中还有 5 个工作人员(还有一个 gpu),我可以优化这一点,以便抓取的每个帧都由不同的工作人员处理吗?例如:
for j=1:frames
data = getsnapshot(vid);
<do some analysis with worker mod((j),5)+2 i.e. worker 2 to 6 >
end
问题是“数据”是从相机连续获取的,分析需要大约 2 轮循环,所以如果每次都有不同的工作人员(或核心)处理,最大 fps 可以是再次获取...
【问题讨论】:
-
我很困惑。为什么你只有一个 matlabpool(1)?
-
那只是将代码限制为一个worker,证明一个核心足以处理相机,因此其余的应该处理......
-
您还对处理后的图像做什么?如果您在图形中显示它们,那么您必须考虑是否可以从多个工作人员更新 GUI..
-
过时不是删除问题的理由。通常有人在很长一段时间内都坚持使用过时的版本,您也可以随时使用此问题/答案来指明更好的解决方案。
标签: image-processing parallel-processing video-capture matlab