def test_large_circle_50X50_no_noise_2(self): folder_script=os.path.dirname(__file__) filename_input="NoisyCircle_x_6_y_-30_r_118.162.png" file_noisy_line=os.path.join(folder_script,"./data/",filename_input) np_image=skimage.io.imread(file_noisy_line,as_gray=True) lst_points=Util.create_points_from_numpyimage(np_image) helper=BullockCircleFitting(lst_points) result:CircleModel =helper.FindBestFittingCircle() # #Superimpose the new line over the image # folder_results=os.path.join(folder_script,"../out/") count_of_files=len(os.listdir(folder_results)) filename_results=("%s.%d.png" % (__name__,count_of_files) ) file_result=os.path.join(folder_results,filename_results) new_points=CircleModel.generate_points_from_circle(result) np_superimposed=Util.superimpose_points_on_image(np_image,new_points,100,255,100) skimage.io.imsave(file_result,np_superimposed) delta=10 self.assertAlmostEquals(result.R, +118.0, delta=delta); self.assertAlmostEquals(result.X, +06.0, delta=delta); self.assertAlmostEquals(result.Y, -30.0, delta=delta); pass
def test_3points_around_origin_unit_radius(self): p1=Point(+1,0) p2=Point(+0,1) p3=Point(-1,0) expected_list=list() expected_list.append(p1) expected_list.append(p2) expected_list.append(p3) helper=BullockCircleFitting(expected_list) result:CircleModel =helper.FindBestFittingCircle() delta=0.01 self.assertAlmostEquals(result.R, 1.0, delta=delta); self.assertAlmostEquals(result.X, 0.0, delta=delta); self.assertAlmostEquals(result.Y, 0.0, delta=delta);
def find_model_using_gradient_descent(self, modelhint: CircleModel, points: List[Point]) -> CircleModel: try: gdhelper = BullockCircleFitting.BullockCircleFitting(points) new_model = gdhelper.FindBestFittingCircle() return new_model except Exception as e: print("Error while Gradient descent: %s" % (str(e))) return None pass
def test_constructor(self): p1=Point(1,1) p2=Point(2,2) p3=Point(3,3) expected_list=list() expected_list.append(p1) expected_list.append(p2) expected_list.append(p3) algo=BullockCircleFitting(expected_list) self.assertIsNotNone(algo) self.assertTrue (p1 in algo._points) self.assertTrue (p2 in algo._points) self.assertTrue (p3 in algo._points) self.assertEqual(len(algo._points),3) pass
def find_model_using_gradient_descent2(self, modelhint: CircleModel, points: List[Point], lst_results): new_model = None try: gdhelper = BullockCircleFitting.BullockCircleFitting(points) new_model = gdhelper.FindBestFittingCircle() except Exception as e: #print("Error while Gradient descent: %s" % (str(e))) pass if (new_model == None): return new_inliers, goodness = self.get_inliers(new_model, []) if (len(new_inliers) == 0): return result = (new_model, new_inliers, goodness) lst_results.append(result) return