更新された画像をMatlabの図にできるだけ速く表示する必要があります。各画像は処理されてから表示されます。ただし、カラー画像の表示速度はかなり遅いです。たとえば、次のコードを実行すると
videoObj = VideoReader('sample.avi');
nFrames = videoObj.NumberOfFrames;
h = videoObj.Height;
w = videoObj.Width;
mov(1:nFrames) = struct('cdata', zeros(h, w, 3, 'uint8'), 'colormap', []);
for k = 1 : nFrames
mov(k).cdata = read(interObj, k);
end
tic
for i=1:nFrames
frame = mov(i).cdata;
image(frame);
drawnow;
end
secPerFrame = toc/nFrames
secPerFrame = 0.012
各フレームの更新には数秒かかります。各フレームは640x480ピクセルのRGB画像です。したがって、毎秒30フレームでビデオストリームを処理する場合、0.033 - 0.012 = 0.021
画像表示に関連するオーバーヘッドを差し引いた後、実際の画像処理に「わずか」秒しか残されません。
Matlabで画像オブジェクトを更新するより速い方法はありますか?