Example #1
0
def save_fft_plot(folder, tests, cam, labels, title):
    print 'saving fft plot'
    fft_info_list = []
    for test in tests:
        im_obj = FiberImage(object_file(folder, test, cam))
        fft_info_list.append(im_obj.get_modal_noise(method='fft'))
    min_wavelength = im_obj.pixel_size / im_obj.magnification * 2.0
    max_wavelength = im_obj.get_fiber_radius(method='edge', units='microns')
    plot_fft(fft_info_list,
             labels=labels,
             min_wavelength=min_wavelength,
             max_wavelength=max_wavelength)
    save_plot(folder + 'analysis/' + title + '/' + cam.upper() + '.png',
              dpi=600)
    save_plot(folder + 'analysis/' + title + '/' + cam.upper() + '.pdf',
              dpi=600)
Example #2
0
def save_modal_noise_data(folder, tests, cam, methods, title):
    print 'saving modal noise data'
    modal_noise_info = [['cam', 'test'] + methods]
    for i, test in enumerate(tests):
        im_obj = FiberImage(object_file(folder, test, cam))
        modal_noise_info.append([cam, test])
        for method in methods:
            modal_noise = im_obj.get_modal_noise(method)
            im_obj.save_object(object_file(folder, test, cam))
            print cam, test, method, modal_noise
            modal_noise_info[i + 1].append(modal_noise)

    with open(folder + 'analysis/' + title + '/' + cam.upper() + ' Data.csv',
              'wb') as f:
        wr = csv.writer(f)
        wr.writerows(modal_noise_info)
def main(folder=FOLDER,
         cameras=CAMERAS,
         num_images=NUM_IMAGES,
         new_data=NEW_DATA):
    for cam in cameras:
        centers = []
        for i in xrange(0, 300 - num_images, num_images):
            object_file = cam + '_' + str(i).zfill(3) + '-' + str(
                i + num_images).zfill(3) + '_obj.pkl'

            if object_file not in os.listdir(folder) or new_data:
                images = [
                    folder + cam + '_' + str(j).zfill(3) + '.fit'
                    for j in xrange(i, i + num_images)
                ]
                ambient = [
                    folder + 'ambient/' + cam + '_' + str(j).zfill(3) + '.fit'
                    for j in xrange(min(10, num_images))
                ]
                dark = [
                    folder + 'dark/' + cam + '_' + str(j).zfill(3) + '.fit'
                    for j in xrange(min(10, num_images))
                ]
                im_obj = FiberImage(images,
                                    ambient=ambient,
                                    dark=dark,
                                    camera=cam)
                im_obj.save_object(folder + object_file)

            object_file = folder + object_file
            im_obj = FiberImage(object_file)
            center = im_obj.get_fiber_center(
                method='circle') - im_obj.get_fiber_centroid(method='full')
            print center
            centers.append(center)
            im_obj.save_object(object_file)

        plt.figure()
        plt.subplot(211)
        plt.plot([center.x for center in centers])

        plt.subplot(212)
        plt.plot([center.y for center in centers])

        plt.show()
Example #4
0
def save_objects(i, cam, method):
    obj_file = cam + '_obj_' + str(i).zfill(3) + '.pkl'
    if obj_file not in os.listdir(FOLDER):
        print 'saving ' + cam + '_' + str(i).zfill(3)
        im_file = FOLDER + cam + '_' + str(i).zfill(3) + '.fit'
        obj = FiberImage(im_file, threshold=1000)
        obj.set_fiber_center(method=method, 
                             radius_tol=.03, radius_range=64,
                             center_tol=.03, center_range=64)
        obj.set_fiber_centroid(method=method)
        obj.save_object(FOLDER + obj_file)
