diff options
| author | Aaron LI <aly@aaronly.me> | 2017-11-03 18:33:45 +0800 | 
|---|---|---|
| committer | Aaron LI <aly@aaronly.me> | 2017-11-03 18:33:45 +0800 | 
| commit | 626a1a3c73ee1395712002cf7d90c6d00b1cc3bf (patch) | |
| tree | c39e4ddaef695e57c357a8b609d1b4301c916b7a /python/force_field_transform.py | |
| parent | 244ad1d73e90823281e5116a3aed5ea6ee0d5128 (diff) | |
| download | atoolbox-626a1a3c73ee1395712002cf7d90c6d00b1cc3bf.tar.bz2 | |
Remove python/force_field_transform.py
Diffstat (limited to 'python/force_field_transform.py')
| -rw-r--r-- | python/force_field_transform.py | 126 | 
1 files changed, 0 insertions, 126 deletions
diff --git a/python/force_field_transform.py b/python/force_field_transform.py deleted file mode 100644 index 2b185c8..0000000 --- a/python/force_field_transform.py +++ /dev/null @@ -1,126 +0,0 @@ -# -*- coding: utf -*- -# -# Force field transform (Hurley et al., 2002, 2005) -# - -""" -Force field transform -""" - -import sys -import time -import numpy as np - - -def force(p1, p2): -    """ -    The force between two points of the image. - -    Arguments: -        p1, p2: (value, x, y) - -    Return: -    #    (force, angle): value and direction of the force. -    #                    angle: (-pi, pi], with respect to p1. -        (f_x, f_y): x and y components of the force -    """ -    v1, x1, y1 = p1 -    v2, x2, y2 = p2 -    #force = v1*v2 / ((x1-x2)**2 + (y1-y2)**2) -    #angle = np.atan2(y2-y1, x2-x1) -    #return (force, angle) -    f_x = v1 * v2 * (x2-x1) / ((x2-x1)**2 + (y2-y1)**2)**1.5 -    f_y = v1 * v2 * (y2-y1) / ((x2-x1)**2 + (y2-y1)**2)**1.5 -    return (f_x, f_y) - - -def force_array(p0, img): -    """ -    The forces between the input point with respect to the image. - -    Arguments: -        p0: (x, y), note (x, y) start with zero. -        img: input image, a numpy array - -    Return: -        (f_x, f_y): x and y components of the forces of the same size -                    of the input image -    """ -    x0, y0 = p0 -    v0 = img[y0, x0] -    img[y0, x0] = 0.0 -    x, y = np.meshgrid(range(img.shape[1]), range(img.shape[0])) -    x[y0, x0] = -1 -    y[y0, x0] = -1 -    f_x = v0 * img * (x-x0) / ((x-x0)**2 + (y-y0)**2)**1.5 -    f_y = v0 * img * (y-y0) / ((x-x0)**2 + (y-y0)**2)**1.5 -    return (f_x, f_y) - - -def vector_add(v1, v2): -    """ -    Add two vectors and return the results. - -    Arguments: -        v1, v2: two input vectors of format (f_x, f_y) - -    Return: -        (F_x, F_y) -    """ -    f1_x, f1_y = v1 -    f2_x, f2_y = v2 -    return (f1_x+f2_x, f1_y+f2_y) - - -def force_summation(pixel, img): -    """ -    Calculate the resulting force of the specified pixel with respect to -    the image. - -    Argument: -        pixel: the position (x, y) of the pixel to be calculated -        img: the input image - -    Return: -        (F_x, F_y): x and y components of the resulting force. -    """ -    img = np.array(img) -    x0, y0 = pixel -    f_x, f_y = force_array((x0, y0), img) -    return (f_x.sum(), f_y.sum()) - - -def force_field_transform(img): -    """ -    Perform the "force field transform" on the input image. - -    Arguments: -        img: input 2D image - -    Return: -        (amplitudes, angles) -        amplitudes: the amplitudes of the resulting forces of each pixel -        angles: the directions of the resulting forces of each pixel, -                    in unit radian. -    """ -    img = np.array(img) -    amplitudes = np.zeros(img.shape) -    angles = np.zeros(img.shape) -    rows, cols = img.shape -    t0 = time.time() -    t_p = t0 + 30  # in 30 seconds -    for y in range(rows): -        for x in range(cols): -            t1 = time.time() -            if t1 >= t_p: -                percent = 100 * (y*cols + x + 1) / (rows * cols) -                print("progress: %.3f%%; %.1f min" % (percent, (t1-t0)/60.0), -                        file=sys.stderr) -                t_p += 30  # in 30 seconds -            f_x, f_y = force_array((x, y), img) -            F_x, F_y = f_x.sum(), f_y.sum() -            amplitudes[y, x] = np.sqrt(F_x**2 + F_y**2) -            angles[y, x] = np.math.atan2(F_y, F_x) -    return (amplitudes, angles) - -  | 
