単一の matlab ワーカーを使用すると、カメラ (matlab imaq ツールボックスを使用) で 1 秒あたりの最大フレーム数 (fps) を簡単に達成できます。この単純なコードはそれを行います:
matlabpool(1)
start(vid)
pause(1); % give matlab time to initialize the camera
for j=1:frames
data = getsnapshot(vid);
end
ただし、その場で画像処理を実行しようとすると、有効レートが 50% 低下します。matlabpool (および gpu) にさらに 5 つのワーカーがあるため、取得した各フレームが別のワーカーによって処理されるように最適化できますか? 例えば:
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 を再度取得できることです。 ..