Ich kann nicht verstehen, wie Matlab die Geschwindigkeitsmatrix eines Videorahmens durch Optical Flow unter Verwendung des aktuellen Rahmens berechnet. Die Geschwindigkeit wäre nicht eine Relation der verschiedenen Pixel Position in der Zeit variiert was würde die Analyse von zwei Bildern oder mehr pro Zeit?Berechnen der Objektgeschwindigkeit in Videobildern - Optischer Fluss (Matlab)
http://www.mathworks.com/help/vision/ref/vision.opticalflow-class.html
% Set up for stream
nFrames = 0;
while (nFrames<100) % Process for the first 100 frames.
% Acquire single frame from imaging device.
rgbData = step(vidDevice);
% Compute the optical flow for that particular frame.
optFlow = step(optical,rgb2gray(rgbData)); %***HERE IS THE DOUBT! iT JUST USES ONE FRAME!!!***
% Downsample optical flow field.
optFlow_DS = optFlow(r, c);
H = imag(optFlow_DS)*50;
V = real(optFlow_DS)*50;
% Draw lines on top of image
lines = [Y(:)'; X(:)'; Y(:)'+V(:)'; X(:)'+H(:)'];
rgb_Out = step(shapes, rgbData, lines');
% Send image data to video player
% Display original video.
step(hVideoIn, rgbData);
% Display video along with motion vectors.
step(hVideoOut, rgb_Out);
% Increment frame count
nFrames = nFrames + 1;
end
Ich denke, es hängt davon ab, was die "step" -Funktion tut. Aber wenn man den Code nur anschaut, sieht es so aus, als ob er den nächsten Frame bekommt. Um 'rgbdata' zu erhalten, benutzt der Code' step' und in der nächsten Zeile 'step'. Das heißt, dass diese Zeile den nächsten Frame erfasst und den optischen Fluss zusammen berechnet –