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
Пример #2
0
            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
                                                    + data_dict[camera][test]['y0']**2)
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
            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]) -