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()
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)
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()
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
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()
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)
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()
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)