def correlate1d(input, weights, axis=-1, output=None, mode="reflect", cval=0.0, origin=0): """Calculate a one-dimensional correlation along the given axis. The lines of the array along the given axis are correlated with the given weights. Parameters ---------- %(input)s weights : array One-dimensional sequence of numbers. %(axis)s %(output)s %(mode)s %(cval)s %(origin)s """ input = numpy.asarray(input) if numpy.iscomplexobj(input): raise TypeError('Complex type not supported') output, return_value = _ni_support._get_output(output, input) weights = numpy.asarray(weights, dtype=numpy.float64) if weights.ndim != 1 or weights.shape[0] < 1: raise RuntimeError('no filter weights given') if not weights.flags.contiguous: weights = weights.copy() axis = _ni_support._check_axis(axis, input.ndim) if ((len(weights) // 2 + origin < 0) or (len(weights) // 2 + origin > len(weights))): raise ValueError('invalid origin') mode = _ni_support._extend_mode_to_code(mode) _nd_image.correlate1d(input, weights, axis, output, mode, cval, origin) return return_value
def correlate1d(input, weights, axis=-1, output=None, mode="reflect", cval=0.0, origin=0): """Calculate a one-dimensional correlation along the given axis. The lines of the array along the given axis are correlated with the given weights. Parameters ---------- %(input)s weights : array One-dimensional sequence of numbers. %(axis)s %(output)s %(mode)s %(cval)s %(origin)s """ input = numpy.asarray(input) if numpy.iscomplexobj(input): raise TypeError('Complex type not supported') output, return_value = _ni_support._get_output(output, input) weights = numpy.asarray(weights, dtype=numpy.float64) if weights.ndim != 1 or weights.shape[0] < 1: raise RuntimeError('no filter weights given') if not weights.flags.contiguous: weights = weights.copy() axis = _ni_support._check_axis(axis, input.ndim) if (len(weights) // 2 + origin < 0) or (len(weights) // 2 + origin > len(weights)): raise ValueError('invalid origin') mode = _ni_support._extend_mode_to_code(mode) _nd_image.correlate1d(input, weights, axis, output, mode, cval, origin) return return_value
def __FilterData2D(self, data): mode = _ni_support._extend_mode_to_code("reflect") #lowpass filter to suppress noise #a = ndimage.gaussian_filter(data.astype('f4'), self.filterRadiusLowpass) #print data.shape data = data - data.mean() output, a = _ni_support._get_output(None, data) if self.PRIaxis == 'x': _nd_image.correlate1d(data, weightsLowpass, 0, output, mode, 0, 0) _nd_image.correlate1d(output, weightsHighpass, 1, output, mode, 0, 0) else: _nd_image.correlate1d(data, weightsHighpass, 0, output, mode, 0, 0) _nd_image.correlate1d(output, weightsLowpass, 1, output, mode, 0, 0) #print numpy.absolute(a - a_).mean() #lowpass filter again to find background #b = ndimage.gaussian_filter(a, self.filterRadiusHighpass) #output, b = _ni_support._get_output(None, data) #_nd_image.correlate1d(data, weightsHighpass, 0, output, mode, 0,0) #_nd_image.correlate1d(output, weightsHighpass, 1, output, mode, 0,0) return a #- b
def __FilterData2D(self,data): mode = _ni_support._extend_mode_to_code("reflect") #lowpass filter to suppress noise #a = ndimage.gaussian_filter(data.astype('f4'), self.filterRadiusLowpass) #print data.shape data = data - data.mean() output, a = _ni_support._get_output(None, data) if self.PRIaxis == 'x': _nd_image.correlate1d(data, weightsLowpass, 0, output, mode, 0,0) _nd_image.correlate1d(output, weightsHighpass, 1, output, mode, 0,0) else: _nd_image.correlate1d(data, weightsHighpass, 0, output, mode, 0,0) _nd_image.correlate1d(output, weightsLowpass, 1, output, mode, 0,0) #print numpy.absolute(a - a_).mean() #lowpass filter again to find background #b = ndimage.gaussian_filter(a, self.filterRadiusHighpass) #output, b = _ni_support._get_output(None, data) #_nd_image.correlate1d(data, weightsHighpass, 0, output, mode, 0,0) #_nd_image.correlate1d(output, weightsHighpass, 1, output, mode, 0,0) return a #- b
def fastLaplaceNd(arr): """A very fast laplace filter for small arrays directly calling the scipy c++ function Required Inputs arr :: nd.array :: the array to calculate the n-dim laplace filter """ output = np.zeros(arr.shape, 'float64') if arr.ndim > 0: # send output as a pointer sio no need for equals sign _nd_image.correlate1d(arr, laplace_filter, 0, output, 1, 0.0, 0) if arr.ndim == 1: return output for ax in xrange(1, arr.ndim): return_value = np.zeros(arr.shape, dtype=output.dtype) _nd_image.correlate1d(arr, laplace_filter, ax, output, 1, 0.0, 0) output += return_value return output.view(Periodic_Lattice)
def Afunc(self, f): """Forward transform - convolve with the PSF""" fs = np.reshape(f, (self.height, self.width, self.depth)) #d = ndimage.gaussian_filter(fs, self.sigma) mode = _ni_support._extend_mode_to_code("reflect") #lowpass filter to suppress noise #a = ndimage.gaussian_filter(data.astype('f4'), self.filterRadiusLowpass) #print data.shape output, a = _ni_support._get_output(None, fs) _nd_image.correlate1d(fs, self.kernel, 0, output, mode, 0, 0) _nd_image.correlate1d(output, self.kernel, 1, output, mode, 0, 0) #ndimage.uniform_filter(output, self.oversamp, output=output) #d = real(d); return np.ravel(output) #[::oversamp,::oversamp,:])
def Afunc(self, f): '''Forward transform - convolve with the PSF''' fs = reshape(f, (self.height, self.width, self.depth)) #d = ndimage.gaussian_filter(fs, self.sigma) mode = _ni_support._extend_mode_to_code("reflect") #lowpass filter to suppress noise #a = ndimage.gaussian_filter(data.astype('f4'), self.filterRadiusLowpass) #print data.shape output, a = _ni_support._get_output(None, fs) _nd_image.correlate1d(fs, self.kernel, 0, output, mode, 0,0) _nd_image.correlate1d(output, self.kernel, 1, output, mode, 0,0) #ndimage.uniform_filter(output, self.oversamp, output=output) #d = real(d); return ravel(output)#[::oversamp,::oversamp,:])
def __FilterDataFast(self): data = self.data[:,:,0] mode = _ni_support._extend_mode_to_code("reflect") # lowpass filter to suppress noise output, a = _ni_support._get_output(None, data) _nd_image.correlate1d(data, ofdP.weightsLowpass, 0, output, mode, 0, 0) _nd_image.correlate1d(output, ofdP.weightsLowpass, 1, output, mode, 0, 0) # lowpass filter again to find background output, b = _ni_support._get_output(None, data) _nd_image.correlate1d(data, ofdP.weightsHighpass, 0, output, mode, 0, 0) _nd_image.correlate1d(output, ofdP.weightsHighpass, 1, output, mode, 0, 0) return a - b
def __FilterDataFast(self): data = self.data[:, :, 0] mode = _ni_support._extend_mode_to_code("reflect") # lowpass filter to suppress noise output, a = _ni_support._get_output(None, data) _nd_image.correlate1d(data, ofdP.weightsLowpass, 0, output, mode, 0, 0) _nd_image.correlate1d(output, ofdP.weightsLowpass, 1, output, mode, 0, 0) # lowpass filter again to find background output, b = _ni_support._get_output(None, data) _nd_image.correlate1d(data, ofdP.weightsHighpass, 0, output, mode, 0, 0) _nd_image.correlate1d(output, ofdP.weightsHighpass, 1, output, mode, 0, 0) return a - b
def __FilterData2D(self, data): mode = _ni_support._extend_mode_to_code("reflect") #lowpass filter to suppress noise #a = ndimage.gaussian_filter(data.astype('f4'), self.filterRadiusLowpass) #print data.shape #output, a = _ni_support._get_output(None, data) a = np.zeros(data.shape, dtype=data.dtype.name) _nd_image.correlate1d(data, weightsLowpass, 0, a, mode, 0, 0) _nd_image.correlate1d(a, weightsLowpass, 1, a, mode, 0, 0) #print np.absolute(a - a_).mean() #lowpass filter again to find background #b = ndimage.gaussian_filter(a, self.filterRadiusHighpass) b = np.zeros(data.shape, dtype=data.dtype.name) _nd_image.correlate1d(data, weightsHighpass, 0, b, mode, 0, 0) _nd_image.correlate1d(b, weightsHighpass, 1, b, mode, 0, 0) return a - b