def testMethod(method):
    tol = 1
    test_range = 1
    factor = 1.0

    y_err = []
    x_err = []
    d_err = []
        
    for i in xrange(10):
        image_height = 2000
        image_width = 2000
        x0 = image_width * 0.5 + np.random.rand()
        y0 = image_height * 0.5 + np.random.rand()
        radius = min(image_height, image_width) * 0.25 + np.random.rand()
        amp = 10000
        dark_level = 500
        num_images = 1
        num_darks = 10

        mesh_grid = np.meshgrid(np.arange(image_width), np.arange(image_height))
        dark_image = [dark_level * (np.random.rand(image_height, image_width) + 0.5) for i in xrange(num_darks)]
        # noise = [0 for i in xrange(num_images)]
        noise = [np.random.rand(image_height, image_width) - 0.5 for i in xrange(num_images)]

        if method == 'edge' or method == 'radius':
            test_array = amp * circle_array(mesh_grid, x0, y0, radius, res=10) + dark_level
            test_array = [test_array + np.sqrt(test_array) * noise[i] * 30 for i in xrange(num_images)]
        elif method == 'gaussian':
            test_array = gaussian_array(mesh_grid, x0, y0, radius, amp, dark_level).reshape(image_height, image_width)
            test_array = [test_array + np.sqrt(test_array) * noise[i] * 30 for i in xrange(num_images)]

        im_obj = FiberImage(test_array, dark=dark_image, magnification=1, pixel_size=1)

        center_y, center_x, diameter = im_obj.get_fiber_data(method=method, units='pixels',
                                                             tol=tol, test_range=test_range)

        y_err.append(center_y - y0)
        x_err.append(center_x - x0)
        d_err.append(diameter - radius*2)

    return y_err, x_err, d_err
def save_objects(i, cam, method):
    obj_file = cam + '_obj_' + str(i).zfill(3) + '.pkl'
    if obj_file not in os.listdir(FOLDER):
        print 'saving ' + cam + '_' + str(i).zfill(3)
        im_file = FOLDER + cam + '_' + str(i).zfill(3) + '.fit'
        obj = FiberImage(im_file)
        obj.set_fiber_center(method=method, **OPTIONS)
        obj.set_fiber_centroid(method=method, **OPTIONS)
        obj.save_object(FOLDER + obj_file)
Example #7
0
def save_baseline_object(folder,
                         test,
                         cam,
                         best_test,
                         fiber_method='edge',
                         kernel=None):
    print 'saving new baseline object'
    im_obj = FiberImage(object_file(folder, best_test, cam))
    baseline = baseline_image(im_obj,
                              stdev=im_obj.get_dark_image().std(),
                              fiber_method=fiber_method,
                              kernel_size=kernel)

    baseline_obj = FiberImage(baseline,
                              camera=cam,
                              pixel_size=im_obj.pixel_size)
    baseline_obj.save_image(image_file(folder, test, cam))
    baseline_obj.save_object(object_file(folder, test, cam))
Example #8
0
def main():
    num_images = 1
    interval = 1
    max_image = 10
    cam = 'nf'
    # folder = '../data/modal_noise/Kris_data/rectangular_100x300um/baseline/'
    # folder = '../data/modal_noise/rv_error/coupled_ag_new/'
    folder = '../data/modal_noise/rec_fiber_freq_tests/agitated_15volts_120mm_2s/'
    # folder = '../data/stability/2017-03-19 Stability Test/circular_200um/'
    # ambient = image_list(folder + '../ambient_2s/' + cam + '_')
    ambient = None
    # dark = image_list(folder + 'dark/' + cam + '_')
    dark = None

    # with imageio.get_writer(folder + cam + '_' + str(num_images) + '.gif', mode='I') as writer:
    with imageio.get_writer(folder + cam + '_snr.gif', mode='I') as writer:
        for i in xrange(0, max_image, interval):
            # images = image_list(folder + cam + '_', num=num_images, start=i)
            images = image_list(folder + cam + '_', num=i+1, start=0)

            image = FiberImage(images, ambient=ambient, dark=dark, camera=cam)

            print images[-1]
            writer.append_data(image.get_image())
def input_objects(folder, in_f):
    if NEW_OBJECTS:
        for f in in_f:
            print 'Saving ' + folder + 'input_' + str(f)
            im_obj = FiberImage(input_files(folder, f),
                                dark=dark_files(folder),
                                ambient=ambient_files(folder),
                                input_fnum=f,
                                threshold=FRD_CALIBRATION_THRESHOLD,
                                camera='ff')
            im_obj.save_object(folder + 'input_' + str(f) + '/ff_object.pkl')
            im_obj.save_image(folder + 'input_' + str(f) + '/ff_corrected.fit')
    return [folder + 'input_' + str(f) + '/ff_object.pkl' for f in in_f]
Example #10
0
def save_new_object(folder,
                    test,
                    cam,
                    ambient_folder='ambient/',
                    dark_folder='dark/'):
    print 'saving new object'
    images = image_list(folder + test + '/' + cam + '_')

    ambient = image_list(folder + ambient_folder + cam + '_')
    dark = image_list(folder + dark_folder + cam + '_')

    im_obj = FiberImage(images, dark=dark, ambient=ambient, camera=cam)
    im_obj.save_image(image_file(folder, test, cam))
    im_obj.save_object(object_file(folder, test, cam))
