diff --git a/skimage/measure/tests/test_fit.py b/skimage/measure/tests/test_fit.py new file mode 100644 index 00000000..137a6e44 --- /dev/null +++ b/skimage/measure/tests/test_fit.py @@ -0,0 +1,43 @@ +import numpy as np +from numpy.testing import assert_equal, assert_raises, assert_almost_equal +from skimage.measure import LineModel, CircleModel, EllipseModel + + +def test_line_model_invalid_input(): + assert_raises(ValueError, LineModel().estimate, np.empty((5, 3))) + + +def test_line_model_predict(): + model = LineModel() + model._params = (10, 1) + x = np.arange(-10, 10) + y = model.predict_y(x) + assert_almost_equal(x, model.predict_x(y)) + + +def test_line_model_is_degenerate(): + assert_equal(LineModel().is_degenerate(np.empty((1, 2))), True) + + +def test_line_model_estimate(): + # generate original data without noise + model0 = LineModel() + model0._params = (10, 1) + x0 = np.arange(-100, 100) + y0 = model0.predict_y(x0) + data0 = np.column_stack([x0, y0]) + + # add gaussian noise to data + np.random.seed(1234) + data = data0 + np.random.normal(size=data0.shape) + + # estimate parameters of noisy data + model_est = LineModel() + model_est.estimate(data) + + # test whether estimated parameters almost equals original parameters + assert_almost_equal(model0._params, model_est._params, 1) + + +if __name__ == "__main__": + np.testing.run_module_suite()