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