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_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 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
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_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))
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 'in' in CAMS: CAMS += ['spot'] for cam in CAMS: init_x_diff = np.copy(data[cam].x_diff[0]) init_y_diff = np.copy(data[cam].y_diff[0])
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 data[cam].time[i] -= init_time data[cam].time[i] = data[cam].time[i].total_seconds() / 60.0 plot_stability(data[cam], cam) plt.savefig(FOLDER + cam + '_stability.png') plot_stability_binned(data[cam], cam, BIN_SIZE) plt.savefig(FOLDER + cam + '_stability_binned.png')
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)