def error(coords_list): seeds = fixed_seeds.copy() print(f'coordinate list : {coords_list}') print(f'seeds : {seeds}') for index in range(len(coords_list) // 2): coordinate = (int(coords_list[2 * index]), int(coords_list[2 * index + 1])) seeds.update({coordinate: colour}) segmentation = Segmentation(image_array, beta, seeds, image_name, reference_path=target_segmentation_path) segmentation.solve() segmentation.build_segmentation_image() return segmentation.compute_error()
for key, value in initial_seeds.items() if value == 'red' } initial_coords = list(initial_variable_seeds.keys()) print(f'initial coords = {initial_coords}') optimal_coords = optimize.minimize(error, initial_coords, method='nelder-mead', constraints=cons, options={ 'xtol': 1e-3, 'disp': True }) optimal_seeds = fixed_seeds for index in range(len(optimal_coords) // 2): coordinate = (int(optimal_coords[2 * index]), int(optimal_coords[2 * index + 1])) optimal_seeds.update({coordinate: colour}) # optimal segmentation segmentation = Segmentation(image_array, beta, optimal_seeds, image_name, reference_path=target_segmentation_path) segmentation.solve() segmentation.build_segmentation_image() segmentation.compute_error() segmentation.contours_to_png()
std_list = np.linspace(0, 0.02, size) betas_list = np.linspace(0, 5000, size) error_values = [] with open(seeds_file_path, 'rb') as seeds_file: seeds = pickle.load(seeds_file) for noise_std in std_list: segmentation = Segmentation(image_array, 1, seeds, image_name) segmentation.add_noise(0, noise_std) segmentation.set_reference_segmentation(target_segmentation_path) for beta in betas_list: print(f'index = {index}, beta = {beta}, std = {noise_std}') segmentation.beta = beta segmentation.solve() segmentation.build_segmentation_image() error_values.append(segmentation.compute_error()) index += 1 X, Y = np.meshgrid(betas_list, std_list) triang = mtri.Triangulation(np.reshape( X, [size*size]), np.reshape(Y, [size*size])) fig = plt.figure() ax = plt.axes(projection='3d') ax.set_xlabel(r'$\beta$') ax.set_ylabel('noise') ax.set_zlabel('error') ax.set_zlim3d(0, 0.085) ax.set_zticks([0.1]) ax.set_xticks([0, 5000]) ax.set_yticks([0, 0.02])