Example #11
0
def set_new_data(folder, test, cam, methods, fiber_method='edge', kernel=None):
    im_obj = FiberImage(object_file(folder, test, cam))
    radius_factor = None
    if 'rectang' in test:
        radius_factor = 0.3

    print 'setting new data'
    for method in methods:
        print 'setting method ' + method
        im_obj.set_modal_noise(method,
                               fiber_method=fiber_method,
                               kernel_size=kernel,
                               radius_factor=radius_factor)
    im_obj.save_object(object_file(folder, test, cam))
    print
        from fiber_properties import FiberImage

        in_dark = image_list(FOLDER + '../dark/in_')
        in_ambient = image_list(FOLDER + '../ambient/in_')
        nf_dark = image_list(FOLDER + '../dark/nf_')
        nf_ambient = image_list(FOLDER + '../ambient/nf_')
        ff_dark = image_list(FOLDER + '../dark/ff_')
        ff_ambient = image_list(FOLDER + '../ambient/ff_')

        for pos in POSITIONS:
            print 'Initializing ' + pos
            in_images = image_list(FOLDER + pos + '/in_')
            nf_images = image_list(FOLDER + pos + '/nf_')
            ff_images = image_list(FOLDER + pos + '/ff_')

            FiberImage(in_images, in_dark, in_ambient, camera='in').save()
            FiberImage(nf_images, nf_dark, nf_ambient, camera='nf').save()
            FiberImage(ff_images, ff_dark, ff_ambient, camera='ff').save()

    in_objs = [FOLDER + pos + '/in_object.pkl' for pos in POSITIONS]

    nf_objs = [FOLDER + pos + '/nf_object.pkl' for pos in POSITIONS]
    nf_scrambling = scrambling_gain(in_objs, nf_objs, input_method='rectangle', output_method='rectangle')
    print nf_scrambling.in_d
    print nf_scrambling.out_d
    print nf_scrambling.scrambling_gain
    
    print 'Minimum NF scrambling:', min(nf_scrambling.scrambling_gain)
    print 'Maximum NF scrambling:', max(nf_scrambling.scrambling_gain)

    plot_scrambling_gain_input_output(nf_scrambling, 'NF Centroid Shift')
            name = 'Near Field'
            method = 'radius'
        if camera == 'ff':
            name = 'Far Field'
            method = 'gaussian'

        print name

        data_dict[camera] = {}
        for test in TESTS:
            data_dict[camera][test] = deepcopy(base_dict)

            for i in xrange(NUM_IMAGES):
                data_FOLDER = FOLDER[test] + camera + '_' + str(i).zfill(
                    3) + '_data.p'
                obj = FiberImage(image_input=None, image_data=data_FOLDER)
                y0, x0, diameter = obj.get_fiber_data(method=method,
                                                      units='microns')
                if camera == 'in':
                    gauss_y, gauss_x = obj.get_fiber_center(method='gaussian',
                                                            units='microns')
                    data_dict[camera][test]['x0'].append(gauss_x - x0)
                    data_dict[camera][test]['y0'].append(gauss_y - y0)
                else:
                    data_dict[camera][test]['x0'].append(x0)
                    data_dict[camera][test]['y0'].append(y0)
                data_dict[camera][test]['diameter'].append(diameter)
                data_dict[camera][test]['time'].append(
                    obj.get_image_info('date_time'))

            for prop in ['x0', 'y0', 'diameter', 'time']:
              '0.1Hz 160mm 80s',
              '1.0Hz 160mm 1s',
              '1.0Hz 160mm 10s',
              'baseline']


# def object_file(folder, test, cam):
#     return folder + test + '/' + cam + '_obj.pkl'

if __name__ == '__main__':
    for cam in CAMS:       
        # save_modal_noise_data(FOLDERS, TESTS, cam, labels, METHODS, TITLES) 
        modal_noise = []
        for title, folder, test in zip(TITLES, FOLDERS, TESTS):
            modal_noise.append([])
            for t in test:
                # mn = []
                # for im in xrange(10):
                #     im_obj = FiberImage(object_file(folder + t, cam, 1, im))
                #     mn.append(im_obj.get_modal_noise(method=METHOD))
                # mn = np.array(mn).mean()
                im_obj = FiberImage(object_file(folder + t, cam, 10, 0))
                mn = im_obj.get_modal_noise(method=METHOD)
                modal_noise[-1].append(mn)
                print t, mn

        plot_modal_noise(modal_noise, plot_type='bar', bar_labels=LABELS, labels=TITLES, method=METHOD)
        save_plot(FOLDER + 'analysis/' + TITLE + ' ' + cam.upper() + ' ' + METHOD + ' SNR.png')
        # save_plot(FOLDER + 'analysis/' + TITLE + ' ' + cam.upper() + ' ' + METHOD + ' SNR.pdf')

