Esempio n. 1
0
    def filter_frame_cl_batch(self, images):
        if not self.filter_set_cl:
            _update_filter_bank_cl(self.filter_bank_to_device)
            self.filter_set_cl = True
            
        assert(self.filter_width == 3)

        result = _filter_frame_cl_3_batch(
                images, 
                self.filter_bank_size, 
                self.nchannels, self.optype)
Esempio n. 2
0
    def filter_frame_cl(self, framenum):
        if not self.filter_set_cl:
            _update_filter_bank_cl(self.filter_bank_to_device)
            self.filter_set_cl = True

        frame = cvmat2array(self.origin.get_frame(framenum))

        if len(frame.shape) == 2:  #if this is a single channel image, fake the last channel
            frame = np.reshape(frame,(frame.shape[0], frame.shape[1], 1))

        #interleave the channels
        frame_ilv = np.empty((frame.shape[0], frame.shape[1] * frame.shape[2]), dtype='float32')
        for k in range(self.nchannels):
            frame_ilv[:,k::self.nchannels] = frame[:,:,k]

        frame_dm = DeviceMatrixCL(frame_ilv)

        if self.filter_width == 3:
            fn = _filter_frame_cl_3
        elif self.filter_width == 5:
            fn = _filter_frame_cl_5
        elif self.filter_width == 7:
            fn = _filter_frame_cl_7

        result = fn(frame_dm,
                    self.filter_bank_size,
                    self.nchannels,
                    self.optype)

        result = result.mat()

        result[:, :self.apron_y,:] = -1
        result[:,-self.apron_y:,:] = -1
        result[:,:, :self.apron_x] = -1
        result[:,:,-self.apron_x:] = -1

        return result