video processing for motion detection
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Saffana Siddiqua
am 8 Dez. 2019
Kommentiert: Saffana Siddiqua
am 28 Jan. 2020
can i track the motion of a motor from a video? i tried histogram plotting but exporting data is hard
12 Kommentare
Akzeptierte Antwort
Turlough Hughes
am 8 Dez. 2019
Bearbeitet: Turlough Hughes
am 11 Dez. 2019
So the method I suggested was to look at a single pixel, though you could also look at a few, or the entire image histogram, up to you. Here I track the R component of the mid pixel of each frame and then find local maxima which are greater than a nominal threshold value.
framerate=29.53; % I don't see how to get this from the video object directly.
threshold=0.15;
v=vision.VideoFileReader('vid.mp4');
c=0;
while ~isDone(v)
c=c+1;
f=step(v);
data(c)=f(360,720,1); % for green just replace the with, data(c)=f(360,720,2);
end
figure(), plot(data)
idx1=find(data(2:end-1) > data(1:end-2) & data(2:end-1) > data(3:end))+1; % find local maxima, 'data2'
data2=data(idx1);
hold on, plot(idx1,data2,'or'); % shows local maxima in plot
idx2=find(data2>threshold); % local maxima satisfying threshold
peakFrame=idx1(idx2);
hold on, plot(peakFrame,data2(idx2),'.k','MarkerSize',15) % shows peaks that pass threshold.
numFrames=peakFrame(end)-peakFrame(1) % number of frames from first to last flash.
revs=length(data2(idx2))-1; % Corresponding number of revolutions.
duration=numFrames/framerate; % numFrames/FramesPerSecond = duration in seconds
rpm=revs/(duration/60)
EDIT: as per comments below.
11 Kommentare
Turlough Hughes
am 11 Dez. 2019
i cant find any function to determine the framerate with vision.videofilereader.
Neither can I. I took the framerate from looking at file details. Surely there's a way to get it with code but I can't see how. I see you've opened another question on this though.
what if i want to know the intensity of green or blue light in the center pixel
the thing is i will get the duration by multiplying the framerate with number of frames
you get duration from NumberOfFrames/framerate:
. I originally had framerate/NumberOfFrames but had fixed that before my last comment.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Tracking and Motion Estimation finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!