Example #15
0
amp = 40000

fft_list = []
freq_list = []
label_list = []

perfect_image = amp * circle_array(mesh_grid, height / 2, width / 2,
                                   0.8 * min(height, width))
# perfect_image = gaussian_array(mesh_grid, height/2, width/2, 0.8*min(height,width), amp, 0).reshape(height, width)

for factor in [0.1, 0.2, 0.4, 0.8, 1.0]:
    test_image = perfect_image * factor
    baseline_image = np.zeros_like(test_image)
    for i in xrange(10):
        baseline_image += np.random.poisson(test_image) / 10

    baseline_obj = FiberImage(baseline_image, pixel_size=3.45, camera='nf')
    fft, freq = modal_noise(baseline_obj,
                            method='fft',
                            output='array',
                            radius_factor=1.0,
                            show_image=False)

    fft_list.append(fft)
    freq_list.append(freq)
    label_list.append('baseline_' + str(factor))

plot_fft(freq_list[:-1], [fft_list[i] - fft_list[-1] for i in xrange(4)],
         labels=label_list[:-1],
         title='Modal Noise Baseline Test')
show_plot()
from fiber_properties import FiberImage, image_list, show_image_array

folder = '../data/scrambling/2016-08-05 Prototype Core Extension 1/'
dark_folder = folder + 'Dark/'
ambient_folder = folder + 'Ambient/'

in_images = image_list(ambient_folder + 'in_')
nf_images = image_list(ambient_folder + 'nf_')
ff_images = image_list(ambient_folder + 'ff_')

print 'input'
for image in in_images:
    print FiberImage(image, camera='in', ambient=in_images).get_fiber_centroid(method='full', units='pixels')
print
print 'near field'
for image in nf_images:
    nf_obj = FiberImage(image, camera='nf')
    print nf_obj.get_fiber_centroid(method='full', units='pixels')
print
print 'far field'
for image in ff_images:
    ff_obj = FiberImage(image, camera='ff')
    print ff_obj.get_fiber_centroid(method='full', units='pixels')
Example #17
0
if CASE == 4:
    TITLE = 'Amplitude vs Frequency NSR'
    FOLDER += 'amp_freq_200um/'
    TITLES = ['']
    FOLDERS = [FOLDER]
    TESTS = [[
        'agitated_5volts_40mm_8s', 'agitated_30volts_40mm_1s',
        'agitated_5volts_160mm_8s', 'agitated_30volts_160mm_1s', 'baseline'
    ]]
    LABELS = [
        '0.1Hz 40mm', '1.0Hz 40mm', '0.1Hz 160mm', '1.0Hz 160mm', 'LED source'
    ]


def object_file(folder, test, cam):
    return folder + test + '/' + cam + '_obj.pkl'


if __name__ == '__main__':
    for cam in CAMS:
        modal_noise = []
        for title, folder, test in zip(TITLES, FOLDERS, TESTS):
            modal_noise.append([])
            for t in test:
                im_obj = FiberImage(object_file(folder, t, cam))
                modal_noise[-1].append(im_obj.get_modal_noise(method=METHOD))

        plot_modal_noise(modal_noise, LABELS, TITLES, method=METHOD)
        save_plot(FOLDER + 'analysis/' + TITLE + '/' + cam.upper() + '.png')
        save_plot(FOLDER + 'analysis/' + TITLE + '/' + cam.upper() + '.pdf')
from fiber_properties import FiberImage, image_list

obj = FiberImage(image_list('pos_1/nf_'),
                    ambient=image_list('../ambient/nf_'),
                    camera='ff')

