Key Frames Extraction in a Video

Hello Everyone
I am working on a assignment "key frames extraction in a video sequence" Method that i am using as follows
->extracts frames one by one
->histogram difference between two consecutive frames using imhist() and
imabsdiff()
->calculate mean and standard deviation of difference and threshold
->continue till end of video
->again extracts frames one by one
->histogram difference between two consecutive frames using imhist() and
imabsdiff()
->compare this difference with threshold and if it is greater than threshold
select it as a key frame
->continue till end of video
is this method correct??
if anyone have good solution plz help me with the code
thanks in advance
my simple code
vid = 'Wildlife 00_00_20-00_00_30.avi';
readerobj = mmreader(vid);
for k=1: readerobj.NumberOfFrames
I=read(readerobj,k);
if(k~= readerobj.NumberOfFrames)
J=read(readerobj,k+1);
sss=absdif(I,J);
X(k)=sss;
end
end
mean=mean2(X)
std=std2(X)
threshold=std+mean*4
for k=1: readerobj.NumberOfFrames
I = read(readerobj,k);
if(k~=readerobj.NumberOfFrames)
J= read(readerobj,k+1);
sss=absdif(I,J);
if(sss>mean)
imwrite(J,strcat('D:\',Names{k+1}));
end
end
% absdif function
function [ res ] = absdif( I,J )
k=rgb2gray(I);
l=rgb2gray(J);
m=imhist(k);
n=imhist(l);
dif=imabsdiff(m,n);
res=sum(dif);
end

21 件のコメント

msp
msp 2013 年 3 月 1 日
i m getting error in following line imwrite(J,strcat('D:\',Names{k+1})); unable to write Please see whats the error.
Walter Roberson
Walter Roberson 2013 年 3 月 1 日
Do you have write access to the D:\ directory?
Walter Roberson
Walter Roberson 2013 年 3 月 1 日
編集済み: Walter Roberson 2013 年 3 月 1 日
Construct the name in one line and then use it in the next. That way you will be able to check the validity of the name construction. Also consider using fullfile() instead of strcat()
Walter Roberson
Walter Roberson 2013 年 3 月 1 日
filename = fullfile('D:\', sprintf('frame_%05d.tiff', k) );
imwrite(J, filename);
msp
msp 2013 年 3 月 10 日
above code is extracting Key frame even though some duplicate or redundant frame are coming what change should make in the code.
msp
msp 2013 年 3 月 29 日
any replies
Walter Roberson
Walter Roberson 2013 年 3 月 29 日
Perhaps you need to im2double() the frames.
msp
msp 2013 年 4 月 14 日
can u help me out where i should make the changes in the above code so that key frames will extracted correctly please.
msp
msp 2013 年 4 月 22 日
please any replies
msp
msp 2013 年 4 月 26 日
no reply ?
Walter Roberson
Walter Roberson 2013 年 4 月 26 日
Nope.
msp
msp 2013 年 4 月 29 日
hello sir when i save frames of video they are not saved continuously they save in random order of index say example
frame_0015, frame_00124 so on... i want to save them continuously like index from 1 to n from frame_001,frame_002.... so on.
filename = fullfile('D:\', sprintf('frame_%05d.JPG', k) ); imwrite(J, filename);
help me please
Walter Roberson
Walter Roberson 2013 年 4 月 29 日
Before the for loop,
frc = 0;
Then change the filename assignment to
frc = frc + 1;
filename = fullfile('D:\', sprintf('frame_%05d.JPG', frc));
msp
msp 2013 年 4 月 29 日
thank you sir.
rujul mankad
rujul mankad 2015 年 3 月 12 日
"threshold=std+mean*4 " for this how can we identify that it should be 4..and can we give global threshold?
abhishek patel
abhishek patel 2015 年 4 月 6 日
i m geting error in following line X(k)=sss.... Subscripted assignment dimension mismatch.
Ashvini babaleshwar
Ashvini babaleshwar 2016 年 7 月 18 日
m getting error at last function part, can u please help me.
Walter Roberson
Walter Roberson 2016 年 7 月 18 日
Please post the entire error message, everything in red. Also since there were several revisions suggested to the posted code, please post your code so we know what we are dealing with.
k swati subudhi
k swati subudhi 2016 年 10 月 21 日
i am getting an error like this :Undefined function 'absdif' for input arguments of type 'uint8'. what should i do ??
Walter Roberson
Walter Roberson 2016 年 10 月 21 日
Use imabsdiff instead of absdif
Shivam Thakur
Shivam Thakur 2018 年 10 月 7 日
Sir I work in one video project.When I try this code I get the error is " subscripted Assignment Dimension mismatch"....in line X(k)=sss.please solve the error sir.

サインインしてコメントする。

回答 (1 件)

Rajendra Oli
Rajendra Oli 2018 年 3 月 30 日

0 投票

Is cnn algorithm used in this code?

1 件のコメント

Walter Roberson
Walter Roberson 2018 年 3 月 30 日
No, cnn is not used in the above code.
It might be possible to develop a key frame extraction algorithm that uses Convolutional Neural Networks as part of the algorithm, but this is not such an algorithm.
http://ieeexplore.ieee.org/document/8311477/ CNN based key frame extraction for face in video recognition
https://link.springer.com/chapter/10.1007%2F978-981-10-7305-2_51 Deep Key Frame Extraction for Sport Training

サインインしてコメントする。

質問済み:

2012 年 11 月 13 日

コメント済み:

2018 年 10 月 7 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by