Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
0
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 
Beispiel #9
0
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
Beispiel #10
0
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
Beispiel #11
0
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
Beispiel #12
0
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