print obj.get_fiber_center(method='rectangle', show_image=True)
def testMethod(method):
    tol = 1
    test_range = 1
    factor = 1.0

    y_err = []
    x_err = []
    d_err = []

    for i in xrange(10):
        image_height = 2000
        image_width = 2000
        x0 = image_width * 0.5 + np.random.rand()
        y0 = image_height * 0.5 + np.random.rand()
        radius = min(image_height, image_width) * 0.25 + np.random.rand()
        amp = 10000
        dark_level = 500
        num_images = 1
        num_darks = 10

        mesh_grid = np.meshgrid(np.arange(image_width),
                                np.arange(image_height))
        dark_image = [
            dark_level * (np.random.rand(image_height, image_width) + 0.5)
            for i in xrange(num_darks)
        ]
        # noise = [0 for i in xrange(num_images)]
        noise = [
            np.random.rand(image_height, image_width) - 0.5
            for i in xrange(num_images)
        ]

        if method == 'edge' or method == 'radius':
            test_array = amp * circle_array(mesh_grid, x0, y0, radius,
                                            res=10) + dark_level
            test_array = [
                test_array + np.sqrt(test_array) * noise[i] * 30
                for i in xrange(num_images)
            ]
        elif method == 'gaussian':
            test_array = gaussian_array(mesh_grid, x0, y0, radius, amp,
                                        dark_level).reshape(
                                            image_height, image_width)
            test_array = [
                test_array + np.sqrt(test_array) * noise[i] * 30
                for i in xrange(num_images)
            ]

        im_obj = FiberImage(test_array,
                            dark=dark_image,
                            magnification=1,
                            pixel_size=1)

        center_y, center_x, diameter = im_obj.get_fiber_data(
            method=method, units='pixels', tol=tol, test_range=test_range)

        y_err.append(center_y - y0)
        x_err.append(center_x - x0)
        d_err.append(diameter - radius * 2)

    return y_err, x_err, d_err
Example #20
0
from fiber_properties import gaussian_fit, gaussian_array, FiberImage, plot_overlaid_cross_sections
import numpy as np
import matplotlib.pyplot as plt

# image = np.meshgrid(np.arange(100), np.arange(100))
# coeffs = np.random.normal(size=5) * 15 + 50
# print coeffs
# image = gaussian_array(image, *coeffs).reshape(100,100).astype('float64')
# image += np.random.normal(size=image.shape)

# im_obj = FiberImage('../data/modal_noise/Kris_data/rectangular_100x300um/coupled_agitation/ff_corrected.fit')
im_obj = FiberImage(
    '../data/stability/2017-03-19 Stability Test/circular_200um/in_100.fit',
    camera='in')
image = im_obj.get_image()
center = im_obj.get_fiber_center()

plt.figure(1)
plt.imshow(image)

# fit, output = gaussian_fit(image, full_output=True)
# print output
fit = im_obj.get_gaussian_fit()
plt.figure(2)
plt.imshow(fit)

plot_overlaid_cross_sections(image, fit, center)

plt.show()
Example #21
0
from fiber_properties import FiberImage, image_list

obj = FiberImage(image_list('pos_1/nf_'),
                 ambient=image_list('../ambient/nf_'),
                 camera='ff')

print obj.get_fiber_center(method='rectangle', show_image=True)
from fiber_properties import FiberImage

# image = 'C:/Libraries/Box Sync/ExoLab/Fiber_Characterization/Image Analysis/data/' \
#         + 'modal_noise/coupled_fibers/200-200um_test2/agitated_both/nf_obj.pkl'
image = 'C:/Libraries/Box Sync/ExoLab/Fiber_Characterization/Image Analysis/data/modal_noise/Kris_data/rectangular_100x300um/coupled_agitation/nf_obj.pkl'


im_obj = FiberImage(image)
# im_obj.get_modal_noise(method='fft', new=True, show_image=True)
im_obj.set_modal_noise(method='filter', new=True, show_image=False, kernel_size=31)
# print im_obj.get_modal_noise(method='filter')
im_obj.save_object(image)
from fiber_properties import gaussian_fit, gaussian_array, FiberImage, plot_overlaid_cross_sections
import numpy as np
import matplotlib.pyplot as plt

# image = np.meshgrid(np.arange(100), np.arange(100))
# coeffs = np.random.normal(size=5) * 15 + 50
# print coeffs
# image = gaussian_array(image, *coeffs).reshape(100,100).astype('float64')
# image += np.random.normal(size=image.shape)

# im_obj = FiberImage('../data/modal_noise/Kris_data/rectangular_100x300um/coupled_agitation/ff_corrected.fit')
im_obj = FiberImage('../data/stability/2017-03-19 Stability Test/circular_200um/in_100.fit', camera='in')
image = im_obj.get_image()
center = im_obj.get_fiber_center()

plt.figure(1)
plt.imshow(image)

# fit, output = gaussian_fit(image, full_output=True)
# print output
fit = im_obj.get_gaussian_fit()
plt.figure(2)
plt.imshow(fit)

