def extract_feats(vidreader,
                  extract_path,
                  num_prev_frames,
                  num_blocks,
                  smoothMasks,
                  window=5,
                  overlap=2):
    assert (window >
            overlap), "Window size needs to be greater than overlap window"
    _file = open_write_header(extract_path)
    start = time.time()
    frame_idx = num_prev_frames + num_blocks / 2
    numFrames = len(smoothMasks)
    while (frame_idx < numFrames):
        #print 'Extracting Feats ... {0}%\r'.format((frame_idx*100/numFrames)),
        (cnt, frames) = vidreader.read(frame_idx, window)
        if cnt == window:
            w_frames = []
            for frame in frames:
                frame = GRAY(frame) * smoothMasks[frame_idx]
                w_frames.extend(frame.flatten())
            w_frames = np.array(w_frames) / float(255)
            w_frames.tofile(_file, ' ', '%0.3f')
            _file.write(os.linesep)
        frame_idx += window - overlap
    _file.close()
    time_taken = time.time() - start
Beispiel #2
0
	def process(self,cur_frame,prev_frames):
		N = prev_frames.__len__();
		assert(self.K<=N ),("length of prev frames less than " + str(self.K))
		shape = cur_frame.shape[:2];
		prev_frames = [GRAY(frame).flatten() for frame in prev_frames];		
		cur_frame = GRAY(cur_frame)			
		mean = np.mean(prev_frames,axis=0)
		mean_subtracted = [frame - mean for frame in prev_frames];
		mean_subtracted = np.asarray(mean_subtracted)
		eigv,eigt = np.linalg.eig(np.cov(mean_subtracted));
		eigt = np.dot(mean_subtracted.T,eigt); 
		eigt = eigt / np.linalg.norm(eigt,axis=0)
		idx = np.argsort(eigv)[::-1]
		eigt = eigt[:,idx]; eigv = eigv[idx]	
		score = np.dot(cur_frame.flatten()-mean,eigt[:,:self.K])		
		recon = np.dot(eigt[:,:self.K],score)+mean
		recon = np.uint8(recon.reshape(shape))
		diff = self.__frame_differencing__(recon,cur_frame)
		return diff;
def extract_feats(vidreader,extract_path,num_prev_frames,num_blocks,smoothMasks,window=5,overlap=2):
	assert(window>overlap),"Window size needs to be greater than overlap window"
	_file = open_write_header(extract_path);
	start = time.time(); 
	frame_idx = num_prev_frames + num_blocks/2	
	numFrames= len(smoothMasks);
	while(frame_idx < numFrames):
		#print 'Extracting Feats ... {0}%\r'.format((frame_idx*100/numFrames)),
		(cnt,frames) = vidreader.read(frame_idx,window);	
		if cnt==window:
			w_frames = [];
			for frame in frames:
				frame = GRAY(frame) * smoothMasks[frame_idx]; 
				w_frames.extend(frame.flatten());
			w_frames = np.array(w_frames)/float(255);
			w_frames.tofile(_file,' ','%0.3f');
			_file.write(os.linesep)
		frame_idx += window-overlap;
	_file.close();
	time_taken = time.time()-start;	
Beispiel #4
0
 def process(self, cur_frame, prev_frames):
     N = prev_frames.__len__()
     assert (self.K <= N), ("length of prev frames less than " +
                            str(self.K))
     shape = cur_frame.shape[:2]
     prev_frames = [GRAY(frame).flatten() for frame in prev_frames]
     cur_frame = GRAY(cur_frame)
     mean = np.mean(prev_frames, axis=0)
     mean_subtracted = [frame - mean for frame in prev_frames]
     mean_subtracted = np.asarray(mean_subtracted)
     eigv, eigt = np.linalg.eig(np.cov(mean_subtracted))
     eigt = np.dot(mean_subtracted.T, eigt)
     eigt = eigt / np.linalg.norm(eigt, axis=0)
     idx = np.argsort(eigv)[::-1]
     eigt = eigt[:, idx]
     eigv = eigv[idx]
     score = np.dot(cur_frame.flatten() - mean, eigt[:, :self.K])
     recon = np.dot(eigt[:, :self.K], score) + mean
     recon = np.uint8(recon.reshape(shape))
     diff = self.__frame_differencing__(recon, cur_frame)
     return diff