コード例 #1
0
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()
コード例 #2
0
        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)
コード例 #3
0
        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
                                                    + data_dict[camera][test]['y0']**2)
            for i, time in enumerate(data_dict[camera][test]['time']):
                data_dict[camera][test]['time'][i] = time.total_seconds()
コード例 #4
0
        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
            data[cam].y_diff[i] -= avg_y_diff
コード例 #5
0
            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 +
コード例 #6
0
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()
コード例 #7
0
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)
コード例 #8
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()
コード例 #9
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)
コード例 #10
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)