0001 function [ segment_names ] = splitVideo( filename )
0002
0003
0004
0005 src_init = {newFrameSourceAVI(filename)};
0006 src_init{end+1} = newFrameSourceNoM3bug;
0007
0008 disp('Mark the start and end of video segments');
0009
0010 selectFrames = imagePager(src_init);
0011
0012 if sum(selectFrames.times)<2
0013 error 'Two frames required to specify a segment!';
0014 end
0015 if mod(sum(selectFrames.times), 2)>0
0016 error 'Two frames per video segment, number of markers is not even';
0017 end
0018
0019 marked_frames = find(selectFrames.times);
0020 segment_names = cell(length(marked_frames)/2,1);
0021
0022 for l=1:2:length(marked_frames)
0023 segment_info.next_stage = 1;
0024 segment_info.video_name = filename;
0025 segment_info.begin_frame = marked_frames(l);
0026 segment_info.end_frame = marked_frames(l + 1);
0027
0028 start = 1;
0029 index = find(filename=='/');
0030
0031 if length(index)>1
0032 start = index(end)+1;
0033 end
0034
0035 segment_info.mat_file_name = [filename(start:end-4) '_seg_' num2str(marked_frames(l)) '_' num2str(marked_frames(l+1)) '.mat'];
0036 segment_names{(l+1)/2} = segment_info.mat_file_name;
0037
0038
0039
0040
0041 segment_info.window_size = 700;
0042 segment_info.pixel_per_grid = 420;
0043
0044 src = {newFrameSourceAVI( filename )};
0045 src{end+1} = newFrameSourceResampler(src, marked_frames(l):marked_frames(l+1));
0046 src{end+1} = newFrameSourceNoM3bug;
0047 src{end+1} = newFrameSourceFilterOp(src,inline('sqrt(1-x)'));
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059 src{end+1} = newFrameSourceLumaFix( src, 2, 137 );
0060 w = gausswin(80,4);
0061 w = reshape(w,1,length(w))/sum(w);
0062 src{end+1} = newFrameSourceFilterOp( src, inline('x-conv2(conv2(x,y,''same''),z,''same'')'),w,w' );
0063 src{end+1} = newFrameSourceFilterOp( src, inline('(x-min(x(:)))/range(x(:))') );
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075 src{end+1} = newFrameSourceFindPtsMinor(src,[99,3,30]);
0076
0077 segment_info.src_ini=iniFromSrc(src);
0078
0079 dcr = srcGetDcr(src);
0080 segment_info.N = dcr.N;
0081
0082 fr=srcGetFr(src,1);
0083 disp('Please mask out the incorrect markers present in this frame.\nRight click on the image when done');
0084 segment_info.first_polygon_to_ignore= getInteractiveMask(fr{end-2}.imgs.img,fr{end}.imgs.args.trkPos);
0085
0086 disp('Saving segment info to files');
0087 save(segment_info.mat_file_name,'segment_info');
0088 clear segment_info;
0089 end
0090
0091 disp(['Created video segment ' segment_names{:}]);