plot_overlaid_cross_sections(image, fit, center)

plt.show()
import time
from scipy.signal import medfilt2d, order_filter
from scipy.ndimage.filters import median_filter, gaussian_filter, convolve
import numpy as np
from fiber_properties import FiberImage, filter_image, plot_image, show_plots, crop_image, plot_overlaid_cross_sections, Pixel
import pstats, cProfile

kernel = 51
# a = 2**16 * np.random.rand(100, 100)
# a = FiberImage('../data/modal_noise/Kris_data/rectangular_100x300um/unagitated/nf_corrected.fit').get_image()
im_obj = FiberImage('../data/modal_noise/coupled_fibers/200-200um_test2/agitated_both/nf_corrected.fit', threshold=1000)
radius = im_obj.get_fiber_radius(method='edge')
center = im_obj.get_fiber_center(method='edge')
a, new_center = crop_image(im_obj.get_image(), center, radius*1.1)

plot_image(a)

start = time.time()
b = filter_image(a, kernel, square=False)
end = time.time()
print(end-start)
plot_image(b)

# start = time.time()
# c = filter_image(a, kernel, quick=False, cython=False, zero_fill=True)
# end = time.time()
# print(end-start)
# plot_image(c)

# start = time.time()
# d = filter_image(a, kernel, quick=False, cython=True, zero_fill=False)
            method = FF_METHOD

        if NEW_DATA:
            if PARALLELIZE:
                pool = Pool(processes=PROCESSES)
                pool.map(partial(save_objects, cam=cam, method=method),
                         range(NUM_IMAGES))
            else:
                for i in xrange(NUM_IMAGES):
                    save_objects(i, cam, method)

        for i in xrange(NUM_IMAGES):
            obj_file = cam + '_obj_' + str(i).zfill(3) + '.pkl'

            print 'loading ' + cam + '_' + str(i).zfill(3)
            obj = FiberImage(FOLDER + obj_file)
            data[cam].center.append(obj.get_fiber_center(method=method, **OPTIONS))
            data[cam].centroid.append(obj.get_fiber_centroid(method=method, **OPTIONS))
            data[cam].x_diff.append(data[cam].centroid[-1].x - data[cam].center[-1].x)
            data[cam].y_diff.append(data[cam].centroid[-1].y - data[cam].center[-1].y)
            # data[cam].x_diff.append(data[cam].centroid[-1].x)
            # data[cam].y_diff.append(data[cam].centroid[-1].y)
            data[cam].diameter.append(obj.get_fiber_diameter(method=method, **OPTIONS))
            data[cam].time.append(obj.date_time)
            obj.save_object(FOLDER + obj_file)

        avg_x_diff = np.median(data[cam].x_diff)
        avg_y_diff = np.median(data[cam].y_diff)
        init_time = np.copy(data[cam].time[0])
        for i in xrange(NUM_IMAGES):
            data[cam].x_diff[i] -= avg_x_diff
from fiber_properties import FiberImage

# image = 'C:/Libraries/Box Sync/ExoLab/Fiber_Characterization/Image Analysis/data/' \
#         + 'modal_noise/coupled_fibers/200-200um_test2/agitated_both/nf_obj.pkl'
image = 'C:/Libraries/Box Sync/ExoLab/Fiber_Characterization/Image Analysis/data/modal_noise/Kris_data/rectangular_100x300um/coupled_agitation/nf_obj.pkl'

im_obj = FiberImage(image)
# im_obj.get_modal_noise(method='fft', new=True, show_image=True)
im_obj.set_modal_noise(method='filter',
                       new=True,
                       show_image=False,
                       kernel_size=31)
# print im_obj.get_modal_noise(method='filter')
im_obj.save_object(image)
    base_folder = '../data/Modal Noise Measurements/2016-07-26/'
    ambient_folder = base_folder + 'ambient/600um/'
    dark_folder = base_folder + 'dark/'
    agitated_folder = base_folder + 'images/600um/agitated/'
    unagitated_folder = base_folder + 'images/600um/unagitated/'

    nf = {}
    ff = {}

    nf_dark = image_list(dark_folder + 'nf_dark_')
    nf_ambient = image_list(ambient_folder + 'nf_ambient_')
    ff_dark = image_list(dark_folder + 'ff_dark_')
    ff_ambient = image_list(ambient_folder + 'ff_ambient_')

    nf_agitated = FiberImage(image_list(agitated_folder + 'nf_agitated_'),
                             nf_dark, nf_ambient)
    nf_unagitated = FiberImage(
        image_list(unagitated_folder + 'nf_unagitated_'), nf_dark, nf_ambient)
    nf_baseline = FiberImage(nf_agitated.get_tophat_fit(),
                             pixel_size=nf_agitated.get_pixel_size(),
                             threshold=0.1,
                             camera='nf')

    ff_agitated = FiberImage(image_list(agitated_folder + 'ff_agitated_'),
                             ff_dark, ff_ambient)
    ff_unagitated = FiberImage(
        image_list(unagitated_folder + 'ff_unagitated_'), ff_dark, ff_ambient)
    ff_baseline = FiberImage(ff_agitated.get_gaussian_fit(),
                             pixel_size=ff_agitated.get_pixel_size(),
                             magnification=1,
                             camera='ff')
