def psf__wPSF(parm, t): """ parm: s0, c, d, A, B example (72, 125, 246, 1, 1) """ s0, c, d, A, B = parm com = (t - c) / d sq = 1 + N.power(com, 2) + A * N.power(com, 3) + B * N.power(com, 4) return s0 * N.sqrt(sq)
def psf__wPSF_fromSigma(t, parm): """ t: now this is sigma that you got parm: s0, c, d, A, B (use parm form psf__wPSF fit) """ s0, c, d, A, B = parm com = (t - c) / d sq = 1 + N.power(com, 2) + A * N.power(com, 3) + B * N.power(com, 4) return s0 * N.sqrt(1 + sq)
def psf__wPSF_fromSigma(t, parm): """ t: now this is sigma that you got parm: s0, c, d, A, B (use parm form psf__wPSF fit) """ s0, c, d, A, B = parm com = (t - c) / d sq = 1 + N.power(com, 2) + A * N.power(com, 3) + B * N.power(com, 4) return s0 * N.sqrt( 1 + sq)
def psf__wPSF_yPolyInv_bare(t, *parm): """ before abs """ if len(parm) == 1: parm = parm[0] r = 0.0 for i in range(len(parm)): r = r + parm[i] * N.power(t, i) return r
def psf__wPSF_yPolyInv_bare(t, *parm): """ before abs """ if len(parm) == 1: parm = parm[0] r = 0.0 for i in range(len(parm)): r = r + parm[i]*N.power(t, i) return r
def yPoly(parms=(1, 1, 1, 1, 0, 0), t=0): ''' t can be a scalar or a vector returns y value(s) of a polygon model parms: baseline, first-order coeff, 2nd, ... ''' r = 0.0 for i in range(0, len(parms), 2): c = parms[i] * t + parms[i + 1] r = r + c * N.power(t, i) return r
def arr_edgeFilter(img, sigma=1.5): """ average-deviation with a gaussian prefilter img must be in an even shape """ if sigma: g = gaussianArrND(img.shape, sigma) g = F.shift(g) img = F.convolve(img.astype(N.float32), g) gr = N.gradient(img.astype(N.float32)) ff = N.sum(N.power(gr, 2), 0) return ff
def yPoly(parms=(1,1,1,1,0,0), t=0): ''' t can be a scalar or a vector returns y value(s) of a polygon model parms: baseline, first-order coeff, 2nd, ... ''' r = 0.0 for i in range(0, len(parms), 2): c = parms[i] * t + parms[i+1] r = r + c*N.power(t, i) return r
def logpolar(image, center=None, angles=None, radii=None): """Return log-polar transformed image and log base.""" shape = image.shape if center is None: center = shape[0] / 2, shape[1] / 2 if angles is None: angles = shape[0] if radii is None: radii = shape[1] theta = N.zeros((angles, radii), dtype=N.float64) theta.T[:] = -N.linspace(0, N.pi, angles, endpoint=False) #d = radii d = N.hypot(shape[0] - center[0], shape[1] - center[1]) log_base = 10.0**(N.log10(d) / (radii)) radius = N.empty_like(theta) radius[:] = N.power(log_base, N.arange(radii, dtype=N.float64)) - 1.0 x = radius * N.sin(theta) + center[0] y = radius * N.cos(theta) + center[1] output = N.zeros_like(x) ndii.map_coordinates(image, [x, y], output=output) return output, log_base
def logpolar(image, center=None, angles=None, radii=None): """Return log-polar transformed image and log base.""" shape = image.shape if center is None: center = shape[0] / 2, shape[1] / 2 if angles is None: angles = shape[0] if radii is None: radii = shape[1] theta = N.zeros((angles, radii), dtype=N.float64) theta.T[:] = -N.linspace(0, N.pi, angles, endpoint=False) #d = radii d = N.hypot(shape[0]-center[0], shape[1]-center[1]) log_base = 10.0 ** (N.log10(d) / (radii)) radius = N.empty_like(theta) radius[:] = N.power(log_base, N.arange(radii, dtype=N.float64)) - 1.0 x = radius * N.sin(theta) + center[0] y = radius * N.cos(theta) + center[1] output = N.zeros_like(x) ndii.map_coordinates(image, [x, y], output=output) return output, log_base