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)
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()
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)
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))
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]
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))
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')
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')
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
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 = '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
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
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, 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()