from fiber_properties import polynomial_fit, polynomial_array, FiberImage, crop_image, plot_overlaid_cross_sections
import numpy as np
import matplotlib.pyplot as plt

# image = np.meshgrid(np.arange(100), np.arange(100))
# coeffs = np.random.rand(10) * 10.0
# print coeffs
# image = polynomial_array(image, *coeffs).reshape(100,100).astype('float64')
# image += np.random.normal(size=image.shape)*5.0

im_obj = FiberImage('../data/modal_noise/Kris_data/rectangular_100x300um/coupled_agitation/ff_corrected.fit')
image = im_obj.get_image()
center = im_obj.get_fiber_center()
# radius = im_obj.get_fiber_radius()
# image, center = crop_image(image, center=center, radius=radius/2)

plt.figure(1)
plt.imshow(image)

# fit = polynomial_fit(image, 6)
fit = im_obj.get_polynomial_fit()
plt.figure(2)
plt.imshow(fit)

plot_overlaid_cross_sections(image, fit, center)

plt.show()
        if camera == 'nf':
            name = 'Near Field'
            method = 'radius'
        if camera == 'ff':
            name = 'Far Field'
            method = 'gaussian'

        print name

        data_dict[camera] = {}
        for test in TESTS:
            data_dict[camera][test] = deepcopy(base_dict)

            for i in xrange(NUM_IMAGES):
                data_FOLDER = FOLDER[test] + camera + '_' + str(i).zfill(3) + '_data.p'
                obj = FiberImage(image_input=None, image_data=data_FOLDER)
                y0, x0, diameter = obj.get_fiber_data(method=method, units='microns')
                if camera == 'in':
                    gauss_y, gauss_x = obj.get_fiber_center(method='gaussian', units='microns')
                    data_dict[camera][test]['x0'].append(gauss_x-x0)
                    data_dict[camera][test]['y0'].append(gauss_y-y0)
                else:
                    data_dict[camera][test]['x0'].append(x0)
                    data_dict[camera][test]['y0'].append(y0)
                data_dict[camera][test]['diameter'].append(diameter)
                data_dict[camera][test]['time'].append(obj.get_image_info('date_time'))

            for prop in ['x0', 'y0', 'diameter', 'time']:
                data_dict[camera][test][prop] = (np.array(data_dict[camera][test][prop])
                                                 - data_dict[camera][test][prop][0])
            data_dict[camera][test]['r0'] = np.sqrt(data_dict[camera][test]['x0']**2
from fiber_properties import polynomial_fit, polynomial_array, FiberImage, crop_image, plot_overlaid_cross_sections
import numpy as np
import matplotlib.pyplot as plt

# image = np.meshgrid(np.arange(100), np.arange(100))
# coeffs = np.random.rand(10) * 10.0
# print coeffs
# image = polynomial_array(image, *coeffs).reshape(100,100).astype('float64')
# image += np.random.normal(size=image.shape)*5.0

im_obj = FiberImage('../data/modal_noise/Kris_data/rectangular_100x300um/coupled_agitation/ff_corrected.fit')
image = im_obj.get_image()
center = im_obj.get_fiber_center()
# radius = im_obj.get_fiber_radius()
# image, center = crop_image(image, center=center, radius=radius/2)

plt.figure(1)
plt.imshow(image)

# fit = polynomial_fit(image, 6)
fit = im_obj.get_polynomial_fit()
plt.figure(2)
plt.imshow(fit)

plot_overlaid_cross_sections(image, fit, center)

plt.show()
Example #31
0
            method = FF_METHOD

        if NEW_DATA:
            if PARALLELIZE:
                pool = Pool(processes=PROCESSES)
                pool.map(partial(save_objects, cam=cam, method=method),
                         range(NUM_IMAGES))
            else:
                for i in xrange(NUM_IMAGES):
                    save_objects(i, cam, method)

        for i in xrange(NUM_IMAGES):
            obj_file = cam + '_obj_' + str(i).zfill(3) + '.pkl'

            print 'loading ' + cam + '_' + str(i).zfill(3)
            obj = FiberImage(FOLDER + obj_file)
            data[cam].center.append(obj.get_fiber_center(method=method, units='microns'))
            data[cam].centroid.append(obj.get_fiber_centroid(method=method, units='microns'))
            data[cam].x_diff.append(data[cam].centroid[-1].x - data[cam].center[-1].x)
            data[cam].y_diff.append(data[cam].centroid[-1].y - data[cam].center[-1].y)
            data[cam].diameter.append(obj.get_fiber_diameter(method=method, units='microns'))
            data[cam].time.append(obj.date_time)
            obj.save_object(FOLDER + obj_file)
            if cam == 'in':
                data['spot'].center.append(obj.get_fiber_center(method='gaussian', units='microns'))
                data['spot'].centroid.append(obj.get_fiber_centroid(method='gaussian', units='microns'))
                data['spot'].x_diff.append(data['spot'].center[-1].x - data[cam].center[-1].x)
                data['spot'].y_diff.append(data['spot'].center[-1].y - data[cam].center[-1].y)
                data['spot'].diameter.append(obj.get_fiber_diameter(method='gaussian', units='microns'))
                data['spot'].time.append(obj.date_time)
                obj.save_object(FOLDER + obj_file)
from fiber_properties import FiberImage, image_list, show_image_array

folder = '../data/scrambling/2016-08-05 Prototype Core Extension 1/'
dark_folder = folder + 'Dark/'
ambient_folder = folder + 'Ambient/'

in_images = image_list(ambient_folder + 'in_')
nf_images = image_list(ambient_folder + 'nf_')
ff_images = image_list(ambient_folder + 'ff_')

print 'input'
for image in in_images:
    print FiberImage(image, camera='in',
                     ambient=in_images).get_fiber_centroid(method='full',
                                                           units='pixels')
print
print 'near field'
for image in nf_images:
    nf_obj = FiberImage(image, camera='nf')
    print nf_obj.get_fiber_centroid(method='full', units='pixels')
print
print 'far field'
for image in ff_images:
    ff_obj = FiberImage(image, camera='ff')
    print ff_obj.get_fiber_centroid(method='full', units='pixels')
Example #33
0
from fiber_properties import FiberImage, circle_array
import numpy as np

mesh_grid = np.meshgrid(np.arange(1000), np.arange(1000))
base = 50000.0 * circle_array(mesh_grid, 500, 500, 50, res=16) + 400.0
dark = np.random.normal(base, 5.0 * np.sqrt(base)).astype('float64')
# dark = np.random.poisson(25.0*base).astype('float64') / 25.0
FiberImage(dark).save_image('noise_test.fit')
    base_folder = '../data/Modal Noise Measurements/2016-07-26/'
    ambient_folder = base_folder + 'ambient/600um/'
    dark_folder = base_folder + 'dark/'
    agitated_folder = base_folder + 'images/600um/agitated/'
    unagitated_folder = base_folder + 'images/600um/unagitated/'

    nf = {}
    ff = {}

    nf_dark = image_list(dark_folder + 'nf_dark_')
    nf_ambient = image_list(ambient_folder + 'nf_ambient_')
    ff_dark = image_list(dark_folder + 'ff_dark_')
    ff_ambient = image_list(ambient_folder + 'ff_ambient_')

    nf_agitated = FiberImage(image_list(agitated_folder + 'nf_agitated_'),
                                nf_dark, nf_ambient)
    nf_unagitated = FiberImage(image_list(unagitated_folder + 'nf_unagitated_'),
                                  nf_dark, nf_ambient)
    nf_baseline = FiberImage(nf_agitated.get_tophat_fit(),
                                pixel_size=nf_agitated.get_pixel_size(),
                                threshold=0.1, camera='nf')

    ff_agitated = FiberImage(image_list(agitated_folder + 'ff_agitated_'),
                                ff_dark, ff_ambient)
    ff_unagitated = FiberImage(image_list(unagitated_folder + 'ff_unagitated_'),
                                  ff_dark, ff_ambient)
    ff_baseline = FiberImage(ff_agitated.get_gaussian_fit(),
                                pixel_size=ff_agitated.get_pixel_size(),
                                magnification=1, camera='ff')

    print()