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
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;
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