From f614afaa08052d890597df96184d555041aca9e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Thu, 2 Aug 2012 07:46:34 +0200 Subject: [PATCH 1/2] fix orientation of regionprops with correct quadrant determination --- skimage/measure/_regionprops.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/measure/_regionprops.py b/skimage/measure/_regionprops.py index 396c6bdd..ee58868c 100644 --- a/skimage/measure/_regionprops.py +++ b/skimage/measure/_regionprops.py @@ -1,5 +1,5 @@ # coding: utf-8 -from math import sqrt, atan, pi as PI +from math import sqrt, atan2, pi as PI import numpy as np from scipy import ndimage @@ -301,7 +301,7 @@ def regionprops(label_image, properties=['Area', 'Centroid'], if a - c == 0: obj_props['Orientation'] = PI / 2 else: - obj_props['Orientation'] = - 0.5 * atan(2 * b / (a - c)) + obj_props['Orientation'] = - 0.5 * atan2(2 * b, (a - c)) if 'Perimeter' in properties: obj_props['Perimeter'] = perimeter(array, 4) From 8e28e39887a2a237c7cf5c3111eb5a6354bd1391 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 4 Aug 2012 10:54:15 +0200 Subject: [PATCH 2/2] add test case for correct quadrant determination --- skimage/measure/tests/test_regionprops.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/skimage/measure/tests/test_regionprops.py b/skimage/measure/tests/test_regionprops.py index 4408c3d1..915087dc 100644 --- a/skimage/measure/tests/test_regionprops.py +++ b/skimage/measure/tests/test_regionprops.py @@ -1,6 +1,7 @@ from numpy.testing import assert_array_equal, assert_almost_equal, \ assert_array_almost_equal import numpy as np +import math from skimage.measure import regionprops @@ -193,6 +194,9 @@ def test_orientation(): orientation = regionprops(SAMPLE, ['Orientation'])[0]['Orientation'] # determined with MATLAB assert_almost_equal(orientation, 0.10446844651921) + # test correct quadrant determination + orientation2 = regionprops(SAMPLE.T, ['Orientation'])[0]['Orientation'] + assert_almost_equal(orientation2, math.pi / 2 - orientation) def test_perimeter(): perimeter = regionprops(SAMPLE, ['Perimeter'])[0]['Perimeter']