From 80939997311a0a5837b017c7c194d1367f4d2d4d Mon Sep 17 00:00:00 2001 From: Matthew Trentacoste Date: Tue, 22 Oct 2013 23:26:49 -0700 Subject: [PATCH 001/577] Luv colorspace conversions Adding XYZ <--> Luv, RGB <--> Adding test functions to mirror Lab tests --- skimage/color/__init__.py | 4 + skimage/color/colorconv.py | 191 ++++++++++++++++++++++++++ skimage/color/tests/test_colorconv.py | 42 ++++++ 3 files changed, 237 insertions(+) diff --git a/skimage/color/__init__.py b/skimage/color/__init__.py index 1c61020d..a471fd82 100644 --- a/skimage/color/__init__.py +++ b/skimage/color/__init__.py @@ -13,6 +13,10 @@ from .colorconv import (convert_colorspace, lab2xyz, lab2rgb, rgb2lab, + xyz2luv, + luv2xyz, + luv2rgb, + rgb2luv, rgb2hed, hed2rgb, lab2lch, diff --git a/skimage/color/colorconv.py b/skimage/color/colorconv.py index 7562b650..cad4565e 100644 --- a/skimage/color/colorconv.py +++ b/skimage/color/colorconv.py @@ -849,6 +849,197 @@ def lab2rgb(lab): return xyz2rgb(lab2xyz(lab)) +def xyz2luv(xyz): + """XYZ to CIE-Luv color space conversion. + + Parameters + ---------- + xyz : array_like + The image in XYZ format, in a 3- or 4-D array of shape + (.., ..,[ ..,] 3). + + Returns + ------- + out : ndarray + The image in CIE-Luv format, in a 3- or 4-D array of shape + (.., ..,[ ..,] 3). + + Raises + ------ + ValueError + If `xyz` is not a 3-D array of shape (.., ..,[ ..,] 3). + + Notes + ----- + Observer= 2A, Illuminant= D65 + CIE XYZ tristimulus values x_ref = 95.047, y_ref = 100., z_ref = 108.883 + + References + ---------- + .. [1] http://www.easyrgb.com/index.php?X=MATH&H=16#text16 + .. [2] http://en.wikipedia.org/wiki/CIELUV + + Examples + -------- + >>> from skimage import data + >>> from skimage.color import rgb2xyz, xyz2luv + >>> lena = data.lena() + >>> lena_xyz = rgb2xyz(lena) + >>> lena_luv = xyz2luv(lena_xyz) + """ + arr = _prepare_colorarray(xyz) + + # extract channels + x, y, z = arr[..., 0], arr[..., 1], arr[..., 2] + + machineEps = np.finfo(np.float).eps + + # compute y_r and L + L = y / lab_ref_white[1] + mask = L > 0.008856 + L[mask] = 116. * np.power( L[mask], 1. / 3. ) - 16. + L[~mask] = 903.3 * L[~mask] + + u0 = 4*lab_ref_white[0] / np.dot( [1, 15, 3], lab_ref_white ) + v0 = 9*lab_ref_white[1] / np.dot( [1, 15, 3], lab_ref_white ) + + def div_nan_check( n, d ): + out = n / d + mask = np.isnan( out ) + out[mask] = 0. + return out + + # u' and v' helper functions + def fu( X, Y, Z ): + return ( 4.*X ) / ( X + 15.*Y + 3.*Z + machineEps ) + def fv( X, Y, Z ): + return ( 9.*Y ) / ( X + 15.*Y + 3.*Z + machineEps ) + + # compute u and v using helper functions + u = 13.*L * ( fu(x,y,z) - u0 ) + v = 13.*L * ( fv(x,y,z) - v0 ) + + return np.concatenate([x[..., np.newaxis] for x in [L, u, v]], axis=-1) + + +def luv2xyz(luv): + """CIE-LAB to XYZcolor space conversion. + + Parameters + ---------- + lab : array_like + The image in lab format, in a 3-D array of shape (.., .., 3). + + Returns + ------- + out : ndarray + The image in XYZ format, in a 3-D array of shape (.., .., 3). + + Raises + ------ + ValueError + If `lab` is not a 3-D array of shape (.., .., 3). + + Notes + ----- + Observer= 2A, Illuminant= D65 + CIE XYZ tristimulus values x_ref = 95.047, y_ref = 100., z_ref = 108.883 + + References + ---------- + .. [1] http://www.easyrgb.com/index.php?X=MATH&H=16#text16 + .. [2] http://en.wikipedia.org/wiki/CIELUV + + """ + + arr = _prepare_colorarray(luv).copy() + + L, u, v = arr[:, :, 0], arr[:, :, 1], arr[:, :, 2] + + machineEps = np.finfo(np.float).eps + + # compute y + y = L.copy() + mask = y > 7.999625 + y[mask] = np.power( (y[mask]+16.) / 116., 3.) + y[~mask] = y[~mask] / 903.3 + y *= lab_ref_white[1] + + # reference white x,z + uv_weights = [1, 15, 3] + u0 = 4*lab_ref_white[0] / np.dot( uv_weights, lab_ref_white ) + v0 = 9*lab_ref_white[1] / np.dot( uv_weights, lab_ref_white ) + + def div_nan_check( n, d ): + out = n / d + mask = np.isnan( out ) + out[mask] = 0. + return out + + # compute intermediate values + a = u0 + u / ( 13.*L + machineEps ) + b = v0 + v / ( 13.*L + machineEps ) + c = 3*y * (5*b-3) + + # compute x and z + z = ( (a-4)*c - 15*a*b*y ) / ( 12*b ) + x = -( c/b + 3.*z ) + + return np.concatenate([x[..., np.newaxis] for x in [x, y, z]], axis=-1) + + +def rgb2luv(rgb): + """RGB to luv color space conversion. + + Parameters + ---------- + rgb : array_like + The image in RGB format, in a 3- or 4-D array of shape + (.., ..,[ ..,] 3). + + Returns + ------- + out : ndarray + The image in Luv format, in a 3- or 4-D array of shape + (.., ..,[ ..,] 3). + + Raises + ------ + ValueError + If `rgb` is not a 3- or 4-D array of shape (.., ..,[ ..,] 3). + + Notes + ----- + This function uses rgb2xyz and xyz2luv. + """ + return xyz2luv(rgb2xyz(rgb)) + + +def luv2rgb(luv): + """Luv to RGB color space conversion. + + Parameters + ---------- + rgb : array_like + The image in Luv format, in a 3-D array of shape (.., .., 3). + + Returns + ------- + out : ndarray + The image in RGB format, in a 3-D array of shape (.., .., 3). + + Raises + ------ + ValueError + If `luv` is not a 3-D array of shape (.., .., 3). + + Notes + ----- + This function uses luv2xyz and xyz2rgb. + """ + return xyz2rgb(luv2xyz(luv)) + + def rgb2hed(rgb): """RGB to Haematoxylin-Eosin-DAB (HED) color space conversion. diff --git a/skimage/color/tests/test_colorconv.py b/skimage/color/tests/test_colorconv.py index fbec9ba6..26b55e35 100644 --- a/skimage/color/tests/test_colorconv.py +++ b/skimage/color/tests/test_colorconv.py @@ -33,6 +33,8 @@ from skimage.color import (rgb2hsv, hsv2rgb, rgb2grey, gray2rgb, xyz2lab, lab2xyz, lab2rgb, rgb2lab, + xyz2luv, luv2xyz, + luv2rgb, rgb2luv, is_rgb, is_gray, lab2lch, lch2lab, guess_spatial_dimensions @@ -81,6 +83,13 @@ class TestColorconv(TestCase): [[46.229, -51.7, 49.898]], # green ]) + luv_array = np.array([[[53.233, 175.053, 37.751]], # red + [[0., 0., 0.]], # black + [[100., 0.001, -0.017]], # white + [[32.303, -9.400, -130.358]], # blue + [[46.228, -43.774, 56.589]], # green + ]) + # RGB to HSV def test_rgb2hsv_conversion(self): rgb = img_as_float(self.img_rgb)[::16, ::16] @@ -250,6 +259,39 @@ class TestColorconv(TestCase): img_rgb = img_as_float(self.img_rgb) assert_array_almost_equal(lab2rgb(rgb2lab(img_rgb)), img_rgb) + # test matrices for xyz2luv and luv2xyz generated using http://www.easyrgb.com/index.php?X=CALC + # Note: easyrgb website displays xyz*100 + def test_xyz2luv(self): + assert_array_almost_equal(xyz2luv(self.xyz_array), + self.luv_array, decimal=3) + + def test_luv2xyz(self): + assert_array_almost_equal(luv2xyz(self.luv_array), + self.xyz_array, decimal=3) + + def test_rgb2luv_brucelindbloom(self): + """ + Test the RGB->Lab conversion by comparing to the calculator on the + authoritative Bruce Lindbloom + [website](http://brucelindbloom.com/index.html?ColorCalculator.html). + """ + # Obtained with D65 white point, sRGB model and gamma + gt_for_colbars = np.array([ + [100,0,0], + [97.1393, 7.7056, 106.7866], + [91.1132, -70.4773, -15.2042], + [87.7347, -83.0776, 107.3985], + [60.3242, 84.0714, -108.6834], + [53.2408, 175.0151, 37.7564], + [32.2970, -9.4054, -130.3423], + [0,0,0]]).T + gt_array = np.swapaxes(gt_for_colbars.reshape(3, 4, 2), 0, 2) + assert_array_almost_equal(rgb2luv(self.colbars_array), gt_array, decimal=2) + + def test_luv_rgb_roundtrip(self): + img_rgb = img_as_float(self.img_rgb) + assert_array_almost_equal(luv2rgb(rgb2luv(img_rgb)), img_rgb) + def test_lab_lch_roundtrip(self): rgb = img_as_float(self.img_rgb) lab = rgb2lab(rgb) From 57eb69465c5d44bc2a51a1288429d5b76bfc09a9 Mon Sep 17 00:00:00 2001 From: Matthew Trentacoste Date: Tue, 22 Oct 2013 23:29:51 -0700 Subject: [PATCH 002/577] Adding references regarding Lab and Luv spaces to docstring --- skimage/color/colorconv.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/skimage/color/colorconv.py b/skimage/color/colorconv.py index cad4565e..97811bda 100644 --- a/skimage/color/colorconv.py +++ b/skimage/color/colorconv.py @@ -871,6 +871,12 @@ def xyz2luv(xyz): Notes ----- + According to "Principles of Color Technology" by Roy S. Berns, it is a myth + that "CIELAB was recommended for large color differences and that CIELUV was + recommended for small color differences." It is also a myth that "CIELAB is + recommended for reflecting samples while CIELUV is recommended for sources + and displays." + Observer= 2A, Illuminant= D65 CIE XYZ tristimulus values x_ref = 95.047, y_ref = 100., z_ref = 108.883 From 36e56e26394a5598718a1e4b2f894c33894653d7 Mon Sep 17 00:00:00 2001 From: Matthew Trentacoste Date: Tue, 22 Oct 2013 23:33:38 -0700 Subject: [PATCH 003/577] Removing unneeded division checking code --- skimage/color/colorconv.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/skimage/color/colorconv.py b/skimage/color/colorconv.py index 97811bda..bae63ac9 100644 --- a/skimage/color/colorconv.py +++ b/skimage/color/colorconv.py @@ -909,12 +909,6 @@ def xyz2luv(xyz): u0 = 4*lab_ref_white[0] / np.dot( [1, 15, 3], lab_ref_white ) v0 = 9*lab_ref_white[1] / np.dot( [1, 15, 3], lab_ref_white ) - def div_nan_check( n, d ): - out = n / d - mask = np.isnan( out ) - out[mask] = 0. - return out - # u' and v' helper functions def fu( X, Y, Z ): return ( 4.*X ) / ( X + 15.*Y + 3.*Z + machineEps ) @@ -976,12 +970,6 @@ def luv2xyz(luv): u0 = 4*lab_ref_white[0] / np.dot( uv_weights, lab_ref_white ) v0 = 9*lab_ref_white[1] / np.dot( uv_weights, lab_ref_white ) - def div_nan_check( n, d ): - out = n / d - mask = np.isnan( out ) - out[mask] = 0. - return out - # compute intermediate values a = u0 + u / ( 13.*L + machineEps ) b = v0 + v / ( 13.*L + machineEps ) From 9d9d16d2a49b22114857548f2d1478fc833647be Mon Sep 17 00:00:00 2001 From: Matthew Trentacoste Date: Tue, 22 Oct 2013 23:52:12 -0700 Subject: [PATCH 004/577] renaming machineEps to eps to match convention --- skimage/color/colorconv.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/skimage/color/colorconv.py b/skimage/color/colorconv.py index bae63ac9..17ebd2bc 100644 --- a/skimage/color/colorconv.py +++ b/skimage/color/colorconv.py @@ -898,7 +898,7 @@ def xyz2luv(xyz): # extract channels x, y, z = arr[..., 0], arr[..., 1], arr[..., 2] - machineEps = np.finfo(np.float).eps + eps = np.finfo(np.float).eps # compute y_r and L L = y / lab_ref_white[1] @@ -911,9 +911,9 @@ def xyz2luv(xyz): # u' and v' helper functions def fu( X, Y, Z ): - return ( 4.*X ) / ( X + 15.*Y + 3.*Z + machineEps ) + return ( 4.*X ) / ( X + 15.*Y + 3.*Z + eps ) def fv( X, Y, Z ): - return ( 9.*Y ) / ( X + 15.*Y + 3.*Z + machineEps ) + return ( 9.*Y ) / ( X + 15.*Y + 3.*Z + eps ) # compute u and v using helper functions u = 13.*L * ( fu(x,y,z) - u0 ) @@ -956,7 +956,7 @@ def luv2xyz(luv): L, u, v = arr[:, :, 0], arr[:, :, 1], arr[:, :, 2] - machineEps = np.finfo(np.float).eps + eps = np.finfo(np.float).eps # compute y y = L.copy() @@ -971,8 +971,8 @@ def luv2xyz(luv): v0 = 9*lab_ref_white[1] / np.dot( uv_weights, lab_ref_white ) # compute intermediate values - a = u0 + u / ( 13.*L + machineEps ) - b = v0 + v / ( 13.*L + machineEps ) + a = u0 + u / ( 13.*L + eps ) + b = v0 + v / ( 13.*L + eps ) c = 3*y * (5*b-3) # compute x and z From df6a112bc51256a16c1d50b1dd6579faefdeebe8 Mon Sep 17 00:00:00 2001 From: Matthew Trentacoste Date: Wed, 23 Oct 2013 00:07:00 -0700 Subject: [PATCH 005/577] flake8-compliant formatting --- skimage/color/colorconv.py | 45 +++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/skimage/color/colorconv.py b/skimage/color/colorconv.py index 17ebd2bc..c15ccf02 100644 --- a/skimage/color/colorconv.py +++ b/skimage/color/colorconv.py @@ -893,7 +893,7 @@ def xyz2luv(xyz): >>> lena_xyz = rgb2xyz(lena) >>> lena_luv = xyz2luv(lena_xyz) """ - arr = _prepare_colorarray(xyz) + arr = _prepare_colorarray(xyz) # extract channels x, y, z = arr[..., 0], arr[..., 1], arr[..., 2] @@ -901,25 +901,26 @@ def xyz2luv(xyz): eps = np.finfo(np.float).eps # compute y_r and L - L = y / lab_ref_white[1] - mask = L > 0.008856 - L[mask] = 116. * np.power( L[mask], 1. / 3. ) - 16. - L[~mask] = 903.3 * L[~mask] + L = y / lab_ref_white[1] + mask = L > 0.008856 + L[mask] = 116. * np.power(L[mask], 1. / 3.) - 16. + L[~mask] = 903.3 * L[~mask] - u0 = 4*lab_ref_white[0] / np.dot( [1, 15, 3], lab_ref_white ) - v0 = 9*lab_ref_white[1] / np.dot( [1, 15, 3], lab_ref_white ) + u0 = 4*lab_ref_white[0] / np.dot([1, 15, 3], lab_ref_white) + v0 = 9*lab_ref_white[1] / np.dot([1, 15, 3], lab_ref_white) # u' and v' helper functions - def fu( X, Y, Z ): - return ( 4.*X ) / ( X + 15.*Y + 3.*Z + eps ) - def fv( X, Y, Z ): - return ( 9.*Y ) / ( X + 15.*Y + 3.*Z + eps ) + def fu(X, Y, Z): + return (4.*X) / (X + 15.*Y + 3.*Z + eps) + + def fv(X, Y, Z): + return (9.*Y) / (X + 15.*Y + 3.*Z + eps) # compute u and v using helper functions - u = 13.*L * ( fu(x,y,z) - u0 ) - v = 13.*L * ( fv(x,y,z) - v0 ) + u = 13.*L * (fu(x, y, z) - u0) + v = 13.*L * (fv(x, y, z) - v0) - return np.concatenate([x[..., np.newaxis] for x in [L, u, v]], axis=-1) + return np.concatenate([q[..., np.newaxis] for q in [L, u, v]], axis=-1) def luv2xyz(luv): @@ -961,25 +962,25 @@ def luv2xyz(luv): # compute y y = L.copy() mask = y > 7.999625 - y[mask] = np.power( (y[mask]+16.) / 116., 3.) + y[mask] = np.power((y[mask]+16.) / 116., 3.) y[~mask] = y[~mask] / 903.3 y *= lab_ref_white[1] # reference white x,z uv_weights = [1, 15, 3] - u0 = 4*lab_ref_white[0] / np.dot( uv_weights, lab_ref_white ) - v0 = 9*lab_ref_white[1] / np.dot( uv_weights, lab_ref_white ) + u0 = 4*lab_ref_white[0] / np.dot(uv_weights, lab_ref_white) + v0 = 9*lab_ref_white[1] / np.dot(uv_weights, lab_ref_white) # compute intermediate values - a = u0 + u / ( 13.*L + eps ) - b = v0 + v / ( 13.*L + eps ) + a = u0 + u / (13.*L + eps) + b = v0 + v / (13.*L + eps) c = 3*y * (5*b-3) # compute x and z - z = ( (a-4)*c - 15*a*b*y ) / ( 12*b ) - x = -( c/b + 3.*z ) + z = ((a-4)*c - 15*a*b*y) / (12*b) + x = -(c/b + 3.*z) - return np.concatenate([x[..., np.newaxis] for x in [x, y, z]], axis=-1) + return np.concatenate([q[..., np.newaxis] for q in [x, y, z]], axis=-1) def rgb2luv(rgb): From 44580817fcfdf1b59499fece18a390e0712692df Mon Sep 17 00:00:00 2001 From: Matthew Trentacoste Date: Wed, 23 Oct 2013 12:42:40 -0700 Subject: [PATCH 006/577] Cleaning up docstrings --- skimage/color/colorconv.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/skimage/color/colorconv.py b/skimage/color/colorconv.py index c15ccf02..e40e9c55 100644 --- a/skimage/color/colorconv.py +++ b/skimage/color/colorconv.py @@ -871,12 +871,6 @@ def xyz2luv(xyz): Notes ----- - According to "Principles of Color Technology" by Roy S. Berns, it is a myth - that "CIELAB was recommended for large color differences and that CIELUV was - recommended for small color differences." It is also a myth that "CIELAB is - recommended for reflecting samples while CIELUV is recommended for sources - and displays." - Observer= 2A, Illuminant= D65 CIE XYZ tristimulus values x_ref = 95.047, y_ref = 100., z_ref = 108.883 @@ -924,7 +918,7 @@ def xyz2luv(xyz): def luv2xyz(luv): - """CIE-LAB to XYZcolor space conversion. + """CIE-Luv to XYZcolor space conversion. Parameters ---------- From c05d18a0107757815680d87ff699cf51a6620a77 Mon Sep 17 00:00:00 2001 From: Matthew Trentacoste Date: Wed, 23 Oct 2013 22:21:15 -0700 Subject: [PATCH 007/577] docstring changes to correctly format input/output, clarifying XYZ and reference white --- skimage/color/colorconv.py | 60 +++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/skimage/color/colorconv.py b/skimage/color/colorconv.py index e40e9c55..e7774003 100644 --- a/skimage/color/colorconv.py +++ b/skimage/color/colorconv.py @@ -854,25 +854,24 @@ def xyz2luv(xyz): Parameters ---------- - xyz : array_like - The image in XYZ format, in a 3- or 4-D array of shape - (.., ..,[ ..,] 3). + xyz : (M, N, [P,] 3) array_like + The 3 or 4 dimensional image in XYZ format. Final dimension denotes + channels. Returns ------- - out : ndarray - The image in CIE-Luv format, in a 3- or 4-D array of shape - (.., ..,[ ..,] 3). + out : (M, N, [P,] 3) ndarray + The image in CIE-Luv format. Same dimensions as input. Raises ------ ValueError - If `xyz` is not a 3-D array of shape (.., ..,[ ..,] 3). + If `xyz` is not a 3-D or 4-D array of shape `(M, N, [P,] 3)`. Notes ----- - Observer= 2A, Illuminant= D65 - CIE XYZ tristimulus values x_ref = 95.047, y_ref = 100., z_ref = 108.883 + XYZ conversion weights use Observer = 2A. Reference whitepoint for D65 + Illuminant, with XYZ tristimulus values of `(95.047, 100., 108.883)`. References ---------- @@ -918,27 +917,28 @@ def xyz2luv(xyz): def luv2xyz(luv): - """CIE-Luv to XYZcolor space conversion. + """CIE-Luv to XYZ color space conversion. Parameters ---------- - lab : array_like - The image in lab format, in a 3-D array of shape (.., .., 3). + luv : (M, N, [P,] 3) array_like + The 3 or 4 dimensional image in CIE-Luv format. Final dimension denotes + channels. Returns ------- - out : ndarray - The image in XYZ format, in a 3-D array of shape (.., .., 3). + out : (M, N, [P,] 3) ndarray + The image in XYZ format. Same dimensions as input. Raises ------ ValueError - If `lab` is not a 3-D array of shape (.., .., 3). + If `luv` is not a 3-D or 4-D array of shape `(M, N, [P,] 3)`. Notes ----- - Observer= 2A, Illuminant= D65 - CIE XYZ tristimulus values x_ref = 95.047, y_ref = 100., z_ref = 108.883 + XYZ conversion weights use Observer = 2A. Reference whitepoint for D65 + Illuminant, with XYZ tristimulus values of `(95.047, 100., 108.883)`. References ---------- @@ -978,24 +978,23 @@ def luv2xyz(luv): def rgb2luv(rgb): - """RGB to luv color space conversion. + """RGB to CIE-Luv color space conversion. Parameters ---------- - rgb : array_like - The image in RGB format, in a 3- or 4-D array of shape - (.., ..,[ ..,] 3). + rgb : (M, N, [P,] 3) array_like + The 3 or 4 dimensional image in RGB format. Final dimension denotes + channels. Returns ------- - out : ndarray - The image in Luv format, in a 3- or 4-D array of shape - (.., ..,[ ..,] 3). + out : (M, N, [P,] 3) ndarray + The image in CIE Luv format. Same dimensions as input. Raises ------ ValueError - If `rgb` is not a 3- or 4-D array of shape (.., ..,[ ..,] 3). + If `rgb` is not a 3-D or 4-D array of shape `(M, N, [P,] 3)`. Notes ----- @@ -1009,18 +1008,19 @@ def luv2rgb(luv): Parameters ---------- - rgb : array_like - The image in Luv format, in a 3-D array of shape (.., .., 3). + luv : (M, N, [P,] 3) array_like + The 3 or 4 dimensional image in CIE Luv format. Final dimension denotes + channels. Returns ------- - out : ndarray - The image in RGB format, in a 3-D array of shape (.., .., 3). + out : (M, N, [P,] 3) ndarray + The image in RGB format. Same dimensions as input. Raises ------ ValueError - If `luv` is not a 3-D array of shape (.., .., 3). + If `luv` is not a 3-D or 4-D array of shape `(M, N, [P,] 3)`. Notes ----- From 888ef05b63a89627a474e11afca894aa350a1536 Mon Sep 17 00:00:00 2001 From: Matthew Trentacoste Date: Wed, 23 Oct 2013 22:23:26 -0700 Subject: [PATCH 008/577] Adding note for Luv colorspace to top docstring --- skimage/color/colorconv.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/skimage/color/colorconv.py b/skimage/color/colorconv.py index e7774003..39d35f56 100644 --- a/skimage/color/colorconv.py +++ b/skimage/color/colorconv.py @@ -29,6 +29,9 @@ Supported color spaces * LAB CIE : Lightness, a, b Colorspace derived from XYZ CIE that is intended to be more perceptually uniform +* LUV CIE : Lightness, u, v + Colorspace derived from XYZ CIE that is intended to be more + perceptually uniform * LCH CIE : Lightness, Chroma, Hue Defined in terms of LAB CIE. C and H are the polar representation of a and b. The polar angle C is defined to be on (0, 2*pi) From 3dd1bc17949c507a61413c2d69c415de862fe5a3 Mon Sep 17 00:00:00 2001 From: Stefan van der Walt Date: Sun, 27 Oct 2013 22:06:13 +0200 Subject: [PATCH 009/577] Format color conversion docstrings. --- skimage/color/colorconv.py | 146 +++++++++++++------------- skimage/color/tests/test_colorconv.py | 40 +++---- 2 files changed, 94 insertions(+), 92 deletions(-) diff --git a/skimage/color/colorconv.py b/skimage/color/colorconv.py index 39d35f56..e2c7af17 100644 --- a/skimage/color/colorconv.py +++ b/skimage/color/colorconv.py @@ -34,7 +34,7 @@ Supported color spaces perceptually uniform * LCH CIE : Lightness, Chroma, Hue Defined in terms of LAB CIE. C and H are the polar representation of - a and b. The polar angle C is defined to be on (0, 2*pi) + a and b. The polar angle C is defined to be on ``(0, 2*pi)`` :author: Nicolas Pinto (rgb2hsv) :author: Ralf Gommers (hsv2rgb) @@ -71,7 +71,7 @@ def guess_spatial_dimensions(image): ------- spatial_dims : int or None The number of spatial dimensions of `image`. If ambiguous, the value - is `None`. + is ``None``. Raises ------ @@ -125,12 +125,12 @@ def convert_colorspace(arr, fromspace, tospace): The image to convert. fromspace : str The color space to convert from. Valid color space strings are - ['RGB', 'HSV', 'RGB CIE', 'XYZ']. Value may also be specified as lower - case. + ``['RGB', 'HSV', 'RGB CIE', 'XYZ']``. Value may also be specified as + lower case. tospace : str The color space to convert to. Valid color space strings are - ['RGB', 'HSV', 'RGB CIE', 'XYZ']. Value may also be specified as lower - case. + ``['RGB', 'HSV', 'RGB CIE', 'XYZ']``. Value may also be specified as + lower case. Returns ------- @@ -140,7 +140,7 @@ def convert_colorspace(arr, fromspace, tospace): Notes ----- Conversion occurs through the "central" RGB color space, i.e. conversion - from XYZ to HSV is implemented as XYZ -> RGB -> HSV instead of directly. + from XYZ to HSV is implemented as ``XYZ -> RGB -> HSV`` instead of directly. Examples -------- @@ -184,17 +184,17 @@ def rgb2hsv(rgb): Parameters ---------- rgb : array_like - The image in RGB format, in a 3-D array of shape (.., .., 3). + The image in RGB format, in a 3-D array of shape ``(.., .., 3)``. Returns ------- out : ndarray - The image in HSV format, in a 3-D array of shape (.., .., 3). + The image in HSV format, in a 3-D array of shape ``(.., .., 3)``. Raises ------ ValueError - If `rgb` is not a 3-D array of shape (.., .., 3). + If `rgb` is not a 3-D array of shape ``(.., .., 3)``. Notes ----- @@ -262,21 +262,21 @@ def hsv2rgb(hsv): Parameters ---------- hsv : array_like - The image in HSV format, in a 3-D array of shape (.., .., 3). + The image in HSV format, in a 3-D array of shape ``(.., .., 3)``. Returns ------- out : ndarray - The image in RGB format, in a 3-D array of shape (.., .., 3). + The image in RGB format, in a 3-D array of shape ``(.., .., 3)``. Raises ------ ValueError - If `hsv` is not a 3-D array of shape (.., .., 3). + If `hsv` is not a 3-D array of shape ``(.., .., 3)``. Notes ----- - The conversion assumes an input data range of [0, 1] for all + The conversion assumes an input data range of ``[0, 1]`` for all color components. Conversion between RGB and HSV color spaces results in some loss of @@ -471,17 +471,17 @@ def xyz2rgb(xyz): Parameters ---------- xyz : array_like - The image in XYZ format, in a 3-D array of shape (.., .., 3). + The image in XYZ format, in a 3-D array of shape ``(.., .., 3)``. Returns ------- out : ndarray - The image in RGB format, in a 3-D array of shape (.., .., 3). + The image in RGB format, in a 3-D array of shape ``(.., .., 3)``. Raises ------ ValueError - If `xyz` is not a 3-D array of shape (.., .., 3). + If `xyz` is not a 3-D array of shape ``(.., .., 3)``. Notes ----- @@ -516,18 +516,18 @@ def rgb2xyz(rgb): ---------- rgb : array_like The image in RGB format, in a 3- or 4-D array of shape - (.., ..,[ ..,] 3). + ``(.., ..,[ ..,] 3)``. Returns ------- out : ndarray The image in XYZ format, in a 3- or 4-D array of shape - (.., ..,[ ..,] 3). + ``(.., ..,[ ..,] 3)``. Raises ------ ValueError - If `rgb` is not a 3- or 4-D array of shape (.., ..,[ ..,] 3). + If `rgb` is not a 3- or 4-D array of shape ``(.., ..,[ ..,] 3)``. Notes ----- @@ -559,17 +559,17 @@ def rgb2rgbcie(rgb): Parameters ---------- rgb : array_like - The image in RGB format, in a 3-D array of shape (.., .., 3). + The image in RGB format, in a 3-D array of shape ``(.., .., 3)``. Returns ------- out : ndarray - The image in RGB CIE format, in a 3-D array of shape (.., .., 3). + The image in RGB CIE format, in a 3-D array of shape ``(.., .., 3)``. Raises ------ ValueError - If `rgb` is not a 3-D array of shape (.., .., 3). + If `rgb` is not a 3-D array of shape ``(.., .., 3)``. References ---------- @@ -591,17 +591,17 @@ def rgbcie2rgb(rgbcie): Parameters ---------- rgbcie : array_like - The image in RGB CIE format, in a 3-D array of shape (.., .., 3). + The image in RGB CIE format, in a 3-D array of shape ``(.., .., 3)``. Returns ------- out : ndarray - The image in RGB format, in a 3-D array of shape (.., .., 3). + The image in RGB format, in a 3-D array of shape ``(.., .., 3)``. Raises ------ ValueError - If `rgbcie` is not a 3-D array of shape (.., .., 3). + If `rgbcie` is not a 3-D array of shape ``(.., .., 3)``. References ---------- @@ -624,8 +624,8 @@ def rgb2gray(rgb): Parameters ---------- rgb : array_like - The image in RGB format, in a 3-D array of shape (.., .., 3), - or in RGBA format with shape (.., .., 4). + The image in RGB format, in a 3-D array of shape ``(.., .., 3)``, + or in RGBA format with shape ``(.., .., 4)``. Returns ------- @@ -635,8 +635,8 @@ def rgb2gray(rgb): Raises ------ ValueError - If `rgb2gray` is not a 3-D array of shape (.., .., 3) or - (.., .., 4). + If `rgb2gray` is not a 3-D array of shape ``(.., .., 3)`` or + ``(.., .., 4)``. References ---------- @@ -701,18 +701,18 @@ def xyz2lab(xyz): ---------- xyz : array_like The image in XYZ format, in a 3- or 4-D array of shape - (.., ..,[ ..,] 3). + ``(.., ..,[ ..,] 3)``. Returns ------- out : ndarray The image in CIE-LAB format, in a 3- or 4-D array of shape - (.., ..,[ ..,] 3). + ``(.., ..,[ ..,] 3)``. Raises ------ ValueError - If `xyz` is not a 3-D array of shape (.., ..,[ ..,] 3). + If `xyz` is not a 3-D array of shape ``(.., ..,[ ..,] 3)``. Notes ----- @@ -758,21 +758,21 @@ def lab2xyz(lab): Parameters ---------- lab : array_like - The image in lab format, in a 3-D array of shape (.., .., 3). + The image in lab format, in a 3-D array of shape ``(.., .., 3)``. Returns ------- out : ndarray - The image in XYZ format, in a 3-D array of shape (.., .., 3). + The image in XYZ format, in a 3-D array of shape ``(.., .., 3)``. Raises ------ ValueError - If `lab` is not a 3-D array of shape (.., .., 3). + If `lab` is not a 3-D array of shape ``(.., .., 3)``. Notes ----- - Observer= 2A, Illuminant= D65 + Observer = 2A, Illuminant = D65 CIE XYZ tristimulus values x_ref = 95.047, y_ref = 100., z_ref = 108.883 References @@ -807,18 +807,18 @@ def rgb2lab(rgb): ---------- rgb : array_like The image in RGB format, in a 3- or 4-D array of shape - (.., ..,[ ..,] 3). + ``(.., ..,[ ..,] 3)``. Returns ------- out : ndarray The image in Lab format, in a 3- or 4-D array of shape - (.., ..,[ ..,] 3). + ``(.., ..,[ ..,] 3)``. Raises ------ ValueError - If `rgb` is not a 3- or 4-D array of shape (.., ..,[ ..,] 3). + If `rgb` is not a 3- or 4-D array of shape ``(.., ..,[ ..,] 3)``. Notes ----- @@ -833,17 +833,17 @@ def lab2rgb(lab): Parameters ---------- rgb : array_like - The image in Lab format, in a 3-D array of shape (.., .., 3). + The image in Lab format, in a 3-D array of shape ``(.., .., 3)``. Returns ------- out : ndarray - The image in RGB format, in a 3-D array of shape (.., .., 3). + The image in RGB format, in a 3-D array of shape ``(.., .., 3)``. Raises ------ ValueError - If `lab` is not a 3-D array of shape (.., .., 3). + If `lab` is not a 3-D array of shape ``(.., .., 3)``. Notes ----- @@ -858,7 +858,7 @@ def xyz2luv(xyz): Parameters ---------- xyz : (M, N, [P,] 3) array_like - The 3 or 4 dimensional image in XYZ format. Final dimension denotes + The 3 or 4 dimensional image in XYZ format. Final dimension denotes channels. Returns @@ -869,12 +869,12 @@ def xyz2luv(xyz): Raises ------ ValueError - If `xyz` is not a 3-D or 4-D array of shape `(M, N, [P,] 3)`. + If `xyz` is not a 3-D or 4-D array of shape ``(M, N, [P,] 3)``. Notes ----- - XYZ conversion weights use Observer = 2A. Reference whitepoint for D65 - Illuminant, with XYZ tristimulus values of `(95.047, 100., 108.883)`. + XYZ conversion weights use Observer = 2A. Reference whitepoint for D65 + Illuminant, with XYZ tristimulus values of ``(95.047, 100., 108.883)``. References ---------- @@ -936,12 +936,12 @@ def luv2xyz(luv): Raises ------ ValueError - If `luv` is not a 3-D or 4-D array of shape `(M, N, [P,] 3)`. + If `luv` is not a 3-D or 4-D array of shape ``(M, N, [P,] 3)``. Notes ----- - XYZ conversion weights use Observer = 2A. Reference whitepoint for D65 - Illuminant, with XYZ tristimulus values of `(95.047, 100., 108.883)`. + XYZ conversion weights use Observer = 2A. Reference whitepoint for D65 + Illuminant, with XYZ tristimulus values of ``(95.047, 100., 108.883)``. References ---------- @@ -986,7 +986,7 @@ def rgb2luv(rgb): Parameters ---------- rgb : (M, N, [P,] 3) array_like - The 3 or 4 dimensional image in RGB format. Final dimension denotes + The 3 or 4 dimensional image in RGB format. Final dimension denotes channels. Returns @@ -997,7 +997,7 @@ def rgb2luv(rgb): Raises ------ ValueError - If `rgb` is not a 3-D or 4-D array of shape `(M, N, [P,] 3)`. + If `rgb` is not a 3-D or 4-D array of shape ``(M, N, [P,] 3)``. Notes ----- @@ -1023,7 +1023,7 @@ def luv2rgb(luv): Raises ------ ValueError - If `luv` is not a 3-D or 4-D array of shape `(M, N, [P,] 3)`. + If `luv` is not a 3-D or 4-D array of shape ``(M, N, [P,] 3)``. Notes ----- @@ -1038,17 +1038,17 @@ def rgb2hed(rgb): Parameters ---------- rgb : array_like - The image in RGB format, in a 3-D array of shape (.., .., 3). + The image in RGB format, in a 3-D array of shape ``(.., .., 3)``. Returns ------- out : ndarray - The image in HED format, in a 3-D array of shape (.., .., 3). + The image in HED format, in a 3-D array of shape ``(.., .., 3)``. Raises ------ ValueError - If `rgb` is not a 3-D array of shape (.., .., 3). + If `rgb` is not a 3-D array of shape ``(.., .., 3)``. References @@ -1074,17 +1074,17 @@ def hed2rgb(hed): Parameters ---------- hed : array_like - The image in the HED color space, in a 3-D array of shape (.., .., 3). + The image in the HED color space, in a 3-D array of shape ``(.., .., 3)``. Returns ------- out : ndarray - The image in RGB, in a 3-D array of shape (.., .., 3). + The image in RGB, in a 3-D array of shape ``(.., .., 3)``. Raises ------ ValueError - If `hed` is not a 3-D array of shape (.., .., 3). + If `hed` is not a 3-D array of shape ``(.., .., 3)``. References ---------- @@ -1110,19 +1110,19 @@ def separate_stains(rgb, conv_matrix): Parameters ---------- rgb : array_like - The image in RGB format, in a 3-D array of shape (.., .., 3). + The image in RGB format, in a 3-D array of shape ``(.., .., 3)``. conv_matrix: ndarray The stain separation matrix as described by G. Landini [1]_. Returns ------- out : ndarray - The image in stain color space, in a 3-D array of shape (.., .., 3). + The image in stain color space, in a 3-D array of shape ``(.., .., 3)``. Raises ------ ValueError - If `rgb` is not a 3-D array of shape (.., .., 3). + If `rgb` is not a 3-D array of shape ``(.., .., 3)``. Notes ----- @@ -1164,19 +1164,19 @@ def combine_stains(stains, conv_matrix): Parameters ---------- stains : array_like - The image in stain color space, in a 3-D array of shape (.., .., 3). + The image in stain color space, in a 3-D array of shape ``(.., .., 3)``. conv_matrix: ndarray The stain separation matrix as described by G. Landini [1]_. Returns ------- out : ndarray - The image in RGB format, in a 3-D array of shape (.., .., 3). + The image in RGB format, in a 3-D array of shape ``(.., .., 3)``. Raises ------ ValueError - If `stains` is not a 3-D array of shape (.., .., 3). + If `stains` is not a 3-D array of shape ``(.., .., 3)``. Notes ----- @@ -1226,9 +1226,9 @@ def lab2lch(lab): Parameters ---------- lab : array_like - The N-D image in CIE-LAB format. The last (`N+1`th) dimension must have - at least 3 elements, corresponding to the ``L``, ``a``, and ``b`` color - channels. Subsequent elements are copied. + The N-D image in CIE-LAB format. The last (``N+1``-th) dimension must + have at least 3 elements, corresponding to the ``L``, ``a``, and ``b`` + color channels. Subsequent elements are copied. Returns ------- @@ -1242,7 +1242,7 @@ def lab2lch(lab): Notes ----- - The Hue is expressed as an angle between (0, 2*pi) + The Hue is expressed as an angle between ``(0, 2*pi)`` Examples -------- @@ -1262,7 +1262,7 @@ def lab2lch(lab): def _cart2polar_2pi(x, y): """convert cartesian coordiantes to polar (uses non-standard theta range!) - NON-STANDARD RANGE! Maps to (0, 2*pi) rather than usual (-pi, +pi) + NON-STANDARD RANGE! Maps to ``(0, 2*pi)`` rather than usual ``(-pi, +pi)`` """ r, t = np.hypot(x, y), np.arctan2(y, x) t += np.where(t < 0., 2 * np.pi, 0) @@ -1277,9 +1277,9 @@ def lch2lab(lch): Parameters ---------- lch : array_like - The N-D image in CIE-LCH format. The last (`N+1`th) dimension must have - at least 3 elements, corresponding to the ``L``, ``a``, and ``b`` color - channels. Subsequent elements are copied. + The N-D image in CIE-LCH format. The last (``N+1``-th) dimension must + have at least 3 elements, corresponding to the ``L``, ``a``, and ``b`` + color channels. Subsequent elements are copied. Returns ------- diff --git a/skimage/color/tests/test_colorconv.py b/skimage/color/tests/test_colorconv.py index 26b55e35..c7393355 100644 --- a/skimage/color/tests/test_colorconv.py +++ b/skimage/color/tests/test_colorconv.py @@ -71,24 +71,24 @@ class TestColorconv(TestCase): colbars_point75_array = np.swapaxes(colbars_point75.reshape(3, 4, 2), 0, 2) xyz_array = np.array([[[0.4124, 0.21260, 0.01930]], # red - [[0, 0, 0]], # black - [[.9505, 1., 1.089]], # white - [[.1805, .0722, .9505]], # blue - [[.07719, .15438, .02573]], # green - ]) + [[0, 0, 0]], # black + [[.9505, 1., 1.089]], # white + [[.1805, .0722, .9505]], # blue + [[.07719, .15438, .02573]], # green + ]) lab_array = np.array([[[53.233, 80.109, 67.220]], # red - [[0., 0., 0.]], # black - [[100.0, 0.005, -0.010]], # white - [[32.303, 79.197, -107.864]], # blue - [[46.229, -51.7, 49.898]], # green - ]) + [[0., 0., 0.]], # black + [[100.0, 0.005, -0.010]], # white + [[32.303, 79.197, -107.864]], # blue + [[46.229, -51.7, 49.898]], # green + ]) luv_array = np.array([[[53.233, 175.053, 37.751]], # red - [[0., 0., 0.]], # black - [[100., 0.001, -0.017]], # white - [[32.303, -9.400, -130.358]], # blue - [[46.228, -43.774, 56.589]], # green - ]) + [[0., 0., 0.]], # black + [[100., 0.001, -0.017]], # white + [[32.303, -9.400, -130.358]], # blue + [[46.228, -43.774, 56.589]], # green + ]) # RGB to HSV def test_rgb2hsv_conversion(self): @@ -259,7 +259,8 @@ class TestColorconv(TestCase): img_rgb = img_as_float(self.img_rgb) assert_array_almost_equal(lab2rgb(rgb2lab(img_rgb)), img_rgb) - # test matrices for xyz2luv and luv2xyz generated using http://www.easyrgb.com/index.php?X=CALC + # test matrices for xyz2luv and luv2xyz generated using + # http://www.easyrgb.com/index.php?X=CALC # Note: easyrgb website displays xyz*100 def test_xyz2luv(self): assert_array_almost_equal(xyz2luv(self.xyz_array), @@ -277,16 +278,17 @@ class TestColorconv(TestCase): """ # Obtained with D65 white point, sRGB model and gamma gt_for_colbars = np.array([ - [100,0,0], + [100, 0, 0], [97.1393, 7.7056, 106.7866], [91.1132, -70.4773, -15.2042], [87.7347, -83.0776, 107.3985], [60.3242, 84.0714, -108.6834], [53.2408, 175.0151, 37.7564], [32.2970, -9.4054, -130.3423], - [0,0,0]]).T + [0, 0, 0]]).T gt_array = np.swapaxes(gt_for_colbars.reshape(3, 4, 2), 0, 2) - assert_array_almost_equal(rgb2luv(self.colbars_array), gt_array, decimal=2) + assert_array_almost_equal(rgb2luv(self.colbars_array), + gt_array, decimal=2) def test_luv_rgb_roundtrip(self): img_rgb = img_as_float(self.img_rgb) From d398b430510ba0fa630be368d498446caa7b653c Mon Sep 17 00:00:00 2001 From: JDWarner Date: Wed, 20 Nov 2013 11:20:42 -0600 Subject: [PATCH 010/577] ENH: Add `doctest_skip_parser` allowing conditional skipping of doctests --- skimage/_shared/testing.py | 51 ++++++++++++++++ skimage/_shared/tests/test_testing.py | 87 +++++++++++++++++++++++++++ skimage/viewer/plugins/base.py | 23 ++++--- skimage/viewer/viewers/core.py | 13 +++- 4 files changed, 163 insertions(+), 11 deletions(-) create mode 100644 skimage/_shared/tests/test_testing.py diff --git a/skimage/_shared/testing.py b/skimage/_shared/testing.py index eab83a56..9b42c582 100644 --- a/skimage/_shared/testing.py +++ b/skimage/_shared/testing.py @@ -1,6 +1,12 @@ """Testing utilities.""" +import re + + +SKIP_RE = re.compile("(\s*>>>.*?)(\s*)#\s*skip\s+if\s+(.*)$") + + def _assert_less(a, b, msg=None): message = "%r is not lower than %r" % (a, b) if msg is not None: @@ -24,3 +30,48 @@ try: from nose.tools import assert_greater except ImportError: assert_greater = _assert_greater + + +def doctest_skip_parser(func): + """ Decorator replaces custom skip test markup in doctests + + Say a function has a docstring:: + + >>> something # skip if not HAVE_AMODULE + >>> something + else + >>> something # skip if HAVE_BMODULE + + This decorator will evaluate the expresssion after ``skip if``. If this + evaluates to True, then the comment is replaced by ``# doctest: +SKIP``. If + False, then the comment is just removed. The expression is evaluated in the + ``globals`` scope of `func`. + + For example, if the module global ``HAVE_AMODULE`` is False, and module + global ``HAVE_BMODULE`` is False, the returned function will have docstring:: + + >>> something # doctest: +SKIP + >>> something + else + >>> something + + """ + lines = func.__doc__.split('\n') + new_lines = [] + for line in lines: + match = SKIP_RE.match(line) + if match is None: + new_lines.append(line) + continue + code, space, expr = match.groups() + + try: + # Works as a function decorator + if eval(expr, func.__globals__): + code = code + space + "# doctest: +SKIP" + except AttributeError: + # Works as a class decorator + if eval(expr, func.__init__.__globals__): + code = code + space + "# doctest: +SKIP" + + new_lines.append(code) + func.__doc__ = "\n".join(new_lines) + return func diff --git a/skimage/_shared/tests/test_testing.py b/skimage/_shared/tests/test_testing.py new file mode 100644 index 00000000..f563caad --- /dev/null +++ b/skimage/_shared/tests/test_testing.py @@ -0,0 +1,87 @@ +""" Testing decorators module +""" + +import numpy as np +from nose.tools import (assert_true, assert_raises, assert_equal) +from skimage._shared.testing import doctest_skip_parser + + +def test_skipper(): + def f(): + pass + + class c(): + def __init__(self): + self.me = "I think, therefore..." + + docstring = \ + """ Header + + >>> something # skip if not HAVE_AMODULE + >>> something + else + >>> a = 1 # skip if not HAVE_BMODULE + >>> something2 # skip if HAVE_AMODULE + """ + f.__doc__ = docstring + c.__doc__ = docstring + + global HAVE_AMODULE, HAVE_BMODULE + HAVE_AMODULE = False + HAVE_BMODULE = True + + f2 = doctest_skip_parser(f) + c2 = doctest_skip_parser(c) + assert_true(f is f2) + assert_true(c is c2) + + assert_equal(f2.__doc__, + """ Header + + >>> something # doctest: +SKIP + >>> something + else + >>> a = 1 + >>> something2 + """) + assert_equal(c2.__doc__, + """ Header + + >>> something # doctest: +SKIP + >>> something + else + >>> a = 1 + >>> something2 + """) + + HAVE_AMODULE = True + HAVE_BMODULE = False + f.__doc__ = docstring + c.__doc__ = docstring + f2 = doctest_skip_parser(f) + c2 = doctest_skip_parser(c) + + assert_true(f is f2) + assert_equal(f2.__doc__, + """ Header + + >>> something + >>> something + else + >>> a = 1 # doctest: +SKIP + >>> something2 # doctest: +SKIP + """) + assert_equal(c2.__doc__, + """ Header + + >>> something + >>> something + else + >>> a = 1 # doctest: +SKIP + >>> something2 # doctest: +SKIP + """) + + del HAVE_AMODULE + f.__doc__ = docstring + c.__doc__ = docstring + assert_raises(NameError, doctest_skip_parser, f) + assert_raises(NameError, doctest_skip_parser, c) + + +if __name__ == '__main__': + np.testing.run_module_suite() diff --git a/skimage/viewer/plugins/base.py b/skimage/viewer/plugins/base.py index 1a2eedd9..6aa37947 100644 --- a/skimage/viewer/plugins/base.py +++ b/skimage/viewer/plugins/base.py @@ -5,11 +5,18 @@ from warnings import warn import numpy as np -from ..qt import QtGui +from ..qt import QtGui, qt_api from ..qt.QtCore import Qt, Signal from ..utils import RequiredAttr, init_qtapp +from skimage._shared.testing import doctest_skip_parser + +if qt_api is not None: + has_qt = True +else: + has_qt = False +@doctest_skip_parser class Plugin(QtGui.QDialog): """Base class for plugins that interact with an ImageViewer. @@ -52,13 +59,14 @@ class Plugin(QtGui.QDialog): >>> from skimage.viewer.widgets import Slider >>> from skimage import data >>> - >>> plugin = Plugin(image_filter=lambda img, threshold: img > threshold) - >>> plugin += Slider('threshold', 0, 255) + >>> plugin = Plugin(image_filter=lambda img, + ... threshold: img > threshold) # skip if not has_qt + >>> plugin += Slider('threshold', 0, 255) # skip if not has_qt >>> >>> image = data.coins() - >>> viewer = ImageViewer(image) - >>> viewer += plugin - >>> # viewer.show() + >>> viewer = ImageViewer(image) # skip if not has_qt + >>> viewer += plugin # skip if not has_qt + >>> viewer.show() # skip if not has_qt The plugin will automatically delegate parameters to `image_filter` based on its parameter type, i.e., `ptype` (widgets for required arguments must @@ -99,7 +107,7 @@ class Plugin(QtGui.QDialog): self.row = 0 self.arguments = [] - self.keyword_arguments= {} + self.keyword_arguments = {} self.useblit = useblit self.cids = [] @@ -254,4 +262,3 @@ class Plugin(QtGui.QDialog): you don't want to return a value. """ return (self.image_viewer.image, None) - diff --git a/skimage/viewer/viewers/core.py b/skimage/viewer/viewers/core.py index 781b6877..1bf53f64 100644 --- a/skimage/viewer/viewers/core.py +++ b/skimage/viewer/viewers/core.py @@ -1,12 +1,18 @@ """ ImageViewer class for viewing and interacting with images. """ -from ..qt import QtGui +from ..qt import QtGui, qt_api from ..qt.QtCore import Qt, Signal +if qt_api is not None: + has_qt = True +else: + has_qt = False + from skimage import io, img_as_float from skimage.util.dtype import dtype_range from skimage.exposure import rescale_intensity +from skimage._shared.testing import doctest_skip_parser import numpy as np from .. import utils from ..widgets import Slider @@ -45,6 +51,7 @@ def mpl_image_to_rgba(mpl_image): return img_as_float(image) +@doctest_skip_parser class ImageViewer(QtGui.QMainWindow): """Viewer for displaying images. @@ -72,8 +79,8 @@ class ImageViewer(QtGui.QMainWindow): -------- >>> from skimage import data >>> image = data.coins() - >>> viewer = ImageViewer(image) - >>> viewer.show() # doctest: +SKIP + >>> viewer = ImageViewer(image) # skip if not has_qt + >>> viewer.show() # skip if not has_qt """ From beb395abbbb4003d71b36c87501ec9058e25c276 Mon Sep 17 00:00:00 2001 From: JDWarner Date: Wed, 20 Nov 2013 12:29:45 -0600 Subject: [PATCH 011/577] FIX: Skip `viewer.show()` commands which hang Travis --- skimage/viewer/plugins/base.py | 2 +- skimage/viewer/viewers/core.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/viewer/plugins/base.py b/skimage/viewer/plugins/base.py index 6aa37947..d3122e89 100644 --- a/skimage/viewer/plugins/base.py +++ b/skimage/viewer/plugins/base.py @@ -66,7 +66,7 @@ class Plugin(QtGui.QDialog): >>> image = data.coins() >>> viewer = ImageViewer(image) # skip if not has_qt >>> viewer += plugin # skip if not has_qt - >>> viewer.show() # skip if not has_qt + >>> viewer.show() # doctest: +SKIP The plugin will automatically delegate parameters to `image_filter` based on its parameter type, i.e., `ptype` (widgets for required arguments must diff --git a/skimage/viewer/viewers/core.py b/skimage/viewer/viewers/core.py index 1bf53f64..1928a178 100644 --- a/skimage/viewer/viewers/core.py +++ b/skimage/viewer/viewers/core.py @@ -80,7 +80,7 @@ class ImageViewer(QtGui.QMainWindow): >>> from skimage import data >>> image = data.coins() >>> viewer = ImageViewer(image) # skip if not has_qt - >>> viewer.show() # skip if not has_qt + >>> viewer.show() # doctest: +SKIP """ From 98ff6e5f2023f76863ce2ec8b68e29ae2a75b995 Mon Sep 17 00:00:00 2001 From: JDWarner Date: Wed, 20 Nov 2013 15:45:54 -0600 Subject: [PATCH 012/577] FIX: Specify field index for Python 2.6 compatible use of str.format() --- skimage/novice/_novice.py | 2 +- skimage/novice/tests/test_novice.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/skimage/novice/_novice.py b/skimage/novice/_novice.py index 836458a7..27721f9b 100644 --- a/skimage/novice/_novice.py +++ b/skimage/novice/_novice.py @@ -25,7 +25,7 @@ def open(path): def _verify_picture_index(index): """Raise error if picture index is not a 2D index/slice.""" if not (isinstance(index, tuple) and len(index) == 2): - raise IndexError("Expected 2D index but got {!r}".format(index)) + raise IndexError("Expected 2D index but got {0!r}".format(index)) if all(isinstance(i, int) for i in index): return index diff --git a/skimage/novice/tests/test_novice.py b/skimage/novice/tests/test_novice.py index 80065e46..5a4e6003 100644 --- a/skimage/novice/tests/test_novice.py +++ b/skimage/novice/tests/test_novice.py @@ -268,5 +268,4 @@ def test_pixel_blue_raises(): if __name__ == '__main__': - from numpy import testing - testing.run_module_suite() + np.testing.run_module_suite() From 41e289c7778c5d7b9dd01b16654199fb6a85f563 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Thu, 21 Nov 2013 15:54:57 -0600 Subject: [PATCH 013/577] Fix hough_circle regression on windows --- skimage/transform/__init__.py | 4 ++-- skimage/transform/_hough_transform.pyx | 6 +++--- skimage/transform/hough_transform.py | 29 ++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/skimage/transform/__init__.py b/skimage/transform/__init__.py index 4f00a076..30e5177a 100644 --- a/skimage/transform/__init__.py +++ b/skimage/transform/__init__.py @@ -1,6 +1,6 @@ -from ._hough_transform import (hough_circle, hough_ellipse, hough_line, +from ._hough_transform import (hough_ellipse, hough_line, probabilistic_hough_line) -from .hough_transform import hough_line_peaks +from .hough_transform import hough_circle, hough_line_peaks from .radon_transform import radon, iradon, iradon_sart from .finite_radon_transform import frt2, ifrt2 from .integral import integral_image, integrate diff --git a/skimage/transform/_hough_transform.pyx b/skimage/transform/_hough_transform.pyx index 29344fa8..b7b4a411 100644 --- a/skimage/transform/_hough_transform.pyx +++ b/skimage/transform/_hough_transform.pyx @@ -20,9 +20,9 @@ cdef inline Py_ssize_t round(double r): return ((r + 0.5) if (r > 0.0) else (r - 0.5)) -def hough_circle(cnp.ndarray img, - cnp.ndarray[ndim=1, dtype=cnp.intp_t] radius, - char normalize=True, char full_output=False): +def _hough_circle(cnp.ndarray img, + cnp.ndarray[ndim=1, dtype=cnp.intp_t] radius, + char normalize=True, char full_output=False): """Perform a circular Hough transform. Parameters diff --git a/skimage/transform/hough_transform.py b/skimage/transform/hough_transform.py index 0a7d35a2..3168d388 100644 --- a/skimage/transform/hough_transform.py +++ b/skimage/transform/hough_transform.py @@ -1,6 +1,7 @@ import numpy as np from scipy import ndimage from skimage import measure, morphology +from ._hough_transform import _hough_circle def hough_line_peaks(hspace, angles, dists, min_distance=9, min_angle=10, @@ -125,3 +126,31 @@ def hough_line_peaks(hspace, angles, dists, min_distance=9, min_angle=10, angle_peaks = angle_peaks[idx_maxsort] return hspace_peaks, angle_peaks, dist_peaks + + +def hough_circle(image, radius, normalize=True, full_output=False): + """Perform a circular Hough transform. + + Parameters + ---------- + image : (M, N) ndarray + Input image with nonzero values representing edges. + radius : ndarray + Radii at which to compute the Hough transform. + normalize : boolean, optional (default True) + Normalize the accumulator with the number + of pixels used to draw the radius. + full_output : boolean, optional (default False) + Extend the output size by twice the largest + radius in order to detect centers outside the + input picture. + + Returns + ------- + H : 3D ndarray (radius index, (M + 2R, N + 2R) ndarray) + Hough transform accumulator for each radius. + R designates the larger radius if full_output is True. + Otherwise, R = 0. + """ + return _hough_circle(image, radius.astype(np.intp), + normalize=normalize, full_output=full_output) From 3c84888f72982d57318d7c0b450aac3acdad7e51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Thu, 21 Nov 2013 23:37:06 +0100 Subject: [PATCH 014/577] Remove duplicate greycomatrix function definitions --- skimage/feature/_greycomatrix.py | 226 ------------------------------- 1 file changed, 226 deletions(-) delete mode 100644 skimage/feature/_greycomatrix.py diff --git a/skimage/feature/_greycomatrix.py b/skimage/feature/_greycomatrix.py deleted file mode 100644 index 45476d33..00000000 --- a/skimage/feature/_greycomatrix.py +++ /dev/null @@ -1,226 +0,0 @@ -""" -Compute grey level co-occurrence matrices (GLCMs) and associated -properties to characterize image textures. -""" - -import numpy as np - -from ._texture import _glcm_loop - - -def greycomatrix(image, distances, angles, levels=256, symmetric=False, - normed=False): - """Calculate the grey-level co-occurrence matrix. - - A grey level co-occurence matrix is a histogram of co-occuring - greyscale values at a given offset over an image. - - Parameters - ---------- - image : array_like of uint8 - Integer typed input image. The image will be cast to uint8, so - the maximum value must be less than 256. - distances : array_like - List of pixel pair distance offsets. - angles : array_like - List of pixel pair angles in radians. - levels : int, optional - The input image should contain integers in [0, levels-1], - where levels indicate the number of grey-levels counted - (typically 256 for an 8-bit image). The maximum value is - 256. - symmetric : bool, optional - If True, the output matrix `P[:, :, d, theta]` is symmetric. This - is accomplished by ignoring the order of value pairs, so both - (i, j) and (j, i) are accumulated when (i, j) is encountered - for a given offset. The default is False. - normed : bool, optional - If True, normalize each matrix `P[:, :, d, theta]` by dividing - by the total number of accumulated co-occurrences for the given - offset. The elements of the resulting matrix sum to 1. The - default is False. - - Returns - ------- - P : 4-D ndarray - The grey-level co-occurrence histogram. The value - `P[i,j,d,theta]` is the number of times that grey-level `j` - occurs at a distance `d` and at an angle `theta` from - grey-level `i`. If `normed` is `False`, the output is of - type uint32, otherwise it is float64. - - References - ---------- - .. [1] The GLCM Tutorial Home Page, - http://www.fp.ucalgary.ca/mhallbey/tutorial.htm - .. [2] Pattern Recognition Engineering, Morton Nadler & Eric P. - Smith - .. [3] Wikipedia, http://en.wikipedia.org/wiki/Co-occurrence_matrix - - - Examples - -------- - Compute 2 GLCMs: One for a 1-pixel offset to the right, and one - for a 1-pixel offset upwards. - - >>> image = np.array([[0, 0, 1, 1], - ... [0, 0, 1, 1], - ... [0, 2, 2, 2], - ... [2, 2, 3, 3]], dtype=np.uint8) - >>> result = greycomatrix(image, [1], [0, np.pi/2], levels=4) - >>> result[:, :, 0, 0] - array([[2, 2, 1, 0], - [0, 2, 0, 0], - [0, 0, 3, 1], - [0, 0, 0, 1]], dtype=uint32) - >>> result[:, :, 0, 1] - array([[3, 0, 2, 0], - [0, 2, 2, 0], - [0, 0, 1, 2], - [0, 0, 0, 0]], dtype=uint32) - - """ - - assert levels <= 256 - image = np.ascontiguousarray(image) - assert image.ndim == 2 - assert image.min() >= 0 - assert image.max() < levels - image = image.astype(np.uint8) - distances = np.ascontiguousarray(distances, dtype=np.float64) - angles = np.ascontiguousarray(angles, dtype=np.float64) - assert distances.ndim == 1 - assert angles.ndim == 1 - - P = np.zeros((levels, levels, len(distances), len(angles)), - dtype=np.uint32, order='C') - - # count co-occurences - _glcm_loop(image, distances, angles, levels, P) - - # make each GLMC symmetric - if symmetric: - Pt = np.transpose(P, (1, 0, 2, 3)) - P = P + Pt - - # normalize each GLMC - if normed: - P = P.astype(np.float64) - glcm_sums = np.apply_over_axes(np.sum, P, axes=(0, 1)) - glcm_sums[glcm_sums == 0] = 1 - P /= glcm_sums - - return P - - -def greycoprops(P, prop='contrast'): - """Calculate texture properties of a GLCM. - - Compute a feature of a grey level co-occurrence matrix to serve as - a compact summary of the matrix. The properties are computed as - follows: - - - 'contrast': :math:`\\sum_{i,j=0}^{levels-1} P_{i,j}(i-j)^2` - - 'dissimilarity': :math:`\\sum_{i,j=0}^{levels-1}P_{i,j}|i-j|` - - 'homogeneity': :math:`\\sum_{i,j=0}^{levels-1}\\frac{P_{i,j}}{1+(i-j)^2}` - - 'ASM': :math:`\\sum_{i,j=0}^{levels-1} P_{i,j}^2` - - 'energy': :math:`\\sqrt{ASM}` - - 'correlation': - .. math:: \\sum_{i,j=0}^{levels-1} P_{i,j}\\left[\\frac{(i-\\mu_i) \\ - (j-\\mu_j)}{\\sqrt{(\\sigma_i^2)(\\sigma_j^2)}}\\right] - - - Parameters - ---------- - P : ndarray - Input array. `P` is the grey-level co-occurrence histogram - for which to compute the specified property. The value - `P[i,j,d,theta]` is the number of times that grey-level j - occurs at a distance d and at an angle theta from - grey-level i. - - prop : {'contrast', 'dissimilarity', 'homogeneity', 'energy', \ - 'correlation', 'ASM'}, optional - The property of the GLCM to compute. The default is 'contrast'. - - Returns - ------- - results : 2-D ndarray - 2-dimensional array. `results[d, a]` is the property 'prop' for - the d'th distance and the a'th angle. - - References - ---------- - .. [1] The GLCM Tutorial Home Page, - http://www.fp.ucalgary.ca/mhallbey/tutorial.htm - - Examples - -------- - Compute the contrast for GLCMs with distances [1, 2] and angles - [0 degrees, 90 degrees] - - >>> image = np.array([[0, 0, 1, 1], - ... [0, 0, 1, 1], - ... [0, 2, 2, 2], - ... [2, 2, 3, 3]], dtype=np.uint8) - >>> g = greycomatrix(image, [1, 2], [0, np.pi/2], levels=4, - ... normed=True, symmetric=True) - >>> contrast = greycoprops(g, 'contrast') - >>> contrast - array([[ 0.58333333, 1. ], - [ 1.25 , 2.75 ]]) - - """ - - assert P.ndim == 4 - (num_level, num_level2, num_dist, num_angle) = P.shape - assert num_level == num_level2 - assert num_dist > 0 - assert num_angle > 0 - - # create weights for specified property - I, J = np.ogrid[0:num_level, 0:num_level] - if prop == 'contrast': - weights = (I - J)**2 - elif prop == 'dissimilarity': - weights = np.abs(I - J) - elif prop == 'homogeneity': - weights = 1. / (1. + (I - J)**2) - elif prop in ['ASM', 'energy', 'correlation']: - pass - else: - raise ValueError('%s is an invalid property' % (prop)) - - # compute property for each GLCM - if prop == 'energy': - asm = np.apply_over_axes(np.sum, (P**2), axes=(0, 1))[0, 0] - results = np.sqrt(asm) - elif prop == 'ASM': - results = np.apply_over_axes(np.sum, (P**2), axes=(0, 1))[0, 0] - elif prop == 'correlation': - results = np.zeros((num_dist, num_angle), dtype=np.float64) - I = np.array(range(num_level)).reshape((num_level, 1, 1, 1)) - J = np.array(range(num_level)).reshape((1, num_level, 1, 1)) - diff_i = I - np.apply_over_axes(np.sum, (I * P), axes=(0, 1))[0, 0] - diff_j = J - np.apply_over_axes(np.sum, (J * P), axes=(0, 1))[0, 0] - - std_i = np.sqrt(np.apply_over_axes(np.sum, (P * (diff_i)**2), - axes=(0, 1))[0, 0]) - std_j = np.sqrt(np.apply_over_axes(np.sum, (P * (diff_j)**2), - axes=(0, 1))[0, 0]) - cov = np.apply_over_axes(np.sum, (P * (diff_i * diff_j)), - axes=(0, 1))[0, 0] - - # handle the special case of standard deviations near zero - mask_0 = std_i < 1e-15 - mask_0[std_j < 1e-15] = True - results[mask_0] = 1 - - # handle the standard case - mask_1 = mask_0 == False - results[mask_1] = cov[mask_1] / (std_i[mask_1] * std_j[mask_1]) - elif prop in ['contrast', 'dissimilarity', 'homogeneity']: - weights = weights.reshape((num_level, num_level, 1, 1)) - results = np.apply_over_axes(np.sum, (P * weights), axes=(0, 1))[0, 0] - - return results From e74db662cbba56f8c192586ca4ac34d5e5330376 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Thu, 21 Nov 2013 23:58:39 +0100 Subject: [PATCH 015/577] Add test case for *_boundaries functions --- skimage/segmentation/tests/test_boundaries.py | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 skimage/segmentation/tests/test_boundaries.py diff --git a/skimage/segmentation/tests/test_boundaries.py b/skimage/segmentation/tests/test_boundaries.py new file mode 100644 index 00000000..2fff52f8 --- /dev/null +++ b/skimage/segmentation/tests/test_boundaries.py @@ -0,0 +1,59 @@ +import numpy as np +from numpy.testing import assert_array_equal +from skimage.segmentation import find_boundaries, mark_boundaries + + +def test_find_boundaries(): + image = np.zeros((10, 10)) + image[2:7, 2:7] = 1 + + ref = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 1, 1, 1, 1, 1, 1, 0, 0], + [0, 0, 1, 0, 0, 0, 0, 1, 0, 0], + [0, 0, 1, 0, 0, 0, 0, 1, 0, 0], + [0, 0, 1, 0, 0, 0, 0, 1, 0, 0], + [0, 0, 1, 0, 0, 0, 0, 1, 0, 0], + [0, 0, 1, 1, 1, 1, 1, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]) + + result = find_boundaries(image) + assert_array_equal(result, ref) + + +def test_mark_boundaries(): + image = np.zeros((10, 10)) + label_image = np.zeros((10, 10)) + label_image[2:7, 2:7] = 1 + + ref = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 1, 1, 1, 1, 1, 1, 0, 0], + [0, 0, 1, 0, 0, 0, 0, 1, 0, 0], + [0, 0, 1, 0, 0, 0, 0, 1, 0, 0], + [0, 0, 1, 0, 0, 0, 0, 1, 0, 0], + [0, 0, 1, 0, 0, 0, 0, 1, 0, 0], + [0, 0, 1, 1, 1, 1, 1, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]) + result = mark_boundaries(image, label_image, color=(1, 1, 1)).mean(axis=2) + assert_array_equal(result, ref) + + ref = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 1, 1, 1, 1, 1, 1, 2, 0], + [0, 0, 1, 2, 2, 2, 2, 1, 2, 0], + [0, 0, 1, 2, 0, 0, 0, 1, 2, 0], + [0, 0, 1, 2, 0, 0, 0, 1, 2, 0], + [0, 0, 1, 2, 0, 0, 0, 1, 2, 0], + [0, 0, 1, 1, 1, 1, 1, 2, 2, 0], + [0, 0, 2, 2, 2, 2, 2, 2, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]) + result = mark_boundaries(image, label_image, color=(1, 1, 1), + outline_color=(2, 2, 2)).mean(axis=2) + assert_array_equal(result, ref) + + +if __name__ == "__main__": + np.testing.run_module_suite() From a2cde5ebb07f839b8191d6988aa680bcae3360fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 00:17:59 +0100 Subject: [PATCH 016/577] Test invalid inplace operation --- skimage/morphology/tests/test_grey.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/skimage/morphology/tests/test_grey.py b/skimage/morphology/tests/test_grey.py index e2a3928d..f0099ee5 100644 --- a/skimage/morphology/tests/test_grey.py +++ b/skimage/morphology/tests/test_grey.py @@ -155,5 +155,15 @@ class TestDTypes(): self._test_image(image) +def test_inplace(): + selem = np.ones((3, 3)) + image = np.zeros((5, 5)) + out = image + + for f in (grey.erosion, grey.dilation, + grey.white_tophat, grey.black_tophat): + testing.assert_raises(NotImplementedError, f, image, selem, out=out) + + if __name__ == '__main__': testing.run_module_suite() From 4d9ecf33f612be3be8efc24cc704db3e3cb33b71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 00:22:47 +0100 Subject: [PATCH 017/577] Add missing deprecation removal to todo --- TODO.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO.txt b/TODO.txt index b867bc73..07cb5777 100644 --- a/TODO.txt +++ b/TODO.txt @@ -14,3 +14,4 @@ Version 0.10 * Remove deprecated `skimage.color.is_gray` and `skimage.color.is_rgb` functions * Enable doctests of experimental `skimage.feature.brief` +* Remove deprecated `skimage.segmentation.visualize_boundaries` From de9e0fdfb36d912e0a6fda2c9c0a430d206fbfa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 00:51:55 +0100 Subject: [PATCH 018/577] Add missing deprecation removal to todo --- TODO.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO.txt b/TODO.txt index 07cb5777..25070d05 100644 --- a/TODO.txt +++ b/TODO.txt @@ -15,3 +15,4 @@ Version 0.10 functions * Enable doctests of experimental `skimage.feature.brief` * Remove deprecated `skimage.segmentation.visualize_boundaries` +* Remove deprecated `skimage.morphology.greyscale_*` From a2161afe21706d747d457f97553edb10efdeabe3 Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Sat, 12 May 2012 13:37:44 +0200 Subject: [PATCH 019/577] unwrap: initial commit --- ...apper_with_mask_and_wrap_around_option.cpp | 743 ++++++++++++++++++ 1 file changed, 743 insertions(+) create mode 100755 unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.cpp diff --git a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.cpp b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.cpp new file mode 100755 index 00000000..88bdcab6 --- /dev/null +++ b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.cpp @@ -0,0 +1,743 @@ +//This program was written by Munther Gdeisat and Miguel Arevallilo Herra´ez to program the two-dimensional unwrapper +//entitled "Fast two-dimensional phase-unwrapping algorithm based on sorting by +//reliability following a noncontinuous path" +//by Miguel Arevallilo Herra´ez, David R. Burton, Michael J. Lalor, and Munther A. Gdeisat +//published in the Journal Applied Optics, Vol. 41, No. 35, pp. 7437, 2002. +//This program was written by Munther Gdeisat, Liverpool John Moores University, United Kingdom. +//Date 26th August 2007 +//The wrapped phase map is assumed to be of floating point data type. The resultant unwrapped phase map is also of floating point type. +//The mask is of byte data type. +//When the mask is 255 this means that the pixel is valid +//When the mask is 0 this means that the pixel is invalid (noisy or corrupted pixel) +//This program takes into consideration the image wrap around problem encountered in MRI imaging. +#include +//#include "stdafx.h" +#include +#include +#include + +static float PI = 3.141592654; +static float TWOPI = 6.283185307; +int x_connectivity = 1; +int y_connectivity = 1; +int No_of_edges = 0; + +//PIXELM information +struct PIXELM +{ + //int x; //x coordinate of the pixel + //int y; //y coordinate + int increment; //No. of 2*pi to add to the pixel to unwrap it + int number_of_pixels_in_group; //No. of pixel in the pixel group + float value; //value of the pixel + float reliability; + unsigned char input_mask; //0 pixel is masked. 255 pixel is not masked + unsigned char extended_mask; //0 pixel is masked. 255 pixel is not masked + int group; //group No. + int new_group; + struct PIXELM *head; //pointer to the first pixel in the group in the linked list + struct PIXELM *last; //pointer to the last pixel in the group + struct PIXELM *next; //pointer to the next pixel in the group +}; + + +//the EDGE is the line that connects two pixels. +//if we have S pixels, then we have S horizontal edges and S vertical edges +struct EDGE +{ + float reliab; //reliabilty of the edge and it depends on the two pixels + PIXELM *pointer_1; //pointer to the first pixel + PIXELM *pointer_2; //pointer to the second pixel + int increment; //No. of 2*pi to add to one of the pixels to unwrap it with respect to the second +}; + +void read_data(char *inputfile,float *Data, int length) +{ + printf("Reading the Wrapped Values from Binary File.............>"); + FILE *ifptr; + ifptr = fopen(inputfile,"rb"); + if(ifptr == NULL) printf("Error opening the file\n"); + fread(Data,sizeof(float),length,ifptr); + fclose(ifptr); + printf(" Done.\n"); +} + +void write_data(char *outputfile,float *Data,int length) +{ + printf("Writing the Wrapped Values to Binary File.............>"); + FILE *ifptr; + ifptr = fopen(outputfile,"wb"); + if(ifptr == NULL) printf("Error opening the file\n"); + fwrite(Data,sizeof(float),length,ifptr); + fclose(ifptr); + printf(" Done.\n"); +} + +void read_mask(char *inputfile,unsigned char *Data, int length) +{ + printf("Reading the mask frpm Binary File.............>"); + FILE *ifptr; + ifptr = fopen(inputfile,"rb"); + if(ifptr == NULL) printf("Error opening the file\n"); + fread(Data,sizeof(char),length,ifptr); + fclose(ifptr); + printf(" Done.\n"); +} +//---------------start quicker_sort algorithm -------------------------------- +#define swap(x,y) {EDGE t; t=x; x=y; y=t;} +#define order(x,y) if (x.reliab > y.reliab) swap(x,y) +#define o2(x,y) order(x,y) +#define o3(x,y,z) o2(x,y); o2(x,z); o2(y,z) + +typedef enum {yes, no} yes_no; + +yes_no find_pivot(EDGE *left, EDGE *right, float *pivot_ptr) +{ + EDGE a, b, c, *p; + + a = *left; + b = *(left + (right - left) /2 ); + c = *right; + o3(a,b,c); + + if (a.reliab < b.reliab) + { + *pivot_ptr = b.reliab; + return yes; + } + + if (b.reliab < c.reliab) + { + *pivot_ptr = c.reliab; + return yes; + } + + for (p = left + 1; p <= right; ++p) + { + if (p->reliab != left->reliab) + { + *pivot_ptr = (p->reliab < left->reliab) ? left->reliab : p->reliab; + return yes; + } + return no; + } +} + +EDGE *partition(EDGE *left, EDGE *right, float pivot) +{ + while (left <= right) + { + while (left->reliab < pivot) + ++left; + while (right->reliab >= pivot) + --right; + if (left < right) + { + swap (*left, *right); + ++left; + --right; + } + } + return left; +} + +void quicker_sort(EDGE *left, EDGE *right) +{ + EDGE *p; + float pivot; + + if (find_pivot(left, right, &pivot) == yes) + { + p = partition(left, right, pivot); + quicker_sort(left, p - 1); + quicker_sort(p, right); + } +} + +//--------------end quicker_sort algorithm ----------------------------------- + +//--------------------start initialse pixels ---------------------------------- +//initialse pixels. See the explination of the pixel class above. +//initially every pixel is assumed to belong to a group consisting of only itself +void initialisePIXELs(float *WrappedImage, unsigned char *input_mask, unsigned char *extended_mask, PIXELM *pixel, int image_width, int image_height) +{ + PIXELM *pixel_pointer = pixel; + float *wrapped_image_pointer = WrappedImage; + unsigned char *input_mask_pointer = input_mask; + unsigned char *extended_mask_pointer = extended_mask; + int i, j; + + for (i=0; i < image_height; i++) + { + for (j=0; j < image_width; j++) + { + //pixel_pointer->x = j; + //pixel_pointer->y = i; + pixel_pointer->increment = 0; + pixel_pointer->number_of_pixels_in_group = 1; + pixel_pointer->value = *wrapped_image_pointer; + pixel_pointer->reliability = 9999999 + rand(); + pixel_pointer->input_mask = *input_mask_pointer; + pixel_pointer->extended_mask = *extended_mask_pointer; + pixel_pointer->head = pixel_pointer; + pixel_pointer->last = pixel_pointer; + pixel_pointer->next = NULL; + pixel_pointer->new_group = 0; + pixel_pointer->group = -1; + pixel_pointer++; + wrapped_image_pointer++; + input_mask_pointer++; + extended_mask_pointer++; + } + } +} +//-------------------end initialise pixels ----------- + +//gamma function in the paper +float wrap(float pixel_value) +{ + float wrapped_pixel_value; + if (pixel_value > PI) wrapped_pixel_value = pixel_value - TWOPI; + else if (pixel_value < -PI) wrapped_pixel_value = pixel_value + TWOPI; + else wrapped_pixel_value = pixel_value; + return wrapped_pixel_value; +} + +// pixelL_value is the left pixel, pixelR_value is the right pixel +int find_wrap(float pixelL_value, float pixelR_value) +{ + float difference; + int wrap_value; + difference = pixelL_value - pixelR_value; + + if (difference > PI) wrap_value = -1; + else if (difference < -PI) wrap_value = 1; + else wrap_value = 0; + + return wrap_value; +} + +void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int image_width, int image_height) +{ + int i,j; + int image_width_plus_one = image_width + 1; + int image_width_minus_one = image_width - 1; + unsigned char *IMP = input_mask + image_width + 1; //input mask pointer + unsigned char *EMP = extended_mask + image_width + 1; //extended mask pointer + + //extend the mask for the image except borders + for (i=1; i < image_height - 1; ++i) + { + for (j=1; j < image_width - 1; ++j) + { + if ( (*IMP) == 255 && (*(IMP + 1) == 255) && (*(IMP - 1) == 255) && + (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && + (*(IMP - image_width_minus_one) == 255) && (*(IMP - image_width_plus_one) == 255) && + (*(IMP + image_width_minus_one) == 255) && (*(IMP + image_width_plus_one) == 255) ) + { + *EMP = 255; + } + ++EMP; + ++IMP; + } + EMP += 2; + IMP += 2; + } + + if (x_connectivity == 1) + { + //extend the mask for the right border of the image + IMP = input_mask + 2 * image_width - 1; + EMP = extended_mask + 2 * image_width -1; + for (i=1; i < image_height - 1; ++ i) + { + if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && + (*(IMP - image_width - 1) == 255) && (*(IMP - image_width + 1) == 255) && + (*(IMP + image_width - 1) == 255) && (*(IMP - 2 * image_width + 1) == 255) ) + { + *EMP = 255; + } + EMP += image_width; + IMP += image_width; + } + + //extend the mask for the left border of the image + IMP = input_mask + image_width; + EMP = extended_mask + image_width; + for (i=1; i < image_height - 1; ++i) + { + if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && + (*(IMP - image_width + 1) == 255) && (*(IMP + image_width + 1) == 255) && + (*(IMP + image_width - 1) == 255) && (*(IMP + 2 * image_width - 1) == 255) ) + { + *EMP = 255; + } + EMP += image_width; + IMP += image_width; + } + } + + if (y_connectivity == 1) + { + //extend the mask for the top border of the image + IMP = input_mask + 1; + EMP = extended_mask + 1; + for (i=1; i < image_width - 1; ++i) + { + if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP + image_width) == 255) && (*(IMP + image_width * (image_height - 1)) == 255) && + (*(IMP + image_width + 1) == 255) && (*(IMP + image_width - 1) == 255) && + (*(IMP + image_width * (image_height - 1) - 1) == 255) && (*(IMP + image_width * (image_height - 1) + 1) == 255) ) + { + *EMP = 255; + } + EMP++; + IMP++; + } + + //extend the mask for the bottom border of the image + IMP = input_mask + image_width * (image_height - 1) + 1; + EMP = extended_mask + image_width * (image_height - 1) + 1; + for (i=1; i < image_width - 1; ++i) + { + if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP - image_width) == 255) && (*(IMP - image_width - 1) == 255) && (*(IMP - image_width + 1) == 255) && + (*(IMP - image_width * (image_height - 1) ) == 255) && + (*(IMP - image_width * (image_height - 1) - 1) == 255) && + (*(IMP - image_width * (image_height - 1) + 1) == 255) ) + { + *EMP = 255; + } + EMP++; + IMP++; + } + } +} + +void calculate_reliability(float *wrappedImage, PIXELM *pixel, int image_width, int image_height) +{ + int image_width_plus_one = image_width + 1; + int image_width_minus_one = image_width - 1; + PIXELM *pixel_pointer = pixel + image_width_plus_one; + float *WIP = wrappedImage + image_width_plus_one; //WIP is the wrapped image pointer + float H, V, D1, D2; + int i, j; + + for (i = 1; i < image_height -1; ++i) + { + for (j = 1; j < image_width - 1; ++j) + { + if (pixel_pointer->extended_mask == 255) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); + D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer++; + WIP++; + } + pixel_pointer += 2; + WIP += 2; + } + + if (x_connectivity == 1) + { + //calculating the reliability for the left border of the image + PIXELM *pixel_pointer = pixel + image_width; + float *WIP = wrappedImage + image_width; + + for (i = 1; i < image_height - 1; ++i) + { + if (pixel_pointer->extended_mask == 255) + { + H = wrap(*(WIP + image_width - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); + D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + 2* image_width - 1)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer += image_width; + WIP += image_width; + } + + //calculating the reliability for the right border of the image + pixel_pointer = pixel + 2 * image_width - 1; + WIP = wrappedImage + 2 * image_width - 1; + + for (i = 1; i < image_height - 1; ++i) + { + if (pixel_pointer->extended_mask == 255) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP - image_width_minus_one)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + 1)); + D2 = wrap(*(WIP - 2 * image_width - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer += image_width; + WIP += image_width; + } + } + + if (y_connectivity == 1) + { + //calculating the reliability for the top border of the image + PIXELM *pixel_pointer = pixel + 1; + float *WIP = wrappedImage + 1; + + for (i = 1; i < image_width - 1; ++i) + { + if (pixel_pointer->extended_mask == 255) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP + image_width*(image_height - 1)) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP + image_width*(image_height - 1) - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); + D2 = wrap(*(WIP + image_width*(image_height - 1) + 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer++; + WIP++; + } + + //calculating the reliability for the bottom border of the image + pixel_pointer = pixel + (image_height - 1) * image_width + 1; + WIP = wrappedImage + (image_height - 1) * image_width + 1; + + for (i = 1; i < image_width - 1; ++i) + { + if (pixel_pointer->extended_mask == 255) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP -(image_height - 1) * (image_width))); + D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) + 1)); + D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) - 1)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer++; + WIP++; + } + } +} + +//calculate the reliability of the horizontal edges of the image +//it is calculated by adding the reliability of pixel and the relibility of +//its right-hand neighbour +//edge is calculated between a pixel and its next neighbour +void horizontalEDGEs(PIXELM *pixel, EDGE *edge, int image_width, int image_height) +{ + int i, j; + EDGE *edge_pointer = edge; + PIXELM *pixel_pointer = pixel; + + for (i = 0; i < image_height; i++) + { + for (j = 0; j < image_width - 1; j++) + { + if (pixel_pointer->input_mask == 255 && (pixel_pointer + 1)->input_mask == 255) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer+1); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + 1)->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + 1)->value); + edge_pointer++; + No_of_edges++; + } + pixel_pointer++; + } + pixel_pointer++; + } + //construct edges at the right border of the image + if (x_connectivity == 1) + { + pixel_pointer = pixel + image_width - 1; + for (i = 0; i < image_height; i++) + { + if (pixel_pointer->input_mask == 255 && (pixel_pointer - image_width + 1)->input_mask == 255) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer - image_width + 1); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width + 1)->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width + 1)->value); + edge_pointer++; + No_of_edges++; + } + pixel_pointer+=image_width; + } + } +} + +//calculate the reliability of the vertical edges of the image +//it is calculated by adding the reliability of pixel and the relibility of +//its lower neighbour in the image. +void verticalEDGEs(PIXELM *pixel, EDGE *edge, int image_width, int image_height) +{ + int i, j; + PIXELM *pixel_pointer = pixel; + EDGE *edge_pointer = edge + No_of_edges; + + for (i=0; i < image_height - 1; i++) + { + for (j=0; j < image_width; j++) + { + if (pixel_pointer->input_mask == 255 && (pixel_pointer + image_width)->input_mask == 255) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer + image_width); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + image_width)->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + image_width)->value); + edge_pointer++; + No_of_edges++; + } + pixel_pointer++; + } //j loop + } // i loop + + //construct edges that connect at the bottom border of the image + if (y_connectivity == 1) + { + pixel_pointer = pixel + image_width *(image_height - 1); + for (i = 0; i < image_width; i++) + { + if (pixel_pointer->input_mask == 255 && (pixel_pointer - image_width *(image_height - 1))->input_mask == 255) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer - image_width *(image_height - 1)); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width *(image_height - 1))->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width *(image_height - 1))->value); + edge_pointer++; + No_of_edges++; + } + pixel_pointer++; + } + } +} + +//gather the pixels of the image into groups +void gatherPIXELs(EDGE *edge, int image_width, int image_height) +{ + int k; + PIXELM *PIXEL1; + PIXELM *PIXEL2; + PIXELM *group1; + PIXELM *group2; + EDGE *pointer_edge = edge; + int incremento; + + for (k = 0; k < No_of_edges; k++) + { + PIXEL1 = pointer_edge->pointer_1; + PIXEL2 = pointer_edge->pointer_2; + + //PIXELM 1 and PIXELM 2 belong to different groups + //initially each pixel is a group by it self and one pixel can construct a group + //no else or else if to this if + if (PIXEL2->head != PIXEL1->head) + { + //PIXELM 2 is alone in its group + //merge this pixel with PIXELM 1 group and find the number of 2 pi to add + //to or subtract to unwrap it + if ((PIXEL2->next == NULL) && (PIXEL2->head == PIXEL2)) + { + PIXEL1->head->last->next = PIXEL2; + PIXEL1->head->last = PIXEL2; + (PIXEL1->head->number_of_pixels_in_group)++; + PIXEL2->head=PIXEL1->head; + PIXEL2->increment = PIXEL1->increment-pointer_edge->increment; + } + + //PIXELM 1 is alone in its group + //merge this pixel with PIXELM 2 group and find the number of 2 pi to add + //to or subtract to unwrap it + else if ((PIXEL1->next == NULL) && (PIXEL1->head == PIXEL1)) + { + PIXEL2->head->last->next = PIXEL1; + PIXEL2->head->last = PIXEL1; + (PIXEL2->head->number_of_pixels_in_group)++; + PIXEL1->head = PIXEL2->head; + PIXEL1->increment = PIXEL2->increment+pointer_edge->increment; + } + + //PIXELM 1 and PIXELM 2 both have groups + else + { + group1 = PIXEL1->head; + group2 = PIXEL2->head; + //if the no. of pixels in PIXELM 1 group is larger than the no. of pixels + //in PIXELM 2 group. Merge PIXELM 2 group to PIXELM 1 group + //and find the number of wraps between PIXELM 2 group and PIXELM 1 group + //to unwrap PIXELM 2 group with respect to PIXELM 1 group. + //the no. of wraps will be added to PIXELM 2 grop in the future + if (group1->number_of_pixels_in_group > group2->number_of_pixels_in_group) + { + //merge PIXELM 2 with PIXELM 1 group + group1->last->next = group2; + group1->last = group2->last; + group1->number_of_pixels_in_group = group1->number_of_pixels_in_group + group2->number_of_pixels_in_group; + incremento = PIXEL1->increment-pointer_edge->increment - PIXEL2->increment; + //merge the other pixels in PIXELM 2 group to PIXELM 1 group + while (group2 != NULL) + { + group2->head = group1; + group2->increment += incremento; + group2 = group2->next; + } + } + + //if the no. of pixels in PIXELM 2 group is larger than the no. of pixels + //in PIXELM 1 group. Merge PIXELM 1 group to PIXELM 2 group + //and find the number of wraps between PIXELM 2 group and PIXELM 1 group + //to unwrap PIXELM 1 group with respect to PIXELM 2 group. + //the no. of wraps will be added to PIXELM 1 grop in the future + else + { + //merge PIXELM 1 with PIXELM 2 group + group2->last->next = group1; + group2->last = group1->last; + group2->number_of_pixels_in_group = group2->number_of_pixels_in_group + group1->number_of_pixels_in_group; + incremento = PIXEL2->increment + pointer_edge->increment - PIXEL1->increment; + //merge the other pixels in PIXELM 2 group to PIXELM 1 group + while (group1 != NULL) + { + group1->head = group2; + group1->increment += incremento; + group1 = group1->next; + } // while + + } // else + } //else + } //if + pointer_edge++; + } +} + +//unwrap the image +void unwrapImage(PIXELM *pixel, int image_width, int image_height) +{ + int i; + int image_size = image_width * image_height; + PIXELM *pixel_pointer=pixel; + + for (i = 0; i < image_size; i++) + { + pixel_pointer->value += TWOPI * (float)(pixel_pointer->increment); + pixel_pointer++; + } +} + +//set the masked pixels (mask = 0) to the minimum of the unwrapper phase +void maskImage(PIXELM *pixel, unsigned char *input_mask, int image_width, int image_height) +{ + int image_width_plus_one = image_width + 1; + int image_height_plus_one = image_height + 1; + int image_width_minus_one = image_width - 1; + int image_height_minus_one = image_height - 1; + + PIXELM *pointer_pixel = pixel; + unsigned char *IMP = input_mask; //input mask pointer + float min=99999999.; + int i, j; + int image_size = image_width * image_height; + + //find the minimum of the unwrapped phase + for (i = 0; i < image_size; i++) + { + if ((pointer_pixel->value < min) && (*IMP == 255)) + min = pointer_pixel->value; + + pointer_pixel++; + IMP++; + } + + pointer_pixel = pixel; + IMP = input_mask; + + //set the masked pixels to minimum + for (i = 0; i < image_size; i++) + { + if ((*IMP) == 0) + { + pointer_pixel->value = min; + } + pointer_pixel++; + IMP++; + } +} + +//the input to this unwrapper is an array that contains the wrapped phase map. +//copy the image on the buffer passed to this unwrapper to over-write the unwrapped +//phase map on the buffer of the wrapped phase map. +void returnImage(PIXELM *pixel, float *unwrappedImage, int image_width, int image_height) +{ + int i; + int image_size = image_width * image_height; + float *unwrappedImage_pointer = unwrappedImage; + PIXELM *pixel_pointer = pixel; + + for (i=0; i < image_size; i++) + { + *unwrappedImage_pointer = pixel_pointer->value; + pixel_pointer++; + unwrappedImage_pointer++; + } +} + +//the main function of the unwrapper +int main() +{ + float *WrappedImage, *UnwrappedImage; + unsigned char *input_mask, *extended_mask; + int image_width = 64; + int image_height = 64; + int i, j; + int image_size = image_height * image_width; + int No_of_Edges_initially = (image_width)*(image_height) + (image_width)*(image_height); + + WrappedImage = (float *) calloc(image_size, sizeof(float)); + read_data("wrapped phase slice 64X64.dat", WrappedImage, image_size); + + input_mask = (unsigned char *) calloc(image_size, sizeof(unsigned char)); + extended_mask = (unsigned char *) calloc(image_size, sizeof(unsigned char)); + read_mask("mask 64X64.dat", input_mask, image_size); + + UnwrappedImage = (float *) calloc(image_size, sizeof(float)); + PIXELM *pixel = (PIXELM *) calloc(image_size, sizeof(PIXELM)); + EDGE *edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE));; + + extend_mask(input_mask, extended_mask, image_width, image_height); + + initialisePIXELs(WrappedImage, input_mask, extended_mask, pixel, image_width, image_height); + + calculate_reliability(WrappedImage, pixel, image_width, image_height); + + horizontalEDGEs(pixel, edge, image_width, image_height); + + verticalEDGEs(pixel, edge, image_width, image_height); + + //sort the EDGEs depending on their reiability. The PIXELs with higher relibility (small value) first + quicker_sort(edge, edge + No_of_edges - 1); + + //gather PIXELs into groups + gatherPIXELs(edge, image_width, image_height); + + unwrapImage(pixel, image_width, image_height); + + maskImage(pixel, input_mask, image_width, image_height); + + //copy the image from PIXELM structure to the unwrapped phase array passed to this function + returnImage(pixel, UnwrappedImage, image_width, image_height); + + free(edge); + free(pixel); + + write_data("unwrapped.dat", UnwrappedImage, image_size); + free(UnwrappedImage); + free(WrappedImage); + free(input_mask); + free(extended_mask); + + return 1; +} From 9c58dd5d0bf0ac9f6e63cdbed6db6924e5f9faee Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Sat, 12 May 2012 19:27:12 +0200 Subject: [PATCH 020/577] unwrap: compiles, test passes --- punwrap2D/setup.py | 16 + ...wrapper_with_mask_and_wrap_around_option.c | 703 ++++++++++++++++++ unwrap2D/setup.py | 26 + unwrap2D/test_unwrap.py | 47 ++ unwrap2D/unwrap2D.pyx | 17 + 5 files changed, 809 insertions(+) create mode 100755 punwrap2D/setup.py create mode 100644 unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c create mode 100644 unwrap2D/setup.py create mode 100644 unwrap2D/test_unwrap.py create mode 100644 unwrap2D/unwrap2D.pyx diff --git a/punwrap2D/setup.py b/punwrap2D/setup.py new file mode 100755 index 00000000..9a236dfc --- /dev/null +++ b/punwrap2D/setup.py @@ -0,0 +1,16 @@ +from distutils.core import setup +from distutils.extension import Extension +import numpy as np + +ext_modules = [ + Extension('_punwrap2D', + ['unwrap_phase.c', 'Munther_2D_unwrap.c'], + include_dirs = [np.get_include(),], + #libraries = ['unwrap2D'], + ), + ] + +setup( + name = 'punwrap', + ext_modules = ext_modules, + ) diff --git a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c new file mode 100644 index 00000000..a77fb98a --- /dev/null +++ b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c @@ -0,0 +1,703 @@ +// 2D phase unwrapping, modified for inclusion in scipy by Gregor Thalhammer + +//This program was written by Munther Gdeisat and Miguel Arevallilo Herra´ez to program the two-dimensional unwrapper +//entitled "Fast two-dimensional phase-unwrapping algorithm based on sorting by +//reliability following a noncontinuous path" +//by Miguel Arevallilo Herra´ez, David R. Burton, Michael J. Lalor, and Munther A. Gdeisat +//published in the Journal Applied Optics, Vol. 41, No. 35, pp. 7437, 2002. +//This program was written by Munther Gdeisat, Liverpool John Moores University, United Kingdom. +//Date 26th August 2007 +//The wrapped phase map is assumed to be of floating point data type. The resultant unwrapped phase map is also of floating point type. +//The mask is of byte data type. +//When the mask is 255 this means that the pixel is valid +//When the mask is 0 this means that the pixel is invalid (noisy or corrupted pixel) +//This program takes into consideration the image wrap around problem encountered in MRI imaging. + +//TODO stdlib instead of malloc.h ? (calloc?) +#include +#include +#include + +//TODO: remove global variables +//TODO: make thresholds independent + +static float PI = 3.141592654; +static float TWOPI = 6.283185307; + + +int x_connectivity = 1; +int y_connectivity = 1; +int No_of_edges = 0; + +//PIXELM information +struct pixelm +{ + int increment; //No. of 2*pi to add to the pixel to unwrap it + int number_of_pixels_in_group; //No. of pixel in the pixel group + float value; //value of the pixel + float reliability; + unsigned char input_mask; //0 pixel is masked. 255 pixel is not masked + unsigned char extended_mask; //0 pixel is masked. 255 pixel is not masked + int group; //group No. + int new_group; + struct pixelm *head; //pointer to the first pixel in the group in the linked list + struct pixelm *last; //pointer to the last pixel in the group + struct pixelm *next; //pointer to the next pixel in the group +}; + +typedef struct pixelm PIXELM; + + +//the EDGE is the line that connects two pixels. +//if we have S pixels, then we have S horizontal edges and S vertical edges +struct edge +{ + float reliab; //reliabilty of the edge and it depends on the two pixels + struct PIXELM *pointer_1; //pointer to the first pixel + struct PIXELM *pointer_2; //pointer to the second pixel + int increment; //No. of 2*pi to add to one of the pixels to unwrap it with respect to the second +}; + +typedef struct edge EDGE; + +//---------------start quicker_sort algorithm -------------------------------- +#define swap(x,y) {EDGE t; t=x; x=y; y=t;} +#define order(x,y) if (x.reliab > y.reliab) swap(x,y) +#define o2(x,y) order(x,y) +#define o3(x,y,z) o2(x,y); o2(x,z); o2(y,z) + +typedef enum {yes, no} yes_no; + +yes_no find_pivot(EDGE *left, EDGE *right, float *pivot_ptr) +{ + EDGE a, b, c, *p; + + a = *left; + b = *(left + (right - left) /2 ); + c = *right; + o3(a,b,c); + + if (a.reliab < b.reliab) + { + *pivot_ptr = b.reliab; + return yes; + } + + if (b.reliab < c.reliab) + { + *pivot_ptr = c.reliab; + return yes; + } + + for (p = left + 1; p <= right; ++p) + { + if (p->reliab != left->reliab) + { + *pivot_ptr = (p->reliab < left->reliab) ? left->reliab : p->reliab; + return yes; + } + return no; + } +} + +EDGE *partition(EDGE *left, EDGE *right, float pivot) +{ + while (left <= right) + { + while (left->reliab < pivot) + ++left; + while (right->reliab >= pivot) + --right; + if (left < right) + { + swap (*left, *right); + ++left; + --right; + } + } + return left; +} + +void quicker_sort(EDGE *left, EDGE *right) +{ + EDGE *p; + float pivot; + + if (find_pivot(left, right, &pivot) == yes) + { + p = partition(left, right, pivot); + quicker_sort(left, p - 1); + quicker_sort(p, right); + } +} + +//--------------end quicker_sort algorithm ----------------------------------- + +//--------------------start initialse pixels ---------------------------------- +//initialse pixels. See the explination of the pixel class above. +//initially every pixel is assumed to belong to a group consisting of only itself +void initialisePIXELs(float *WrappedImage, unsigned char *input_mask, unsigned char *extended_mask, PIXELM *pixel, int image_width, int image_height) +{ + PIXELM *pixel_pointer = pixel; + float *wrapped_image_pointer = WrappedImage; + unsigned char *input_mask_pointer = input_mask; + unsigned char *extended_mask_pointer = extended_mask; + int i, j; + + for (i=0; i < image_height; i++) + { + for (j=0; j < image_width; j++) + { + //pixel_pointer->x = j; + //pixel_pointer->y = i; + pixel_pointer->increment = 0; + pixel_pointer->number_of_pixels_in_group = 1; + pixel_pointer->value = *wrapped_image_pointer; + pixel_pointer->reliability = 9999999 + rand(); + pixel_pointer->input_mask = *input_mask_pointer; + pixel_pointer->extended_mask = *extended_mask_pointer; + pixel_pointer->head = pixel_pointer; + pixel_pointer->last = pixel_pointer; + pixel_pointer->next = NULL; + pixel_pointer->new_group = 0; + pixel_pointer->group = -1; + pixel_pointer++; + wrapped_image_pointer++; + input_mask_pointer++; + extended_mask_pointer++; + } + } +} +//-------------------end initialise pixels ----------- + +//gamma function in the paper +float wrap(float pixel_value) +{ + float wrapped_pixel_value; + if (pixel_value > PI) wrapped_pixel_value = pixel_value - TWOPI; + else if (pixel_value < -PI) wrapped_pixel_value = pixel_value + TWOPI; + else wrapped_pixel_value = pixel_value; + return wrapped_pixel_value; +} + +// pixelL_value is the left pixel, pixelR_value is the right pixel +int find_wrap(float pixelL_value, float pixelR_value) +{ + float difference; + int wrap_value; + difference = pixelL_value - pixelR_value; + + if (difference > PI) wrap_value = -1; + else if (difference < -PI) wrap_value = 1; + else wrap_value = 0; + + return wrap_value; +} + +void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int image_width, int image_height) +{ + int i,j; + int image_width_plus_one = image_width + 1; + int image_width_minus_one = image_width - 1; + unsigned char *IMP = input_mask + image_width + 1; //input mask pointer + unsigned char *EMP = extended_mask + image_width + 1; //extended mask pointer + + //extend the mask for the image except borders + for (i=1; i < image_height - 1; ++i) + { + for (j=1; j < image_width - 1; ++j) + { + if ( (*IMP) == 255 && (*(IMP + 1) == 255) && (*(IMP - 1) == 255) && + (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && + (*(IMP - image_width_minus_one) == 255) && (*(IMP - image_width_plus_one) == 255) && + (*(IMP + image_width_minus_one) == 255) && (*(IMP + image_width_plus_one) == 255) ) + { + *EMP = 255; + } + ++EMP; + ++IMP; + } + EMP += 2; + IMP += 2; + } + + if (x_connectivity == 1) + { + //extend the mask for the right border of the image + IMP = input_mask + 2 * image_width - 1; + EMP = extended_mask + 2 * image_width -1; + for (i=1; i < image_height - 1; ++ i) + { + if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && + (*(IMP - image_width - 1) == 255) && (*(IMP - image_width + 1) == 255) && + (*(IMP + image_width - 1) == 255) && (*(IMP - 2 * image_width + 1) == 255) ) + { + *EMP = 255; + } + EMP += image_width; + IMP += image_width; + } + + //extend the mask for the left border of the image + IMP = input_mask + image_width; + EMP = extended_mask + image_width; + for (i=1; i < image_height - 1; ++i) + { + if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && + (*(IMP - image_width + 1) == 255) && (*(IMP + image_width + 1) == 255) && + (*(IMP + image_width - 1) == 255) && (*(IMP + 2 * image_width - 1) == 255) ) + { + *EMP = 255; + } + EMP += image_width; + IMP += image_width; + } + } + + if (y_connectivity == 1) + { + //extend the mask for the top border of the image + IMP = input_mask + 1; + EMP = extended_mask + 1; + for (i=1; i < image_width - 1; ++i) + { + if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP + image_width) == 255) && (*(IMP + image_width * (image_height - 1)) == 255) && + (*(IMP + image_width + 1) == 255) && (*(IMP + image_width - 1) == 255) && + (*(IMP + image_width * (image_height - 1) - 1) == 255) && (*(IMP + image_width * (image_height - 1) + 1) == 255) ) + { + *EMP = 255; + } + EMP++; + IMP++; + } + + //extend the mask for the bottom border of the image + IMP = input_mask + image_width * (image_height - 1) + 1; + EMP = extended_mask + image_width * (image_height - 1) + 1; + for (i=1; i < image_width - 1; ++i) + { + if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP - image_width) == 255) && (*(IMP - image_width - 1) == 255) && (*(IMP - image_width + 1) == 255) && + (*(IMP - image_width * (image_height - 1) ) == 255) && + (*(IMP - image_width * (image_height - 1) - 1) == 255) && + (*(IMP - image_width * (image_height - 1) + 1) == 255) ) + { + *EMP = 255; + } + EMP++; + IMP++; + } + } +} + +void calculate_reliability(float *wrappedImage, PIXELM *pixel, int image_width, int image_height) +{ + int image_width_plus_one = image_width + 1; + int image_width_minus_one = image_width - 1; + PIXELM *pixel_pointer = pixel + image_width_plus_one; + float *WIP = wrappedImage + image_width_plus_one; //WIP is the wrapped image pointer + float H, V, D1, D2; + int i, j; + + for (i = 1; i < image_height -1; ++i) + { + for (j = 1; j < image_width - 1; ++j) + { + if (pixel_pointer->extended_mask == 255) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); + D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer++; + WIP++; + } + pixel_pointer += 2; + WIP += 2; + } + + if (x_connectivity == 1) + { + //calculating the reliability for the left border of the image + PIXELM *pixel_pointer = pixel + image_width; + float *WIP = wrappedImage + image_width; + + for (i = 1; i < image_height - 1; ++i) + { + if (pixel_pointer->extended_mask == 255) + { + H = wrap(*(WIP + image_width - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); + D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + 2* image_width - 1)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer += image_width; + WIP += image_width; + } + + //calculating the reliability for the right border of the image + pixel_pointer = pixel + 2 * image_width - 1; + WIP = wrappedImage + 2 * image_width - 1; + + for (i = 1; i < image_height - 1; ++i) + { + if (pixel_pointer->extended_mask == 255) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP - image_width_minus_one)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + 1)); + D2 = wrap(*(WIP - 2 * image_width - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer += image_width; + WIP += image_width; + } + } + + if (y_connectivity == 1) + { + //calculating the reliability for the top border of the image + PIXELM *pixel_pointer = pixel + 1; + float *WIP = wrappedImage + 1; + + for (i = 1; i < image_width - 1; ++i) + { + if (pixel_pointer->extended_mask == 255) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP + image_width*(image_height - 1)) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP + image_width*(image_height - 1) - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); + D2 = wrap(*(WIP + image_width*(image_height - 1) + 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer++; + WIP++; + } + + //calculating the reliability for the bottom border of the image + pixel_pointer = pixel + (image_height - 1) * image_width + 1; + WIP = wrappedImage + (image_height - 1) * image_width + 1; + + for (i = 1; i < image_width - 1; ++i) + { + if (pixel_pointer->extended_mask == 255) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP -(image_height - 1) * (image_width))); + D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) + 1)); + D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) - 1)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer++; + WIP++; + } + } +} + +//calculate the reliability of the horizontal edges of the image +//it is calculated by adding the reliability of pixel and the relibility of +//its right-hand neighbour +//edge is calculated between a pixel and its next neighbour +void horizontalEDGEs(PIXELM *pixel, EDGE *edge, int image_width, int image_height) +{ + int i, j; + EDGE *edge_pointer = edge; + PIXELM *pixel_pointer = pixel; + + for (i = 0; i < image_height; i++) + { + for (j = 0; j < image_width - 1; j++) + { + if (pixel_pointer->input_mask == 255 && (pixel_pointer + 1)->input_mask == 255) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer+1); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + 1)->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + 1)->value); + edge_pointer++; + No_of_edges++; + } + pixel_pointer++; + } + pixel_pointer++; + } + //construct edges at the right border of the image + if (x_connectivity == 1) + { + pixel_pointer = pixel + image_width - 1; + for (i = 0; i < image_height; i++) + { + if (pixel_pointer->input_mask == 255 && (pixel_pointer - image_width + 1)->input_mask == 255) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer - image_width + 1); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width + 1)->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width + 1)->value); + edge_pointer++; + No_of_edges++; + } + pixel_pointer+=image_width; + } + } +} + +//calculate the reliability of the vertical edges of the image +//it is calculated by adding the reliability of pixel and the relibility of +//its lower neighbour in the image. +void verticalEDGEs(PIXELM *pixel, EDGE *edge, int image_width, int image_height) +{ + int i, j; + PIXELM *pixel_pointer = pixel; + EDGE *edge_pointer = edge + No_of_edges; + + for (i=0; i < image_height - 1; i++) + { + for (j=0; j < image_width; j++) + { + if (pixel_pointer->input_mask == 255 && (pixel_pointer + image_width)->input_mask == 255) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer + image_width); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + image_width)->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + image_width)->value); + edge_pointer++; + No_of_edges++; + } + pixel_pointer++; + } //j loop + } // i loop + + //construct edges that connect at the bottom border of the image + if (y_connectivity == 1) + { + pixel_pointer = pixel + image_width *(image_height - 1); + for (i = 0; i < image_width; i++) + { + if (pixel_pointer->input_mask == 255 && (pixel_pointer - image_width *(image_height - 1))->input_mask == 255) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer - image_width *(image_height - 1)); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width *(image_height - 1))->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width *(image_height - 1))->value); + edge_pointer++; + No_of_edges++; + } + pixel_pointer++; + } + } +} + +//gather the pixels of the image into groups +void gatherPIXELs(EDGE *edge, int image_width, int image_height) +{ + int k; + PIXELM *PIXEL1; + PIXELM *PIXEL2; + PIXELM *group1; + PIXELM *group2; + EDGE *pointer_edge = edge; + int incremento; + + for (k = 0; k < No_of_edges; k++) + { + PIXEL1 = pointer_edge->pointer_1; + PIXEL2 = pointer_edge->pointer_2; + + //PIXELM 1 and PIXELM 2 belong to different groups + //initially each pixel is a group by it self and one pixel can construct a group + //no else or else if to this if + if (PIXEL2->head != PIXEL1->head) + { + //PIXELM 2 is alone in its group + //merge this pixel with PIXELM 1 group and find the number of 2 pi to add + //to or subtract to unwrap it + if ((PIXEL2->next == NULL) && (PIXEL2->head == PIXEL2)) + { + PIXEL1->head->last->next = PIXEL2; + PIXEL1->head->last = PIXEL2; + (PIXEL1->head->number_of_pixels_in_group)++; + PIXEL2->head=PIXEL1->head; + PIXEL2->increment = PIXEL1->increment-pointer_edge->increment; + } + + //PIXELM 1 is alone in its group + //merge this pixel with PIXELM 2 group and find the number of 2 pi to add + //to or subtract to unwrap it + else if ((PIXEL1->next == NULL) && (PIXEL1->head == PIXEL1)) + { + PIXEL2->head->last->next = PIXEL1; + PIXEL2->head->last = PIXEL1; + (PIXEL2->head->number_of_pixels_in_group)++; + PIXEL1->head = PIXEL2->head; + PIXEL1->increment = PIXEL2->increment+pointer_edge->increment; + } + + //PIXELM 1 and PIXELM 2 both have groups + else + { + group1 = PIXEL1->head; + group2 = PIXEL2->head; + //if the no. of pixels in PIXELM 1 group is larger than the no. of pixels + //in PIXELM 2 group. Merge PIXELM 2 group to PIXELM 1 group + //and find the number of wraps between PIXELM 2 group and PIXELM 1 group + //to unwrap PIXELM 2 group with respect to PIXELM 1 group. + //the no. of wraps will be added to PIXELM 2 grop in the future + if (group1->number_of_pixels_in_group > group2->number_of_pixels_in_group) + { + //merge PIXELM 2 with PIXELM 1 group + group1->last->next = group2; + group1->last = group2->last; + group1->number_of_pixels_in_group = group1->number_of_pixels_in_group + group2->number_of_pixels_in_group; + incremento = PIXEL1->increment-pointer_edge->increment - PIXEL2->increment; + //merge the other pixels in PIXELM 2 group to PIXELM 1 group + while (group2 != NULL) + { + group2->head = group1; + group2->increment += incremento; + group2 = group2->next; + } + } + + //if the no. of pixels in PIXELM 2 group is larger than the no. of pixels + //in PIXELM 1 group. Merge PIXELM 1 group to PIXELM 2 group + //and find the number of wraps between PIXELM 2 group and PIXELM 1 group + //to unwrap PIXELM 1 group with respect to PIXELM 2 group. + //the no. of wraps will be added to PIXELM 1 grop in the future + else + { + //merge PIXELM 1 with PIXELM 2 group + group2->last->next = group1; + group2->last = group1->last; + group2->number_of_pixels_in_group = group2->number_of_pixels_in_group + group1->number_of_pixels_in_group; + incremento = PIXEL2->increment + pointer_edge->increment - PIXEL1->increment; + //merge the other pixels in PIXELM 2 group to PIXELM 1 group + while (group1 != NULL) + { + group1->head = group2; + group1->increment += incremento; + group1 = group1->next; + } // while + + } // else + } //else + } //if + pointer_edge++; + } +} + +//unwrap the image +void unwrapImage(PIXELM *pixel, int image_width, int image_height) +{ + int i; + int image_size = image_width * image_height; + PIXELM *pixel_pointer=pixel; + + for (i = 0; i < image_size; i++) + { + pixel_pointer->value += TWOPI * (float)(pixel_pointer->increment); + pixel_pointer++; + } +} + +//set the masked pixels (mask = 0) to the minimum of the unwrapper phase +void maskImage(PIXELM *pixel, unsigned char *input_mask, int image_width, int image_height) +{ + int image_width_plus_one = image_width + 1; + int image_height_plus_one = image_height + 1; + int image_width_minus_one = image_width - 1; + int image_height_minus_one = image_height - 1; + + PIXELM *pointer_pixel = pixel; + unsigned char *IMP = input_mask; //input mask pointer + float min=99999999.; + int i, j; + int image_size = image_width * image_height; + + //find the minimum of the unwrapped phase + for (i = 0; i < image_size; i++) + { + if ((pointer_pixel->value < min) && (*IMP == 255)) + min = pointer_pixel->value; + + pointer_pixel++; + IMP++; + } + + pointer_pixel = pixel; + IMP = input_mask; + + //set the masked pixels to minimum + for (i = 0; i < image_size; i++) + { + if ((*IMP) == 0) + { + pointer_pixel->value = min; + } + pointer_pixel++; + IMP++; + } +} + +//the input to this unwrapper is an array that contains the wrapped phase map. +//copy the image on the buffer passed to this unwrapper to over-write the unwrapped +//phase map on the buffer of the wrapped phase map. +void returnImage(PIXELM *pixel, float *unwrappedImage, int image_width, int image_height) +{ + int i; + int image_size = image_width * image_height; + float *unwrappedImage_pointer = unwrappedImage; + PIXELM *pixel_pointer = pixel; + + for (i=0; i < image_size; i++) + { + *unwrappedImage_pointer = pixel_pointer->value; + pixel_pointer++; + unwrappedImage_pointer++; + } +} + +//the main function of the unwrapper +int unwrap(float* WrappedImage, float* UnwrappedImage, unsigned char* input_mask, + int image_width, int image_height) +{ + unsigned char *extended_mask; + int image_size = image_height * image_width; + int No_of_Edges_initially = 2 * image_width * image_height; + + extended_mask = (unsigned char *) calloc(image_size, sizeof(unsigned char)); + PIXELM *pixel = (PIXELM *) calloc(image_size, sizeof(PIXELM)); + EDGE *edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE));; + + extend_mask(input_mask, extended_mask, image_width, image_height); + initialisePIXELs(WrappedImage, input_mask, extended_mask, pixel, image_width, image_height); + calculate_reliability(WrappedImage, pixel, image_width, image_height); + horizontalEDGEs(pixel, edge, image_width, image_height); + verticalEDGEs(pixel, edge, image_width, image_height); + + //sort the EDGEs depending on their reiability. The PIXELs with higher + //relibility (small value) first + quicker_sort(edge, edge + No_of_edges - 1); + + //gather PIXELs into groups + gatherPIXELs(edge, image_width, image_height); + + unwrapImage(pixel, image_width, image_height); + maskImage(pixel, input_mask, image_width, image_height); + + //copy the image from PIXELM structure to the unwrapped phase array + //passed to this function + returnImage(pixel, UnwrappedImage, image_width, image_height); + + free(edge); + free(pixel); + free(extended_mask); + + return 1; + No_of_edges = 0; +} diff --git a/unwrap2D/setup.py b/unwrap2D/setup.py new file mode 100644 index 00000000..284d8374 --- /dev/null +++ b/unwrap2D/setup.py @@ -0,0 +1,26 @@ +from distutils.core import setup +from distutils.extension import Extension +from Cython.Distutils import build_ext +#from Cython.Build import cythonize +import numpy as np + +ext_modules = [ + Extension('unwrap2D', + ['unwrap2D.pyx', + #'Miguel_2D_unwrapper_with_mask_and_wrap_around_option.cpp', + 'Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c', + ], + include_dirs = [np.get_include(),], + ), + ] + +import numpy as np + +setup( + name = 'unwrp2D', + #ext_modules = cythonize(['cytransient.pyx',], + # include_path = [np.get_include(),], + # ), + cmdclass = {'build_ext': build_ext}, + ext_modules = ext_modules, + ) diff --git a/unwrap2D/test_unwrap.py b/unwrap2D/test_unwrap.py new file mode 100644 index 00000000..cad968cf --- /dev/null +++ b/unwrap2D/test_unwrap.py @@ -0,0 +1,47 @@ +from numpy.testing import * +from unwrap2D import unwrap2D + +import numpy as np +from numpy import outer, arange, ones, abs, empty, power, indices + + +def test_unwrap2D(): + nx, ny = 64, 64 + x = np.arange(nx) + y = np.arange(ny) + x.shape = (1,-1) + y.shape = (-1,1) + + z = np.exp(1j*x*0.5) * np.exp(1j*y*0.1) + phi_w = np.angle(z) + mask = 255*np.ones((nx, ny), dtype = np.uint8) + phi = unwrap2D(phi_w.astype(np.float32), mask) + return phi_w, phi + + +# class test_unwrap(TestCase): +# def test_simple2d(self, level=1): +# grid = outer(ones(64), arange(-32,32)) + \ +# 1.j * outer(arange(-32,32), ones(64)) +# pgrid = abs(grid) +# wr_grid = normalize_angle(pgrid) +# uw_grid = unwrap2D(wr_grid) +# uw_grid += (pgrid[32,32] - uw_grid[32,32]) + +# assert_array_almost_equal(pgrid, uw_grid, decimal=5) + +# def test_simple3d(self): +# grid = indices((64,64,64)) +# grid[0] -= 32 +# grid[1] -= 32 +# grid[2] -= 32 +# # get distance of each point in the grid from 0 +# grid = power(power(grid, 2.0).sum(axis=0), 0.5) +# wr_grid = normalize_angle(grid) +# uw_grid = unwrap3D(wr_grid) +# uw_grid += (grid[32,32,32] - uw_grid[32,32,32]) +# assert_array_almost_equal(grid, uw_grid, decimal=5) + +if __name__=="__main__": + #NumpyTest().run() + p,p2 = test_unwrap2D() diff --git a/unwrap2D/unwrap2D.pyx b/unwrap2D/unwrap2D.pyx new file mode 100644 index 00000000..d92032a4 --- /dev/null +++ b/unwrap2D/unwrap2D.pyx @@ -0,0 +1,17 @@ +import numpy as np +cimport numpy as np + +cdef extern int unwrap(float* WrappedImage, float* UnwrappedImage, unsigned char* input_mask, + int image_width, int image_height) + +def unwrap2D(float[:,::1] array, unsigned char[:,::1] mask): + cdef float[:,::1] unwrapped_array = np.empty_like(array) + cdef int h = array.shape[0] + cdef int w = array.shape[1] + unwrap(&array[0,0], + &unwrapped_array[0,0], + &mask[0,0], + array.shape[0], array.shape[1]) + return unwrapped_array + + From c5681dd85ede3b8f29ebcc326de3a0fadda9f27a Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Sat, 12 May 2012 19:31:37 +0200 Subject: [PATCH 021/577] unwrap: cleanups --- punwrap2D/setup.py | 16 - ...apper_with_mask_and_wrap_around_option.cpp | 743 ------------------ 2 files changed, 759 deletions(-) delete mode 100755 punwrap2D/setup.py delete mode 100755 unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.cpp diff --git a/punwrap2D/setup.py b/punwrap2D/setup.py deleted file mode 100755 index 9a236dfc..00000000 --- a/punwrap2D/setup.py +++ /dev/null @@ -1,16 +0,0 @@ -from distutils.core import setup -from distutils.extension import Extension -import numpy as np - -ext_modules = [ - Extension('_punwrap2D', - ['unwrap_phase.c', 'Munther_2D_unwrap.c'], - include_dirs = [np.get_include(),], - #libraries = ['unwrap2D'], - ), - ] - -setup( - name = 'punwrap', - ext_modules = ext_modules, - ) diff --git a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.cpp b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.cpp deleted file mode 100755 index 88bdcab6..00000000 --- a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.cpp +++ /dev/null @@ -1,743 +0,0 @@ -//This program was written by Munther Gdeisat and Miguel Arevallilo Herra´ez to program the two-dimensional unwrapper -//entitled "Fast two-dimensional phase-unwrapping algorithm based on sorting by -//reliability following a noncontinuous path" -//by Miguel Arevallilo Herra´ez, David R. Burton, Michael J. Lalor, and Munther A. Gdeisat -//published in the Journal Applied Optics, Vol. 41, No. 35, pp. 7437, 2002. -//This program was written by Munther Gdeisat, Liverpool John Moores University, United Kingdom. -//Date 26th August 2007 -//The wrapped phase map is assumed to be of floating point data type. The resultant unwrapped phase map is also of floating point type. -//The mask is of byte data type. -//When the mask is 255 this means that the pixel is valid -//When the mask is 0 this means that the pixel is invalid (noisy or corrupted pixel) -//This program takes into consideration the image wrap around problem encountered in MRI imaging. -#include -//#include "stdafx.h" -#include -#include -#include - -static float PI = 3.141592654; -static float TWOPI = 6.283185307; -int x_connectivity = 1; -int y_connectivity = 1; -int No_of_edges = 0; - -//PIXELM information -struct PIXELM -{ - //int x; //x coordinate of the pixel - //int y; //y coordinate - int increment; //No. of 2*pi to add to the pixel to unwrap it - int number_of_pixels_in_group; //No. of pixel in the pixel group - float value; //value of the pixel - float reliability; - unsigned char input_mask; //0 pixel is masked. 255 pixel is not masked - unsigned char extended_mask; //0 pixel is masked. 255 pixel is not masked - int group; //group No. - int new_group; - struct PIXELM *head; //pointer to the first pixel in the group in the linked list - struct PIXELM *last; //pointer to the last pixel in the group - struct PIXELM *next; //pointer to the next pixel in the group -}; - - -//the EDGE is the line that connects two pixels. -//if we have S pixels, then we have S horizontal edges and S vertical edges -struct EDGE -{ - float reliab; //reliabilty of the edge and it depends on the two pixels - PIXELM *pointer_1; //pointer to the first pixel - PIXELM *pointer_2; //pointer to the second pixel - int increment; //No. of 2*pi to add to one of the pixels to unwrap it with respect to the second -}; - -void read_data(char *inputfile,float *Data, int length) -{ - printf("Reading the Wrapped Values from Binary File.............>"); - FILE *ifptr; - ifptr = fopen(inputfile,"rb"); - if(ifptr == NULL) printf("Error opening the file\n"); - fread(Data,sizeof(float),length,ifptr); - fclose(ifptr); - printf(" Done.\n"); -} - -void write_data(char *outputfile,float *Data,int length) -{ - printf("Writing the Wrapped Values to Binary File.............>"); - FILE *ifptr; - ifptr = fopen(outputfile,"wb"); - if(ifptr == NULL) printf("Error opening the file\n"); - fwrite(Data,sizeof(float),length,ifptr); - fclose(ifptr); - printf(" Done.\n"); -} - -void read_mask(char *inputfile,unsigned char *Data, int length) -{ - printf("Reading the mask frpm Binary File.............>"); - FILE *ifptr; - ifptr = fopen(inputfile,"rb"); - if(ifptr == NULL) printf("Error opening the file\n"); - fread(Data,sizeof(char),length,ifptr); - fclose(ifptr); - printf(" Done.\n"); -} -//---------------start quicker_sort algorithm -------------------------------- -#define swap(x,y) {EDGE t; t=x; x=y; y=t;} -#define order(x,y) if (x.reliab > y.reliab) swap(x,y) -#define o2(x,y) order(x,y) -#define o3(x,y,z) o2(x,y); o2(x,z); o2(y,z) - -typedef enum {yes, no} yes_no; - -yes_no find_pivot(EDGE *left, EDGE *right, float *pivot_ptr) -{ - EDGE a, b, c, *p; - - a = *left; - b = *(left + (right - left) /2 ); - c = *right; - o3(a,b,c); - - if (a.reliab < b.reliab) - { - *pivot_ptr = b.reliab; - return yes; - } - - if (b.reliab < c.reliab) - { - *pivot_ptr = c.reliab; - return yes; - } - - for (p = left + 1; p <= right; ++p) - { - if (p->reliab != left->reliab) - { - *pivot_ptr = (p->reliab < left->reliab) ? left->reliab : p->reliab; - return yes; - } - return no; - } -} - -EDGE *partition(EDGE *left, EDGE *right, float pivot) -{ - while (left <= right) - { - while (left->reliab < pivot) - ++left; - while (right->reliab >= pivot) - --right; - if (left < right) - { - swap (*left, *right); - ++left; - --right; - } - } - return left; -} - -void quicker_sort(EDGE *left, EDGE *right) -{ - EDGE *p; - float pivot; - - if (find_pivot(left, right, &pivot) == yes) - { - p = partition(left, right, pivot); - quicker_sort(left, p - 1); - quicker_sort(p, right); - } -} - -//--------------end quicker_sort algorithm ----------------------------------- - -//--------------------start initialse pixels ---------------------------------- -//initialse pixels. See the explination of the pixel class above. -//initially every pixel is assumed to belong to a group consisting of only itself -void initialisePIXELs(float *WrappedImage, unsigned char *input_mask, unsigned char *extended_mask, PIXELM *pixel, int image_width, int image_height) -{ - PIXELM *pixel_pointer = pixel; - float *wrapped_image_pointer = WrappedImage; - unsigned char *input_mask_pointer = input_mask; - unsigned char *extended_mask_pointer = extended_mask; - int i, j; - - for (i=0; i < image_height; i++) - { - for (j=0; j < image_width; j++) - { - //pixel_pointer->x = j; - //pixel_pointer->y = i; - pixel_pointer->increment = 0; - pixel_pointer->number_of_pixels_in_group = 1; - pixel_pointer->value = *wrapped_image_pointer; - pixel_pointer->reliability = 9999999 + rand(); - pixel_pointer->input_mask = *input_mask_pointer; - pixel_pointer->extended_mask = *extended_mask_pointer; - pixel_pointer->head = pixel_pointer; - pixel_pointer->last = pixel_pointer; - pixel_pointer->next = NULL; - pixel_pointer->new_group = 0; - pixel_pointer->group = -1; - pixel_pointer++; - wrapped_image_pointer++; - input_mask_pointer++; - extended_mask_pointer++; - } - } -} -//-------------------end initialise pixels ----------- - -//gamma function in the paper -float wrap(float pixel_value) -{ - float wrapped_pixel_value; - if (pixel_value > PI) wrapped_pixel_value = pixel_value - TWOPI; - else if (pixel_value < -PI) wrapped_pixel_value = pixel_value + TWOPI; - else wrapped_pixel_value = pixel_value; - return wrapped_pixel_value; -} - -// pixelL_value is the left pixel, pixelR_value is the right pixel -int find_wrap(float pixelL_value, float pixelR_value) -{ - float difference; - int wrap_value; - difference = pixelL_value - pixelR_value; - - if (difference > PI) wrap_value = -1; - else if (difference < -PI) wrap_value = 1; - else wrap_value = 0; - - return wrap_value; -} - -void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int image_width, int image_height) -{ - int i,j; - int image_width_plus_one = image_width + 1; - int image_width_minus_one = image_width - 1; - unsigned char *IMP = input_mask + image_width + 1; //input mask pointer - unsigned char *EMP = extended_mask + image_width + 1; //extended mask pointer - - //extend the mask for the image except borders - for (i=1; i < image_height - 1; ++i) - { - for (j=1; j < image_width - 1; ++j) - { - if ( (*IMP) == 255 && (*(IMP + 1) == 255) && (*(IMP - 1) == 255) && - (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && - (*(IMP - image_width_minus_one) == 255) && (*(IMP - image_width_plus_one) == 255) && - (*(IMP + image_width_minus_one) == 255) && (*(IMP + image_width_plus_one) == 255) ) - { - *EMP = 255; - } - ++EMP; - ++IMP; - } - EMP += 2; - IMP += 2; - } - - if (x_connectivity == 1) - { - //extend the mask for the right border of the image - IMP = input_mask + 2 * image_width - 1; - EMP = extended_mask + 2 * image_width -1; - for (i=1; i < image_height - 1; ++ i) - { - if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && - (*(IMP - image_width - 1) == 255) && (*(IMP - image_width + 1) == 255) && - (*(IMP + image_width - 1) == 255) && (*(IMP - 2 * image_width + 1) == 255) ) - { - *EMP = 255; - } - EMP += image_width; - IMP += image_width; - } - - //extend the mask for the left border of the image - IMP = input_mask + image_width; - EMP = extended_mask + image_width; - for (i=1; i < image_height - 1; ++i) - { - if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && - (*(IMP - image_width + 1) == 255) && (*(IMP + image_width + 1) == 255) && - (*(IMP + image_width - 1) == 255) && (*(IMP + 2 * image_width - 1) == 255) ) - { - *EMP = 255; - } - EMP += image_width; - IMP += image_width; - } - } - - if (y_connectivity == 1) - { - //extend the mask for the top border of the image - IMP = input_mask + 1; - EMP = extended_mask + 1; - for (i=1; i < image_width - 1; ++i) - { - if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP + image_width) == 255) && (*(IMP + image_width * (image_height - 1)) == 255) && - (*(IMP + image_width + 1) == 255) && (*(IMP + image_width - 1) == 255) && - (*(IMP + image_width * (image_height - 1) - 1) == 255) && (*(IMP + image_width * (image_height - 1) + 1) == 255) ) - { - *EMP = 255; - } - EMP++; - IMP++; - } - - //extend the mask for the bottom border of the image - IMP = input_mask + image_width * (image_height - 1) + 1; - EMP = extended_mask + image_width * (image_height - 1) + 1; - for (i=1; i < image_width - 1; ++i) - { - if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP - image_width) == 255) && (*(IMP - image_width - 1) == 255) && (*(IMP - image_width + 1) == 255) && - (*(IMP - image_width * (image_height - 1) ) == 255) && - (*(IMP - image_width * (image_height - 1) - 1) == 255) && - (*(IMP - image_width * (image_height - 1) + 1) == 255) ) - { - *EMP = 255; - } - EMP++; - IMP++; - } - } -} - -void calculate_reliability(float *wrappedImage, PIXELM *pixel, int image_width, int image_height) -{ - int image_width_plus_one = image_width + 1; - int image_width_minus_one = image_width - 1; - PIXELM *pixel_pointer = pixel + image_width_plus_one; - float *WIP = wrappedImage + image_width_plus_one; //WIP is the wrapped image pointer - float H, V, D1, D2; - int i, j; - - for (i = 1; i < image_height -1; ++i) - { - for (j = 1; j < image_width - 1; ++j) - { - if (pixel_pointer->extended_mask == 255) - { - H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); - V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); - D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); - D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer++; - WIP++; - } - pixel_pointer += 2; - WIP += 2; - } - - if (x_connectivity == 1) - { - //calculating the reliability for the left border of the image - PIXELM *pixel_pointer = pixel + image_width; - float *WIP = wrappedImage + image_width; - - for (i = 1; i < image_height - 1; ++i) - { - if (pixel_pointer->extended_mask == 255) - { - H = wrap(*(WIP + image_width - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); - V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); - D1 = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); - D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + 2* image_width - 1)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer += image_width; - WIP += image_width; - } - - //calculating the reliability for the right border of the image - pixel_pointer = pixel + 2 * image_width - 1; - WIP = wrappedImage + 2 * image_width - 1; - - for (i = 1; i < image_height - 1; ++i) - { - if (pixel_pointer->extended_mask == 255) - { - H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP - image_width_minus_one)); - V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); - D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + 1)); - D2 = wrap(*(WIP - 2 * image_width - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer += image_width; - WIP += image_width; - } - } - - if (y_connectivity == 1) - { - //calculating the reliability for the top border of the image - PIXELM *pixel_pointer = pixel + 1; - float *WIP = wrappedImage + 1; - - for (i = 1; i < image_width - 1; ++i) - { - if (pixel_pointer->extended_mask == 255) - { - H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); - V = wrap(*(WIP + image_width*(image_height - 1)) - *WIP) - wrap(*WIP - *(WIP + image_width)); - D1 = wrap(*(WIP + image_width*(image_height - 1) - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); - D2 = wrap(*(WIP + image_width*(image_height - 1) + 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer++; - WIP++; - } - - //calculating the reliability for the bottom border of the image - pixel_pointer = pixel + (image_height - 1) * image_width + 1; - WIP = wrappedImage + (image_height - 1) * image_width + 1; - - for (i = 1; i < image_width - 1; ++i) - { - if (pixel_pointer->extended_mask == 255) - { - H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); - V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP -(image_height - 1) * (image_width))); - D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) + 1)); - D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) - 1)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer++; - WIP++; - } - } -} - -//calculate the reliability of the horizontal edges of the image -//it is calculated by adding the reliability of pixel and the relibility of -//its right-hand neighbour -//edge is calculated between a pixel and its next neighbour -void horizontalEDGEs(PIXELM *pixel, EDGE *edge, int image_width, int image_height) -{ - int i, j; - EDGE *edge_pointer = edge; - PIXELM *pixel_pointer = pixel; - - for (i = 0; i < image_height; i++) - { - for (j = 0; j < image_width - 1; j++) - { - if (pixel_pointer->input_mask == 255 && (pixel_pointer + 1)->input_mask == 255) - { - edge_pointer->pointer_1 = pixel_pointer; - edge_pointer->pointer_2 = (pixel_pointer+1); - edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + 1)->reliability; - edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + 1)->value); - edge_pointer++; - No_of_edges++; - } - pixel_pointer++; - } - pixel_pointer++; - } - //construct edges at the right border of the image - if (x_connectivity == 1) - { - pixel_pointer = pixel + image_width - 1; - for (i = 0; i < image_height; i++) - { - if (pixel_pointer->input_mask == 255 && (pixel_pointer - image_width + 1)->input_mask == 255) - { - edge_pointer->pointer_1 = pixel_pointer; - edge_pointer->pointer_2 = (pixel_pointer - image_width + 1); - edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width + 1)->reliability; - edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width + 1)->value); - edge_pointer++; - No_of_edges++; - } - pixel_pointer+=image_width; - } - } -} - -//calculate the reliability of the vertical edges of the image -//it is calculated by adding the reliability of pixel and the relibility of -//its lower neighbour in the image. -void verticalEDGEs(PIXELM *pixel, EDGE *edge, int image_width, int image_height) -{ - int i, j; - PIXELM *pixel_pointer = pixel; - EDGE *edge_pointer = edge + No_of_edges; - - for (i=0; i < image_height - 1; i++) - { - for (j=0; j < image_width; j++) - { - if (pixel_pointer->input_mask == 255 && (pixel_pointer + image_width)->input_mask == 255) - { - edge_pointer->pointer_1 = pixel_pointer; - edge_pointer->pointer_2 = (pixel_pointer + image_width); - edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + image_width)->reliability; - edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + image_width)->value); - edge_pointer++; - No_of_edges++; - } - pixel_pointer++; - } //j loop - } // i loop - - //construct edges that connect at the bottom border of the image - if (y_connectivity == 1) - { - pixel_pointer = pixel + image_width *(image_height - 1); - for (i = 0; i < image_width; i++) - { - if (pixel_pointer->input_mask == 255 && (pixel_pointer - image_width *(image_height - 1))->input_mask == 255) - { - edge_pointer->pointer_1 = pixel_pointer; - edge_pointer->pointer_2 = (pixel_pointer - image_width *(image_height - 1)); - edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width *(image_height - 1))->reliability; - edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width *(image_height - 1))->value); - edge_pointer++; - No_of_edges++; - } - pixel_pointer++; - } - } -} - -//gather the pixels of the image into groups -void gatherPIXELs(EDGE *edge, int image_width, int image_height) -{ - int k; - PIXELM *PIXEL1; - PIXELM *PIXEL2; - PIXELM *group1; - PIXELM *group2; - EDGE *pointer_edge = edge; - int incremento; - - for (k = 0; k < No_of_edges; k++) - { - PIXEL1 = pointer_edge->pointer_1; - PIXEL2 = pointer_edge->pointer_2; - - //PIXELM 1 and PIXELM 2 belong to different groups - //initially each pixel is a group by it self and one pixel can construct a group - //no else or else if to this if - if (PIXEL2->head != PIXEL1->head) - { - //PIXELM 2 is alone in its group - //merge this pixel with PIXELM 1 group and find the number of 2 pi to add - //to or subtract to unwrap it - if ((PIXEL2->next == NULL) && (PIXEL2->head == PIXEL2)) - { - PIXEL1->head->last->next = PIXEL2; - PIXEL1->head->last = PIXEL2; - (PIXEL1->head->number_of_pixels_in_group)++; - PIXEL2->head=PIXEL1->head; - PIXEL2->increment = PIXEL1->increment-pointer_edge->increment; - } - - //PIXELM 1 is alone in its group - //merge this pixel with PIXELM 2 group and find the number of 2 pi to add - //to or subtract to unwrap it - else if ((PIXEL1->next == NULL) && (PIXEL1->head == PIXEL1)) - { - PIXEL2->head->last->next = PIXEL1; - PIXEL2->head->last = PIXEL1; - (PIXEL2->head->number_of_pixels_in_group)++; - PIXEL1->head = PIXEL2->head; - PIXEL1->increment = PIXEL2->increment+pointer_edge->increment; - } - - //PIXELM 1 and PIXELM 2 both have groups - else - { - group1 = PIXEL1->head; - group2 = PIXEL2->head; - //if the no. of pixels in PIXELM 1 group is larger than the no. of pixels - //in PIXELM 2 group. Merge PIXELM 2 group to PIXELM 1 group - //and find the number of wraps between PIXELM 2 group and PIXELM 1 group - //to unwrap PIXELM 2 group with respect to PIXELM 1 group. - //the no. of wraps will be added to PIXELM 2 grop in the future - if (group1->number_of_pixels_in_group > group2->number_of_pixels_in_group) - { - //merge PIXELM 2 with PIXELM 1 group - group1->last->next = group2; - group1->last = group2->last; - group1->number_of_pixels_in_group = group1->number_of_pixels_in_group + group2->number_of_pixels_in_group; - incremento = PIXEL1->increment-pointer_edge->increment - PIXEL2->increment; - //merge the other pixels in PIXELM 2 group to PIXELM 1 group - while (group2 != NULL) - { - group2->head = group1; - group2->increment += incremento; - group2 = group2->next; - } - } - - //if the no. of pixels in PIXELM 2 group is larger than the no. of pixels - //in PIXELM 1 group. Merge PIXELM 1 group to PIXELM 2 group - //and find the number of wraps between PIXELM 2 group and PIXELM 1 group - //to unwrap PIXELM 1 group with respect to PIXELM 2 group. - //the no. of wraps will be added to PIXELM 1 grop in the future - else - { - //merge PIXELM 1 with PIXELM 2 group - group2->last->next = group1; - group2->last = group1->last; - group2->number_of_pixels_in_group = group2->number_of_pixels_in_group + group1->number_of_pixels_in_group; - incremento = PIXEL2->increment + pointer_edge->increment - PIXEL1->increment; - //merge the other pixels in PIXELM 2 group to PIXELM 1 group - while (group1 != NULL) - { - group1->head = group2; - group1->increment += incremento; - group1 = group1->next; - } // while - - } // else - } //else - } //if - pointer_edge++; - } -} - -//unwrap the image -void unwrapImage(PIXELM *pixel, int image_width, int image_height) -{ - int i; - int image_size = image_width * image_height; - PIXELM *pixel_pointer=pixel; - - for (i = 0; i < image_size; i++) - { - pixel_pointer->value += TWOPI * (float)(pixel_pointer->increment); - pixel_pointer++; - } -} - -//set the masked pixels (mask = 0) to the minimum of the unwrapper phase -void maskImage(PIXELM *pixel, unsigned char *input_mask, int image_width, int image_height) -{ - int image_width_plus_one = image_width + 1; - int image_height_plus_one = image_height + 1; - int image_width_minus_one = image_width - 1; - int image_height_minus_one = image_height - 1; - - PIXELM *pointer_pixel = pixel; - unsigned char *IMP = input_mask; //input mask pointer - float min=99999999.; - int i, j; - int image_size = image_width * image_height; - - //find the minimum of the unwrapped phase - for (i = 0; i < image_size; i++) - { - if ((pointer_pixel->value < min) && (*IMP == 255)) - min = pointer_pixel->value; - - pointer_pixel++; - IMP++; - } - - pointer_pixel = pixel; - IMP = input_mask; - - //set the masked pixels to minimum - for (i = 0; i < image_size; i++) - { - if ((*IMP) == 0) - { - pointer_pixel->value = min; - } - pointer_pixel++; - IMP++; - } -} - -//the input to this unwrapper is an array that contains the wrapped phase map. -//copy the image on the buffer passed to this unwrapper to over-write the unwrapped -//phase map on the buffer of the wrapped phase map. -void returnImage(PIXELM *pixel, float *unwrappedImage, int image_width, int image_height) -{ - int i; - int image_size = image_width * image_height; - float *unwrappedImage_pointer = unwrappedImage; - PIXELM *pixel_pointer = pixel; - - for (i=0; i < image_size; i++) - { - *unwrappedImage_pointer = pixel_pointer->value; - pixel_pointer++; - unwrappedImage_pointer++; - } -} - -//the main function of the unwrapper -int main() -{ - float *WrappedImage, *UnwrappedImage; - unsigned char *input_mask, *extended_mask; - int image_width = 64; - int image_height = 64; - int i, j; - int image_size = image_height * image_width; - int No_of_Edges_initially = (image_width)*(image_height) + (image_width)*(image_height); - - WrappedImage = (float *) calloc(image_size, sizeof(float)); - read_data("wrapped phase slice 64X64.dat", WrappedImage, image_size); - - input_mask = (unsigned char *) calloc(image_size, sizeof(unsigned char)); - extended_mask = (unsigned char *) calloc(image_size, sizeof(unsigned char)); - read_mask("mask 64X64.dat", input_mask, image_size); - - UnwrappedImage = (float *) calloc(image_size, sizeof(float)); - PIXELM *pixel = (PIXELM *) calloc(image_size, sizeof(PIXELM)); - EDGE *edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE));; - - extend_mask(input_mask, extended_mask, image_width, image_height); - - initialisePIXELs(WrappedImage, input_mask, extended_mask, pixel, image_width, image_height); - - calculate_reliability(WrappedImage, pixel, image_width, image_height); - - horizontalEDGEs(pixel, edge, image_width, image_height); - - verticalEDGEs(pixel, edge, image_width, image_height); - - //sort the EDGEs depending on their reiability. The PIXELs with higher relibility (small value) first - quicker_sort(edge, edge + No_of_edges - 1); - - //gather PIXELs into groups - gatherPIXELs(edge, image_width, image_height); - - unwrapImage(pixel, image_width, image_height); - - maskImage(pixel, input_mask, image_width, image_height); - - //copy the image from PIXELM structure to the unwrapped phase array passed to this function - returnImage(pixel, UnwrappedImage, image_width, image_height); - - free(edge); - free(pixel); - - write_data("unwrapped.dat", UnwrappedImage, image_size); - free(UnwrappedImage); - free(WrappedImage); - free(input_mask); - free(extended_mask); - - return 1; -} From a660ccc727ae43120fb57030b98365a9e648cb79 Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Sat, 12 May 2012 20:03:56 +0200 Subject: [PATCH 022/577] unwrap: compiles ok --- .../Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c index a77fb98a..99dd9cce 100644 --- a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c +++ b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c @@ -53,8 +53,8 @@ typedef struct pixelm PIXELM; struct edge { float reliab; //reliabilty of the edge and it depends on the two pixels - struct PIXELM *pointer_1; //pointer to the first pixel - struct PIXELM *pointer_2; //pointer to the second pixel + PIXELM *pointer_1; //pointer to the first pixel + PIXELM *pointer_2; //pointer to the second pixel int increment; //No. of 2*pi to add to one of the pixels to unwrap it with respect to the second }; @@ -698,6 +698,7 @@ int unwrap(float* WrappedImage, float* UnwrappedImage, unsigned char* input_mask free(pixel); free(extended_mask); - return 1; No_of_edges = 0; + return 1; + } From 6f40c95c083464d45205523f6ea75b5197f26a55 Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Sat, 12 May 2012 21:15:55 +0200 Subject: [PATCH 023/577] unwrap: moved global variables (wrap_around) to params struct --- ...wrapper_with_mask_and_wrap_around_option.c | 1418 +++++++++-------- unwrap2D/test_unwrap.py | 9 +- 2 files changed, 724 insertions(+), 703 deletions(-) diff --git a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c index 99dd9cce..d8411c81 100644 --- a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c +++ b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c @@ -1,704 +1,722 @@ -// 2D phase unwrapping, modified for inclusion in scipy by Gregor Thalhammer - -//This program was written by Munther Gdeisat and Miguel Arevallilo Herra´ez to program the two-dimensional unwrapper -//entitled "Fast two-dimensional phase-unwrapping algorithm based on sorting by -//reliability following a noncontinuous path" -//by Miguel Arevallilo Herra´ez, David R. Burton, Michael J. Lalor, and Munther A. Gdeisat -//published in the Journal Applied Optics, Vol. 41, No. 35, pp. 7437, 2002. -//This program was written by Munther Gdeisat, Liverpool John Moores University, United Kingdom. -//Date 26th August 2007 -//The wrapped phase map is assumed to be of floating point data type. The resultant unwrapped phase map is also of floating point type. -//The mask is of byte data type. -//When the mask is 255 this means that the pixel is valid -//When the mask is 0 this means that the pixel is invalid (noisy or corrupted pixel) -//This program takes into consideration the image wrap around problem encountered in MRI imaging. - -//TODO stdlib instead of malloc.h ? (calloc?) -#include -#include -#include - -//TODO: remove global variables -//TODO: make thresholds independent - -static float PI = 3.141592654; -static float TWOPI = 6.283185307; - - -int x_connectivity = 1; -int y_connectivity = 1; -int No_of_edges = 0; - -//PIXELM information -struct pixelm -{ - int increment; //No. of 2*pi to add to the pixel to unwrap it - int number_of_pixels_in_group; //No. of pixel in the pixel group - float value; //value of the pixel - float reliability; - unsigned char input_mask; //0 pixel is masked. 255 pixel is not masked - unsigned char extended_mask; //0 pixel is masked. 255 pixel is not masked - int group; //group No. - int new_group; - struct pixelm *head; //pointer to the first pixel in the group in the linked list - struct pixelm *last; //pointer to the last pixel in the group - struct pixelm *next; //pointer to the next pixel in the group -}; - -typedef struct pixelm PIXELM; - - -//the EDGE is the line that connects two pixels. -//if we have S pixels, then we have S horizontal edges and S vertical edges -struct edge -{ - float reliab; //reliabilty of the edge and it depends on the two pixels +// 2D phase unwrapping, modified for inclusion in scipy by Gregor Thalhammer + +//This program was written by Munther Gdeisat and Miguel Arevallilo Herra´ez to program the two-dimensional unwrapper +//entitled "Fast two-dimensional phase-unwrapping algorithm based on sorting by +//reliability following a noncontinuous path" +//by Miguel Arevallilo Herra´ez, David R. Burton, Michael J. Lalor, and Munther A. Gdeisat +//published in the Journal Applied Optics, Vol. 41, No. 35, pp. 7437, 2002. +//This program was written by Munther Gdeisat, Liverpool John Moores University, United Kingdom. +//Date 26th August 2007 +//The wrapped phase map is assumed to be of floating point data type. The resultant unwrapped phase map is also of floating point type. +//The mask is of byte data type. +//When the mask is 255 this means that the pixel is valid +//When the mask is 0 this means that the pixel is invalid (noisy or corrupted pixel) +//This program takes into consideration the image wrap around problem encountered in MRI imaging. + +//TODO stdlib instead of malloc.h ? (calloc?) +#include +#include +#include + +//TODO: remove global variables +//TODO: make thresholds independent + +static float PI = 3.141592654; +static float TWOPI = 6.283185307; + +typedef struct +{ + float mod; + int x_connectivity; + int y_connectivity; + int no_of_edges; +} params_t; + + +//int x_connectivity = 1; +//int y_connectivity = 1; +int No_of_edges = 0; + +//PIXELM information +struct pixelm +{ + int increment; //No. of 2*pi to add to the pixel to unwrap it + int number_of_pixels_in_group; //No. of pixel in the pixel group + float value; //value of the pixel + float reliability; + unsigned char input_mask; //0 pixel is masked. 255 pixel is not masked + unsigned char extended_mask; //0 pixel is masked. 255 pixel is not masked + int group; //group No. + int new_group; + struct pixelm *head; //pointer to the first pixel in the group in the linked list + struct pixelm *last; //pointer to the last pixel in the group + struct pixelm *next; //pointer to the next pixel in the group +}; + +typedef struct pixelm PIXELM; + +//the EDGE is the line that connects two pixels. +//if we have S pixels, then we have S horizontal edges and S vertical edges +struct edge +{ + float reliab; //reliabilty of the edge and it depends on the two pixels PIXELM *pointer_1; //pointer to the first pixel PIXELM *pointer_2; //pointer to the second pixel - int increment; //No. of 2*pi to add to one of the pixels to unwrap it with respect to the second -}; - -typedef struct edge EDGE; - -//---------------start quicker_sort algorithm -------------------------------- -#define swap(x,y) {EDGE t; t=x; x=y; y=t;} -#define order(x,y) if (x.reliab > y.reliab) swap(x,y) -#define o2(x,y) order(x,y) -#define o3(x,y,z) o2(x,y); o2(x,z); o2(y,z) - -typedef enum {yes, no} yes_no; - -yes_no find_pivot(EDGE *left, EDGE *right, float *pivot_ptr) -{ - EDGE a, b, c, *p; - - a = *left; - b = *(left + (right - left) /2 ); - c = *right; - o3(a,b,c); - - if (a.reliab < b.reliab) - { - *pivot_ptr = b.reliab; - return yes; - } - - if (b.reliab < c.reliab) - { - *pivot_ptr = c.reliab; - return yes; - } - - for (p = left + 1; p <= right; ++p) - { - if (p->reliab != left->reliab) - { - *pivot_ptr = (p->reliab < left->reliab) ? left->reliab : p->reliab; - return yes; - } - return no; - } -} - -EDGE *partition(EDGE *left, EDGE *right, float pivot) -{ - while (left <= right) - { - while (left->reliab < pivot) - ++left; - while (right->reliab >= pivot) - --right; - if (left < right) - { - swap (*left, *right); - ++left; - --right; - } - } - return left; -} - -void quicker_sort(EDGE *left, EDGE *right) -{ - EDGE *p; - float pivot; - - if (find_pivot(left, right, &pivot) == yes) - { - p = partition(left, right, pivot); - quicker_sort(left, p - 1); - quicker_sort(p, right); - } -} - -//--------------end quicker_sort algorithm ----------------------------------- - -//--------------------start initialse pixels ---------------------------------- -//initialse pixels. See the explination of the pixel class above. -//initially every pixel is assumed to belong to a group consisting of only itself -void initialisePIXELs(float *WrappedImage, unsigned char *input_mask, unsigned char *extended_mask, PIXELM *pixel, int image_width, int image_height) -{ - PIXELM *pixel_pointer = pixel; - float *wrapped_image_pointer = WrappedImage; - unsigned char *input_mask_pointer = input_mask; - unsigned char *extended_mask_pointer = extended_mask; - int i, j; - - for (i=0; i < image_height; i++) - { - for (j=0; j < image_width; j++) - { - //pixel_pointer->x = j; - //pixel_pointer->y = i; - pixel_pointer->increment = 0; - pixel_pointer->number_of_pixels_in_group = 1; - pixel_pointer->value = *wrapped_image_pointer; - pixel_pointer->reliability = 9999999 + rand(); - pixel_pointer->input_mask = *input_mask_pointer; - pixel_pointer->extended_mask = *extended_mask_pointer; - pixel_pointer->head = pixel_pointer; - pixel_pointer->last = pixel_pointer; - pixel_pointer->next = NULL; - pixel_pointer->new_group = 0; - pixel_pointer->group = -1; - pixel_pointer++; - wrapped_image_pointer++; - input_mask_pointer++; - extended_mask_pointer++; - } - } -} -//-------------------end initialise pixels ----------- - -//gamma function in the paper -float wrap(float pixel_value) -{ - float wrapped_pixel_value; - if (pixel_value > PI) wrapped_pixel_value = pixel_value - TWOPI; - else if (pixel_value < -PI) wrapped_pixel_value = pixel_value + TWOPI; - else wrapped_pixel_value = pixel_value; - return wrapped_pixel_value; -} - -// pixelL_value is the left pixel, pixelR_value is the right pixel -int find_wrap(float pixelL_value, float pixelR_value) -{ - float difference; - int wrap_value; - difference = pixelL_value - pixelR_value; - - if (difference > PI) wrap_value = -1; - else if (difference < -PI) wrap_value = 1; - else wrap_value = 0; - - return wrap_value; -} - -void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int image_width, int image_height) -{ - int i,j; - int image_width_plus_one = image_width + 1; - int image_width_minus_one = image_width - 1; - unsigned char *IMP = input_mask + image_width + 1; //input mask pointer - unsigned char *EMP = extended_mask + image_width + 1; //extended mask pointer - - //extend the mask for the image except borders - for (i=1; i < image_height - 1; ++i) - { - for (j=1; j < image_width - 1; ++j) - { - if ( (*IMP) == 255 && (*(IMP + 1) == 255) && (*(IMP - 1) == 255) && - (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && - (*(IMP - image_width_minus_one) == 255) && (*(IMP - image_width_plus_one) == 255) && - (*(IMP + image_width_minus_one) == 255) && (*(IMP + image_width_plus_one) == 255) ) - { - *EMP = 255; - } - ++EMP; - ++IMP; - } - EMP += 2; - IMP += 2; - } - - if (x_connectivity == 1) - { - //extend the mask for the right border of the image - IMP = input_mask + 2 * image_width - 1; - EMP = extended_mask + 2 * image_width -1; - for (i=1; i < image_height - 1; ++ i) - { - if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && - (*(IMP - image_width - 1) == 255) && (*(IMP - image_width + 1) == 255) && - (*(IMP + image_width - 1) == 255) && (*(IMP - 2 * image_width + 1) == 255) ) - { - *EMP = 255; - } - EMP += image_width; - IMP += image_width; - } - - //extend the mask for the left border of the image - IMP = input_mask + image_width; - EMP = extended_mask + image_width; - for (i=1; i < image_height - 1; ++i) - { - if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && - (*(IMP - image_width + 1) == 255) && (*(IMP + image_width + 1) == 255) && - (*(IMP + image_width - 1) == 255) && (*(IMP + 2 * image_width - 1) == 255) ) - { - *EMP = 255; - } - EMP += image_width; - IMP += image_width; - } - } - - if (y_connectivity == 1) - { - //extend the mask for the top border of the image - IMP = input_mask + 1; - EMP = extended_mask + 1; - for (i=1; i < image_width - 1; ++i) - { - if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP + image_width) == 255) && (*(IMP + image_width * (image_height - 1)) == 255) && - (*(IMP + image_width + 1) == 255) && (*(IMP + image_width - 1) == 255) && - (*(IMP + image_width * (image_height - 1) - 1) == 255) && (*(IMP + image_width * (image_height - 1) + 1) == 255) ) - { - *EMP = 255; - } - EMP++; - IMP++; - } - - //extend the mask for the bottom border of the image - IMP = input_mask + image_width * (image_height - 1) + 1; - EMP = extended_mask + image_width * (image_height - 1) + 1; - for (i=1; i < image_width - 1; ++i) - { - if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP - image_width) == 255) && (*(IMP - image_width - 1) == 255) && (*(IMP - image_width + 1) == 255) && - (*(IMP - image_width * (image_height - 1) ) == 255) && - (*(IMP - image_width * (image_height - 1) - 1) == 255) && - (*(IMP - image_width * (image_height - 1) + 1) == 255) ) - { - *EMP = 255; - } - EMP++; - IMP++; - } - } -} - -void calculate_reliability(float *wrappedImage, PIXELM *pixel, int image_width, int image_height) -{ - int image_width_plus_one = image_width + 1; - int image_width_minus_one = image_width - 1; - PIXELM *pixel_pointer = pixel + image_width_plus_one; - float *WIP = wrappedImage + image_width_plus_one; //WIP is the wrapped image pointer - float H, V, D1, D2; - int i, j; - - for (i = 1; i < image_height -1; ++i) - { - for (j = 1; j < image_width - 1; ++j) - { - if (pixel_pointer->extended_mask == 255) - { - H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); - V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); - D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); - D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer++; - WIP++; - } - pixel_pointer += 2; - WIP += 2; - } - - if (x_connectivity == 1) - { - //calculating the reliability for the left border of the image - PIXELM *pixel_pointer = pixel + image_width; - float *WIP = wrappedImage + image_width; - - for (i = 1; i < image_height - 1; ++i) - { - if (pixel_pointer->extended_mask == 255) - { - H = wrap(*(WIP + image_width - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); - V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); - D1 = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); - D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + 2* image_width - 1)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer += image_width; - WIP += image_width; - } - - //calculating the reliability for the right border of the image - pixel_pointer = pixel + 2 * image_width - 1; - WIP = wrappedImage + 2 * image_width - 1; - - for (i = 1; i < image_height - 1; ++i) - { - if (pixel_pointer->extended_mask == 255) - { - H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP - image_width_minus_one)); - V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); - D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + 1)); - D2 = wrap(*(WIP - 2 * image_width - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer += image_width; - WIP += image_width; - } - } - - if (y_connectivity == 1) - { - //calculating the reliability for the top border of the image - PIXELM *pixel_pointer = pixel + 1; - float *WIP = wrappedImage + 1; - - for (i = 1; i < image_width - 1; ++i) - { - if (pixel_pointer->extended_mask == 255) - { - H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); - V = wrap(*(WIP + image_width*(image_height - 1)) - *WIP) - wrap(*WIP - *(WIP + image_width)); - D1 = wrap(*(WIP + image_width*(image_height - 1) - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); - D2 = wrap(*(WIP + image_width*(image_height - 1) + 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer++; - WIP++; - } - - //calculating the reliability for the bottom border of the image - pixel_pointer = pixel + (image_height - 1) * image_width + 1; - WIP = wrappedImage + (image_height - 1) * image_width + 1; - - for (i = 1; i < image_width - 1; ++i) - { - if (pixel_pointer->extended_mask == 255) - { - H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); - V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP -(image_height - 1) * (image_width))); - D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) + 1)); - D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) - 1)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer++; - WIP++; - } - } -} - -//calculate the reliability of the horizontal edges of the image -//it is calculated by adding the reliability of pixel and the relibility of -//its right-hand neighbour -//edge is calculated between a pixel and its next neighbour -void horizontalEDGEs(PIXELM *pixel, EDGE *edge, int image_width, int image_height) -{ - int i, j; - EDGE *edge_pointer = edge; - PIXELM *pixel_pointer = pixel; - - for (i = 0; i < image_height; i++) - { - for (j = 0; j < image_width - 1; j++) - { - if (pixel_pointer->input_mask == 255 && (pixel_pointer + 1)->input_mask == 255) - { - edge_pointer->pointer_1 = pixel_pointer; - edge_pointer->pointer_2 = (pixel_pointer+1); - edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + 1)->reliability; - edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + 1)->value); - edge_pointer++; - No_of_edges++; - } - pixel_pointer++; - } - pixel_pointer++; - } - //construct edges at the right border of the image - if (x_connectivity == 1) - { - pixel_pointer = pixel + image_width - 1; - for (i = 0; i < image_height; i++) - { - if (pixel_pointer->input_mask == 255 && (pixel_pointer - image_width + 1)->input_mask == 255) - { - edge_pointer->pointer_1 = pixel_pointer; - edge_pointer->pointer_2 = (pixel_pointer - image_width + 1); - edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width + 1)->reliability; - edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width + 1)->value); - edge_pointer++; - No_of_edges++; - } - pixel_pointer+=image_width; - } - } -} - -//calculate the reliability of the vertical edges of the image -//it is calculated by adding the reliability of pixel and the relibility of -//its lower neighbour in the image. -void verticalEDGEs(PIXELM *pixel, EDGE *edge, int image_width, int image_height) -{ - int i, j; - PIXELM *pixel_pointer = pixel; - EDGE *edge_pointer = edge + No_of_edges; - - for (i=0; i < image_height - 1; i++) - { - for (j=0; j < image_width; j++) - { - if (pixel_pointer->input_mask == 255 && (pixel_pointer + image_width)->input_mask == 255) - { - edge_pointer->pointer_1 = pixel_pointer; - edge_pointer->pointer_2 = (pixel_pointer + image_width); - edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + image_width)->reliability; - edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + image_width)->value); - edge_pointer++; - No_of_edges++; - } - pixel_pointer++; - } //j loop - } // i loop - - //construct edges that connect at the bottom border of the image - if (y_connectivity == 1) - { - pixel_pointer = pixel + image_width *(image_height - 1); - for (i = 0; i < image_width; i++) - { - if (pixel_pointer->input_mask == 255 && (pixel_pointer - image_width *(image_height - 1))->input_mask == 255) - { - edge_pointer->pointer_1 = pixel_pointer; - edge_pointer->pointer_2 = (pixel_pointer - image_width *(image_height - 1)); - edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width *(image_height - 1))->reliability; - edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width *(image_height - 1))->value); - edge_pointer++; - No_of_edges++; - } - pixel_pointer++; - } - } -} - -//gather the pixels of the image into groups -void gatherPIXELs(EDGE *edge, int image_width, int image_height) -{ - int k; - PIXELM *PIXEL1; - PIXELM *PIXEL2; - PIXELM *group1; - PIXELM *group2; - EDGE *pointer_edge = edge; - int incremento; - - for (k = 0; k < No_of_edges; k++) - { - PIXEL1 = pointer_edge->pointer_1; - PIXEL2 = pointer_edge->pointer_2; - - //PIXELM 1 and PIXELM 2 belong to different groups - //initially each pixel is a group by it self and one pixel can construct a group - //no else or else if to this if - if (PIXEL2->head != PIXEL1->head) - { - //PIXELM 2 is alone in its group - //merge this pixel with PIXELM 1 group and find the number of 2 pi to add - //to or subtract to unwrap it - if ((PIXEL2->next == NULL) && (PIXEL2->head == PIXEL2)) - { - PIXEL1->head->last->next = PIXEL2; - PIXEL1->head->last = PIXEL2; - (PIXEL1->head->number_of_pixels_in_group)++; - PIXEL2->head=PIXEL1->head; - PIXEL2->increment = PIXEL1->increment-pointer_edge->increment; - } - - //PIXELM 1 is alone in its group - //merge this pixel with PIXELM 2 group and find the number of 2 pi to add - //to or subtract to unwrap it - else if ((PIXEL1->next == NULL) && (PIXEL1->head == PIXEL1)) - { - PIXEL2->head->last->next = PIXEL1; - PIXEL2->head->last = PIXEL1; - (PIXEL2->head->number_of_pixels_in_group)++; - PIXEL1->head = PIXEL2->head; - PIXEL1->increment = PIXEL2->increment+pointer_edge->increment; - } - - //PIXELM 1 and PIXELM 2 both have groups - else - { - group1 = PIXEL1->head; - group2 = PIXEL2->head; - //if the no. of pixels in PIXELM 1 group is larger than the no. of pixels - //in PIXELM 2 group. Merge PIXELM 2 group to PIXELM 1 group - //and find the number of wraps between PIXELM 2 group and PIXELM 1 group - //to unwrap PIXELM 2 group with respect to PIXELM 1 group. - //the no. of wraps will be added to PIXELM 2 grop in the future - if (group1->number_of_pixels_in_group > group2->number_of_pixels_in_group) - { - //merge PIXELM 2 with PIXELM 1 group - group1->last->next = group2; - group1->last = group2->last; - group1->number_of_pixels_in_group = group1->number_of_pixels_in_group + group2->number_of_pixels_in_group; - incremento = PIXEL1->increment-pointer_edge->increment - PIXEL2->increment; - //merge the other pixels in PIXELM 2 group to PIXELM 1 group - while (group2 != NULL) - { - group2->head = group1; - group2->increment += incremento; - group2 = group2->next; - } - } - - //if the no. of pixels in PIXELM 2 group is larger than the no. of pixels - //in PIXELM 1 group. Merge PIXELM 1 group to PIXELM 2 group - //and find the number of wraps between PIXELM 2 group and PIXELM 1 group - //to unwrap PIXELM 1 group with respect to PIXELM 2 group. - //the no. of wraps will be added to PIXELM 1 grop in the future - else - { - //merge PIXELM 1 with PIXELM 2 group - group2->last->next = group1; - group2->last = group1->last; - group2->number_of_pixels_in_group = group2->number_of_pixels_in_group + group1->number_of_pixels_in_group; - incremento = PIXEL2->increment + pointer_edge->increment - PIXEL1->increment; - //merge the other pixels in PIXELM 2 group to PIXELM 1 group - while (group1 != NULL) - { - group1->head = group2; - group1->increment += incremento; - group1 = group1->next; - } // while - - } // else - } //else - } //if - pointer_edge++; - } -} - -//unwrap the image -void unwrapImage(PIXELM *pixel, int image_width, int image_height) -{ - int i; - int image_size = image_width * image_height; - PIXELM *pixel_pointer=pixel; - - for (i = 0; i < image_size; i++) - { - pixel_pointer->value += TWOPI * (float)(pixel_pointer->increment); - pixel_pointer++; - } -} - -//set the masked pixels (mask = 0) to the minimum of the unwrapper phase -void maskImage(PIXELM *pixel, unsigned char *input_mask, int image_width, int image_height) -{ - int image_width_plus_one = image_width + 1; - int image_height_plus_one = image_height + 1; - int image_width_minus_one = image_width - 1; - int image_height_minus_one = image_height - 1; - - PIXELM *pointer_pixel = pixel; - unsigned char *IMP = input_mask; //input mask pointer - float min=99999999.; - int i, j; - int image_size = image_width * image_height; - - //find the minimum of the unwrapped phase - for (i = 0; i < image_size; i++) - { - if ((pointer_pixel->value < min) && (*IMP == 255)) - min = pointer_pixel->value; - - pointer_pixel++; - IMP++; - } - - pointer_pixel = pixel; - IMP = input_mask; - - //set the masked pixels to minimum - for (i = 0; i < image_size; i++) - { - if ((*IMP) == 0) - { - pointer_pixel->value = min; - } - pointer_pixel++; - IMP++; - } -} - -//the input to this unwrapper is an array that contains the wrapped phase map. -//copy the image on the buffer passed to this unwrapper to over-write the unwrapped -//phase map on the buffer of the wrapped phase map. -void returnImage(PIXELM *pixel, float *unwrappedImage, int image_width, int image_height) -{ - int i; - int image_size = image_width * image_height; - float *unwrappedImage_pointer = unwrappedImage; - PIXELM *pixel_pointer = pixel; - - for (i=0; i < image_size; i++) - { - *unwrappedImage_pointer = pixel_pointer->value; - pixel_pointer++; - unwrappedImage_pointer++; - } -} - -//the main function of the unwrapper -int unwrap(float* WrappedImage, float* UnwrappedImage, unsigned char* input_mask, - int image_width, int image_height) -{ - unsigned char *extended_mask; - int image_size = image_height * image_width; - int No_of_Edges_initially = 2 * image_width * image_height; - - extended_mask = (unsigned char *) calloc(image_size, sizeof(unsigned char)); - PIXELM *pixel = (PIXELM *) calloc(image_size, sizeof(PIXELM)); - EDGE *edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE));; - - extend_mask(input_mask, extended_mask, image_width, image_height); - initialisePIXELs(WrappedImage, input_mask, extended_mask, pixel, image_width, image_height); - calculate_reliability(WrappedImage, pixel, image_width, image_height); - horizontalEDGEs(pixel, edge, image_width, image_height); - verticalEDGEs(pixel, edge, image_width, image_height); - - //sort the EDGEs depending on their reiability. The PIXELs with higher - //relibility (small value) first - quicker_sort(edge, edge + No_of_edges - 1); - - //gather PIXELs into groups - gatherPIXELs(edge, image_width, image_height); - - unwrapImage(pixel, image_width, image_height); - maskImage(pixel, input_mask, image_width, image_height); - - //copy the image from PIXELM structure to the unwrapped phase array - //passed to this function - returnImage(pixel, UnwrappedImage, image_width, image_height); - - free(edge); - free(pixel); - free(extended_mask); - - No_of_edges = 0; + int increment; //No. of 2*pi to add to one of the pixels to unwrap it with respect to the second +}; + +typedef struct edge EDGE; + + +//---------------start quicker_sort algorithm -------------------------------- +#define swap(x,y) {EDGE t; t=x; x=y; y=t;} +#define order(x,y) if (x.reliab > y.reliab) swap(x,y) +#define o2(x,y) order(x,y) +#define o3(x,y,z) o2(x,y); o2(x,z); o2(y,z) + +typedef enum {yes, no} yes_no; + +yes_no find_pivot(EDGE *left, EDGE *right, float *pivot_ptr) +{ + EDGE a, b, c, *p; + + a = *left; + b = *(left + (right - left) /2 ); + c = *right; + o3(a,b,c); + + if (a.reliab < b.reliab) + { + *pivot_ptr = b.reliab; + return yes; + } + + if (b.reliab < c.reliab) + { + *pivot_ptr = c.reliab; + return yes; + } + + for (p = left + 1; p <= right; ++p) + { + if (p->reliab != left->reliab) + { + *pivot_ptr = (p->reliab < left->reliab) ? left->reliab : p->reliab; + return yes; + } + return no; + } +} + +EDGE *partition(EDGE *left, EDGE *right, float pivot) +{ + while (left <= right) + { + while (left->reliab < pivot) + ++left; + while (right->reliab >= pivot) + --right; + if (left < right) + { + swap (*left, *right); + ++left; + --right; + } + } + return left; +} + +void quicker_sort(EDGE *left, EDGE *right) +{ + EDGE *p; + float pivot; + + if (find_pivot(left, right, &pivot) == yes) + { + p = partition(left, right, pivot); + quicker_sort(left, p - 1); + quicker_sort(p, right); + } +} + +//--------------end quicker_sort algorithm ----------------------------------- + +//--------------------start initialse pixels ---------------------------------- +//initialse pixels. See the explination of the pixel class above. +//initially every pixel is assumed to belong to a group consisting of only itself +void initialisePIXELs(float *WrappedImage, unsigned char *input_mask, unsigned char *extended_mask, PIXELM *pixel, int image_width, int image_height) +{ + PIXELM *pixel_pointer = pixel; + float *wrapped_image_pointer = WrappedImage; + unsigned char *input_mask_pointer = input_mask; + unsigned char *extended_mask_pointer = extended_mask; + int i, j; + + for (i=0; i < image_height; i++) + { + for (j=0; j < image_width; j++) + { + //pixel_pointer->x = j; + //pixel_pointer->y = i; + pixel_pointer->increment = 0; + pixel_pointer->number_of_pixels_in_group = 1; + pixel_pointer->value = *wrapped_image_pointer; + pixel_pointer->reliability = 9999999 + rand(); + pixel_pointer->input_mask = *input_mask_pointer; + pixel_pointer->extended_mask = *extended_mask_pointer; + pixel_pointer->head = pixel_pointer; + pixel_pointer->last = pixel_pointer; + pixel_pointer->next = NULL; + pixel_pointer->new_group = 0; + pixel_pointer->group = -1; + pixel_pointer++; + wrapped_image_pointer++; + input_mask_pointer++; + extended_mask_pointer++; + } + } +} +//-------------------end initialise pixels ----------- + +//gamma function in the paper +float wrap(float pixel_value) +{ + float wrapped_pixel_value; + if (pixel_value > PI) wrapped_pixel_value = pixel_value - TWOPI; + else if (pixel_value < -PI) wrapped_pixel_value = pixel_value + TWOPI; + else wrapped_pixel_value = pixel_value; + return wrapped_pixel_value; +} + +// pixelL_value is the left pixel, pixelR_value is the right pixel +int find_wrap(float pixelL_value, float pixelR_value) +{ + float difference; + int wrap_value; + difference = pixelL_value - pixelR_value; + + if (difference > PI) wrap_value = -1; + else if (difference < -PI) wrap_value = 1; + else wrap_value = 0; + + return wrap_value; +} + +void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, + int image_width, int image_height, + params_t *params) +{ + int i,j; + int image_width_plus_one = image_width + 1; + int image_width_minus_one = image_width - 1; + unsigned char *IMP = input_mask + image_width + 1; //input mask pointer + unsigned char *EMP = extended_mask + image_width + 1; //extended mask pointer + + //extend the mask for the image except borders + for (i=1; i < image_height - 1; ++i) + { + for (j=1; j < image_width - 1; ++j) + { + if ( (*IMP) == 255 && (*(IMP + 1) == 255) && (*(IMP - 1) == 255) && + (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && + (*(IMP - image_width_minus_one) == 255) && (*(IMP - image_width_plus_one) == 255) && + (*(IMP + image_width_minus_one) == 255) && (*(IMP + image_width_plus_one) == 255) ) + { + *EMP = 255; + } + ++EMP; + ++IMP; + } + EMP += 2; + IMP += 2; + } + + if (params->x_connectivity == 1) + { + //extend the mask for the right border of the image + IMP = input_mask + 2 * image_width - 1; + EMP = extended_mask + 2 * image_width -1; + for (i=1; i < image_height - 1; ++ i) + { + if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && + (*(IMP - image_width - 1) == 255) && (*(IMP - image_width + 1) == 255) && + (*(IMP + image_width - 1) == 255) && (*(IMP - 2 * image_width + 1) == 255) ) + { + *EMP = 255; + } + EMP += image_width; + IMP += image_width; + } + + //extend the mask for the left border of the image + IMP = input_mask + image_width; + EMP = extended_mask + image_width; + for (i=1; i < image_height - 1; ++i) + { + if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && + (*(IMP - image_width + 1) == 255) && (*(IMP + image_width + 1) == 255) && + (*(IMP + image_width - 1) == 255) && (*(IMP + 2 * image_width - 1) == 255) ) + { + *EMP = 255; + } + EMP += image_width; + IMP += image_width; + } + } + + if (params->y_connectivity == 1) + { + //extend the mask for the top border of the image + IMP = input_mask + 1; + EMP = extended_mask + 1; + for (i=1; i < image_width - 1; ++i) + { + if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP + image_width) == 255) && (*(IMP + image_width * (image_height - 1)) == 255) && + (*(IMP + image_width + 1) == 255) && (*(IMP + image_width - 1) == 255) && + (*(IMP + image_width * (image_height - 1) - 1) == 255) && (*(IMP + image_width * (image_height - 1) + 1) == 255) ) + { + *EMP = 255; + } + EMP++; + IMP++; + } + + //extend the mask for the bottom border of the image + IMP = input_mask + image_width * (image_height - 1) + 1; + EMP = extended_mask + image_width * (image_height - 1) + 1; + for (i=1; i < image_width - 1; ++i) + { + if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP - image_width) == 255) && (*(IMP - image_width - 1) == 255) && (*(IMP - image_width + 1) == 255) && + (*(IMP - image_width * (image_height - 1) ) == 255) && + (*(IMP - image_width * (image_height - 1) - 1) == 255) && + (*(IMP - image_width * (image_height - 1) + 1) == 255) ) + { + *EMP = 255; + } + EMP++; + IMP++; + } + } +} + +void calculate_reliability(float *wrappedImage, PIXELM *pixel, + int image_width, int image_height, + params_t *params) +{ + int image_width_plus_one = image_width + 1; + int image_width_minus_one = image_width - 1; + PIXELM *pixel_pointer = pixel + image_width_plus_one; + float *WIP = wrappedImage + image_width_plus_one; //WIP is the wrapped image pointer + float H, V, D1, D2; + int i, j; + + for (i = 1; i < image_height -1; ++i) + { + for (j = 1; j < image_width - 1; ++j) + { + if (pixel_pointer->extended_mask == 255) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); + D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer++; + WIP++; + } + pixel_pointer += 2; + WIP += 2; + } + + if (params->x_connectivity == 1) + { + //calculating the reliability for the left border of the image + PIXELM *pixel_pointer = pixel + image_width; + float *WIP = wrappedImage + image_width; + + for (i = 1; i < image_height - 1; ++i) + { + if (pixel_pointer->extended_mask == 255) + { + H = wrap(*(WIP + image_width - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); + D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + 2* image_width - 1)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer += image_width; + WIP += image_width; + } + + //calculating the reliability for the right border of the image + pixel_pointer = pixel + 2 * image_width - 1; + WIP = wrappedImage + 2 * image_width - 1; + + for (i = 1; i < image_height - 1; ++i) + { + if (pixel_pointer->extended_mask == 255) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP - image_width_minus_one)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + 1)); + D2 = wrap(*(WIP - 2 * image_width - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer += image_width; + WIP += image_width; + } + } + + if (params->y_connectivity == 1) + { + //calculating the reliability for the top border of the image + PIXELM *pixel_pointer = pixel + 1; + float *WIP = wrappedImage + 1; + + for (i = 1; i < image_width - 1; ++i) + { + if (pixel_pointer->extended_mask == 255) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP + image_width*(image_height - 1)) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP + image_width*(image_height - 1) - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); + D2 = wrap(*(WIP + image_width*(image_height - 1) + 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer++; + WIP++; + } + + //calculating the reliability for the bottom border of the image + pixel_pointer = pixel + (image_height - 1) * image_width + 1; + WIP = wrappedImage + (image_height - 1) * image_width + 1; + + for (i = 1; i < image_width - 1; ++i) + { + if (pixel_pointer->extended_mask == 255) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP -(image_height - 1) * (image_width))); + D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) + 1)); + D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) - 1)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer++; + WIP++; + } + } +} + +//calculate the reliability of the horizontal edges of the image +//it is calculated by adding the reliability of pixel and the relibility of +//its right-hand neighbour +//edge is calculated between a pixel and its next neighbour +void horizontalEDGEs(PIXELM *pixel, EDGE *edge, + int image_width, int image_height, + params_t *params) +{ + int i, j; + EDGE *edge_pointer = edge; + PIXELM *pixel_pointer = pixel; + + for (i = 0; i < image_height; i++) + { + for (j = 0; j < image_width - 1; j++) + { + if (pixel_pointer->input_mask == 255 && (pixel_pointer + 1)->input_mask == 255) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer+1); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + 1)->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + 1)->value); + edge_pointer++; + No_of_edges++; + } + pixel_pointer++; + } + pixel_pointer++; + } + //construct edges at the right border of the image + if (params->x_connectivity == 1) + { + pixel_pointer = pixel + image_width - 1; + for (i = 0; i < image_height; i++) + { + if (pixel_pointer->input_mask == 255 && (pixel_pointer - image_width + 1)->input_mask == 255) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer - image_width + 1); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width + 1)->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width + 1)->value); + edge_pointer++; + No_of_edges++; + } + pixel_pointer+=image_width; + } + } +} + +//calculate the reliability of the vertical edges of the image +//it is calculated by adding the reliability of pixel and the relibility of +//its lower neighbour in the image. +void verticalEDGEs(PIXELM *pixel, EDGE *edge, + int image_width, int image_height, + params_t *params) +{ + int i, j; + PIXELM *pixel_pointer = pixel; + EDGE *edge_pointer = edge + No_of_edges; + + for (i=0; i < image_height - 1; i++) + { + for (j=0; j < image_width; j++) + { + if (pixel_pointer->input_mask == 255 && (pixel_pointer + image_width)->input_mask == 255) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer + image_width); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + image_width)->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + image_width)->value); + edge_pointer++; + No_of_edges++; + } + pixel_pointer++; + } //j loop + } // i loop + + //construct edges that connect at the bottom border of the image + if (params->y_connectivity == 1) + { + pixel_pointer = pixel + image_width *(image_height - 1); + for (i = 0; i < image_width; i++) + { + if (pixel_pointer->input_mask == 255 && (pixel_pointer - image_width *(image_height - 1))->input_mask == 255) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer - image_width *(image_height - 1)); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width *(image_height - 1))->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width *(image_height - 1))->value); + edge_pointer++; + No_of_edges++; + } + pixel_pointer++; + } + } +} + +//gather the pixels of the image into groups +void gatherPIXELs(EDGE *edge, int image_width, int image_height) +{ + int k; + PIXELM *PIXEL1; + PIXELM *PIXEL2; + PIXELM *group1; + PIXELM *group2; + EDGE *pointer_edge = edge; + int incremento; + + for (k = 0; k < No_of_edges; k++) + { + PIXEL1 = pointer_edge->pointer_1; + PIXEL2 = pointer_edge->pointer_2; + + //PIXELM 1 and PIXELM 2 belong to different groups + //initially each pixel is a group by it self and one pixel can construct a group + //no else or else if to this if + if (PIXEL2->head != PIXEL1->head) + { + //PIXELM 2 is alone in its group + //merge this pixel with PIXELM 1 group and find the number of 2 pi to add + //to or subtract to unwrap it + if ((PIXEL2->next == NULL) && (PIXEL2->head == PIXEL2)) + { + PIXEL1->head->last->next = PIXEL2; + PIXEL1->head->last = PIXEL2; + (PIXEL1->head->number_of_pixels_in_group)++; + PIXEL2->head=PIXEL1->head; + PIXEL2->increment = PIXEL1->increment-pointer_edge->increment; + } + + //PIXELM 1 is alone in its group + //merge this pixel with PIXELM 2 group and find the number of 2 pi to add + //to or subtract to unwrap it + else if ((PIXEL1->next == NULL) && (PIXEL1->head == PIXEL1)) + { + PIXEL2->head->last->next = PIXEL1; + PIXEL2->head->last = PIXEL1; + (PIXEL2->head->number_of_pixels_in_group)++; + PIXEL1->head = PIXEL2->head; + PIXEL1->increment = PIXEL2->increment+pointer_edge->increment; + } + + //PIXELM 1 and PIXELM 2 both have groups + else + { + group1 = PIXEL1->head; + group2 = PIXEL2->head; + //if the no. of pixels in PIXELM 1 group is larger than the no. of pixels + //in PIXELM 2 group. Merge PIXELM 2 group to PIXELM 1 group + //and find the number of wraps between PIXELM 2 group and PIXELM 1 group + //to unwrap PIXELM 2 group with respect to PIXELM 1 group. + //the no. of wraps will be added to PIXELM 2 grop in the future + if (group1->number_of_pixels_in_group > group2->number_of_pixels_in_group) + { + //merge PIXELM 2 with PIXELM 1 group + group1->last->next = group2; + group1->last = group2->last; + group1->number_of_pixels_in_group = group1->number_of_pixels_in_group + group2->number_of_pixels_in_group; + incremento = PIXEL1->increment-pointer_edge->increment - PIXEL2->increment; + //merge the other pixels in PIXELM 2 group to PIXELM 1 group + while (group2 != NULL) + { + group2->head = group1; + group2->increment += incremento; + group2 = group2->next; + } + } + + //if the no. of pixels in PIXELM 2 group is larger than the no. of pixels + //in PIXELM 1 group. Merge PIXELM 1 group to PIXELM 2 group + //and find the number of wraps between PIXELM 2 group and PIXELM 1 group + //to unwrap PIXELM 1 group with respect to PIXELM 2 group. + //the no. of wraps will be added to PIXELM 1 grop in the future + else + { + //merge PIXELM 1 with PIXELM 2 group + group2->last->next = group1; + group2->last = group1->last; + group2->number_of_pixels_in_group = group2->number_of_pixels_in_group + group1->number_of_pixels_in_group; + incremento = PIXEL2->increment + pointer_edge->increment - PIXEL1->increment; + //merge the other pixels in PIXELM 2 group to PIXELM 1 group + while (group1 != NULL) + { + group1->head = group2; + group1->increment += incremento; + group1 = group1->next; + } // while + + } // else + } //else + } //if + pointer_edge++; + } +} + +//unwrap the image +void unwrapImage(PIXELM *pixel, int image_width, int image_height) +{ + int i; + int image_size = image_width * image_height; + PIXELM *pixel_pointer=pixel; + + for (i = 0; i < image_size; i++) + { + pixel_pointer->value += TWOPI * (float)(pixel_pointer->increment); + pixel_pointer++; + } +} + +//set the masked pixels (mask = 0) to the minimum of the unwrapper phase +void maskImage(PIXELM *pixel, unsigned char *input_mask, int image_width, int image_height) +{ + int image_width_plus_one = image_width + 1; + int image_height_plus_one = image_height + 1; + int image_width_minus_one = image_width - 1; + int image_height_minus_one = image_height - 1; + + PIXELM *pointer_pixel = pixel; + unsigned char *IMP = input_mask; //input mask pointer + float min=99999999.; + int i, j; + int image_size = image_width * image_height; + + //find the minimum of the unwrapped phase + for (i = 0; i < image_size; i++) + { + if ((pointer_pixel->value < min) && (*IMP == 255)) + min = pointer_pixel->value; + + pointer_pixel++; + IMP++; + } + + pointer_pixel = pixel; + IMP = input_mask; + + //set the masked pixels to minimum + for (i = 0; i < image_size; i++) + { + if ((*IMP) == 0) + { + pointer_pixel->value = min; + } + pointer_pixel++; + IMP++; + } +} + +//the input to this unwrapper is an array that contains the wrapped +//phase map. copy the image on the buffer passed to this unwrapper to +//over-write the unwrapped phase map on the buffer of the wrapped +//phase map. +void returnImage(PIXELM *pixel, float *unwrappedImage, int image_width, int image_height) +{ + int i; + int image_size = image_width * image_height; + float *unwrappedImage_pointer = unwrappedImage; + PIXELM *pixel_pointer = pixel; + + for (i=0; i < image_size; i++) + { + *unwrappedImage_pointer = pixel_pointer->value; + pixel_pointer++; + unwrappedImage_pointer++; + } +} + +//the main function of the unwrapper +int unwrap(float* WrappedImage, float* UnwrappedImage, unsigned char* input_mask, + int image_width, int image_height) +{ + unsigned char *extended_mask; + int image_size = image_height * image_width; + int No_of_Edges_initially = 2 * image_width * image_height; + params_t params = {TWOPI, 0, 0, 0}; + + extended_mask = (unsigned char *) calloc(image_size, sizeof(unsigned char)); + PIXELM *pixel = (PIXELM *) calloc(image_size, sizeof(PIXELM)); + EDGE *edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE));; + + extend_mask(input_mask, extended_mask, image_width, image_height, ¶ms); + initialisePIXELs(WrappedImage, input_mask, extended_mask, pixel, image_width, image_height); + calculate_reliability(WrappedImage, pixel, image_width, image_height, ¶ms); + horizontalEDGEs(pixel, edge, image_width, image_height, ¶ms); + verticalEDGEs(pixel, edge, image_width, image_height, ¶ms); + + //sort the EDGEs depending on their reiability. The PIXELs with higher + //relibility (small value) first + quicker_sort(edge, edge + No_of_edges - 1); + + //gather PIXELs into groups + gatherPIXELs(edge, image_width, image_height); + + unwrapImage(pixel, image_width, image_height); + maskImage(pixel, input_mask, image_width, image_height); + + //copy the image from PIXELM structure to the unwrapped phase array + //passed to this function + returnImage(pixel, UnwrappedImage, image_width, image_height); + + free(edge); + free(pixel); + free(extended_mask); + + No_of_edges = 0; return 1; -} +} diff --git a/unwrap2D/test_unwrap.py b/unwrap2D/test_unwrap.py index cad968cf..c7e1aadd 100644 --- a/unwrap2D/test_unwrap.py +++ b/unwrap2D/test_unwrap.py @@ -6,17 +6,17 @@ from numpy import outer, arange, ones, abs, empty, power, indices def test_unwrap2D(): - nx, ny = 64, 64 + nx, ny = 10, 3 x = np.arange(nx) y = np.arange(ny) x.shape = (1,-1) y.shape = (-1,1) - z = np.exp(1j*x*0.5) * np.exp(1j*y*0.1) + z = np.exp(1j*x*0.2*np.pi) * np.exp(1j*y*0.1*np.pi) phi_w = np.angle(z) mask = 255*np.ones((nx, ny), dtype = np.uint8) phi = unwrap2D(phi_w.astype(np.float32), mask) - return phi_w, phi + return phi_w/(np.pi*2), np.asarray(phi)/(np.pi*2) # class test_unwrap(TestCase): @@ -44,4 +44,7 @@ def test_unwrap2D(): if __name__=="__main__": #NumpyTest().run() + import matplotlib.pyplot as plt p,p2 = test_unwrap2D() + plt.imshow(p2) + plt From c6c2d78b3b81aa00ccc6ed31126254db3d826355 Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Sat, 12 May 2012 21:26:40 +0200 Subject: [PATCH 024/577] unwrap: implemented wrap_around arguments --- ...l_2D_unwrapper_with_mask_and_wrap_around_option.c | 11 +++++------ unwrap2D/unwrap2D.pyx | 12 ++++++++---- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c index d8411c81..4fe59109 100644 --- a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c +++ b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c @@ -141,8 +141,8 @@ void quicker_sort(EDGE *left, EDGE *right) //--------------end quicker_sort algorithm ----------------------------------- -//--------------------start initialse pixels ---------------------------------- -//initialse pixels. See the explination of the pixel class above. +//--------------------start initialize pixels ---------------------------------- +//initialize pixels. See the explination of the pixel class above. //initially every pixel is assumed to belong to a group consisting of only itself void initialisePIXELs(float *WrappedImage, unsigned char *input_mask, unsigned char *extended_mask, PIXELM *pixel, int image_width, int image_height) { @@ -156,8 +156,6 @@ void initialisePIXELs(float *WrappedImage, unsigned char *input_mask, unsigned { for (j=0; j < image_width; j++) { - //pixel_pointer->x = j; - //pixel_pointer->y = i; pixel_pointer->increment = 0; pixel_pointer->number_of_pixels_in_group = 1; pixel_pointer->value = *wrapped_image_pointer; @@ -176,7 +174,7 @@ void initialisePIXELs(float *WrappedImage, unsigned char *input_mask, unsigned } } } -//-------------------end initialise pixels ----------- +//-------------------end initialize pixels ----------- //gamma function in the paper float wrap(float pixel_value) @@ -681,7 +679,8 @@ void returnImage(PIXELM *pixel, float *unwrappedImage, int image_width, int ima //the main function of the unwrapper int unwrap(float* WrappedImage, float* UnwrappedImage, unsigned char* input_mask, - int image_width, int image_height) + int image_width, int image_height, + int wrap_around_x, int wrap_around_y) { unsigned char *extended_mask; int image_size = image_height * image_width; diff --git a/unwrap2D/unwrap2D.pyx b/unwrap2D/unwrap2D.pyx index d92032a4..ac4a3d33 100644 --- a/unwrap2D/unwrap2D.pyx +++ b/unwrap2D/unwrap2D.pyx @@ -2,16 +2,20 @@ import numpy as np cimport numpy as np cdef extern int unwrap(float* WrappedImage, float* UnwrappedImage, unsigned char* input_mask, - int image_width, int image_height) + int image_width, int image_height, + int wrap_around_x, int wrap_around_y) -def unwrap2D(float[:,::1] array, unsigned char[:,::1] mask): +def unwrap2D(float[:,::1] array, unsigned char[:,::1] mask, + wrap_around_x = False, wrap_around_y = False): cdef float[:,::1] unwrapped_array = np.empty_like(array) cdef int h = array.shape[0] cdef int w = array.shape[1] unwrap(&array[0,0], &unwrapped_array[0,0], &mask[0,0], - array.shape[0], array.shape[1]) - return unwrapped_array + array.shape[0], array.shape[1], + wrap_around_x, wrap_around_y, + ) + return np.asarray(unwrapped_array) From adb9344828a1ef16956db658c89b6412d08e97d8 Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Sat, 12 May 2012 21:44:11 +0200 Subject: [PATCH 025/577] unwrap: changed mask values to numpy.ma convention --- ...wrapper_with_mask_and_wrap_around_option.c | 83 ++++++++++--------- unwrap2D/test_unwrap.py | 11 ++- 2 files changed, 51 insertions(+), 43 deletions(-) diff --git a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c index 4fe59109..28c7eaac 100644 --- a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c +++ b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c @@ -24,6 +24,11 @@ static float PI = 3.141592654; static float TWOPI = 6.283185307; +//TODO: adjust to numpy.ma: NOMASK 0, MASK 1 +#define NOMASK 0 +#define MASK 1 +//#define NOMASK 0 + typedef struct { float mod; @@ -44,8 +49,8 @@ struct pixelm int number_of_pixels_in_group; //No. of pixel in the pixel group float value; //value of the pixel float reliability; - unsigned char input_mask; //0 pixel is masked. 255 pixel is not masked - unsigned char extended_mask; //0 pixel is masked. 255 pixel is not masked + unsigned char input_mask; //0 pixel is masked. NOMASK pixel is not masked + unsigned char extended_mask; //0 pixel is masked. NOMASK pixel is not masked int group; //group No. int new_group; struct pixelm *head; //pointer to the first pixel in the group in the linked list @@ -215,12 +220,12 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, { for (j=1; j < image_width - 1; ++j) { - if ( (*IMP) == 255 && (*(IMP + 1) == 255) && (*(IMP - 1) == 255) && - (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && - (*(IMP - image_width_minus_one) == 255) && (*(IMP - image_width_plus_one) == 255) && - (*(IMP + image_width_minus_one) == 255) && (*(IMP + image_width_plus_one) == 255) ) + if ( (*IMP) == NOMASK && (*(IMP + 1) == NOMASK) && (*(IMP - 1) == NOMASK) && + (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && + (*(IMP - image_width_minus_one) == NOMASK) && (*(IMP - image_width_plus_one) == NOMASK) && + (*(IMP + image_width_minus_one) == NOMASK) && (*(IMP + image_width_plus_one) == NOMASK) ) { - *EMP = 255; + *EMP = NOMASK; } ++EMP; ++IMP; @@ -236,12 +241,12 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, EMP = extended_mask + 2 * image_width -1; for (i=1; i < image_height - 1; ++ i) { - if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && - (*(IMP - image_width - 1) == 255) && (*(IMP - image_width + 1) == 255) && - (*(IMP + image_width - 1) == 255) && (*(IMP - 2 * image_width + 1) == 255) ) + if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && + (*(IMP - image_width - 1) == NOMASK) && (*(IMP - image_width + 1) == NOMASK) && + (*(IMP + image_width - 1) == NOMASK) && (*(IMP - 2 * image_width + 1) == NOMASK) ) { - *EMP = 255; + *EMP = NOMASK; } EMP += image_width; IMP += image_width; @@ -252,12 +257,12 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, EMP = extended_mask + image_width; for (i=1; i < image_height - 1; ++i) { - if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP + image_width) == 255) && (*(IMP - image_width) == 255) && - (*(IMP - image_width + 1) == 255) && (*(IMP + image_width + 1) == 255) && - (*(IMP + image_width - 1) == 255) && (*(IMP + 2 * image_width - 1) == 255) ) + if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && + (*(IMP - image_width + 1) == NOMASK) && (*(IMP + image_width + 1) == NOMASK) && + (*(IMP + image_width - 1) == NOMASK) && (*(IMP + 2 * image_width - 1) == NOMASK) ) { - *EMP = 255; + *EMP = NOMASK; } EMP += image_width; IMP += image_width; @@ -271,12 +276,12 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, EMP = extended_mask + 1; for (i=1; i < image_width - 1; ++i) { - if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP + image_width) == 255) && (*(IMP + image_width * (image_height - 1)) == 255) && - (*(IMP + image_width + 1) == 255) && (*(IMP + image_width - 1) == 255) && - (*(IMP + image_width * (image_height - 1) - 1) == 255) && (*(IMP + image_width * (image_height - 1) + 1) == 255) ) + if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP + image_width) == NOMASK) && (*(IMP + image_width * (image_height - 1)) == NOMASK) && + (*(IMP + image_width + 1) == NOMASK) && (*(IMP + image_width - 1) == NOMASK) && + (*(IMP + image_width * (image_height - 1) - 1) == NOMASK) && (*(IMP + image_width * (image_height - 1) + 1) == NOMASK) ) { - *EMP = 255; + *EMP = NOMASK; } EMP++; IMP++; @@ -287,13 +292,13 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, EMP = extended_mask + image_width * (image_height - 1) + 1; for (i=1; i < image_width - 1; ++i) { - if ( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP - image_width) == 255) && (*(IMP - image_width - 1) == 255) && (*(IMP - image_width + 1) == 255) && - (*(IMP - image_width * (image_height - 1) ) == 255) && - (*(IMP - image_width * (image_height - 1) - 1) == 255) && - (*(IMP - image_width * (image_height - 1) + 1) == 255) ) + if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP - image_width) == NOMASK) && (*(IMP - image_width - 1) == NOMASK) && (*(IMP - image_width + 1) == NOMASK) && + (*(IMP - image_width * (image_height - 1) ) == NOMASK) && + (*(IMP - image_width * (image_height - 1) - 1) == NOMASK) && + (*(IMP - image_width * (image_height - 1) + 1) == NOMASK) ) { - *EMP = 255; + *EMP = NOMASK; } EMP++; IMP++; @@ -316,7 +321,7 @@ void calculate_reliability(float *wrappedImage, PIXELM *pixel, { for (j = 1; j < image_width - 1; ++j) { - if (pixel_pointer->extended_mask == 255) + if (pixel_pointer->extended_mask == NOMASK) { H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); @@ -339,7 +344,7 @@ void calculate_reliability(float *wrappedImage, PIXELM *pixel, for (i = 1; i < image_height - 1; ++i) { - if (pixel_pointer->extended_mask == 255) + if (pixel_pointer->extended_mask == NOMASK) { H = wrap(*(WIP + image_width - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); @@ -357,7 +362,7 @@ void calculate_reliability(float *wrappedImage, PIXELM *pixel, for (i = 1; i < image_height - 1; ++i) { - if (pixel_pointer->extended_mask == 255) + if (pixel_pointer->extended_mask == NOMASK) { H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP - image_width_minus_one)); V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); @@ -378,7 +383,7 @@ void calculate_reliability(float *wrappedImage, PIXELM *pixel, for (i = 1; i < image_width - 1; ++i) { - if (pixel_pointer->extended_mask == 255) + if (pixel_pointer->extended_mask == NOMASK) { H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); V = wrap(*(WIP + image_width*(image_height - 1)) - *WIP) - wrap(*WIP - *(WIP + image_width)); @@ -396,7 +401,7 @@ void calculate_reliability(float *wrappedImage, PIXELM *pixel, for (i = 1; i < image_width - 1; ++i) { - if (pixel_pointer->extended_mask == 255) + if (pixel_pointer->extended_mask == NOMASK) { H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP -(image_height - 1) * (image_width))); @@ -426,7 +431,7 @@ void horizontalEDGEs(PIXELM *pixel, EDGE *edge, { for (j = 0; j < image_width - 1; j++) { - if (pixel_pointer->input_mask == 255 && (pixel_pointer + 1)->input_mask == 255) + if (pixel_pointer->input_mask == NOMASK && (pixel_pointer + 1)->input_mask == NOMASK) { edge_pointer->pointer_1 = pixel_pointer; edge_pointer->pointer_2 = (pixel_pointer+1); @@ -445,7 +450,7 @@ void horizontalEDGEs(PIXELM *pixel, EDGE *edge, pixel_pointer = pixel + image_width - 1; for (i = 0; i < image_height; i++) { - if (pixel_pointer->input_mask == 255 && (pixel_pointer - image_width + 1)->input_mask == 255) + if (pixel_pointer->input_mask == NOMASK && (pixel_pointer - image_width + 1)->input_mask == NOMASK) { edge_pointer->pointer_1 = pixel_pointer; edge_pointer->pointer_2 = (pixel_pointer - image_width + 1); @@ -474,7 +479,7 @@ void verticalEDGEs(PIXELM *pixel, EDGE *edge, { for (j=0; j < image_width; j++) { - if (pixel_pointer->input_mask == 255 && (pixel_pointer + image_width)->input_mask == 255) + if (pixel_pointer->input_mask == NOMASK && (pixel_pointer + image_width)->input_mask == NOMASK) { edge_pointer->pointer_1 = pixel_pointer; edge_pointer->pointer_2 = (pixel_pointer + image_width); @@ -493,7 +498,7 @@ void verticalEDGEs(PIXELM *pixel, EDGE *edge, pixel_pointer = pixel + image_width *(image_height - 1); for (i = 0; i < image_width; i++) { - if (pixel_pointer->input_mask == 255 && (pixel_pointer - image_width *(image_height - 1))->input_mask == 255) + if (pixel_pointer->input_mask == NOMASK && (pixel_pointer - image_width *(image_height - 1))->input_mask == NOMASK) { edge_pointer->pointer_1 = pixel_pointer; edge_pointer->pointer_2 = (pixel_pointer - image_width *(image_height - 1)); @@ -636,7 +641,7 @@ void maskImage(PIXELM *pixel, unsigned char *input_mask, int image_width, int i //find the minimum of the unwrapped phase for (i = 0; i < image_size; i++) { - if ((pointer_pixel->value < min) && (*IMP == 255)) + if ((pointer_pixel->value < min) && (*IMP == NOMASK)) min = pointer_pixel->value; pointer_pixel++; @@ -649,7 +654,7 @@ void maskImage(PIXELM *pixel, unsigned char *input_mask, int image_width, int i //set the masked pixels to minimum for (i = 0; i < image_size; i++) { - if ((*IMP) == 0) + if ((*IMP) == MASK) { pointer_pixel->value = min; } diff --git a/unwrap2D/test_unwrap.py b/unwrap2D/test_unwrap.py index c7e1aadd..b6cdd33c 100644 --- a/unwrap2D/test_unwrap.py +++ b/unwrap2D/test_unwrap.py @@ -6,7 +6,7 @@ from numpy import outer, arange, ones, abs, empty, power, indices def test_unwrap2D(): - nx, ny = 10, 3 + nx, ny = 10, 10 x = np.arange(nx) y = np.arange(ny) x.shape = (1,-1) @@ -14,7 +14,8 @@ def test_unwrap2D(): z = np.exp(1j*x*0.2*np.pi) * np.exp(1j*y*0.1*np.pi) phi_w = np.angle(z) - mask = 255*np.ones((nx, ny), dtype = np.uint8) + mask = 0*np.ones((nx, ny), dtype = np.uint8) + mask[4:6, 5:7] = 1 phi = unwrap2D(phi_w.astype(np.float32), mask) return phi_w/(np.pi*2), np.asarray(phi)/(np.pi*2) @@ -46,5 +47,7 @@ if __name__=="__main__": #NumpyTest().run() import matplotlib.pyplot as plt p,p2 = test_unwrap2D() - plt.imshow(p2) - plt + plt.clf() + plt.imshow(p2, interpolation = 'nearest') + plt.draw() + plt.show() From 91a621b6463a69f660e1663416e5d9cf838d6e22 Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Sat, 12 May 2012 22:35:25 +0200 Subject: [PATCH 026/577] unwrap: variable renaming --- ...wrapper_with_mask_and_wrap_around_option.c | 1000 ++++++++--------- unwrap2D/unwrap2D.pyx | 1 + 2 files changed, 501 insertions(+), 500 deletions(-) diff --git a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c index 28c7eaac..14fe65de 100644 --- a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c +++ b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c @@ -24,17 +24,15 @@ static float PI = 3.141592654; static float TWOPI = 6.283185307; -//TODO: adjust to numpy.ma: NOMASK 0, MASK 1 #define NOMASK 0 #define MASK 1 -//#define NOMASK 0 typedef struct { - float mod; - int x_connectivity; - int y_connectivity; - int no_of_edges; + float mod; + int x_connectivity; + int y_connectivity; + int no_of_edges; } params_t; @@ -45,17 +43,17 @@ int No_of_edges = 0; //PIXELM information struct pixelm { - int increment; //No. of 2*pi to add to the pixel to unwrap it - int number_of_pixels_in_group; //No. of pixel in the pixel group - float value; //value of the pixel - float reliability; - unsigned char input_mask; //0 pixel is masked. NOMASK pixel is not masked - unsigned char extended_mask; //0 pixel is masked. NOMASK pixel is not masked - int group; //group No. - int new_group; - struct pixelm *head; //pointer to the first pixel in the group in the linked list - struct pixelm *last; //pointer to the last pixel in the group - struct pixelm *next; //pointer to the next pixel in the group + int increment; //No. of 2*pi to add to the pixel to unwrap it + int number_of_pixels_in_group;//No. of pixel in the pixel group + float value; //value of the pixel + float reliability; + unsigned char input_mask; //0 pixel is masked. NOMASK pixel is not masked + unsigned char extended_mask; //0 pixel is masked. NOMASK pixel is not masked + int group; //group No. + int new_group; + struct pixelm *head; //pointer to the first pixel in the group in the linked list + struct pixelm *last; //pointer to the last pixel in the group + struct pixelm *next; //pointer to the next pixel in the group }; typedef struct pixelm PIXELM; @@ -64,10 +62,11 @@ typedef struct pixelm PIXELM; //if we have S pixels, then we have S horizontal edges and S vertical edges struct edge { - float reliab; //reliabilty of the edge and it depends on the two pixels - PIXELM *pointer_1; //pointer to the first pixel - PIXELM *pointer_2; //pointer to the second pixel - int increment; //No. of 2*pi to add to one of the pixels to unwrap it with respect to the second + float reliab; //reliabilty of the edge and it depends on the two pixels + PIXELM *pointer_1; //pointer to the first pixel + PIXELM *pointer_2; //pointer to the second pixel + int increment; //No. of 2*pi to add to one of the pixels to + //unwrap it with respect to the second }; typedef struct edge EDGE; @@ -83,336 +82,335 @@ typedef enum {yes, no} yes_no; yes_no find_pivot(EDGE *left, EDGE *right, float *pivot_ptr) { - EDGE a, b, c, *p; + EDGE a, b, c, *p; - a = *left; - b = *(left + (right - left) /2 ); - c = *right; - o3(a,b,c); + a = *left; + b = *(left + (right - left) /2 ); + c = *right; + o3(a,b,c); - if (a.reliab < b.reliab) + if (a.reliab < b.reliab) + { + *pivot_ptr = b.reliab; + return yes; + } + + if (b.reliab < c.reliab) + { + *pivot_ptr = c.reliab; + return yes; + } + + for (p = left + 1; p <= right; ++p) + { + if (p->reliab != left->reliab) { - *pivot_ptr = b.reliab; - return yes; - } - - if (b.reliab < c.reliab) - { - *pivot_ptr = c.reliab; - return yes; - } - - for (p = left + 1; p <= right; ++p) - { - if (p->reliab != left->reliab) - { - *pivot_ptr = (p->reliab < left->reliab) ? left->reliab : p->reliab; - return yes; - } - return no; + *pivot_ptr = (p->reliab < left->reliab) ? left->reliab : p->reliab; + return yes; } + return no; + } } EDGE *partition(EDGE *left, EDGE *right, float pivot) { - while (left <= right) + while (left <= right) + { + while (left->reliab < pivot) + ++left; + while (right->reliab >= pivot) + --right; + if (left < right) { - while (left->reliab < pivot) - ++left; - while (right->reliab >= pivot) - --right; - if (left < right) - { - swap (*left, *right); - ++left; - --right; - } + swap (*left, *right); + ++left; + --right; } - return left; + } + return left; } void quicker_sort(EDGE *left, EDGE *right) { - EDGE *p; - float pivot; + EDGE *p; + float pivot; - if (find_pivot(left, right, &pivot) == yes) - { - p = partition(left, right, pivot); - quicker_sort(left, p - 1); - quicker_sort(p, right); - } + if (find_pivot(left, right, &pivot) == yes) + { + p = partition(left, right, pivot); + quicker_sort(left, p - 1); + quicker_sort(p, right); + } } - //--------------end quicker_sort algorithm ----------------------------------- //--------------------start initialize pixels ---------------------------------- //initialize pixels. See the explination of the pixel class above. //initially every pixel is assumed to belong to a group consisting of only itself -void initialisePIXELs(float *WrappedImage, unsigned char *input_mask, unsigned char *extended_mask, PIXELM *pixel, int image_width, int image_height) +void initialisePIXELs(float *wrapped_image, unsigned char *input_mask, unsigned char *extended_mask, PIXELM *pixel, int image_width, int image_height) { - PIXELM *pixel_pointer = pixel; - float *wrapped_image_pointer = WrappedImage; - unsigned char *input_mask_pointer = input_mask; - unsigned char *extended_mask_pointer = extended_mask; - int i, j; + PIXELM *pixel_pointer = pixel; + float *wrapped_image_pointer = wrapped_image; + unsigned char *input_mask_pointer = input_mask; + unsigned char *extended_mask_pointer = extended_mask; + int i, j; - for (i=0; i < image_height; i++) + for (i=0; i < image_height; i++) + { + for (j=0; j < image_width; j++) { - for (j=0; j < image_width; j++) - { - pixel_pointer->increment = 0; - pixel_pointer->number_of_pixels_in_group = 1; - pixel_pointer->value = *wrapped_image_pointer; - pixel_pointer->reliability = 9999999 + rand(); - pixel_pointer->input_mask = *input_mask_pointer; - pixel_pointer->extended_mask = *extended_mask_pointer; - pixel_pointer->head = pixel_pointer; - pixel_pointer->last = pixel_pointer; - pixel_pointer->next = NULL; - pixel_pointer->new_group = 0; - pixel_pointer->group = -1; - pixel_pointer++; - wrapped_image_pointer++; - input_mask_pointer++; - extended_mask_pointer++; - } + pixel_pointer->increment = 0; + pixel_pointer->number_of_pixels_in_group = 1; + pixel_pointer->value = *wrapped_image_pointer; + pixel_pointer->reliability = 9999999 + rand(); + pixel_pointer->input_mask = *input_mask_pointer; + pixel_pointer->extended_mask = *extended_mask_pointer; + pixel_pointer->head = pixel_pointer; + pixel_pointer->last = pixel_pointer; + pixel_pointer->next = NULL; + pixel_pointer->new_group = 0; + pixel_pointer->group = -1; + pixel_pointer++; + wrapped_image_pointer++; + input_mask_pointer++; + extended_mask_pointer++; } + } } //-------------------end initialize pixels ----------- //gamma function in the paper float wrap(float pixel_value) { - float wrapped_pixel_value; - if (pixel_value > PI) wrapped_pixel_value = pixel_value - TWOPI; - else if (pixel_value < -PI) wrapped_pixel_value = pixel_value + TWOPI; - else wrapped_pixel_value = pixel_value; - return wrapped_pixel_value; + float wrapped_pixel_value; + if (pixel_value > PI) wrapped_pixel_value = pixel_value - TWOPI; + else if (pixel_value < -PI) wrapped_pixel_value = pixel_value + TWOPI; + else wrapped_pixel_value = pixel_value; + return wrapped_pixel_value; } // pixelL_value is the left pixel, pixelR_value is the right pixel int find_wrap(float pixelL_value, float pixelR_value) { - float difference; - int wrap_value; - difference = pixelL_value - pixelR_value; + float difference; + int wrap_value; + difference = pixelL_value - pixelR_value; - if (difference > PI) wrap_value = -1; - else if (difference < -PI) wrap_value = 1; - else wrap_value = 0; + if (difference > PI) wrap_value = -1; + else if (difference < -PI) wrap_value = 1; + else wrap_value = 0; - return wrap_value; + return wrap_value; } void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int image_width, int image_height, params_t *params) { - int i,j; - int image_width_plus_one = image_width + 1; - int image_width_minus_one = image_width - 1; - unsigned char *IMP = input_mask + image_width + 1; //input mask pointer - unsigned char *EMP = extended_mask + image_width + 1; //extended mask pointer + int i,j; + int image_width_plus_one = image_width + 1; + int image_width_minus_one = image_width - 1; + unsigned char *IMP = input_mask + image_width + 1; //input mask pointer + unsigned char *EMP = extended_mask + image_width + 1; //extended mask pointer - //extend the mask for the image except borders - for (i=1; i < image_height - 1; ++i) + //extend the mask for the image except borders + for (i=1; i < image_height - 1; ++i) + { + for (j=1; j < image_width - 1; ++j) { - for (j=1; j < image_width - 1; ++j) - { - if ( (*IMP) == NOMASK && (*(IMP + 1) == NOMASK) && (*(IMP - 1) == NOMASK) && - (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && - (*(IMP - image_width_minus_one) == NOMASK) && (*(IMP - image_width_plus_one) == NOMASK) && - (*(IMP + image_width_minus_one) == NOMASK) && (*(IMP + image_width_plus_one) == NOMASK) ) - { - *EMP = NOMASK; - } - ++EMP; - ++IMP; - } - EMP += 2; - IMP += 2; + if ( (*IMP) == NOMASK && (*(IMP + 1) == NOMASK) && (*(IMP - 1) == NOMASK) && + (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && + (*(IMP - image_width_minus_one) == NOMASK) && (*(IMP - image_width_plus_one) == NOMASK) && + (*(IMP + image_width_minus_one) == NOMASK) && (*(IMP + image_width_plus_one) == NOMASK) ) + { + *EMP = NOMASK; + } + ++EMP; + ++IMP; } + EMP += 2; + IMP += 2; + } - if (params->x_connectivity == 1) + if (params->x_connectivity == 1) + { + //extend the mask for the right border of the image + IMP = input_mask + 2 * image_width - 1; + EMP = extended_mask + 2 * image_width -1; + for (i=1; i < image_height - 1; ++ i) { - //extend the mask for the right border of the image - IMP = input_mask + 2 * image_width - 1; - EMP = extended_mask + 2 * image_width -1; - for (i=1; i < image_height - 1; ++ i) - { - if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && - (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && - (*(IMP - image_width - 1) == NOMASK) && (*(IMP - image_width + 1) == NOMASK) && - (*(IMP + image_width - 1) == NOMASK) && (*(IMP - 2 * image_width + 1) == NOMASK) ) - { - *EMP = NOMASK; - } - EMP += image_width; - IMP += image_width; - } - - //extend the mask for the left border of the image - IMP = input_mask + image_width; - EMP = extended_mask + image_width; - for (i=1; i < image_height - 1; ++i) - { - if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && - (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && - (*(IMP - image_width + 1) == NOMASK) && (*(IMP + image_width + 1) == NOMASK) && - (*(IMP + image_width - 1) == NOMASK) && (*(IMP + 2 * image_width - 1) == NOMASK) ) - { - *EMP = NOMASK; - } - EMP += image_width; - IMP += image_width; - } + if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && + (*(IMP - image_width - 1) == NOMASK) && (*(IMP - image_width + 1) == NOMASK) && + (*(IMP + image_width - 1) == NOMASK) && (*(IMP - 2 * image_width + 1) == NOMASK) ) + { + *EMP = NOMASK; + } + EMP += image_width; + IMP += image_width; } - if (params->y_connectivity == 1) + //extend the mask for the left border of the image + IMP = input_mask + image_width; + EMP = extended_mask + image_width; + for (i=1; i < image_height - 1; ++i) { - //extend the mask for the top border of the image - IMP = input_mask + 1; - EMP = extended_mask + 1; - for (i=1; i < image_width - 1; ++i) - { - if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && - (*(IMP + image_width) == NOMASK) && (*(IMP + image_width * (image_height - 1)) == NOMASK) && - (*(IMP + image_width + 1) == NOMASK) && (*(IMP + image_width - 1) == NOMASK) && - (*(IMP + image_width * (image_height - 1) - 1) == NOMASK) && (*(IMP + image_width * (image_height - 1) + 1) == NOMASK) ) - { - *EMP = NOMASK; - } - EMP++; - IMP++; - } + if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && + (*(IMP - image_width + 1) == NOMASK) && (*(IMP + image_width + 1) == NOMASK) && + (*(IMP + image_width - 1) == NOMASK) && (*(IMP + 2 * image_width - 1) == NOMASK) ) + { + *EMP = NOMASK; + } + EMP += image_width; + IMP += image_width; + } + } - //extend the mask for the bottom border of the image - IMP = input_mask + image_width * (image_height - 1) + 1; - EMP = extended_mask + image_width * (image_height - 1) + 1; - for (i=1; i < image_width - 1; ++i) - { - if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && - (*(IMP - image_width) == NOMASK) && (*(IMP - image_width - 1) == NOMASK) && (*(IMP - image_width + 1) == NOMASK) && - (*(IMP - image_width * (image_height - 1) ) == NOMASK) && - (*(IMP - image_width * (image_height - 1) - 1) == NOMASK) && - (*(IMP - image_width * (image_height - 1) + 1) == NOMASK) ) - { - *EMP = NOMASK; - } - EMP++; - IMP++; - } - } + if (params->y_connectivity == 1) + { + //extend the mask for the top border of the image + IMP = input_mask + 1; + EMP = extended_mask + 1; + for (i=1; i < image_width - 1; ++i) + { + if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP + image_width) == NOMASK) && (*(IMP + image_width * (image_height - 1)) == NOMASK) && + (*(IMP + image_width + 1) == NOMASK) && (*(IMP + image_width - 1) == NOMASK) && + (*(IMP + image_width * (image_height - 1) - 1) == NOMASK) && (*(IMP + image_width * (image_height - 1) + 1) == NOMASK) ) + { + *EMP = NOMASK; + } + EMP++; + IMP++; + } + + //extend the mask for the bottom border of the image + IMP = input_mask + image_width * (image_height - 1) + 1; + EMP = extended_mask + image_width * (image_height - 1) + 1; + for (i=1; i < image_width - 1; ++i) + { + if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP - image_width) == NOMASK) && (*(IMP - image_width - 1) == NOMASK) && (*(IMP - image_width + 1) == NOMASK) && + (*(IMP - image_width * (image_height - 1) ) == NOMASK) && + (*(IMP - image_width * (image_height - 1) - 1) == NOMASK) && + (*(IMP - image_width * (image_height - 1) + 1) == NOMASK) ) + { + *EMP = NOMASK; + } + EMP++; + IMP++; + } + } } void calculate_reliability(float *wrappedImage, PIXELM *pixel, int image_width, int image_height, params_t *params) { - int image_width_plus_one = image_width + 1; - int image_width_minus_one = image_width - 1; - PIXELM *pixel_pointer = pixel + image_width_plus_one; - float *WIP = wrappedImage + image_width_plus_one; //WIP is the wrapped image pointer - float H, V, D1, D2; - int i, j; + int image_width_plus_one = image_width + 1; + int image_width_minus_one = image_width - 1; + PIXELM *pixel_pointer = pixel + image_width_plus_one; + float *WIP = wrappedImage + image_width_plus_one; //WIP is the wrapped image pointer + float H, V, D1, D2; + int i, j; - for (i = 1; i < image_height -1; ++i) + for (i = 1; i < image_height -1; ++i) + { + for (j = 1; j < image_width - 1; ++j) { - for (j = 1; j < image_width - 1; ++j) - { - if (pixel_pointer->extended_mask == NOMASK) - { - H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); - V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); - D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); - D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer++; - WIP++; - } - pixel_pointer += 2; - WIP += 2; + if (pixel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); + D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer++; + WIP++; + } + pixel_pointer += 2; + WIP += 2; + } + + if (params->x_connectivity == 1) + { + //calculating the reliability for the left border of the image + PIXELM *pixel_pointer = pixel + image_width; + float *WIP = wrappedImage + image_width; + + for (i = 1; i < image_height - 1; ++i) + { + if (pixel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WIP + image_width - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); + D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + 2* image_width - 1)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer += image_width; + WIP += image_width; } - if (params->x_connectivity == 1) + //calculating the reliability for the right border of the image + pixel_pointer = pixel + 2 * image_width - 1; + WIP = wrappedImage + 2 * image_width - 1; + + for (i = 1; i < image_height - 1; ++i) { - //calculating the reliability for the left border of the image - PIXELM *pixel_pointer = pixel + image_width; - float *WIP = wrappedImage + image_width; - - for (i = 1; i < image_height - 1; ++i) - { - if (pixel_pointer->extended_mask == NOMASK) - { - H = wrap(*(WIP + image_width - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); - V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); - D1 = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); - D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + 2* image_width - 1)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer += image_width; - WIP += image_width; - } + if (pixel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP - image_width_minus_one)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + 1)); + D2 = wrap(*(WIP - 2 * image_width - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer += image_width; + WIP += image_width; + } + } - //calculating the reliability for the right border of the image - pixel_pointer = pixel + 2 * image_width - 1; - WIP = wrappedImage + 2 * image_width - 1; + if (params->y_connectivity == 1) + { + //calculating the reliability for the top border of the image + PIXELM *pixel_pointer = pixel + 1; + float *WIP = wrappedImage + 1; - for (i = 1; i < image_height - 1; ++i) - { - if (pixel_pointer->extended_mask == NOMASK) - { - H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP - image_width_minus_one)); - V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); - D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + 1)); - D2 = wrap(*(WIP - 2 * image_width - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer += image_width; - WIP += image_width; - } + for (i = 1; i < image_width - 1; ++i) + { + if (pixel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP + image_width*(image_height - 1)) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP + image_width*(image_height - 1) - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); + D2 = wrap(*(WIP + image_width*(image_height - 1) + 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer++; + WIP++; } - if (params->y_connectivity == 1) + //calculating the reliability for the bottom border of the image + pixel_pointer = pixel + (image_height - 1) * image_width + 1; + WIP = wrappedImage + (image_height - 1) * image_width + 1; + + for (i = 1; i < image_width - 1; ++i) { - //calculating the reliability for the top border of the image - PIXELM *pixel_pointer = pixel + 1; - float *WIP = wrappedImage + 1; - - for (i = 1; i < image_width - 1; ++i) - { - if (pixel_pointer->extended_mask == NOMASK) - { - H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); - V = wrap(*(WIP + image_width*(image_height - 1)) - *WIP) - wrap(*WIP - *(WIP + image_width)); - D1 = wrap(*(WIP + image_width*(image_height - 1) - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); - D2 = wrap(*(WIP + image_width*(image_height - 1) + 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer++; - WIP++; - } - - //calculating the reliability for the bottom border of the image - pixel_pointer = pixel + (image_height - 1) * image_width + 1; - WIP = wrappedImage + (image_height - 1) * image_width + 1; - - for (i = 1; i < image_width - 1; ++i) - { - if (pixel_pointer->extended_mask == NOMASK) - { - H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); - V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP -(image_height - 1) * (image_width))); - D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) + 1)); - D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) - 1)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer++; - WIP++; - } + if (pixel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP -(image_height - 1) * (image_width))); + D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) + 1)); + D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) - 1)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer++; + WIP++; } + } } //calculate the reliability of the horizontal edges of the image @@ -423,45 +421,45 @@ void horizontalEDGEs(PIXELM *pixel, EDGE *edge, int image_width, int image_height, params_t *params) { - int i, j; - EDGE *edge_pointer = edge; - PIXELM *pixel_pointer = pixel; + int i, j; + EDGE *edge_pointer = edge; + PIXELM *pixel_pointer = pixel; - for (i = 0; i < image_height; i++) + for (i = 0; i < image_height; i++) + { + for (j = 0; j < image_width - 1; j++) { - for (j = 0; j < image_width - 1; j++) - { - if (pixel_pointer->input_mask == NOMASK && (pixel_pointer + 1)->input_mask == NOMASK) - { - edge_pointer->pointer_1 = pixel_pointer; - edge_pointer->pointer_2 = (pixel_pointer+1); - edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + 1)->reliability; - edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + 1)->value); - edge_pointer++; - No_of_edges++; - } - pixel_pointer++; - } - pixel_pointer++; + if (pixel_pointer->input_mask == NOMASK && (pixel_pointer + 1)->input_mask == NOMASK) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer+1); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + 1)->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + 1)->value); + edge_pointer++; + No_of_edges++; + } + pixel_pointer++; } - //construct edges at the right border of the image - if (params->x_connectivity == 1) + pixel_pointer++; + } + //construct edges at the right border of the image + if (params->x_connectivity == 1) + { + pixel_pointer = pixel + image_width - 1; + for (i = 0; i < image_height; i++) { - pixel_pointer = pixel + image_width - 1; - for (i = 0; i < image_height; i++) - { - if (pixel_pointer->input_mask == NOMASK && (pixel_pointer - image_width + 1)->input_mask == NOMASK) - { - edge_pointer->pointer_1 = pixel_pointer; - edge_pointer->pointer_2 = (pixel_pointer - image_width + 1); - edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width + 1)->reliability; - edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width + 1)->value); - edge_pointer++; - No_of_edges++; - } - pixel_pointer+=image_width; - } + if (pixel_pointer->input_mask == NOMASK && (pixel_pointer - image_width + 1)->input_mask == NOMASK) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer - image_width + 1); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width + 1)->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width + 1)->value); + edge_pointer++; + No_of_edges++; + } + pixel_pointer+=image_width; } + } } //calculate the reliability of the vertical edges of the image @@ -471,256 +469,258 @@ void verticalEDGEs(PIXELM *pixel, EDGE *edge, int image_width, int image_height, params_t *params) { - int i, j; - PIXELM *pixel_pointer = pixel; - EDGE *edge_pointer = edge + No_of_edges; + int i, j; + PIXELM *pixel_pointer = pixel; + EDGE *edge_pointer = edge + No_of_edges; - for (i=0; i < image_height - 1; i++) + for (i=0; i < image_height - 1; i++) + { + for (j=0; j < image_width; j++) { - for (j=0; j < image_width; j++) - { - if (pixel_pointer->input_mask == NOMASK && (pixel_pointer + image_width)->input_mask == NOMASK) - { - edge_pointer->pointer_1 = pixel_pointer; - edge_pointer->pointer_2 = (pixel_pointer + image_width); - edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + image_width)->reliability; - edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + image_width)->value); - edge_pointer++; - No_of_edges++; - } - pixel_pointer++; - } //j loop - } // i loop + if (pixel_pointer->input_mask == NOMASK && (pixel_pointer + image_width)->input_mask == NOMASK) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer + image_width); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + image_width)->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + image_width)->value); + edge_pointer++; + No_of_edges++; + } + pixel_pointer++; + } //j loop + } // i loop - //construct edges that connect at the bottom border of the image - if (params->y_connectivity == 1) + //construct edges that connect at the bottom border of the image + if (params->y_connectivity == 1) + { + pixel_pointer = pixel + image_width *(image_height - 1); + for (i = 0; i < image_width; i++) { - pixel_pointer = pixel + image_width *(image_height - 1); - for (i = 0; i < image_width; i++) - { - if (pixel_pointer->input_mask == NOMASK && (pixel_pointer - image_width *(image_height - 1))->input_mask == NOMASK) - { - edge_pointer->pointer_1 = pixel_pointer; - edge_pointer->pointer_2 = (pixel_pointer - image_width *(image_height - 1)); - edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width *(image_height - 1))->reliability; - edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width *(image_height - 1))->value); - edge_pointer++; - No_of_edges++; - } - pixel_pointer++; - } + if (pixel_pointer->input_mask == NOMASK && (pixel_pointer - image_width *(image_height - 1))->input_mask == NOMASK) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer - image_width *(image_height - 1)); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width *(image_height - 1))->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width *(image_height - 1))->value); + edge_pointer++; + No_of_edges++; + } + pixel_pointer++; } + } } //gather the pixels of the image into groups void gatherPIXELs(EDGE *edge, int image_width, int image_height) { - int k; - PIXELM *PIXEL1; - PIXELM *PIXEL2; - PIXELM *group1; - PIXELM *group2; - EDGE *pointer_edge = edge; - int incremento; + int k; + PIXELM *PIXEL1; + PIXELM *PIXEL2; + PIXELM *group1; + PIXELM *group2; + EDGE *pointer_edge = edge; + int incremento; - for (k = 0; k < No_of_edges; k++) + for (k = 0; k < No_of_edges; k++) + { + PIXEL1 = pointer_edge->pointer_1; + PIXEL2 = pointer_edge->pointer_2; + + //PIXELM 1 and PIXELM 2 belong to different groups + //initially each pixel is a group by it self and one pixel can construct a group + //no else or else if to this if + if (PIXEL2->head != PIXEL1->head) { - PIXEL1 = pointer_edge->pointer_1; - PIXEL2 = pointer_edge->pointer_2; + //PIXELM 2 is alone in its group + //merge this pixel with PIXELM 1 group and find the number of 2 pi to add + //to or subtract to unwrap it + if ((PIXEL2->next == NULL) && (PIXEL2->head == PIXEL2)) + { + PIXEL1->head->last->next = PIXEL2; + PIXEL1->head->last = PIXEL2; + (PIXEL1->head->number_of_pixels_in_group)++; + PIXEL2->head=PIXEL1->head; + PIXEL2->increment = PIXEL1->increment-pointer_edge->increment; + } - //PIXELM 1 and PIXELM 2 belong to different groups - //initially each pixel is a group by it self and one pixel can construct a group - //no else or else if to this if - if (PIXEL2->head != PIXEL1->head) - { - //PIXELM 2 is alone in its group - //merge this pixel with PIXELM 1 group and find the number of 2 pi to add - //to or subtract to unwrap it - if ((PIXEL2->next == NULL) && (PIXEL2->head == PIXEL2)) - { - PIXEL1->head->last->next = PIXEL2; - PIXEL1->head->last = PIXEL2; - (PIXEL1->head->number_of_pixels_in_group)++; - PIXEL2->head=PIXEL1->head; - PIXEL2->increment = PIXEL1->increment-pointer_edge->increment; - } + //PIXELM 1 is alone in its group + //merge this pixel with PIXELM 2 group and find the number of 2 pi to add + //to or subtract to unwrap it + else if ((PIXEL1->next == NULL) && (PIXEL1->head == PIXEL1)) + { + PIXEL2->head->last->next = PIXEL1; + PIXEL2->head->last = PIXEL1; + (PIXEL2->head->number_of_pixels_in_group)++; + PIXEL1->head = PIXEL2->head; + PIXEL1->increment = PIXEL2->increment+pointer_edge->increment; + } - //PIXELM 1 is alone in its group - //merge this pixel with PIXELM 2 group and find the number of 2 pi to add - //to or subtract to unwrap it - else if ((PIXEL1->next == NULL) && (PIXEL1->head == PIXEL1)) - { - PIXEL2->head->last->next = PIXEL1; - PIXEL2->head->last = PIXEL1; - (PIXEL2->head->number_of_pixels_in_group)++; - PIXEL1->head = PIXEL2->head; - PIXEL1->increment = PIXEL2->increment+pointer_edge->increment; - } - - //PIXELM 1 and PIXELM 2 both have groups - else + //PIXELM 1 and PIXELM 2 both have groups + else { - group1 = PIXEL1->head; - group2 = PIXEL2->head; - //if the no. of pixels in PIXELM 1 group is larger than the no. of pixels - //in PIXELM 2 group. Merge PIXELM 2 group to PIXELM 1 group - //and find the number of wraps between PIXELM 2 group and PIXELM 1 group - //to unwrap PIXELM 2 group with respect to PIXELM 1 group. - //the no. of wraps will be added to PIXELM 2 grop in the future - if (group1->number_of_pixels_in_group > group2->number_of_pixels_in_group) - { - //merge PIXELM 2 with PIXELM 1 group - group1->last->next = group2; - group1->last = group2->last; - group1->number_of_pixels_in_group = group1->number_of_pixels_in_group + group2->number_of_pixels_in_group; - incremento = PIXEL1->increment-pointer_edge->increment - PIXEL2->increment; - //merge the other pixels in PIXELM 2 group to PIXELM 1 group - while (group2 != NULL) - { - group2->head = group1; - group2->increment += incremento; - group2 = group2->next; - } - } + group1 = PIXEL1->head; + group2 = PIXEL2->head; + //if the no. of pixels in PIXELM 1 group is larger than the + //no. of pixels in PIXELM 2 group. Merge PIXELM 2 group to + //PIXELM 1 group and find the number of wraps between PIXELM 2 + //group and PIXELM 1 group to unwrap PIXELM 2 group with respect + //to PIXELM 1 group. the no. of wraps will be added to PIXELM 2 + //group in the future + if (group1->number_of_pixels_in_group > group2->number_of_pixels_in_group) + { + //merge PIXELM 2 with PIXELM 1 group + group1->last->next = group2; + group1->last = group2->last; + group1->number_of_pixels_in_group = group1->number_of_pixels_in_group + group2->number_of_pixels_in_group; + incremento = PIXEL1->increment-pointer_edge->increment - PIXEL2->increment; + //merge the other pixels in PIXELM 2 group to PIXELM 1 group + while (group2 != NULL) + { + group2->head = group1; + group2->increment += incremento; + group2 = group2->next; + } + } - //if the no. of pixels in PIXELM 2 group is larger than the no. of pixels - //in PIXELM 1 group. Merge PIXELM 1 group to PIXELM 2 group - //and find the number of wraps between PIXELM 2 group and PIXELM 1 group - //to unwrap PIXELM 1 group with respect to PIXELM 2 group. - //the no. of wraps will be added to PIXELM 1 grop in the future - else + //if the no. of pixels in PIXELM 2 group is larger than the + //no. of pixels in PIXELM 1 group. Merge PIXELM 1 group to + //PIXELM 2 group and find the number of wraps between PIXELM 2 + //group and PIXELM 1 group to unwrap PIXELM 1 group with respect + //to PIXELM 2 group. the no. of wraps will be added to PIXELM 1 + //group in the future + else { - //merge PIXELM 1 with PIXELM 2 group - group2->last->next = group1; - group2->last = group1->last; - group2->number_of_pixels_in_group = group2->number_of_pixels_in_group + group1->number_of_pixels_in_group; - incremento = PIXEL2->increment + pointer_edge->increment - PIXEL1->increment; - //merge the other pixels in PIXELM 2 group to PIXELM 1 group - while (group1 != NULL) - { - group1->head = group2; - group1->increment += incremento; - group1 = group1->next; - } // while + //merge PIXELM 1 with PIXELM 2 group + group2->last->next = group1; + group2->last = group1->last; + group2->number_of_pixels_in_group = group2->number_of_pixels_in_group + group1->number_of_pixels_in_group; + incremento = PIXEL2->increment + pointer_edge->increment - PIXEL1->increment; + //merge the other pixels in PIXELM 2 group to PIXELM 1 group + while (group1 != NULL) + { + group1->head = group2; + group1->increment += incremento; + group1 = group1->next; + } // while } // else } //else } //if - pointer_edge++; - } + pointer_edge++; + } } //unwrap the image void unwrapImage(PIXELM *pixel, int image_width, int image_height) { - int i; - int image_size = image_width * image_height; - PIXELM *pixel_pointer=pixel; + int i; + int image_size = image_width * image_height; + PIXELM *pixel_pointer=pixel; - for (i = 0; i < image_size; i++) - { - pixel_pointer->value += TWOPI * (float)(pixel_pointer->increment); - pixel_pointer++; + for (i = 0; i < image_size; i++) + { + pixel_pointer->value += TWOPI * (float)(pixel_pointer->increment); + pixel_pointer++; } } //set the masked pixels (mask = 0) to the minimum of the unwrapper phase void maskImage(PIXELM *pixel, unsigned char *input_mask, int image_width, int image_height) { - int image_width_plus_one = image_width + 1; - int image_height_plus_one = image_height + 1; - int image_width_minus_one = image_width - 1; - int image_height_minus_one = image_height - 1; + int image_width_plus_one = image_width + 1; + int image_height_plus_one = image_height + 1; + int image_width_minus_one = image_width - 1; + int image_height_minus_one = image_height - 1; - PIXELM *pointer_pixel = pixel; - unsigned char *IMP = input_mask; //input mask pointer - float min=99999999.; - int i, j; - int image_size = image_width * image_height; + PIXELM *pointer_pixel = pixel; + unsigned char *IMP = input_mask; //input mask pointer + float min=99999999.; + int i, j; + int image_size = image_width * image_height; - //find the minimum of the unwrapped phase - for (i = 0; i < image_size; i++) + //find the minimum of the unwrapped phase + for (i = 0; i < image_size; i++) + { + if ((pointer_pixel->value < min) && (*IMP == NOMASK)) + min = pointer_pixel->value; + + pointer_pixel++; + IMP++; + } + + pointer_pixel = pixel; + IMP = input_mask; + + //set the masked pixels to minimum + for (i = 0; i < image_size; i++) + { + if ((*IMP) == MASK) { - if ((pointer_pixel->value < min) && (*IMP == NOMASK)) - min = pointer_pixel->value; - - pointer_pixel++; - IMP++; - } - - pointer_pixel = pixel; - IMP = input_mask; - - //set the masked pixels to minimum - for (i = 0; i < image_size; i++) - { - if ((*IMP) == MASK) - { - pointer_pixel->value = min; - } - pointer_pixel++; - IMP++; + pointer_pixel->value = min; } + pointer_pixel++; + IMP++; + } } //the input to this unwrapper is an array that contains the wrapped //phase map. copy the image on the buffer passed to this unwrapper to //over-write the unwrapped phase map on the buffer of the wrapped //phase map. -void returnImage(PIXELM *pixel, float *unwrappedImage, int image_width, int image_height) +void returnImage(PIXELM *pixel, float *unwrapped_image, int image_width, int image_height) { int i; int image_size = image_width * image_height; - float *unwrappedImage_pointer = unwrappedImage; + float *unwrapped_image_pointer = unwrapped_image; PIXELM *pixel_pointer = pixel; for (i=0; i < image_size; i++) { - *unwrappedImage_pointer = pixel_pointer->value; + *unwrapped_image_pointer = pixel_pointer->value; pixel_pointer++; - unwrappedImage_pointer++; + unwrapped_image_pointer++; } } //the main function of the unwrapper -int unwrap(float* WrappedImage, float* UnwrappedImage, unsigned char* input_mask, +int unwrap(float* wrapped_image, float* UnwrappedImage, unsigned char* input_mask, int image_width, int image_height, int wrap_around_x, int wrap_around_y) { - unsigned char *extended_mask; - int image_size = image_height * image_width; - int No_of_Edges_initially = 2 * image_width * image_height; - params_t params = {TWOPI, 0, 0, 0}; + unsigned char *extended_mask; + int image_size = image_height * image_width; + int No_of_Edges_initially = 2 * image_width * image_height; + params_t params = {TWOPI, 0, 0, 0}; - extended_mask = (unsigned char *) calloc(image_size, sizeof(unsigned char)); - PIXELM *pixel = (PIXELM *) calloc(image_size, sizeof(PIXELM)); - EDGE *edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE));; + extended_mask = (unsigned char *) calloc(image_size, sizeof(unsigned char)); + PIXELM *pixel = (PIXELM *) calloc(image_size, sizeof(PIXELM)); + EDGE *edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE));; - extend_mask(input_mask, extended_mask, image_width, image_height, ¶ms); - initialisePIXELs(WrappedImage, input_mask, extended_mask, pixel, image_width, image_height); - calculate_reliability(WrappedImage, pixel, image_width, image_height, ¶ms); - horizontalEDGEs(pixel, edge, image_width, image_height, ¶ms); - verticalEDGEs(pixel, edge, image_width, image_height, ¶ms); + extend_mask(input_mask, extended_mask, image_width, image_height, ¶ms); + initialisePIXELs(wrapped_image, input_mask, extended_mask, pixel, image_width, image_height); + calculate_reliability(wrapped_image, pixel, image_width, image_height, ¶ms); + horizontalEDGEs(pixel, edge, image_width, image_height, ¶ms); + verticalEDGEs(pixel, edge, image_width, image_height, ¶ms); - //sort the EDGEs depending on their reiability. The PIXELs with higher - //relibility (small value) first - quicker_sort(edge, edge + No_of_edges - 1); + //sort the EDGEs depending on their reiability. The PIXELs with higher + //relibility (small value) first + quicker_sort(edge, edge + No_of_edges - 1); - //gather PIXELs into groups - gatherPIXELs(edge, image_width, image_height); + //gather PIXELs into groups + gatherPIXELs(edge, image_width, image_height); - unwrapImage(pixel, image_width, image_height); - maskImage(pixel, input_mask, image_width, image_height); + unwrapImage(pixel, image_width, image_height); + maskImage(pixel, input_mask, image_width, image_height); - //copy the image from PIXELM structure to the unwrapped phase array - //passed to this function - returnImage(pixel, UnwrappedImage, image_width, image_height); + //copy the image from PIXELM structure to the unwrapped phase array + //passed to this function + returnImage(pixel, UnwrappedImage, image_width, image_height); - free(edge); - free(pixel); - free(extended_mask); + free(edge); + free(pixel); + free(extended_mask); - No_of_edges = 0; - return 1; + No_of_edges = 0; + return 1; } diff --git a/unwrap2D/unwrap2D.pyx b/unwrap2D/unwrap2D.pyx index ac4a3d33..d49eaf1f 100644 --- a/unwrap2D/unwrap2D.pyx +++ b/unwrap2D/unwrap2D.pyx @@ -10,6 +10,7 @@ def unwrap2D(float[:,::1] array, unsigned char[:,::1] mask, cdef float[:,::1] unwrapped_array = np.empty_like(array) cdef int h = array.shape[0] cdef int w = array.shape[1] + #TODO: check for masked array/ unwrap(&array[0,0], &unwrapped_array[0,0], &mask[0,0], From 0682b0ed5271b0b06d660435520f3af1fafeac5c Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Sun, 13 May 2012 00:12:24 +0200 Subject: [PATCH 027/577] unwrap: accept (and return if given) an masked array as input argument --- unwrap2D/test_unwrap.py | 23 ++++++++++++++++++----- unwrap2D/unwrap2D.pyx | 25 ++++++++++++++++++++++--- 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/unwrap2D/test_unwrap.py b/unwrap2D/test_unwrap.py index b6cdd33c..930cf18b 100644 --- a/unwrap2D/test_unwrap.py +++ b/unwrap2D/test_unwrap.py @@ -4,9 +4,10 @@ from unwrap2D import unwrap2D import numpy as np from numpy import outer, arange, ones, abs, empty, power, indices +import numpy.ma as ma def test_unwrap2D(): - nx, ny = 10, 10 + nx, ny = 32, 32 x = np.arange(nx) y = np.arange(ny) x.shape = (1,-1) @@ -14,10 +15,15 @@ def test_unwrap2D(): z = np.exp(1j*x*0.2*np.pi) * np.exp(1j*y*0.1*np.pi) phi_w = np.angle(z) + phi = unwrap2D(phi_w) + mask = 0*np.ones((nx, ny), dtype = np.uint8) - mask[4:6, 5:7] = 1 - phi = unwrap2D(phi_w.astype(np.float32), mask) - return phi_w/(np.pi*2), np.asarray(phi)/(np.pi*2) + mask[4:16, 4:16] = 1 + phi_w_ma = ma.array(phi_w, dtype = np.float32, mask = mask) + phi_ma = unwrap2D(phi_w_ma) + + return (phi_w/(np.pi*2), phi/(np.pi*2), + phi_w_ma/(np.pi*2), phi_ma/(np.pi*2),) # class test_unwrap(TestCase): @@ -46,8 +52,15 @@ def test_unwrap2D(): if __name__=="__main__": #NumpyTest().run() import matplotlib.pyplot as plt - p,p2 = test_unwrap2D() + p1,p2,p3,p4 = test_unwrap2D() plt.clf() + plt.subplot(221) + plt.imshow(p1,interpolation = 'nearest') + plt.subplot(222) plt.imshow(p2, interpolation = 'nearest') + plt.subplot(223) + plt.imshow(p3, interpolation = 'nearest') + plt.subplot(224) + plt.imshow(p4, interpolation = 'nearest') plt.draw() plt.show() diff --git a/unwrap2D/unwrap2D.pyx b/unwrap2D/unwrap2D.pyx index d49eaf1f..9d734dec 100644 --- a/unwrap2D/unwrap2D.pyx +++ b/unwrap2D/unwrap2D.pyx @@ -1,12 +1,31 @@ import numpy as np cimport numpy as np -cdef extern int unwrap(float* WrappedImage, float* UnwrappedImage, unsigned char* input_mask, +import numpy.ma + +cdef extern int unwrap(float* wrapped_image, + float* unwrapped_image, + unsigned char* input_mask, int image_width, int image_height, int wrap_around_x, int wrap_around_y) -def unwrap2D(float[:,::1] array, unsigned char[:,::1] mask, - wrap_around_x = False, wrap_around_y = False): +def unwrap2D(input, wrap_around_x = False, wrap_around_y = False): + + masked_array = numpy.ma.asarray(input, dtype = np.float32) + unwrapped_array = _unwrap2D(masked_array.data, + numpy.ma.getmaskarray(masked_array).astype(np.uint8), + wrap_around_x, wrap_around_y) + if numpy.ma.isarray(input): + return numpy.ma.array(unwrapped_array, mask = input.mask) + else: + return unwrapped_array + + #TODO: set_fill to minimum value + + +cdef _unwrap2D(float[:,::1] array, + unsigned char[:,::1] mask, + wrap_around_x, wrap_around_y): cdef float[:,::1] unwrapped_array = np.empty_like(array) cdef int h = array.shape[0] cdef int w = array.shape[1] From c61ae90a4dc12a3779cc443ada970370724c5432 Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Sun, 13 May 2012 18:04:06 +0200 Subject: [PATCH 028/577] unwrap: added original 3D unwrapped code --- ...apper_with_mask_and_wrap_around_option.cpp | 1088 +++++++++++++++++ 1 file changed, 1088 insertions(+) create mode 100644 unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.cpp diff --git a/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.cpp b/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.cpp new file mode 100644 index 00000000..6a4c8308 --- /dev/null +++ b/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.cpp @@ -0,0 +1,1088 @@ +//This program was written by Hussein Abdul-Rahman and Munther Gdeisat to program the three-dimensional phase unwrapper +//entitled "Fast three-dimensional phase-unwrapping algorithm based on sorting by +//reliability following a noncontinuous path" +//by Hussein Abdul-Rahman, Munther A. Gdeisat, David R. Burton, and Michael J. Lalor, +//published in the Proceedings of SPIE - +//The International Society for Optical Engineering, Vol. 5856, No. 1, 2005, pp. 32-40 +//This program was written by Munther Gdeisat, Liverpool John Moores University, United Kingdom. +//Date 31st August 2007 +//The wrapped phase volume is assumed to be of floating point data type. The resultant unwrapped phase volume is also of floating point type. +//Read the data from the file frame by frame +//The mask is of byte data type. +//When the mask is 255 this means that the voxel is valid +//When the mask is 0 this means that the voxel is invalid (noisy or corrupted voxel) +//This program takes into consideration the image wrap around problem encountered in MRI imaging. + +#include +//#include "stdafx.h" +#include +#include +#include + +static float PI = 3.141592654; +static float TWOPI = 6.283185307; +int x_connectivity = 1; +int y_connectivity = 1; +int z_connectivity = 1 +; +int No_of_edges = 0; + +//VOXELM information +struct VOXELM +{ + //int x; //x coordinate of the voxel + //int y; //y coordinate + //int z; //z coordinate + int increment; //No. of 2*pi to add to the voxel to unwrap it + int number_of_voxels_in_group; //No. of voxel in the voxel group + float value; //value of the voxel + float reliability; + unsigned char input_mask; //0 voxel is masked. 255 voxel is not masked + unsigned char extended_mask; //0 voxel is masked. 255 voxel is not masked + int group; //group No. + int new_group; + struct VOXELM *head; //pointer to the first voxel in the group in the linked list + struct VOXELM *last; //pointer to the last voxel in the group + struct VOXELM *next; //pointer to the next voxel in the group +}; + + +//the EDGE is the line that connects two voxels. +//if we have S voxels, then we have S horizontal edges and S vertical edges +struct EDGE +{ + float reliab; //reliabilty of the edge and it depends on the two voxels + VOXELM *pointer_1; //pointer to the first voxel + VOXELM *pointer_2; //pointer to the second voxel + int increment; //No. of 2*pi to add to one of the voxels to unwrap it with respect to the second +}; + +void read_data(char *inputfile,float *Data, int length) +{ + printf("Reading the Wrapped Values from Binary File.............>"); + FILE *ifptr; + ifptr = fopen(inputfile,"rb"); + if(ifptr == NULL) printf("Error opening the file\n"); + fread(Data,sizeof(float),length,ifptr); + fclose(ifptr); + printf(" Done.\n"); +} + +void write_data(char *outputfile,float *Data,int length) +{ + printf("Writing the Wrapped Values to Binary File.............>"); + FILE *ifptr; + ifptr = fopen(outputfile,"wb"); + if(ifptr == NULL) printf("Error opening the file\n"); + fwrite(Data,sizeof(float),length,ifptr); + fclose(ifptr); + printf(" Done.\n"); +} + +void read_mask(char *inputfile,unsigned char *Data, int length) +{ + printf("Reading the mask from Binary File.............>"); + FILE *ifptr; + ifptr = fopen(inputfile,"rb"); + if(ifptr == NULL) printf("Error opening the file\n"); + fread(Data,sizeof(char),length,ifptr); + fclose(ifptr); + printf(" Done.\n"); +} +//---------------start quicker_sort algorithm -------------------------------- +#define swap(x,y) {EDGE t; t=x; x=y; y=t;} +#define order(x,y) if (x.reliab > y.reliab) swap(x,y) +#define o2(x,y) order(x,y) +#define o3(x,y,z) o2(x,y); o2(x,z); o2(y,z) + +typedef enum {yes, no} yes_no; + +yes_no find_pivot(EDGE *left, EDGE *right, float *pivot_ptr) +{ + EDGE a, b, c, *p; + + a = *left; + b = *(left + (right - left) /2 ); + c = *right; + o3(a,b,c); + + if (a.reliab < b.reliab) + { + *pivot_ptr = b.reliab; + return yes; + } + + if (b.reliab < c.reliab) + { + *pivot_ptr = c.reliab; + return yes; + } + + for (p = left + 1; p <= right; ++p) + { + if (p->reliab != left->reliab) + { + *pivot_ptr = (p->reliab < left->reliab) ? left->reliab : p->reliab; + return yes; + } + return no; + } +} + +EDGE *partition(EDGE *left, EDGE *right, float pivot) +{ + while (left <= right) + { + while (left->reliab < pivot) + ++left; + while (right->reliab >= pivot) + --right; + if (left < right) + { + swap (*left, *right); + ++left; + --right; + } + } + return left; +} + +void quicker_sort(EDGE *left, EDGE *right) +{ + EDGE *p; + float pivot; + + if (find_pivot(left, right, &pivot) == yes) + { + p = partition(left, right, pivot); + quicker_sort(left, p - 1); + quicker_sort(p, right); + } +} + +//--------------end quicker_sort algorithm ----------------------------------- + +//--------------------start initialse voxels ---------------------------------- +//initialse voxels. See the explanation of the voxel class above. +//initially every voxel is assumed to belong to a group consisting of only itself +void initialiseVOXELs(float *WrappedVolume, unsigned char *input_mask, unsigned char *extended_mask, VOXELM *voxel, int volume_width, int volume_height, int volume_depth) +{ + VOXELM *voxel_pointer = voxel; + float *wrapped_volume_pointer = WrappedVolume; + unsigned char *input_mask_pointer = input_mask; + unsigned char *extended_mask_pointer = extended_mask; + int n, i, j; + + for (n=0; n < volume_depth; n++) + { + for (i=0; i < volume_height; i++) + { + for (j=0; j < volume_width; j++) + { + //voxel_pointer->x = j; + //voxel_pointer->y = i; + //voxel_pointer->z = n; + voxel_pointer->increment = 0; + voxel_pointer->number_of_voxels_in_group = 1; + voxel_pointer->value = *wrapped_volume_pointer; + voxel_pointer->reliability = 9999999 + rand(); + voxel_pointer->input_mask = *input_mask_pointer; + voxel_pointer->extended_mask = *extended_mask_pointer; + voxel_pointer->head = voxel_pointer; + voxel_pointer->last = voxel_pointer; + voxel_pointer->next = NULL; + voxel_pointer->new_group = 0; + voxel_pointer->group = -1; + voxel_pointer++; + wrapped_volume_pointer++; + input_mask_pointer++; + extended_mask_pointer++; + } + } + } +} +//-------------------end initialise voxels ----------- + +//gamma function in the paper +float wrap(float voxel_value) +{ + float wrapped_voxel_value; + if (voxel_value > PI) wrapped_voxel_value = voxel_value - TWOPI; + else if (voxel_value < -PI) wrapped_voxel_value = voxel_value + TWOPI; + else wrapped_voxel_value = voxel_value; + return wrapped_voxel_value; +} + +// voxelL_value is the left voxel, voxelR_value is the right voxel +int find_wrap(float voxelL_value, float voxelR_value) +{ + float difference; + int wrap_value; + difference = voxelL_value - voxelR_value; + + if (difference > PI) wrap_value = -1; + else if (difference < -PI) wrap_value = 1; + else wrap_value = 0; + + return wrap_value; +} + +void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int volume_width, int volume_height, int volume_depth) +{ + int n, i, j; + int vw = volume_width, vh = volume_height, vd = volume_depth; + int fs = volume_width * volume_height; //frame size + int frame_size = volume_width * volume_height; + int volume_size = volume_width * volume_height * volume_depth; //volume size + int vs = volume_size; + unsigned char *IMP = input_mask + frame_size + volume_width + 1; //input mask pointer + unsigned char *EMP = extended_mask + frame_size + volume_width + 1; //extended mask pointer + + //extend the mask for the volume except borders + for (n=1; n < volume_depth - 1; n++) + { + for (i=1; i < volume_height - 1; i++) + { + for (j=1; j < volume_width - 1; j++) + { + if( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP + vw) == 255) && (*(IMP + vw - 1) == 255) && (*(IMP + vw + 1) == 255) && + (*(IMP - vw) == 255) && (*(IMP - vw - 1) == 255) && (*(IMP - vw + 1) == 255) && + (*(IMP + fs) == 255) && (*(IMP + fs - 1) == 255) && (*(IMP + fs + 1) == 255) && + (*(IMP + fs - vw) == 255) && (*(IMP + fs - vw - 1) == 255) && (*(IMP + fs - vw + 1) == 255) && + (*(IMP + fs + vw) == 255) && (*(IMP + fs + vw - 1) == 255) && (*(IMP + fs + vw + 1) == 255) && + (*(IMP - fs) == 255) && (*(IMP - fs - 1) == 255) && (*(IMP - fs + 1) == 255) && + (*(IMP - fs - vw) == 255) && (*(IMP - fs - vw - 1) == 255) && (*(IMP - fs - vw + 1) == 255) && + (*(IMP - fs + vw) == 255) && (*(IMP - fs + vw - 1) == 255) && (*(IMP - fs + vw + 1) == 255)) + { + *EMP = 255; + } + ++EMP; + ++IMP; + } + EMP += 2; + IMP += 2; + } + EMP += 2 * volume_width; + IMP += 2 * volume_width; + } + + if (x_connectivity == 1) + { + //extend the mask to the front side of the phase volume + IMP = input_mask + frame_size + volume_width; //input mask pointer + EMP = extended_mask + frame_size + volume_width; //extended mask pointer + for (n=1; n < volume_depth - 1; n++) + { + for (i=1; i < volume_height - 1; i++) + { + if( (*IMP) == 255 && (*(IMP + vw - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP - vw) == 255) && (*(IMP + vw) == 255) && + (*(IMP - fs) == 255) && (*(IMP + fs) == 255) && + (*(IMP - 1) == 255) && (*(IMP + vw + 1) == 255) && + (*(IMP - vw + 1) == 255) && (*(IMP + 2 * vw - 1) == 255) && + (*(IMP - fs - 1) == 255) && (*(IMP + fs + vw + 1) == 255) && + (*(IMP - fs - vw) == 255) && (*(IMP + fs + vw) == 255) && + (*(IMP - fs - vw + 1) == 255) && (*(IMP + fs + 2 * vw - 1) == 255) && + (*(IMP - fs + vw - 1) == 255) && (*(IMP + fs + 1) == 255) && + (*(IMP - fs + 1) == 255) && (*(IMP + fs + vw - 1) == 255) && + (*(IMP - fs + 2 * vw - 1) == 255) && (*(IMP + fs - vw + 1) == 255) && + (*(IMP - fs + vw) == 255) && (*(IMP + fs - vw) == 255) && + (*(IMP - fs + vw + 1) == 255) && (*(IMP + fs - 1) == 255) ) + { + *EMP = 255; + } + EMP += vw; + IMP += vw; + } + EMP += 2 * vw; + IMP += 2 *vw; + } + + //extend the mask to the rear side of the phase volume + IMP = input_mask + frame_size + 2 * volume_width - 1; //input mask pointer + EMP = extended_mask + frame_size + 2 * volume_width - 1; //extended mask pointer + for (n=1; n < volume_depth - 1; n++) + { + for (i=1; i < volume_height - 1; i++) + { + if( (*IMP) == 255 && (*(IMP - vw + 1) == 255) && (*(IMP - 1) == 255) && + (*(IMP - vw) == 255) && (*(IMP + vw) == 255) && + (*(IMP - fs) == 255) && (*(IMP + fs) == 255) && + (*(IMP - vw - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP + vw - 1) == 255) && (*(IMP - 2 * vw + 1) == 255) && + (*(IMP - fs - vw - 1) == 255) && (*(IMP + fs + 1) == 255) && + (*(IMP - fs - 2 * vw + 1) == 255) && (*(IMP + fs + vw - 1) == 255) && + (*(IMP - fs - 1) == 255) && (*(IMP + fs - vw + 1) == 255) && + (*(IMP - fs - vw + 1) == 255) && (*(IMP + fs - 1) == 255) && + (*(IMP - fs - vw) == 255) && (*(IMP + fs + vw) == 255) && + (*(IMP - fs + vw - 1) == 255) && (*(IMP + fs - 2 * vw + 1) == 255) && + (*(IMP - fs + vw) == 255) && (*(IMP + fs - vw) == 255) && + (*(IMP - fs + 1) == 255) && (*(IMP + fs - vw - 1) == 255) ) + { + *EMP = 255; + } + EMP += vw; + IMP += vw; + } + EMP += 2 * vw; + IMP += 2 *vw; + } + } + + if (y_connectivity == 1) + { + //extend the mask to the left side of the phase volume + IMP = input_mask + frame_size + 1; + EMP = extended_mask + frame_size + 1; + for (n=1; n < volume_depth - 1; n++) + { + for (j=1; j < volume_width - 1; j++) + { + if( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP + fs - vw) == 255) && (*(IMP + vw) == 255) && + (*(IMP - fs) == 255) && (*(IMP + fs) == 255) && + (*(IMP + fs - vw - 1) == 255) && (*(IMP + vw + 1) == 255) && + (*(IMP + fs - vw + 1) == 255) && (*(IMP + vw - 1) == 255) && + (*(IMP - vw - 1) == 255) && (*(IMP + fs + vw + 1) == 255) && + (*(IMP - vw) == 255) && (*(IMP + fs + vw) == 255) && + (*(IMP - vw + 1) == 255) && (*(IMP + fs + vw - 1) == 255) && + (*(IMP - fs - 1) == 255) && (*(IMP + fs + 1) == 255) && + (*(IMP - fs + 1) == 255) && (*(IMP + fs - 1) == 255) && + (*(IMP - fs + vw - 1) == 255) && (*(IMP + 2 * fs - vw + 1) == 255) && + (*(IMP - fs + vw) == 255) && (*(IMP + 2 * fs - vw) == 255) && + (*(IMP - fs + vw + 1) == 255) && (*(IMP + 2 * fs - vw - 1) == 255) ) + { + *EMP = 255; + } + EMP++; + IMP++; + } + EMP += fs - vw + 2; + IMP += fs - vw + 2; + } + + //extend the mask to the right side of the phase volume + IMP = input_mask + 2 * frame_size - volume_width + 1; + EMP = extended_mask + 2 * frame_size - volume_width + 1; + for (n=1; n < volume_depth - 1; n++) + { + for (j=1; j < volume_width - 1; j++) + { + if( (*IMP) == 255 && (*(IMP + 1) == 255) && (*(IMP - 1) == 255) && + (*(IMP - vw) == 255) && (*(IMP - fs + vw) == 255) && + (*(IMP - fs) == 255) && (*(IMP + fs) == 255) && + (*(IMP - vw - 1) == 255) && (*(IMP - fs + vw + 1) == 255) && + (*(IMP - vw + 1) == 255) && (*(IMP - fs + vw - 1) == 255) && + (*(IMP - fs - vw - 1) == 255) && (*(IMP + vw + 1) == 255) && + (*(IMP - fs - vw + 1) == 255) && (*(IMP + vw - 1) == 255) && + (*(IMP - fs - vw) == 255) && (*(IMP + vw) == 255) && + (*(IMP - fs - 1) == 255) && (*(IMP + fs + 1) == 255) && + (*(IMP - fs + 1) == 255) && (*(IMP + fs - 1) == 255) && + (*(IMP - 2 * fs + vw - 1) == 255) && (*(IMP + fs - vw + 1) == 255) && + (*(IMP - 2 * fs + vw) == 255) && (*(IMP + fs - vw) == 255) && + (*(IMP - 2 * fs + vw + 1) == 255) && (*(IMP + fs - vw - 1) == 255) ) + { + *EMP = 255; + } + EMP++; + IMP++; + } + EMP += fs - vw + 2; + IMP += fs - vw + 2; + } + } + + if (z_connectivity == 1) + { + //extend the mask to the bottom side of the phase volume + IMP = input_mask + volume_width + 1; + EMP = extended_mask + volume_width + 1; + for (i=1; i < volume_height - 1; ++i) + { + for (j=1; j < volume_width - 1; ++j) + { + if( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && + (*(IMP - vw) == 255) && (*(IMP + vw) == 255) && + (*(IMP + fs) == 255) && (*(IMP + vs - fs) == 255) && + (*(IMP - vw - 1) == 255) && (*(IMP + vw + 1) == 255) && + (*(IMP - vw + 1) == 255) && (*(IMP + vw - 1) == 255) && + (*(IMP + vs - fs - vw - 1) == 255) && (*(IMP + fs + vw + 1) == 255) && + (*(IMP + vs - fs - vw) == 255) && (*(IMP + fs + vw) == 255) && + (*(IMP + vs - fs - vw + 1) == 255) && (*(IMP + fs + vw - 1) == 255) && + (*(IMP + vs - fs - 1) == 255) && (*(IMP + fs + 1) == 255) && + (*(IMP + vs - fs + 1) == 255) && (*(IMP + fs - 1) == 255) && + (*(IMP + vs - fs + vw - 1) == 255) && (*(IMP + fs - vw + 1) == 255) && + (*(IMP + vs - fs + vw) == 255) && (*(IMP + fs - vw) == 255) && + (*(IMP + vs - fs + vw + 1) == 255) && (*(IMP + fs - vw - 1) == 255) ) + { + *EMP = 255; + } + EMP++; + IMP++; + } + EMP += 2; + IMP += 2; + } + + //extend the mask to the top side of the phase volume + IMP = input_mask + volume_size - frame_size + volume_width + 1; + EMP = extended_mask + volume_size - frame_size + volume_width + 1; + for (i=1; i < volume_height - 1; ++i) + { + for (j=1; j < volume_width - 1; ++j) + { + if( (*IMP) == 255 && (*(IMP + 1) == 255) && (*(IMP - 1) == 255) && + (*(IMP - vw) == 255) && (*(IMP - fs + vw) == 255) && + (*(IMP - fs) == 255) && (*(IMP - vs + fs) == 255) && + (*(IMP - vw - 1) == 255) && (*(IMP + vw + 1) == 255) && + (*(IMP - vw + 1) == 255) && (*(IMP + vw - 1) == 255) && + (*(IMP - fs - vw - 1) == 255) && (*(IMP - vs + fs + vw + 1) == 255) && + (*(IMP - fs - vw + 1) == 255) && (*(IMP - vs + fs + vw - 1) == 255) && + (*(IMP - fs - vw) == 255) && (*(IMP - vs + fs + vw) == 255) && + (*(IMP - fs - 1) == 255) && (*(IMP - vs + fs + 1) == 255) && + (*(IMP - fs + 1) == 255) && (*(IMP - vs + fs - 1) == 255) && + (*(IMP - fs + vw - 1) == 255) && (*(IMP - vs + fs - vw + 1) == 255) && + (*(IMP - fs + vw) == 255) && (*(IMP - vs + fs - vw) == 255) && + (*(IMP - fs + vw + 1) == 255) && (*(IMP - vs + fs - vw - 1) == 255) ) + { + *EMP = 255; + } + EMP++; + IMP++; + } + EMP += 2; + IMP += 2; + } + } +} + +void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width, int volume_height, int volume_depth) +{ + int frame_size = volume_width * volume_height; + int volume_size = volume_width * volume_height * volume_depth; + VOXELM *voxel_pointer; + float H, V, N, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10; + float *WVP; + int n, i, j; + + WVP = wrappedVolume + frame_size + volume_width + 1; + voxel_pointer = voxel + frame_size + volume_width + 1; + for (n=1; n < volume_depth - 1; n++) + { + for (i=1; i < volume_height - 1; i++) + { + for (j=1; j < volume_width - 1; j++) + { + if (voxel_pointer->extended_mask == 255) + { + H = wrap(*(WVP - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); + V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); + N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); + D1 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1)); + D2 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + volume_width - 1)); + D3 = wrap(*(WVP - frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width + 1)); + D4 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width)); + D5 = wrap(*(WVP - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width - 1)); + D6 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); + D7 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); + D8 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); + D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); + D10 = wrap(*(WVP - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width - 1)); + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + + D7*D7 + D8*D8 + D9*D9 + D10*D10; + } + voxel_pointer++; + WVP++; + } + voxel_pointer += 2; + WVP += 2; + } + voxel_pointer += 2 * volume_width; + WVP += 2 * volume_width; + } + + if (x_connectivity == 1) + { + //calculating reliability for the front side of the phase volume...add volume_width + WVP = wrappedVolume + frame_size + volume_width; + voxel_pointer = voxel + frame_size + volume_width; + for (n=1; n < volume_depth - 1; ++n) + { + for (i=1; i < volume_height - 1; ++i) + { + if (voxel_pointer->extended_mask == 255) + { + H = wrap(*(WVP + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); + V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); + N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); + D1 = wrap(*(WVP - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1)); + D2 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + 2 * volume_width - 1)); + D3 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width + 1)); + D4 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width)); + D5 = wrap(*(WVP - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 2 * volume_width - 1)); + D6 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); + D7 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width - 1)); + D8 = wrap(*(WVP - frame_size + 2 * volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); + D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); + D10 = wrap(*(WVP - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + + D7*D7 + D8*D8 + D9*D9 + D10*D10; + } + voxel_pointer += volume_width; + WVP += volume_width; + } + voxel_pointer += 2 * volume_width; + WVP += 2 * volume_width; + } + + //calculating reliability for the rear side of the phase volume..... subtract volume_width + WVP = wrappedVolume + frame_size + 2 * volume_width - 1; + voxel_pointer = voxel + frame_size + 2 * volume_width - 1; + for (n=1; n < volume_depth - 1; ++n) + { + for (i=1; i < volume_height - 1; ++i) + { + if (voxel_pointer->extended_mask == 255) + { + H = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP - 1)); + V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); + N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); + D1 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); + D2 = wrap(*(WVP + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP - 2 * volume_width + 1)); + D3 = wrap(*(WVP - frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); + D4 = wrap(*(WVP - frame_size - 2 * volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width - 1)); + D5 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); + D6 = wrap(*(WVP - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); + D7 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width)); + D8 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 2 * volume_width + 1)); + D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); + D10 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width - 1)); + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + + D7*D7 + D8*D8 + D9*D9 + D10*D10; + } + voxel_pointer += volume_width; + WVP += volume_width; + } + voxel_pointer += 2 * volume_width; + WVP += 2 * volume_width; + } + } + + if (y_connectivity == 1) + { + //calculating reliability for the left side of the phase volume...add frame_size + WVP = wrappedVolume + frame_size + 1; + voxel_pointer = voxel + frame_size + 1; + for (n=1; n < volume_depth - 1; ++n) + { + for (j=1; j < volume_width - 1; ++j) + { + if (voxel_pointer->extended_mask == 255) + { + H = wrap(*(WVP - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); + V = wrap(*(WVP + frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); + N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); + D1 = wrap(*(WVP + frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1)); + D2 = wrap(*(WVP + frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + volume_width - 1)); + D3 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width + 1)); + D4 = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width)); + D5 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width - 1)); + D6 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); + D7 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); + D8 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + 2 * frame_size - volume_width + 1)); + D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + 2 * frame_size - volume_width)); + D10 = wrap(*(WVP - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + 2 * frame_size - volume_width - 1)); + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + + D7*D7 + D8*D8 + D9*D9 + D10*D10; + } + voxel_pointer++; + WVP++; + } + voxel_pointer += frame_size - volume_width + 2; + WVP += frame_size - volume_width + 2; + } + + //calculating reliability for the right side of the phase volume...subtract frame_size + WVP = wrappedVolume + 2 * frame_size - volume_width + 1; + voxel_pointer = voxel + 2 * frame_size - volume_width + 1; + for (n=1; n < volume_depth - 1; ++n) + { + for (j=1; j < volume_width - 1; ++j) + { + if (voxel_pointer->extended_mask == 255) + { + H = wrap(*(WVP + 1) - *WVP) - wrap(*WVP - *(WVP - 1)); + V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP - frame_size + volume_width)); + N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); + D1 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP - frame_size + volume_width + 1)); + D2 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP - frame_size + volume_width - 1)); + D3 = wrap(*(WVP - frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1) ); + D4 = wrap(*(WVP - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + volume_width - 1)); + D5 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); + D6 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); + D7 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); + D8 = wrap(*(WVP - 2 * frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); + D9 = wrap(*(WVP - 2 * frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); + D10 = wrap(*(WVP - 2 * frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width - 1)); + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + + D7*D7 + D8*D8 + D9*D9 + D10*D10; + } + voxel_pointer++; + WVP++; + } + voxel_pointer += frame_size - volume_width + 2; + WVP += frame_size - volume_width + 2; + } + } + + if (z_connectivity == 1) + { + //calculating reliability for the bottom side of the phase volume...add volume_size + WVP = wrappedVolume + volume_width + 1; + voxel_pointer = voxel + volume_width + 1; + for (i=1; i < volume_height - 1; ++i) + { + for (j=1; j < volume_width - 1; ++j) + { + if (voxel_pointer->extended_mask == 255) + { + H = wrap(*(WVP - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); + V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); + N = wrap(*(WVP + frame_size) - *WVP) - wrap(*WVP - *(WVP + volume_size - frame_size)); + D1 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1)); + D2 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + volume_width - 1)); + D3 = wrap(*(WVP + volume_size - frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width + 1)); + D4 = wrap(*(WVP + volume_size - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width)); + D5 = wrap(*(WVP + volume_size - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width - 1)); + D6 = wrap(*(WVP + volume_size - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); + D7 = wrap(*(WVP + volume_size - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); + D8 = wrap(*(WVP + volume_size - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); + D9 = wrap(*(WVP + volume_size - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); + D10 = wrap(*(WVP + volume_size - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width - 1)); + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + + D7*D7 + D8*D8 + D9*D9 + D10*D10; + } + voxel_pointer++; + WVP++; + } + voxel_pointer += 2; + WVP += 2; + } + + //calculating reliability for the top side of the phase volume...subtract volume_size + WVP = wrappedVolume + volume_size - frame_size + volume_width + 1; + voxel_pointer = voxel + volume_size - frame_size + volume_width + 1; + for (i=1; i < volume_height - 1; ++i) + { + for (j=1; j < volume_width - 1; ++j) + { + if (voxel_pointer->extended_mask == 255) + { + H = wrap(*(WVP + 1) - *WVP) - wrap(*WVP - *(WVP - 1)); + V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); + N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size)); + D1 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1)); + D2 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + volume_width - 1)); + D3 = wrap(*(WVP - frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + volume_width + 1)); + D4 = wrap(*(WVP - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + volume_width - 1)); + D5 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + volume_width)); + D6 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + 1)); + D7 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size - 1)); + D8 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size - volume_width + 1)); + D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size - volume_width)); + D10 = wrap(*(WVP - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size - volume_width - 1)); + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + + D7*D7 + D8*D8 + D9*D9 + D10*D10; + } + voxel_pointer++; + WVP++; + } + voxel_pointer += 2; + WVP += 2; + } + } +} + +//calculate the reliability of the horizontal edges of the volume +//it is calculated by adding the reliability of voxel and the relibility of +//its right neighbour +//edge is calculated between a voxel and its next neighbour +void horizontalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_height, int volume_depth) +{ + int n, i, j; + EDGE *edge_pointer = edge; + VOXELM *voxel_pointer = voxel; + + for (n=0; n < volume_depth; n++) + { + for (i = 0; i < volume_height; i++) + { + for (j = 0; j < volume_width - 1; j++) + { + if (voxel_pointer->input_mask == 255 && (voxel_pointer + 1)->input_mask == 255 ) + { + edge_pointer->pointer_1 = voxel_pointer; + edge_pointer->pointer_2 = (voxel_pointer+1); + edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer + 1)->reliability; + edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer + 1)->value); + edge_pointer++; + No_of_edges++; + } + voxel_pointer++; + } + voxel_pointer++; + } + } + if (x_connectivity == 1) + { + voxel_pointer = voxel + volume_width - 1; + for (n=0; n < volume_depth; n++) + { + for (i = 0; i < volume_height; i++) + { + if (voxel_pointer->input_mask == 255 && (voxel_pointer - volume_width + 1)->input_mask == 255 ) + { + edge_pointer->pointer_1 = voxel_pointer; + edge_pointer->pointer_2 = (voxel_pointer - volume_width + 1); + edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer - volume_width + 1)->reliability; + edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer - volume_width + 1)->value); + edge_pointer++; + No_of_edges++; + } + voxel_pointer += volume_width; + } + } + } +} + +void verticalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_height, int volume_depth) +{ + int n, i, j; + VOXELM *voxel_pointer = voxel; + EDGE *edge_pointer = edge + No_of_edges; + + for (n=0; n < volume_depth; n++) + { + for (i=0; iinput_mask == 255 && (voxel_pointer + volume_width)->input_mask == 255 ) + { + edge_pointer->pointer_1 = voxel_pointer; + edge_pointer->pointer_2 = (voxel_pointer + volume_width); + edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer + volume_width)->reliability; + edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer + volume_width)->value); + edge_pointer++; + No_of_edges++; + } + voxel_pointer++; + } + } + voxel_pointer += volume_width; + } + + int frame_size = volume_width * volume_height; + int next_voxel = frame_size - volume_width; + if (y_connectivity == 1) + { + voxel_pointer = voxel + frame_size - volume_width; + for (n=0; n < volume_depth; n++) + { + for (i = 0; i < volume_width; i++) + { + if (voxel_pointer->input_mask == 255 && (voxel_pointer - next_voxel)->input_mask == 255 ) + { + edge_pointer->pointer_1 = voxel_pointer; + edge_pointer->pointer_2 = (voxel_pointer - next_voxel); + edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer - next_voxel)->reliability; + edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer - next_voxel)->value); + edge_pointer++; + No_of_edges++; + } + voxel_pointer++; + } + voxel_pointer += next_voxel + 1; + } + } +} + +void normalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_height, int volume_depth) +{ + int n, i, j; + int frame_size = volume_width * volume_height; + int volume_size = volume_width * volume_height * volume_depth; + VOXELM *voxel_pointer = voxel; + EDGE *edge_pointer = edge + No_of_edges; + + for (n=0; n < volume_depth - 1; n++) + { + for (i=0; iinput_mask == 255 && (voxel_pointer + frame_size)->input_mask == 255 ) + { + edge_pointer->pointer_1 = voxel_pointer; + edge_pointer->pointer_2 = (voxel_pointer + frame_size); + edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer + frame_size)->reliability; + edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer + frame_size)->value); + edge_pointer++; + No_of_edges++; + } + voxel_pointer++; + } + } + } + + + int next_voxel = volume_size - frame_size; + if (z_connectivity == 1) + { + voxel_pointer = voxel + next_voxel; + for (i=0; i < volume_height; i++) + { + for (j = 0; j < volume_width; j++) + { + if (voxel_pointer->input_mask == 255 && (voxel_pointer - next_voxel)->input_mask == 255 ) + { + edge_pointer->pointer_1 = voxel_pointer; + edge_pointer->pointer_2 = (voxel_pointer - next_voxel); + edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer - next_voxel)->reliability; + edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer - next_voxel)->value); + edge_pointer++; + No_of_edges++; + } + voxel_pointer++; + } + } + } +} + +//gather the voxels of the volume into groups +void gatherVOXELs(EDGE *edge) +{ + int k; + VOXELM *VOXEL1; + VOXELM *VOXEL2; + VOXELM *group1; + VOXELM *group2; + EDGE *pointer_edge = edge; + int incremento; + + for (k = 0; k < No_of_edges; k++) + { + VOXEL1 = pointer_edge->pointer_1; + VOXEL2 = pointer_edge->pointer_2; + + //VOXELM 1 and VOXELM 2 belong to different groups + //initially each voxel is in a group by itself and one voxel can construct a group + //no else or else if to this if + if (VOXEL2->head != VOXEL1->head) + { + //VOXELM 2 is alone in its group + //merge this voxel with VOXELM 1 group and find the number of 2 pi to add + //to or subtract to unwrap it + if ((VOXEL2->next == NULL) && (VOXEL2->head == VOXEL2)) + { + VOXEL1->head->last->next = VOXEL2; + VOXEL1->head->last = VOXEL2; + (VOXEL1->head->number_of_voxels_in_group)++; + VOXEL2->head=VOXEL1->head; + VOXEL2->increment = VOXEL1->increment-pointer_edge->increment; + } + + //VOXELM 1 is alone in its group + //merge this voxel with VOXELM 2 group and find the number of 2 pi to add + //to or subtract to unwrap it + else if ((VOXEL1->next == NULL) && (VOXEL1->head == VOXEL1)) + { + VOXEL2->head->last->next = VOXEL1; + VOXEL2->head->last = VOXEL1; + (VOXEL2->head->number_of_voxels_in_group)++; + VOXEL1->head = VOXEL2->head; + VOXEL1->increment = VOXEL2->increment+pointer_edge->increment; + } + + //VOXELM 1 and VOXELM 2 both have groups + else + { + group1 = VOXEL1->head; + group2 = VOXEL2->head; + //if the no. of voxels in VOXELM 1 group is larger than the no. of voxels + //in VOXELM 2 group. Merge VOXELM 2 group to VOXELM 1 group + //and find the number of wraps between VOXELM 2 group and VOXELM 1 group + //to unwrap VOXELM 2 group with respect to VOXELM 1 group. + //the no. of wraps will be added to VOXELM 2 grop in the future + if (group1->number_of_voxels_in_group > group2->number_of_voxels_in_group) + { + //merge VOXELM 2 with VOXELM 1 group + group1->last->next = group2; + group1->last = group2->last; + group1->number_of_voxels_in_group = group1->number_of_voxels_in_group + group2->number_of_voxels_in_group; + incremento = VOXEL1->increment-pointer_edge->increment - VOXEL2->increment; + //merge the other voxels in VOXELM 2 group to VOXELM 1 group + while (group2 != NULL) + { + group2->head = group1; + group2->increment += incremento; + group2 = group2->next; + } + } + + //if the no. of voxels in VOXELM 2 group is larger than the no. of voxels + //in VOXELM 1 group. Merge VOXELM 1 group to VOXELM 2 group + //and find the number of wraps between VOXELM 2 group and VOXELM 1 group + //to unwrap VOXELM 1 group with respect to VOXELM 2 group. + //the no. of wraps will be added to VOXELM 1 grop in the future + else + { + //merge VOXELM 1 with VOXELM 2 group + group2->last->next = group1; + group2->last = group1->last; + group2->number_of_voxels_in_group = group2->number_of_voxels_in_group + group1->number_of_voxels_in_group; + incremento = VOXEL2->increment + pointer_edge->increment - VOXEL1->increment; + //merge the other voxels in VOXELM 2 group to VOXELM 1 group + while (group1 != NULL) + { + group1->head = group2; + group1->increment += incremento; + group1 = group1->next; + } // while + + } // else + } //else + } //if + pointer_edge++; + } +} + +//unwrap the volume +void unwrapVolume(VOXELM *voxel, int volume_width, int volume_height, int volume_depth) +{ + int i; + int volume_size = volume_width * volume_height * volume_depth; + VOXELM *voxel_pointer=voxel; + + for (i = 0; i < volume_size; i++) + { + voxel_pointer->value += TWOPI * (float)(voxel_pointer->increment); + voxel_pointer++; + } +} + +//set the masked voxels (mask = 0) to the minimum of the unwrapper phase +void maskVolume(VOXELM *voxel, unsigned char *input_mask, int volume_width, int volume_height, int volume_depth) +{ + int volume_width_plus_one = volume_width + 1; + int volume_height_plus_one = volume_height + 1; + int volume_width_minus_one = volume_width - 1; + int volume_height_minus_one = volume_height - 1; + + VOXELM *pointer_voxel = voxel; + unsigned char *IMP = input_mask; //input mask pointer + float min=99999999.; + int i, j; + int volume_size = volume_width * volume_height * volume_depth; + + //find the minimum of the unwrapped phase + for (i = 0; i < volume_size; i++) + { + if ((pointer_voxel->value < min) && (*IMP == 255)) + min = pointer_voxel->value; + + pointer_voxel++; + IMP++; + } + + pointer_voxel = voxel; + IMP = input_mask; + + //set the masked voxels to minimum + for (i = 0; i < volume_size; i++) + { + if ((*IMP) == 0) + { + pointer_voxel->value = min; + } + pointer_voxel++; + IMP++; + } +} + +//the input to this unwrapper is an array that contains the wrapped phase map. +//copy the volume on the buffer passed to this unwrapper to over-write the unwrapped +//phase map on the buffer of the wrapped phase map. +void returnVolume(VOXELM *voxel, float *unwrappedVolume, int volume_width, int volume_height, int volume_depth) +{ + int i; + int volume_size = volume_width * volume_height * volume_depth; + float *unwrappedVolume_pointer = unwrappedVolume; + VOXELM *voxel_pointer = voxel; + + for (i=0; i < volume_size; i++) + { + *unwrappedVolume_pointer = voxel_pointer->value; + voxel_pointer++; + unwrappedVolume_pointer++; + } +} + +//the main function of the unwrapper +int main() +{ + float *WrappedVolume, *UnwrappedVolume; + unsigned char *input_mask, *extended_mask; + int volume_width = 64; + int volume_height = 64; + int volume_depth = 46; + int volume_size = volume_height * volume_width * volume_depth; + int No_of_Edges_initially = 3 * volume_width * volume_height * volume_depth; + + WrappedVolume = (float *) calloc(volume_size, sizeof(float)); + read_data("MRI wrapped phase volume 64X64X46.dat", WrappedVolume, volume_size); + + input_mask = (unsigned char *) calloc(volume_size, sizeof(unsigned char)); + extended_mask = (unsigned char *) calloc(volume_size, sizeof(unsigned char)); + read_mask("mask3d.dat", input_mask, volume_size); + + UnwrappedVolume = (float *) calloc(volume_size, sizeof(float)); + VOXELM *voxel = (VOXELM *) calloc(volume_size, sizeof(VOXELM)); + EDGE *edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE));; + + extend_mask(input_mask, extended_mask, volume_width, volume_height, volume_depth); + + initialiseVOXELs(WrappedVolume, input_mask, extended_mask, voxel, volume_width, volume_height, volume_depth); + + calculate_reliability(WrappedVolume, voxel, volume_width, volume_height, volume_depth); + + horizontalEDGEs(voxel, edge, volume_width, volume_height, volume_depth); + + verticalEDGEs(voxel, edge, volume_width, volume_height, volume_depth); + + normalEDGEs(voxel, edge, volume_width, volume_height, volume_depth); + + //sort the EDGEs depending on their reiability. The VOXELs with higher relibility (small value) first + quicker_sort(edge, edge + No_of_edges - 1); + + //gather VOXELs into groups + gatherVOXELs(edge); + + unwrapVolume(voxel, volume_width, volume_height, volume_depth); + + maskVolume(voxel, input_mask, volume_width, volume_height, volume_depth); + + //copy the volume from VOXELM structure to the unwrapped phase array passed to this function + returnVolume(voxel, UnwrappedVolume, volume_width, volume_height, volume_depth); + + free(edge); + free(voxel); + + write_data("unwrapped.dat", UnwrappedVolume, volume_size); + free(UnwrappedVolume); + free(WrappedVolume); + free(input_mask); + + return 1; +} From 3d4fb9559c8bf068d6b24aabe20bc79a9683cb26 Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Sun, 13 May 2012 18:44:53 +0200 Subject: [PATCH 029/577] unwrap: moved pure python code from unwrap2D.pyx to unwrap.py, allocate output array in pure python --- unwrap2D/setup.py | 1 - unwrap2D/test_unwrap.py | 2 +- unwrap2D/unwrap.py | 20 ++++++++++++++++++++ unwrap2D/unwrap2D.pyx | 27 ++++----------------------- 4 files changed, 25 insertions(+), 25 deletions(-) create mode 100644 unwrap2D/unwrap.py diff --git a/unwrap2D/setup.py b/unwrap2D/setup.py index 284d8374..a8be8565 100644 --- a/unwrap2D/setup.py +++ b/unwrap2D/setup.py @@ -7,7 +7,6 @@ import numpy as np ext_modules = [ Extension('unwrap2D', ['unwrap2D.pyx', - #'Miguel_2D_unwrapper_with_mask_and_wrap_around_option.cpp', 'Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c', ], include_dirs = [np.get_include(),], diff --git a/unwrap2D/test_unwrap.py b/unwrap2D/test_unwrap.py index 930cf18b..af94c934 100644 --- a/unwrap2D/test_unwrap.py +++ b/unwrap2D/test_unwrap.py @@ -1,5 +1,5 @@ from numpy.testing import * -from unwrap2D import unwrap2D +from unwrap import unwrap2D import numpy as np from numpy import outer, arange, ones, abs, empty, power, indices diff --git a/unwrap2D/unwrap.py b/unwrap2D/unwrap.py new file mode 100644 index 00000000..8a61a779 --- /dev/null +++ b/unwrap2D/unwrap.py @@ -0,0 +1,20 @@ +import numpy as np +from unwrap2D import _unwrap2D + +def unwrap2D(wrapped_array, wrap_around_x = False, wrap_around_y = False): + wrapped_array = np.require(wrapped_array, np.float32, ['C']) + wrapped_array_masked = np.ma.asarray(wrapped_array) + unwrapped_array = np.empty_like(wrapped_array_masked.data) + + _unwrap2D(wrapped_array_masked.data, + np.ma.getmaskarray(wrapped_array_masked).astype(np.uint8), + unwrapped_array, + wrap_around_x, wrap_around_y) + if np.ma.isMaskedArray(wrapped_array): + return np.ma.array(unwrapped_array, mask = wrapped_array_masked.mask) + else: + return unwrapped_array + + #TODO: set_fill to minimum value + #TODO: check for empty mask, not a single contiguous pixel + diff --git a/unwrap2D/unwrap2D.pyx b/unwrap2D/unwrap2D.pyx index 9d734dec..4d2a7be0 100644 --- a/unwrap2D/unwrap2D.pyx +++ b/unwrap2D/unwrap2D.pyx @@ -1,41 +1,22 @@ -import numpy as np -cimport numpy as np - -import numpy.ma - +#import numpy as np +#cimport numpy as np cdef extern int unwrap(float* wrapped_image, float* unwrapped_image, unsigned char* input_mask, int image_width, int image_height, int wrap_around_x, int wrap_around_y) -def unwrap2D(input, wrap_around_x = False, wrap_around_y = False): - - masked_array = numpy.ma.asarray(input, dtype = np.float32) - unwrapped_array = _unwrap2D(masked_array.data, - numpy.ma.getmaskarray(masked_array).astype(np.uint8), - wrap_around_x, wrap_around_y) - if numpy.ma.isarray(input): - return numpy.ma.array(unwrapped_array, mask = input.mask) - else: - return unwrapped_array - - #TODO: set_fill to minimum value - - -cdef _unwrap2D(float[:,::1] array, +def _unwrap2D(float[:,::1] array, unsigned char[:,::1] mask, + float[:,::1] unwrapped_array, wrap_around_x, wrap_around_y): - cdef float[:,::1] unwrapped_array = np.empty_like(array) cdef int h = array.shape[0] cdef int w = array.shape[1] - #TODO: check for masked array/ unwrap(&array[0,0], &unwrapped_array[0,0], &mask[0,0], array.shape[0], array.shape[1], wrap_around_x, wrap_around_y, ) - return np.asarray(unwrapped_array) From cf04965d21bf3d67eec29f1aa6ecea57eb6c595a Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Sun, 13 May 2012 22:00:51 +0200 Subject: [PATCH 030/577] unwrap: removed use of global variables --- ...wrapper_with_mask_and_wrap_around_option.c | 42 ++++++++----------- unwrap2D/unwrap2D.pyx | 30 +++++++------ 2 files changed, 32 insertions(+), 40 deletions(-) diff --git a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c index 14fe65de..131ec517 100644 --- a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c +++ b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c @@ -13,7 +13,6 @@ //When the mask is 0 this means that the pixel is invalid (noisy or corrupted pixel) //This program takes into consideration the image wrap around problem encountered in MRI imaging. -//TODO stdlib instead of malloc.h ? (calloc?) #include #include #include @@ -35,11 +34,6 @@ typedef struct int no_of_edges; } params_t; - -//int x_connectivity = 1; -//int y_connectivity = 1; -int No_of_edges = 0; - //PIXELM information struct pixelm { @@ -71,7 +65,6 @@ struct edge typedef struct edge EDGE; - //---------------start quicker_sort algorithm -------------------------------- #define swap(x,y) {EDGE t; t=x; x=y; y=t;} #define order(x,y) if (x.reliab > y.reliab) swap(x,y) @@ -424,6 +417,7 @@ void horizontalEDGEs(PIXELM *pixel, EDGE *edge, int i, j; EDGE *edge_pointer = edge; PIXELM *pixel_pointer = pixel; + int no_of_edges = params->no_of_edges; for (i = 0; i < image_height; i++) { @@ -436,7 +430,7 @@ void horizontalEDGEs(PIXELM *pixel, EDGE *edge, edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + 1)->reliability; edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + 1)->value); edge_pointer++; - No_of_edges++; + no_of_edges++; } pixel_pointer++; } @@ -455,11 +449,12 @@ void horizontalEDGEs(PIXELM *pixel, EDGE *edge, edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width + 1)->reliability; edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width + 1)->value); edge_pointer++; - No_of_edges++; + no_of_edges++; } pixel_pointer+=image_width; } } + params->no_of_edges = no_of_edges; } //calculate the reliability of the vertical edges of the image @@ -470,8 +465,9 @@ void verticalEDGEs(PIXELM *pixel, EDGE *edge, params_t *params) { int i, j; + int no_of_edges = params->no_of_edges; PIXELM *pixel_pointer = pixel; - EDGE *edge_pointer = edge + No_of_edges; + EDGE *edge_pointer = edge + no_of_edges; for (i=0; i < image_height - 1; i++) { @@ -484,7 +480,7 @@ void verticalEDGEs(PIXELM *pixel, EDGE *edge, edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + image_width)->reliability; edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + image_width)->value); edge_pointer++; - No_of_edges++; + no_of_edges++; } pixel_pointer++; } //j loop @@ -503,15 +499,16 @@ void verticalEDGEs(PIXELM *pixel, EDGE *edge, edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width *(image_height - 1))->reliability; edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width *(image_height - 1))->value); edge_pointer++; - No_of_edges++; + no_of_edges++; } pixel_pointer++; } } + params->no_of_edges = no_of_edges; } //gather the pixels of the image into groups -void gatherPIXELs(EDGE *edge, int image_width, int image_height) +void gatherPIXELs(EDGE *edge, params_t *params) { int k; PIXELM *PIXEL1; @@ -521,7 +518,7 @@ void gatherPIXELs(EDGE *edge, int image_width, int image_height) EDGE *pointer_edge = edge; int incremento; - for (k = 0; k < No_of_edges; k++) + for (k = 0; k < params->no_of_edges; k++) { PIXEL1 = pointer_edge->pointer_1; PIXEL2 = pointer_edge->pointer_2; @@ -683,14 +680,14 @@ void returnImage(PIXELM *pixel, float *unwrapped_image, int image_width, int im } //the main function of the unwrapper -int unwrap(float* wrapped_image, float* UnwrappedImage, unsigned char* input_mask, - int image_width, int image_height, - int wrap_around_x, int wrap_around_y) +unwrap2D(float* wrapped_image, float* UnwrappedImage, unsigned char* input_mask, + int image_width, int image_height, + int wrap_around_x, int wrap_around_y) { + params_t params = {TWOPI, 0, 0, 0}; unsigned char *extended_mask; int image_size = image_height * image_width; int No_of_Edges_initially = 2 * image_width * image_height; - params_t params = {TWOPI, 0, 0, 0}; extended_mask = (unsigned char *) calloc(image_size, sizeof(unsigned char)); PIXELM *pixel = (PIXELM *) calloc(image_size, sizeof(PIXELM)); @@ -704,23 +701,20 @@ int unwrap(float* wrapped_image, float* UnwrappedImage, unsigned char* input_mas //sort the EDGEs depending on their reiability. The PIXELs with higher //relibility (small value) first - quicker_sort(edge, edge + No_of_edges - 1); + quicker_sort(edge, edge + params.no_of_edges - 1); //gather PIXELs into groups - gatherPIXELs(edge, image_width, image_height); + gatherPIXELs(edge, ¶ms); unwrapImage(pixel, image_width, image_height); maskImage(pixel, input_mask, image_width, image_height); //copy the image from PIXELM structure to the unwrapped phase array //passed to this function + //TODO: replace by (cython?) function to directly write into numpy array ? returnImage(pixel, UnwrappedImage, image_width, image_height); free(edge); free(pixel); free(extended_mask); - - No_of_edges = 0; - return 1; - } diff --git a/unwrap2D/unwrap2D.pyx b/unwrap2D/unwrap2D.pyx index 4d2a7be0..2dd0b33c 100644 --- a/unwrap2D/unwrap2D.pyx +++ b/unwrap2D/unwrap2D.pyx @@ -1,22 +1,20 @@ -#import numpy as np -#cimport numpy as np -cdef extern int unwrap(float* wrapped_image, - float* unwrapped_image, - unsigned char* input_mask, - int image_width, int image_height, - int wrap_around_x, int wrap_around_y) +cdef extern unwrap2D(float* wrapped_image, + float* unwrapped_image, + unsigned char* input_mask, + int image_width, int image_height, + int wrap_around_x, int wrap_around_y) def _unwrap2D(float[:,::1] array, - unsigned char[:,::1] mask, - float[:,::1] unwrapped_array, - wrap_around_x, wrap_around_y): + unsigned char[:,::1] mask, + float[:,::1] unwrapped_array, + wrap_around_x, wrap_around_y): cdef int h = array.shape[0] cdef int w = array.shape[1] - unwrap(&array[0,0], - &unwrapped_array[0,0], - &mask[0,0], - array.shape[0], array.shape[1], - wrap_around_x, wrap_around_y, - ) + unwrap2D(&array[0,0], + &unwrapped_array[0,0], + &mask[0,0], + array.shape[0], array.shape[1], + wrap_around_x, wrap_around_y, + ) From 1b3b6985f1e06deb544c75aa88f79d5624bae0d8 Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Sun, 13 May 2012 22:01:57 +0200 Subject: [PATCH 031/577] unwrap: added 3D unwrapping (untested) --- ...apper_with_mask_and_wrap_around_option.cpp | 1673 ++++++++--------- unwrap2D/setup.py | 8 +- unwrap2D/unwrap3D.pyx | 18 + 3 files changed, 842 insertions(+), 857 deletions(-) create mode 100644 unwrap2D/unwrap3D.pyx diff --git a/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.cpp b/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.cpp index 6a4c8308..84b0b4ab 100644 --- a/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.cpp +++ b/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.cpp @@ -1,3 +1,5 @@ +// 3D phase unwrapping, modified for inclusion in scipy by Gregor Thalhammer + //This program was written by Hussein Abdul-Rahman and Munther Gdeisat to program the three-dimensional phase unwrapper //entitled "Fast three-dimensional phase-unwrapping algorithm based on sorting by //reliability following a noncontinuous path" @@ -13,82 +15,57 @@ //When the mask is 0 this means that the voxel is invalid (noisy or corrupted voxel) //This program takes into consideration the image wrap around problem encountered in MRI imaging. -#include -//#include "stdafx.h" #include #include #include static float PI = 3.141592654; static float TWOPI = 6.283185307; -int x_connectivity = 1; -int y_connectivity = 1; -int z_connectivity = 1 -; -int No_of_edges = 0; + +#define NOMASK 0 +#define MASK 1 + +typedef struct +{ + float mod; + int x_connectivity; + int y_connectivity; + int z_connectivity; + int no_of_edges; +} params_t; //VOXELM information -struct VOXELM +struct voxelm { - //int x; //x coordinate of the voxel - //int y; //y coordinate - //int z; //z coordinate - int increment; //No. of 2*pi to add to the voxel to unwrap it - int number_of_voxels_in_group; //No. of voxel in the voxel group - float value; //value of the voxel - float reliability; - unsigned char input_mask; //0 voxel is masked. 255 voxel is not masked - unsigned char extended_mask; //0 voxel is masked. 255 voxel is not masked - int group; //group No. - int new_group; - struct VOXELM *head; //pointer to the first voxel in the group in the linked list - struct VOXELM *last; //pointer to the last voxel in the group - struct VOXELM *next; //pointer to the next voxel in the group + int increment; //No. of 2*pi to add to the voxel to unwrap it + int number_of_voxels_in_group;//No. of voxel in the voxel group + float value; //value of the voxel + float reliability; + unsigned char input_mask; //MASK voxel is masked. NOMASK voxel is not masked + unsigned char extended_mask; //MASK voxel is masked. NOMASK voxel is not masked + int group; //group No. + int new_group; + struct voxelm *head; //pointer to the first voxel in the group in the linked list + struct voxelm *last; //pointer to the last voxel in the group + struct voxelm *next; //pointer to the next voxel in the group }; +typedef struct voxelm VOXELM; //the EDGE is the line that connects two voxels. //if we have S voxels, then we have S horizontal edges and S vertical edges -struct EDGE +struct edge { - float reliab; //reliabilty of the edge and it depends on the two voxels - VOXELM *pointer_1; //pointer to the first voxel - VOXELM *pointer_2; //pointer to the second voxel - int increment; //No. of 2*pi to add to one of the voxels to unwrap it with respect to the second -}; + float reliab; //reliabilty of the edge and it depends on the two voxels + VOXELM *pointer_1; //pointer to the first voxel + VOXELM *pointer_2; //pointer to the second voxel + int increment; //No. of 2*pi to add to one of the + //voxels to unwrap it with respect to + //the second +}; -void read_data(char *inputfile,float *Data, int length) -{ - printf("Reading the Wrapped Values from Binary File.............>"); - FILE *ifptr; - ifptr = fopen(inputfile,"rb"); - if(ifptr == NULL) printf("Error opening the file\n"); - fread(Data,sizeof(float),length,ifptr); - fclose(ifptr); - printf(" Done.\n"); -} +typedef struct edge EDGE; -void write_data(char *outputfile,float *Data,int length) -{ - printf("Writing the Wrapped Values to Binary File.............>"); - FILE *ifptr; - ifptr = fopen(outputfile,"wb"); - if(ifptr == NULL) printf("Error opening the file\n"); - fwrite(Data,sizeof(float),length,ifptr); - fclose(ifptr); - printf(" Done.\n"); -} - -void read_mask(char *inputfile,unsigned char *Data, int length) -{ - printf("Reading the mask from Binary File.............>"); - FILE *ifptr; - ifptr = fopen(inputfile,"rb"); - if(ifptr == NULL) printf("Error opening the file\n"); - fread(Data,sizeof(char),length,ifptr); - fclose(ifptr); - printf(" Done.\n"); -} //---------------start quicker_sort algorithm -------------------------------- #define swap(x,y) {EDGE t; t=x; x=y; y=t;} #define order(x,y) if (x.reliab > y.reliab) swap(x,y) @@ -162,927 +139,911 @@ void quicker_sort(EDGE *left, EDGE *right) //--------------end quicker_sort algorithm ----------------------------------- -//--------------------start initialse voxels ---------------------------------- -//initialse voxels. See the explanation of the voxel class above. +//--------------------start initialize voxels ---------------------------------- +//initiale voxels. See the explanation of the voxel class above. //initially every voxel is assumed to belong to a group consisting of only itself void initialiseVOXELs(float *WrappedVolume, unsigned char *input_mask, unsigned char *extended_mask, VOXELM *voxel, int volume_width, int volume_height, int volume_depth) { - VOXELM *voxel_pointer = voxel; - float *wrapped_volume_pointer = WrappedVolume; - unsigned char *input_mask_pointer = input_mask; - unsigned char *extended_mask_pointer = extended_mask; - int n, i, j; + VOXELM *voxel_pointer = voxel; + float *wrapped_volume_pointer = WrappedVolume; + unsigned char *input_mask_pointer = input_mask; + unsigned char *extended_mask_pointer = extended_mask; + int n, i, j; - for (n=0; n < volume_depth; n++) - { - for (i=0; i < volume_height; i++) + for (n=0; n < volume_depth; n++) + { + for (i=0; i < volume_height; i++) { - for (j=0; j < volume_width; j++) - { - //voxel_pointer->x = j; - //voxel_pointer->y = i; - //voxel_pointer->z = n; - voxel_pointer->increment = 0; - voxel_pointer->number_of_voxels_in_group = 1; - voxel_pointer->value = *wrapped_volume_pointer; - voxel_pointer->reliability = 9999999 + rand(); - voxel_pointer->input_mask = *input_mask_pointer; - voxel_pointer->extended_mask = *extended_mask_pointer; - voxel_pointer->head = voxel_pointer; - voxel_pointer->last = voxel_pointer; - voxel_pointer->next = NULL; - voxel_pointer->new_group = 0; - voxel_pointer->group = -1; - voxel_pointer++; - wrapped_volume_pointer++; - input_mask_pointer++; - extended_mask_pointer++; - } + for (j=0; j < volume_width; j++) + { + voxel_pointer->increment = 0; + voxel_pointer->number_of_voxels_in_group = 1; + voxel_pointer->value = *wrapped_volume_pointer; + voxel_pointer->reliability = 9999999 + rand(); + voxel_pointer->input_mask = *input_mask_pointer; + voxel_pointer->extended_mask = *extended_mask_pointer; + voxel_pointer->head = voxel_pointer; + voxel_pointer->last = voxel_pointer; + voxel_pointer->next = NULL; + voxel_pointer->new_group = 0; + voxel_pointer->group = -1; + voxel_pointer++; + wrapped_volume_pointer++; + input_mask_pointer++; + extended_mask_pointer++; + } } - } + } } -//-------------------end initialise voxels ----------- +//-------------------end initialize voxels ----------- //gamma function in the paper float wrap(float voxel_value) { - float wrapped_voxel_value; - if (voxel_value > PI) wrapped_voxel_value = voxel_value - TWOPI; - else if (voxel_value < -PI) wrapped_voxel_value = voxel_value + TWOPI; - else wrapped_voxel_value = voxel_value; - return wrapped_voxel_value; + float wrapped_voxel_value; + if (voxel_value > PI) wrapped_voxel_value = voxel_value - TWOPI; + else if (voxel_value < -PI) wrapped_voxel_value = voxel_value + TWOPI; + else wrapped_voxel_value = voxel_value; + return wrapped_voxel_value; } // voxelL_value is the left voxel, voxelR_value is the right voxel int find_wrap(float voxelL_value, float voxelR_value) { - float difference; - int wrap_value; - difference = voxelL_value - voxelR_value; + float difference; + int wrap_value; + difference = voxelL_value - voxelR_value; - if (difference > PI) wrap_value = -1; - else if (difference < -PI) wrap_value = 1; - else wrap_value = 0; + if (difference > PI) wrap_value = -1; + else if (difference < -PI) wrap_value = 1; + else wrap_value = 0; - return wrap_value; + return wrap_value; } -void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int volume_width, int volume_height, int volume_depth) +void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int volume_width, int volume_height, int volume_depth, params_t *params) { - int n, i, j; - int vw = volume_width, vh = volume_height, vd = volume_depth; - int fs = volume_width * volume_height; //frame size - int frame_size = volume_width * volume_height; - int volume_size = volume_width * volume_height * volume_depth; //volume size - int vs = volume_size; - unsigned char *IMP = input_mask + frame_size + volume_width + 1; //input mask pointer - unsigned char *EMP = extended_mask + frame_size + volume_width + 1; //extended mask pointer + int n, i, j; + int vw = volume_width, vh = volume_height, vd = volume_depth; + int fs = volume_width * volume_height; //frame size + int frame_size = volume_width * volume_height; + int volume_size = volume_width * volume_height * volume_depth; //volume size + int vs = volume_size; + unsigned char *IMP = input_mask + frame_size + volume_width + 1; //input mask pointer + unsigned char *EMP = extended_mask + frame_size + volume_width + 1; //extended mask pointer - //extend the mask for the volume except borders - for (n=1; n < volume_depth - 1; n++) - { - for (i=1; i < volume_height - 1; i++) + //extend the mask for the volume except borders + for (n=1; n < volume_depth - 1; n++) + { + for (i=1; i < volume_height - 1; i++) { - for (j=1; j < volume_width - 1; j++) - { - if( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP + vw) == 255) && (*(IMP + vw - 1) == 255) && (*(IMP + vw + 1) == 255) && - (*(IMP - vw) == 255) && (*(IMP - vw - 1) == 255) && (*(IMP - vw + 1) == 255) && - (*(IMP + fs) == 255) && (*(IMP + fs - 1) == 255) && (*(IMP + fs + 1) == 255) && - (*(IMP + fs - vw) == 255) && (*(IMP + fs - vw - 1) == 255) && (*(IMP + fs - vw + 1) == 255) && - (*(IMP + fs + vw) == 255) && (*(IMP + fs + vw - 1) == 255) && (*(IMP + fs + vw + 1) == 255) && - (*(IMP - fs) == 255) && (*(IMP - fs - 1) == 255) && (*(IMP - fs + 1) == 255) && - (*(IMP - fs - vw) == 255) && (*(IMP - fs - vw - 1) == 255) && (*(IMP - fs - vw + 1) == 255) && - (*(IMP - fs + vw) == 255) && (*(IMP - fs + vw - 1) == 255) && (*(IMP - fs + vw + 1) == 255)) - { - *EMP = 255; - } - ++EMP; - ++IMP; - } - EMP += 2; - IMP += 2; + for (j=1; j < volume_width - 1; j++) + { + if( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP + vw) == NOMASK) && (*(IMP + vw - 1) == NOMASK) && (*(IMP + vw + 1) == NOMASK) && + (*(IMP - vw) == NOMASK) && (*(IMP - vw - 1) == NOMASK) && (*(IMP - vw + 1) == NOMASK) && + (*(IMP + fs) == NOMASK) && (*(IMP + fs - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && + (*(IMP + fs - vw) == NOMASK) && (*(IMP + fs - vw - 1) == NOMASK) && (*(IMP + fs - vw + 1) == NOMASK) && + (*(IMP + fs + vw) == NOMASK) && (*(IMP + fs + vw - 1) == NOMASK) && (*(IMP + fs + vw + 1) == NOMASK) && + (*(IMP - fs) == NOMASK) && (*(IMP - fs - 1) == NOMASK) && (*(IMP - fs + 1) == NOMASK) && + (*(IMP - fs - vw) == NOMASK) && (*(IMP - fs - vw - 1) == NOMASK) && (*(IMP - fs - vw + 1) == NOMASK) && + (*(IMP - fs + vw) == NOMASK) && (*(IMP - fs + vw - 1) == NOMASK) && (*(IMP - fs + vw + 1) == NOMASK)) + { + *EMP = NOMASK; } - EMP += 2 * volume_width; - IMP += 2 * volume_width; - } + ++EMP; + ++IMP; + } + EMP += 2; + IMP += 2; + } + EMP += 2 * volume_width; + IMP += 2 * volume_width; + } - if (x_connectivity == 1) + if (params->x_connectivity == 1) + { + //extend the mask to the front side of the phase volume + IMP = input_mask + frame_size + volume_width; //input mask pointer + EMP = extended_mask + frame_size + volume_width; //extended mask pointer + for (n=1; n < volume_depth - 1; n++) { - //extend the mask to the front side of the phase volume - IMP = input_mask + frame_size + volume_width; //input mask pointer - EMP = extended_mask + frame_size + volume_width; //extended mask pointer - for (n=1; n < volume_depth - 1; n++) - { - for (i=1; i < volume_height - 1; i++) - { - if( (*IMP) == 255 && (*(IMP + vw - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP - vw) == 255) && (*(IMP + vw) == 255) && - (*(IMP - fs) == 255) && (*(IMP + fs) == 255) && - (*(IMP - 1) == 255) && (*(IMP + vw + 1) == 255) && - (*(IMP - vw + 1) == 255) && (*(IMP + 2 * vw - 1) == 255) && - (*(IMP - fs - 1) == 255) && (*(IMP + fs + vw + 1) == 255) && - (*(IMP - fs - vw) == 255) && (*(IMP + fs + vw) == 255) && - (*(IMP - fs - vw + 1) == 255) && (*(IMP + fs + 2 * vw - 1) == 255) && - (*(IMP - fs + vw - 1) == 255) && (*(IMP + fs + 1) == 255) && - (*(IMP - fs + 1) == 255) && (*(IMP + fs + vw - 1) == 255) && - (*(IMP - fs + 2 * vw - 1) == 255) && (*(IMP + fs - vw + 1) == 255) && - (*(IMP - fs + vw) == 255) && (*(IMP + fs - vw) == 255) && - (*(IMP - fs + vw + 1) == 255) && (*(IMP + fs - 1) == 255) ) - { - *EMP = 255; - } - EMP += vw; - IMP += vw; - } - EMP += 2 * vw; - IMP += 2 *vw; - } - - //extend the mask to the rear side of the phase volume - IMP = input_mask + frame_size + 2 * volume_width - 1; //input mask pointer - EMP = extended_mask + frame_size + 2 * volume_width - 1; //extended mask pointer - for (n=1; n < volume_depth - 1; n++) - { - for (i=1; i < volume_height - 1; i++) - { - if( (*IMP) == 255 && (*(IMP - vw + 1) == 255) && (*(IMP - 1) == 255) && - (*(IMP - vw) == 255) && (*(IMP + vw) == 255) && - (*(IMP - fs) == 255) && (*(IMP + fs) == 255) && - (*(IMP - vw - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP + vw - 1) == 255) && (*(IMP - 2 * vw + 1) == 255) && - (*(IMP - fs - vw - 1) == 255) && (*(IMP + fs + 1) == 255) && - (*(IMP - fs - 2 * vw + 1) == 255) && (*(IMP + fs + vw - 1) == 255) && - (*(IMP - fs - 1) == 255) && (*(IMP + fs - vw + 1) == 255) && - (*(IMP - fs - vw + 1) == 255) && (*(IMP + fs - 1) == 255) && - (*(IMP - fs - vw) == 255) && (*(IMP + fs + vw) == 255) && - (*(IMP - fs + vw - 1) == 255) && (*(IMP + fs - 2 * vw + 1) == 255) && - (*(IMP - fs + vw) == 255) && (*(IMP + fs - vw) == 255) && - (*(IMP - fs + 1) == 255) && (*(IMP + fs - vw - 1) == 255) ) - { - *EMP = 255; - } - EMP += vw; - IMP += vw; - } - EMP += 2 * vw; - IMP += 2 *vw; - } - } - - if (y_connectivity == 1) - { - //extend the mask to the left side of the phase volume - IMP = input_mask + frame_size + 1; - EMP = extended_mask + frame_size + 1; - for (n=1; n < volume_depth - 1; n++) - { - for (j=1; j < volume_width - 1; j++) - { - if( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP + fs - vw) == 255) && (*(IMP + vw) == 255) && - (*(IMP - fs) == 255) && (*(IMP + fs) == 255) && - (*(IMP + fs - vw - 1) == 255) && (*(IMP + vw + 1) == 255) && - (*(IMP + fs - vw + 1) == 255) && (*(IMP + vw - 1) == 255) && - (*(IMP - vw - 1) == 255) && (*(IMP + fs + vw + 1) == 255) && - (*(IMP - vw) == 255) && (*(IMP + fs + vw) == 255) && - (*(IMP - vw + 1) == 255) && (*(IMP + fs + vw - 1) == 255) && - (*(IMP - fs - 1) == 255) && (*(IMP + fs + 1) == 255) && - (*(IMP - fs + 1) == 255) && (*(IMP + fs - 1) == 255) && - (*(IMP - fs + vw - 1) == 255) && (*(IMP + 2 * fs - vw + 1) == 255) && - (*(IMP - fs + vw) == 255) && (*(IMP + 2 * fs - vw) == 255) && - (*(IMP - fs + vw + 1) == 255) && (*(IMP + 2 * fs - vw - 1) == 255) ) - { - *EMP = 255; - } - EMP++; - IMP++; - } - EMP += fs - vw + 2; - IMP += fs - vw + 2; - } - - //extend the mask to the right side of the phase volume - IMP = input_mask + 2 * frame_size - volume_width + 1; - EMP = extended_mask + 2 * frame_size - volume_width + 1; - for (n=1; n < volume_depth - 1; n++) - { - for (j=1; j < volume_width - 1; j++) - { - if( (*IMP) == 255 && (*(IMP + 1) == 255) && (*(IMP - 1) == 255) && - (*(IMP - vw) == 255) && (*(IMP - fs + vw) == 255) && - (*(IMP - fs) == 255) && (*(IMP + fs) == 255) && - (*(IMP - vw - 1) == 255) && (*(IMP - fs + vw + 1) == 255) && - (*(IMP - vw + 1) == 255) && (*(IMP - fs + vw - 1) == 255) && - (*(IMP - fs - vw - 1) == 255) && (*(IMP + vw + 1) == 255) && - (*(IMP - fs - vw + 1) == 255) && (*(IMP + vw - 1) == 255) && - (*(IMP - fs - vw) == 255) && (*(IMP + vw) == 255) && - (*(IMP - fs - 1) == 255) && (*(IMP + fs + 1) == 255) && - (*(IMP - fs + 1) == 255) && (*(IMP + fs - 1) == 255) && - (*(IMP - 2 * fs + vw - 1) == 255) && (*(IMP + fs - vw + 1) == 255) && - (*(IMP - 2 * fs + vw) == 255) && (*(IMP + fs - vw) == 255) && - (*(IMP - 2 * fs + vw + 1) == 255) && (*(IMP + fs - vw - 1) == 255) ) - { - *EMP = 255; - } - EMP++; - IMP++; - } - EMP += fs - vw + 2; - IMP += fs - vw + 2; + for (i=1; i < volume_height - 1; i++) + { + if( (*IMP) == NOMASK && (*(IMP + vw - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP - vw) == NOMASK) && (*(IMP + vw) == NOMASK) && + (*(IMP - fs) == NOMASK) && (*(IMP + fs) == NOMASK) && + (*(IMP - 1) == NOMASK) && (*(IMP + vw + 1) == NOMASK) && + (*(IMP - vw + 1) == NOMASK) && (*(IMP + 2 * vw - 1) == NOMASK) && + (*(IMP - fs - 1) == NOMASK) && (*(IMP + fs + vw + 1) == NOMASK) && + (*(IMP - fs - vw) == NOMASK) && (*(IMP + fs + vw) == NOMASK) && + (*(IMP - fs - vw + 1) == NOMASK) && (*(IMP + fs + 2 * vw - 1) == NOMASK) && + (*(IMP - fs + vw - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && + (*(IMP - fs + 1) == NOMASK) && (*(IMP + fs + vw - 1) == NOMASK) && + (*(IMP - fs + 2 * vw - 1) == NOMASK) && (*(IMP + fs - vw + 1) == NOMASK) && + (*(IMP - fs + vw) == NOMASK) && (*(IMP + fs - vw) == NOMASK) && + (*(IMP - fs + vw + 1) == NOMASK) && (*(IMP + fs - 1) == NOMASK) ) + { + *EMP = NOMASK; } + EMP += vw; + IMP += vw; + } + EMP += 2 * vw; + IMP += 2 *vw; } - if (z_connectivity == 1) + //extend the mask to the rear side of the phase volume + IMP = input_mask + frame_size + 2 * volume_width - 1; //input mask pointer + EMP = extended_mask + frame_size + 2 * volume_width - 1; //extended mask pointer + for (n=1; n < volume_depth - 1; n++) { - //extend the mask to the bottom side of the phase volume - IMP = input_mask + volume_width + 1; - EMP = extended_mask + volume_width + 1; - for (i=1; i < volume_height - 1; ++i) - { - for (j=1; j < volume_width - 1; ++j) - { - if( (*IMP) == 255 && (*(IMP - 1) == 255) && (*(IMP + 1) == 255) && - (*(IMP - vw) == 255) && (*(IMP + vw) == 255) && - (*(IMP + fs) == 255) && (*(IMP + vs - fs) == 255) && - (*(IMP - vw - 1) == 255) && (*(IMP + vw + 1) == 255) && - (*(IMP - vw + 1) == 255) && (*(IMP + vw - 1) == 255) && - (*(IMP + vs - fs - vw - 1) == 255) && (*(IMP + fs + vw + 1) == 255) && - (*(IMP + vs - fs - vw) == 255) && (*(IMP + fs + vw) == 255) && - (*(IMP + vs - fs - vw + 1) == 255) && (*(IMP + fs + vw - 1) == 255) && - (*(IMP + vs - fs - 1) == 255) && (*(IMP + fs + 1) == 255) && - (*(IMP + vs - fs + 1) == 255) && (*(IMP + fs - 1) == 255) && - (*(IMP + vs - fs + vw - 1) == 255) && (*(IMP + fs - vw + 1) == 255) && - (*(IMP + vs - fs + vw) == 255) && (*(IMP + fs - vw) == 255) && - (*(IMP + vs - fs + vw + 1) == 255) && (*(IMP + fs - vw - 1) == 255) ) - { - *EMP = 255; - } - EMP++; - IMP++; - } - EMP += 2; - IMP += 2; - } - - //extend the mask to the top side of the phase volume - IMP = input_mask + volume_size - frame_size + volume_width + 1; - EMP = extended_mask + volume_size - frame_size + volume_width + 1; - for (i=1; i < volume_height - 1; ++i) - { - for (j=1; j < volume_width - 1; ++j) - { - if( (*IMP) == 255 && (*(IMP + 1) == 255) && (*(IMP - 1) == 255) && - (*(IMP - vw) == 255) && (*(IMP - fs + vw) == 255) && - (*(IMP - fs) == 255) && (*(IMP - vs + fs) == 255) && - (*(IMP - vw - 1) == 255) && (*(IMP + vw + 1) == 255) && - (*(IMP - vw + 1) == 255) && (*(IMP + vw - 1) == 255) && - (*(IMP - fs - vw - 1) == 255) && (*(IMP - vs + fs + vw + 1) == 255) && - (*(IMP - fs - vw + 1) == 255) && (*(IMP - vs + fs + vw - 1) == 255) && - (*(IMP - fs - vw) == 255) && (*(IMP - vs + fs + vw) == 255) && - (*(IMP - fs - 1) == 255) && (*(IMP - vs + fs + 1) == 255) && - (*(IMP - fs + 1) == 255) && (*(IMP - vs + fs - 1) == 255) && - (*(IMP - fs + vw - 1) == 255) && (*(IMP - vs + fs - vw + 1) == 255) && - (*(IMP - fs + vw) == 255) && (*(IMP - vs + fs - vw) == 255) && - (*(IMP - fs + vw + 1) == 255) && (*(IMP - vs + fs - vw - 1) == 255) ) - { - *EMP = 255; - } - EMP++; - IMP++; - } - EMP += 2; - IMP += 2; + for (i=1; i < volume_height - 1; i++) + { + if( (*IMP) == NOMASK && (*(IMP - vw + 1) == NOMASK) && (*(IMP - 1) == NOMASK) && + (*(IMP - vw) == NOMASK) && (*(IMP + vw) == NOMASK) && + (*(IMP - fs) == NOMASK) && (*(IMP + fs) == NOMASK) && + (*(IMP - vw - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP + vw - 1) == NOMASK) && (*(IMP - 2 * vw + 1) == NOMASK) && + (*(IMP - fs - vw - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && + (*(IMP - fs - 2 * vw + 1) == NOMASK) && (*(IMP + fs + vw - 1) == NOMASK) && + (*(IMP - fs - 1) == NOMASK) && (*(IMP + fs - vw + 1) == NOMASK) && + (*(IMP - fs - vw + 1) == NOMASK) && (*(IMP + fs - 1) == NOMASK) && + (*(IMP - fs - vw) == NOMASK) && (*(IMP + fs + vw) == NOMASK) && + (*(IMP - fs + vw - 1) == NOMASK) && (*(IMP + fs - 2 * vw + 1) == NOMASK) && + (*(IMP - fs + vw) == NOMASK) && (*(IMP + fs - vw) == NOMASK) && + (*(IMP - fs + 1) == NOMASK) && (*(IMP + fs - vw - 1) == NOMASK) ) + { + *EMP = NOMASK; } + EMP += vw; + IMP += vw; + } + EMP += 2 * vw; + IMP += 2 *vw; } + } + + if (params->y_connectivity == 1) + { + //extend the mask to the left side of the phase volume + IMP = input_mask + frame_size + 1; + EMP = extended_mask + frame_size + 1; + for (n=1; n < volume_depth - 1; n++) + { + for (j=1; j < volume_width - 1; j++) + { + if( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP + fs - vw) == NOMASK) && (*(IMP + vw) == NOMASK) && + (*(IMP - fs) == NOMASK) && (*(IMP + fs) == NOMASK) && + (*(IMP + fs - vw - 1) == NOMASK) && (*(IMP + vw + 1) == NOMASK) && + (*(IMP + fs - vw + 1) == NOMASK) && (*(IMP + vw - 1) == NOMASK) && + (*(IMP - vw - 1) == NOMASK) && (*(IMP + fs + vw + 1) == NOMASK) && + (*(IMP - vw) == NOMASK) && (*(IMP + fs + vw) == NOMASK) && + (*(IMP - vw + 1) == NOMASK) && (*(IMP + fs + vw - 1) == NOMASK) && + (*(IMP - fs - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && + (*(IMP - fs + 1) == NOMASK) && (*(IMP + fs - 1) == NOMASK) && + (*(IMP - fs + vw - 1) == NOMASK) && (*(IMP + 2 * fs - vw + 1) == NOMASK) && + (*(IMP - fs + vw) == NOMASK) && (*(IMP + 2 * fs - vw) == NOMASK) && + (*(IMP - fs + vw + 1) == NOMASK) && (*(IMP + 2 * fs - vw - 1) == NOMASK) ) + { + *EMP = NOMASK; + } + EMP++; + IMP++; + } + EMP += fs - vw + 2; + IMP += fs - vw + 2; + } + + //extend the mask to the right side of the phase volume + IMP = input_mask + 2 * frame_size - volume_width + 1; + EMP = extended_mask + 2 * frame_size - volume_width + 1; + for (n=1; n < volume_depth - 1; n++) + { + for (j=1; j < volume_width - 1; j++) + { + if( (*IMP) == NOMASK && (*(IMP + 1) == NOMASK) && (*(IMP - 1) == NOMASK) && + (*(IMP - vw) == NOMASK) && (*(IMP - fs + vw) == NOMASK) && + (*(IMP - fs) == NOMASK) && (*(IMP + fs) == NOMASK) && + (*(IMP - vw - 1) == NOMASK) && (*(IMP - fs + vw + 1) == NOMASK) && + (*(IMP - vw + 1) == NOMASK) && (*(IMP - fs + vw - 1) == NOMASK) && + (*(IMP - fs - vw - 1) == NOMASK) && (*(IMP + vw + 1) == NOMASK) && + (*(IMP - fs - vw + 1) == NOMASK) && (*(IMP + vw - 1) == NOMASK) && + (*(IMP - fs - vw) == NOMASK) && (*(IMP + vw) == NOMASK) && + (*(IMP - fs - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && + (*(IMP - fs + 1) == NOMASK) && (*(IMP + fs - 1) == NOMASK) && + (*(IMP - 2 * fs + vw - 1) == NOMASK) && (*(IMP + fs - vw + 1) == NOMASK) && + (*(IMP - 2 * fs + vw) == NOMASK) && (*(IMP + fs - vw) == NOMASK) && + (*(IMP - 2 * fs + vw + 1) == NOMASK) && (*(IMP + fs - vw - 1) == NOMASK) ) + { + *EMP = NOMASK; + } + EMP++; + IMP++; + } + EMP += fs - vw + 2; + IMP += fs - vw + 2; + } + } + + if (params->z_connectivity == 1) + { + //extend the mask to the bottom side of the phase volume + IMP = input_mask + volume_width + 1; + EMP = extended_mask + volume_width + 1; + for (i=1; i < volume_height - 1; ++i) + { + for (j=1; j < volume_width - 1; ++j) + { + if( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP - vw) == NOMASK) && (*(IMP + vw) == NOMASK) && + (*(IMP + fs) == NOMASK) && (*(IMP + vs - fs) == NOMASK) && + (*(IMP - vw - 1) == NOMASK) && (*(IMP + vw + 1) == NOMASK) && + (*(IMP - vw + 1) == NOMASK) && (*(IMP + vw - 1) == NOMASK) && + (*(IMP + vs - fs - vw - 1) == NOMASK) && (*(IMP + fs + vw + 1) == NOMASK) && + (*(IMP + vs - fs - vw) == NOMASK) && (*(IMP + fs + vw) == NOMASK) && + (*(IMP + vs - fs - vw + 1) == NOMASK) && (*(IMP + fs + vw - 1) == NOMASK) && + (*(IMP + vs - fs - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && + (*(IMP + vs - fs + 1) == NOMASK) && (*(IMP + fs - 1) == NOMASK) && + (*(IMP + vs - fs + vw - 1) == NOMASK) && (*(IMP + fs - vw + 1) == NOMASK) && + (*(IMP + vs - fs + vw) == NOMASK) && (*(IMP + fs - vw) == NOMASK) && + (*(IMP + vs - fs + vw + 1) == NOMASK) && (*(IMP + fs - vw - 1) == NOMASK) ) + { + *EMP = NOMASK; + } + EMP++; + IMP++; + } + EMP += 2; + IMP += 2; + } + + //extend the mask to the top side of the phase volume + IMP = input_mask + volume_size - frame_size + volume_width + 1; + EMP = extended_mask + volume_size - frame_size + volume_width + 1; + for (i=1; i < volume_height - 1; ++i) + { + for (j=1; j < volume_width - 1; ++j) + { + if( (*IMP) == NOMASK && (*(IMP + 1) == NOMASK) && (*(IMP - 1) == NOMASK) && + (*(IMP - vw) == NOMASK) && (*(IMP - fs + vw) == NOMASK) && + (*(IMP - fs) == NOMASK) && (*(IMP - vs + fs) == NOMASK) && + (*(IMP - vw - 1) == NOMASK) && (*(IMP + vw + 1) == NOMASK) && + (*(IMP - vw + 1) == NOMASK) && (*(IMP + vw - 1) == NOMASK) && + (*(IMP - fs - vw - 1) == NOMASK) && (*(IMP - vs + fs + vw + 1) == NOMASK) && + (*(IMP - fs - vw + 1) == NOMASK) && (*(IMP - vs + fs + vw - 1) == NOMASK) && + (*(IMP - fs - vw) == NOMASK) && (*(IMP - vs + fs + vw) == NOMASK) && + (*(IMP - fs - 1) == NOMASK) && (*(IMP - vs + fs + 1) == NOMASK) && + (*(IMP - fs + 1) == NOMASK) && (*(IMP - vs + fs - 1) == NOMASK) && + (*(IMP - fs + vw - 1) == NOMASK) && (*(IMP - vs + fs - vw + 1) == NOMASK) && + (*(IMP - fs + vw) == NOMASK) && (*(IMP - vs + fs - vw) == NOMASK) && + (*(IMP - fs + vw + 1) == NOMASK) && (*(IMP - vs + fs - vw - 1) == NOMASK) ) + { + *EMP = NOMASK; + } + EMP++; + IMP++; + } + EMP += 2; + IMP += 2; + } + } } -void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width, int volume_height, int volume_depth) +void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width, int volume_height, int volume_depth, params_t *params) { - int frame_size = volume_width * volume_height; - int volume_size = volume_width * volume_height * volume_depth; - VOXELM *voxel_pointer; - float H, V, N, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10; - float *WVP; - int n, i, j; + int frame_size = volume_width * volume_height; + int volume_size = volume_width * volume_height * volume_depth; + VOXELM *voxel_pointer; + float H, V, N, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10; + float *WVP; + int n, i, j; - WVP = wrappedVolume + frame_size + volume_width + 1; - voxel_pointer = voxel + frame_size + volume_width + 1; - for (n=1; n < volume_depth - 1; n++) - { - for (i=1; i < volume_height - 1; i++) + WVP = wrappedVolume + frame_size + volume_width + 1; + voxel_pointer = voxel + frame_size + volume_width + 1; + for (n=1; n < volume_depth - 1; n++) + { + for (i=1; i < volume_height - 1; i++) { - for (j=1; j < volume_width - 1; j++) - { - if (voxel_pointer->extended_mask == 255) - { - H = wrap(*(WVP - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); - V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); - N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); - D1 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1)); - D2 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + volume_width - 1)); - D3 = wrap(*(WVP - frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width + 1)); - D4 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width)); - D5 = wrap(*(WVP - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width - 1)); - D6 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); - D7 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); - D8 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); - D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); - D10 = wrap(*(WVP - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width - 1)); - voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 - + D7*D7 + D8*D8 + D9*D9 + D10*D10; - } - voxel_pointer++; - WVP++; - } - voxel_pointer += 2; - WVP += 2; + for (j=1; j < volume_width - 1; j++) + { + if (voxel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WVP - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); + V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); + N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); + D1 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1)); + D2 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + volume_width - 1)); + D3 = wrap(*(WVP - frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width + 1)); + D4 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width)); + D5 = wrap(*(WVP - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width - 1)); + D6 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); + D7 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); + D8 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); + D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); + D10 = wrap(*(WVP - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width - 1)); + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + + D7*D7 + D8*D8 + D9*D9 + D10*D10; } - voxel_pointer += 2 * volume_width; - WVP += 2 * volume_width; + voxel_pointer++; + WVP++; + } + voxel_pointer += 2; + WVP += 2; } + voxel_pointer += 2 * volume_width; + WVP += 2 * volume_width; + } - if (x_connectivity == 1) + if (params->x_connectivity == 1) + { + //calculating reliability for the front side of the phase volume...add volume_width + WVP = wrappedVolume + frame_size + volume_width; + voxel_pointer = voxel + frame_size + volume_width; + for (n=1; n < volume_depth - 1; ++n) { - //calculating reliability for the front side of the phase volume...add volume_width - WVP = wrappedVolume + frame_size + volume_width; - voxel_pointer = voxel + frame_size + volume_width; - for (n=1; n < volume_depth - 1; ++n) - { - for (i=1; i < volume_height - 1; ++i) - { - if (voxel_pointer->extended_mask == 255) - { - H = wrap(*(WVP + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); - V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); - N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); - D1 = wrap(*(WVP - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1)); - D2 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + 2 * volume_width - 1)); - D3 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width + 1)); - D4 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width)); - D5 = wrap(*(WVP - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 2 * volume_width - 1)); - D6 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); - D7 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width - 1)); - D8 = wrap(*(WVP - frame_size + 2 * volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); - D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); - D10 = wrap(*(WVP - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); - voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 - + D7*D7 + D8*D8 + D9*D9 + D10*D10; - } - voxel_pointer += volume_width; - WVP += volume_width; - } - voxel_pointer += 2 * volume_width; - WVP += 2 * volume_width; + for (i=1; i < volume_height - 1; ++i) + { + if (voxel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WVP + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); + V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); + N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); + D1 = wrap(*(WVP - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1)); + D2 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + 2 * volume_width - 1)); + D3 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width + 1)); + D4 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width)); + D5 = wrap(*(WVP - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 2 * volume_width - 1)); + D6 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); + D7 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width - 1)); + D8 = wrap(*(WVP - frame_size + 2 * volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); + D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); + D10 = wrap(*(WVP - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + + D7*D7 + D8*D8 + D9*D9 + D10*D10; } + voxel_pointer += volume_width; + WVP += volume_width; + } + voxel_pointer += 2 * volume_width; + WVP += 2 * volume_width; + } - //calculating reliability for the rear side of the phase volume..... subtract volume_width - WVP = wrappedVolume + frame_size + 2 * volume_width - 1; - voxel_pointer = voxel + frame_size + 2 * volume_width - 1; - for (n=1; n < volume_depth - 1; ++n) - { - for (i=1; i < volume_height - 1; ++i) - { - if (voxel_pointer->extended_mask == 255) - { - H = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP - 1)); - V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); - N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); - D1 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); - D2 = wrap(*(WVP + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP - 2 * volume_width + 1)); - D3 = wrap(*(WVP - frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); - D4 = wrap(*(WVP - frame_size - 2 * volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width - 1)); - D5 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); - D6 = wrap(*(WVP - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); - D7 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width)); - D8 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 2 * volume_width + 1)); - D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); - D10 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width - 1)); - voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 - + D7*D7 + D8*D8 + D9*D9 + D10*D10; - } - voxel_pointer += volume_width; - WVP += volume_width; - } - voxel_pointer += 2 * volume_width; - WVP += 2 * volume_width; - } - } - - if (y_connectivity == 1) + //calculating reliability for the rear side of the phase volume..... subtract volume_width + WVP = wrappedVolume + frame_size + 2 * volume_width - 1; + voxel_pointer = voxel + frame_size + 2 * volume_width - 1; + for (n=1; n < volume_depth - 1; ++n) { - //calculating reliability for the left side of the phase volume...add frame_size - WVP = wrappedVolume + frame_size + 1; - voxel_pointer = voxel + frame_size + 1; - for (n=1; n < volume_depth - 1; ++n) - { - for (j=1; j < volume_width - 1; ++j) - { - if (voxel_pointer->extended_mask == 255) - { - H = wrap(*(WVP - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); - V = wrap(*(WVP + frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); - N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); - D1 = wrap(*(WVP + frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1)); - D2 = wrap(*(WVP + frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + volume_width - 1)); - D3 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width + 1)); - D4 = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width)); - D5 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width - 1)); - D6 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); - D7 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); - D8 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + 2 * frame_size - volume_width + 1)); - D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + 2 * frame_size - volume_width)); - D10 = wrap(*(WVP - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + 2 * frame_size - volume_width - 1)); - voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 - + D7*D7 + D8*D8 + D9*D9 + D10*D10; - } - voxel_pointer++; - WVP++; - } - voxel_pointer += frame_size - volume_width + 2; - WVP += frame_size - volume_width + 2; - } + for (i=1; i < volume_height - 1; ++i) + { + if (voxel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP - 1)); + V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); + N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); + D1 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); + D2 = wrap(*(WVP + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP - 2 * volume_width + 1)); + D3 = wrap(*(WVP - frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); + D4 = wrap(*(WVP - frame_size - 2 * volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width - 1)); + D5 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); + D6 = wrap(*(WVP - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); + D7 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width)); + D8 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 2 * volume_width + 1)); + D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); + D10 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width - 1)); + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + + D7*D7 + D8*D8 + D9*D9 + D10*D10; + } + voxel_pointer += volume_width; + WVP += volume_width; + } + voxel_pointer += 2 * volume_width; + WVP += 2 * volume_width; + } + } - //calculating reliability for the right side of the phase volume...subtract frame_size - WVP = wrappedVolume + 2 * frame_size - volume_width + 1; - voxel_pointer = voxel + 2 * frame_size - volume_width + 1; - for (n=1; n < volume_depth - 1; ++n) - { - for (j=1; j < volume_width - 1; ++j) - { - if (voxel_pointer->extended_mask == 255) - { - H = wrap(*(WVP + 1) - *WVP) - wrap(*WVP - *(WVP - 1)); - V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP - frame_size + volume_width)); - N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); - D1 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP - frame_size + volume_width + 1)); - D2 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP - frame_size + volume_width - 1)); - D3 = wrap(*(WVP - frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1) ); - D4 = wrap(*(WVP - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + volume_width - 1)); - D5 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); - D6 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); - D7 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); - D8 = wrap(*(WVP - 2 * frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); - D9 = wrap(*(WVP - 2 * frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); - D10 = wrap(*(WVP - 2 * frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width - 1)); - voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 - + D7*D7 + D8*D8 + D9*D9 + D10*D10; - } - voxel_pointer++; - WVP++; - } - voxel_pointer += frame_size - volume_width + 2; - WVP += frame_size - volume_width + 2; - } - } - - if (z_connectivity == 1) + if (params->y_connectivity == 1) + { + //calculating reliability for the left side of the phase volume...add frame_size + WVP = wrappedVolume + frame_size + 1; + voxel_pointer = voxel + frame_size + 1; + for (n=1; n < volume_depth - 1; ++n) { - //calculating reliability for the bottom side of the phase volume...add volume_size - WVP = wrappedVolume + volume_width + 1; - voxel_pointer = voxel + volume_width + 1; - for (i=1; i < volume_height - 1; ++i) - { - for (j=1; j < volume_width - 1; ++j) - { - if (voxel_pointer->extended_mask == 255) - { - H = wrap(*(WVP - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); - V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); - N = wrap(*(WVP + frame_size) - *WVP) - wrap(*WVP - *(WVP + volume_size - frame_size)); - D1 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1)); - D2 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + volume_width - 1)); - D3 = wrap(*(WVP + volume_size - frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width + 1)); - D4 = wrap(*(WVP + volume_size - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width)); - D5 = wrap(*(WVP + volume_size - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width - 1)); - D6 = wrap(*(WVP + volume_size - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); - D7 = wrap(*(WVP + volume_size - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); - D8 = wrap(*(WVP + volume_size - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); - D9 = wrap(*(WVP + volume_size - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); - D10 = wrap(*(WVP + volume_size - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width - 1)); - voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 - + D7*D7 + D8*D8 + D9*D9 + D10*D10; - } - voxel_pointer++; - WVP++; - } - voxel_pointer += 2; - WVP += 2; - } + for (j=1; j < volume_width - 1; ++j) + { + if (voxel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WVP - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); + V = wrap(*(WVP + frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); + N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); + D1 = wrap(*(WVP + frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1)); + D2 = wrap(*(WVP + frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + volume_width - 1)); + D3 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width + 1)); + D4 = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width)); + D5 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width - 1)); + D6 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); + D7 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); + D8 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + 2 * frame_size - volume_width + 1)); + D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + 2 * frame_size - volume_width)); + D10 = wrap(*(WVP - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + 2 * frame_size - volume_width - 1)); + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + + D7*D7 + D8*D8 + D9*D9 + D10*D10; + } + voxel_pointer++; + WVP++; + } + voxel_pointer += frame_size - volume_width + 2; + WVP += frame_size - volume_width + 2; + } - //calculating reliability for the top side of the phase volume...subtract volume_size - WVP = wrappedVolume + volume_size - frame_size + volume_width + 1; - voxel_pointer = voxel + volume_size - frame_size + volume_width + 1; - for (i=1; i < volume_height - 1; ++i) - { - for (j=1; j < volume_width - 1; ++j) - { - if (voxel_pointer->extended_mask == 255) - { - H = wrap(*(WVP + 1) - *WVP) - wrap(*WVP - *(WVP - 1)); - V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); - N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size)); - D1 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1)); - D2 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + volume_width - 1)); - D3 = wrap(*(WVP - frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + volume_width + 1)); - D4 = wrap(*(WVP - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + volume_width - 1)); - D5 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + volume_width)); - D6 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + 1)); - D7 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size - 1)); - D8 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size - volume_width + 1)); - D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size - volume_width)); - D10 = wrap(*(WVP - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size - volume_width - 1)); - voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 - + D7*D7 + D8*D8 + D9*D9 + D10*D10; - } - voxel_pointer++; - WVP++; - } - voxel_pointer += 2; - WVP += 2; - } - } + //calculating reliability for the right side of the phase volume...subtract frame_size + WVP = wrappedVolume + 2 * frame_size - volume_width + 1; + voxel_pointer = voxel + 2 * frame_size - volume_width + 1; + for (n=1; n < volume_depth - 1; ++n) + { + for (j=1; j < volume_width - 1; ++j) + { + if (voxel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WVP + 1) - *WVP) - wrap(*WVP - *(WVP - 1)); + V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP - frame_size + volume_width)); + N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); + D1 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP - frame_size + volume_width + 1)); + D2 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP - frame_size + volume_width - 1)); + D3 = wrap(*(WVP - frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1) ); + D4 = wrap(*(WVP - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + volume_width - 1)); + D5 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); + D6 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); + D7 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); + D8 = wrap(*(WVP - 2 * frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); + D9 = wrap(*(WVP - 2 * frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); + D10 = wrap(*(WVP - 2 * frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width - 1)); + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + + D7*D7 + D8*D8 + D9*D9 + D10*D10; + } + voxel_pointer++; + WVP++; + } + voxel_pointer += frame_size - volume_width + 2; + WVP += frame_size - volume_width + 2; + } + } + + if (params->z_connectivity == 1) + { + //calculating reliability for the bottom side of the phase volume...add volume_size + WVP = wrappedVolume + volume_width + 1; + voxel_pointer = voxel + volume_width + 1; + for (i=1; i < volume_height - 1; ++i) + { + for (j=1; j < volume_width - 1; ++j) + { + if (voxel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WVP - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); + V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); + N = wrap(*(WVP + frame_size) - *WVP) - wrap(*WVP - *(WVP + volume_size - frame_size)); + D1 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1)); + D2 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + volume_width - 1)); + D3 = wrap(*(WVP + volume_size - frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width + 1)); + D4 = wrap(*(WVP + volume_size - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width)); + D5 = wrap(*(WVP + volume_size - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + volume_width - 1)); + D6 = wrap(*(WVP + volume_size - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size + 1)); + D7 = wrap(*(WVP + volume_size - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); + D8 = wrap(*(WVP + volume_size - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); + D9 = wrap(*(WVP + volume_size - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); + D10 = wrap(*(WVP + volume_size - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width - 1)); + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + + D7*D7 + D8*D8 + D9*D9 + D10*D10; + } + voxel_pointer++; + WVP++; + } + voxel_pointer += 2; + WVP += 2; + } + + //calculating reliability for the top side of the phase volume...subtract volume_size + WVP = wrappedVolume + volume_size - frame_size + volume_width + 1; + voxel_pointer = voxel + volume_size - frame_size + volume_width + 1; + for (i=1; i < volume_height - 1; ++i) + { + for (j=1; j < volume_width - 1; ++j) + { + if (voxel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WVP + 1) - *WVP) - wrap(*WVP - *(WVP - 1)); + V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); + N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size)); + D1 = wrap(*(WVP - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + volume_width + 1)); + D2 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + volume_width - 1)); + D3 = wrap(*(WVP - frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + volume_width + 1)); + D4 = wrap(*(WVP - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + volume_width - 1)); + D5 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + volume_width)); + D6 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + 1)); + D7 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size - 1)); + D8 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size - volume_width + 1)); + D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size - volume_width)); + D10 = wrap(*(WVP - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size - volume_width - 1)); + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + + D7*D7 + D8*D8 + D9*D9 + D10*D10; + } + voxel_pointer++; + WVP++; + } + voxel_pointer += 2; + WVP += 2; + } + } } -//calculate the reliability of the horizontal edges of the volume -//it is calculated by adding the reliability of voxel and the relibility of -//its right neighbour -//edge is calculated between a voxel and its next neighbour -void horizontalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_height, int volume_depth) +//calculate the reliability of the horizontal edges of the volume. it +//is calculated by adding the reliability of voxel and the relibility +//of its right neighbour. edge is calculated between a voxel and its +//next neighbour +void horizontalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_height, int volume_depth, params_t *params) { - int n, i, j; - EDGE *edge_pointer = edge; - VOXELM *voxel_pointer = voxel; + int n, i, j; + EDGE *edge_pointer = edge; + VOXELM *voxel_pointer = voxel; + int no_of_edges = params->no_of_edges; - for (n=0; n < volume_depth; n++) + for (n=0; n < volume_depth; n++) + { + for (i = 0; i < volume_height; i++) { - for (i = 0; i < volume_height; i++) + for (j = 0; j < volume_width - 1; j++) + { + if (voxel_pointer->input_mask == NOMASK && (voxel_pointer + 1)->input_mask == NOMASK ) { - for (j = 0; j < volume_width - 1; j++) - { - if (voxel_pointer->input_mask == 255 && (voxel_pointer + 1)->input_mask == 255 ) - { - edge_pointer->pointer_1 = voxel_pointer; - edge_pointer->pointer_2 = (voxel_pointer+1); - edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer + 1)->reliability; - edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer + 1)->value); - edge_pointer++; - No_of_edges++; - } - voxel_pointer++; - } - voxel_pointer++; + edge_pointer->pointer_1 = voxel_pointer; + edge_pointer->pointer_2 = (voxel_pointer+1); + edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer + 1)->reliability; + edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer + 1)->value); + edge_pointer++; + no_of_edges++; } + voxel_pointer++; + } + voxel_pointer++; } - if (x_connectivity == 1) + } + if (params->x_connectivity == 1) + { + voxel_pointer = voxel + volume_width - 1; + for (n=0; n < volume_depth; n++) { - voxel_pointer = voxel + volume_width - 1; - for (n=0; n < volume_depth; n++) + for (i = 0; i < volume_height; i++) + { + if (voxel_pointer->input_mask == NOMASK && (voxel_pointer - volume_width + 1)->input_mask == NOMASK ) { - for (i = 0; i < volume_height; i++) - { - if (voxel_pointer->input_mask == 255 && (voxel_pointer - volume_width + 1)->input_mask == 255 ) - { - edge_pointer->pointer_1 = voxel_pointer; - edge_pointer->pointer_2 = (voxel_pointer - volume_width + 1); - edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer - volume_width + 1)->reliability; - edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer - volume_width + 1)->value); - edge_pointer++; - No_of_edges++; - } - voxel_pointer += volume_width; - } + edge_pointer->pointer_1 = voxel_pointer; + edge_pointer->pointer_2 = (voxel_pointer - volume_width + 1); + edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer - volume_width + 1)->reliability; + edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer - volume_width + 1)->value); + edge_pointer++; + no_of_edges++; } + voxel_pointer += volume_width; + } } + } + params->no_of_edges = no_of_edges; } -void verticalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_height, int volume_depth) +void verticalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_height, int volume_depth, params_t *params) { - int n, i, j; - VOXELM *voxel_pointer = voxel; - EDGE *edge_pointer = edge + No_of_edges; + int n, i, j; + int no_of_edges = params->no_of_edges; + VOXELM *voxel_pointer = voxel; + EDGE *edge_pointer = edge + no_of_edges; - for (n=0; n < volume_depth; n++) + for (n=0; n < volume_depth; n++) + { + for (i=0; iinput_mask == NOMASK && (voxel_pointer + volume_width)->input_mask == NOMASK ) { - for (j=0; j < volume_width; j++) - { - if (voxel_pointer->input_mask == 255 && (voxel_pointer + volume_width)->input_mask == 255 ) - { - edge_pointer->pointer_1 = voxel_pointer; - edge_pointer->pointer_2 = (voxel_pointer + volume_width); - edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer + volume_width)->reliability; - edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer + volume_width)->value); - edge_pointer++; - No_of_edges++; - } - voxel_pointer++; - } - } - voxel_pointer += volume_width; - } - - int frame_size = volume_width * volume_height; - int next_voxel = frame_size - volume_width; - if (y_connectivity == 1) - { - voxel_pointer = voxel + frame_size - volume_width; - for (n=0; n < volume_depth; n++) - { - for (i = 0; i < volume_width; i++) - { - if (voxel_pointer->input_mask == 255 && (voxel_pointer - next_voxel)->input_mask == 255 ) - { - edge_pointer->pointer_1 = voxel_pointer; - edge_pointer->pointer_2 = (voxel_pointer - next_voxel); - edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer - next_voxel)->reliability; - edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer - next_voxel)->value); - edge_pointer++; - No_of_edges++; - } - voxel_pointer++; - } - voxel_pointer += next_voxel + 1; + edge_pointer->pointer_1 = voxel_pointer; + edge_pointer->pointer_2 = (voxel_pointer + volume_width); + edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer + volume_width)->reliability; + edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer + volume_width)->value); + edge_pointer++; + no_of_edges++; } + voxel_pointer++; + } } + voxel_pointer += volume_width; + } + + int frame_size = volume_width * volume_height; + int next_voxel = frame_size - volume_width; + if (params->y_connectivity == 1) + { + voxel_pointer = voxel + frame_size - volume_width; + for (n=0; n < volume_depth; n++) + { + for (i = 0; i < volume_width; i++) + { + if (voxel_pointer->input_mask == NOMASK && (voxel_pointer - next_voxel)->input_mask == NOMASK ) + { + edge_pointer->pointer_1 = voxel_pointer; + edge_pointer->pointer_2 = (voxel_pointer - next_voxel); + edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer - next_voxel)->reliability; + edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer - next_voxel)->value); + edge_pointer++; + no_of_edges++; + } + voxel_pointer++; + } + voxel_pointer += next_voxel + 1; + } + } + params->no_of_edges = no_of_edges; } -void normalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_height, int volume_depth) +void normalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_height, int volume_depth, params_t *params) { - int n, i, j; - int frame_size = volume_width * volume_height; - int volume_size = volume_width * volume_height * volume_depth; - VOXELM *voxel_pointer = voxel; - EDGE *edge_pointer = edge + No_of_edges; + int n, i, j; + int no_of_edges = params->no_of_edges; + int frame_size = volume_width * volume_height; + int volume_size = volume_width * volume_height * volume_depth; + VOXELM *voxel_pointer = voxel; + EDGE *edge_pointer = edge + no_of_edges; - for (n=0; n < volume_depth - 1; n++) + for (n=0; n < volume_depth - 1; n++) + { + for (i=0; iinput_mask == NOMASK && (voxel_pointer + frame_size)->input_mask == NOMASK ) { - for (j=0; j < volume_width; j++) - { - if (voxel_pointer->input_mask == 255 && (voxel_pointer + frame_size)->input_mask == 255 ) - { - edge_pointer->pointer_1 = voxel_pointer; - edge_pointer->pointer_2 = (voxel_pointer + frame_size); - edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer + frame_size)->reliability; - edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer + frame_size)->value); - edge_pointer++; - No_of_edges++; - } - voxel_pointer++; - } + edge_pointer->pointer_1 = voxel_pointer; + edge_pointer->pointer_2 = (voxel_pointer + frame_size); + edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer + frame_size)->reliability; + edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer + frame_size)->value); + edge_pointer++; + no_of_edges++; } + voxel_pointer++; + } } + } - int next_voxel = volume_size - frame_size; - if (z_connectivity == 1) + int next_voxel = volume_size - frame_size; + if (params->z_connectivity == 1) + { + voxel_pointer = voxel + next_voxel; + for (i=0; i < volume_height; i++) { - voxel_pointer = voxel + next_voxel; - for (i=0; i < volume_height; i++) + for (j = 0; j < volume_width; j++) + { + if (voxel_pointer->input_mask == NOMASK && (voxel_pointer - next_voxel)->input_mask == NOMASK ) { - for (j = 0; j < volume_width; j++) - { - if (voxel_pointer->input_mask == 255 && (voxel_pointer - next_voxel)->input_mask == 255 ) - { - edge_pointer->pointer_1 = voxel_pointer; - edge_pointer->pointer_2 = (voxel_pointer - next_voxel); - edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer - next_voxel)->reliability; - edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer - next_voxel)->value); - edge_pointer++; - No_of_edges++; - } - voxel_pointer++; - } + edge_pointer->pointer_1 = voxel_pointer; + edge_pointer->pointer_2 = (voxel_pointer - next_voxel); + edge_pointer->reliab = voxel_pointer->reliability + (voxel_pointer - next_voxel)->reliability; + edge_pointer->increment = find_wrap(voxel_pointer->value, (voxel_pointer - next_voxel)->value); + edge_pointer++; + no_of_edges++; } + voxel_pointer++; + } } + } + params->no_of_edges = no_of_edges; } //gather the voxels of the volume into groups -void gatherVOXELs(EDGE *edge) +void gatherVOXELs(EDGE *edge, params_t *params) { - int k; - VOXELM *VOXEL1; - VOXELM *VOXEL2; - VOXELM *group1; - VOXELM *group2; - EDGE *pointer_edge = edge; - int incremento; + int k; + VOXELM *VOXEL1; + VOXELM *VOXEL2; + VOXELM *group1; + VOXELM *group2; + EDGE *pointer_edge = edge; + int incremento; - for (k = 0; k < No_of_edges; k++) + for (k = 0; k < params->no_of_edges; k++) + { + VOXEL1 = pointer_edge->pointer_1; + VOXEL2 = pointer_edge->pointer_2; + + //VOXELM 1 and VOXELM 2 belong to different groups + //initially each voxel is in a group by itself and one voxel can construct a group + //no else or else if to this if + if (VOXEL2->head != VOXEL1->head) { - VOXEL1 = pointer_edge->pointer_1; - VOXEL2 = pointer_edge->pointer_2; + //VOXELM 2 is alone in its group + //merge this voxel with VOXELM 1 group and find the number of 2 pi to add + //to or subtract to unwrap it + if ((VOXEL2->next == NULL) && (VOXEL2->head == VOXEL2)) + { + VOXEL1->head->last->next = VOXEL2; + VOXEL1->head->last = VOXEL2; + (VOXEL1->head->number_of_voxels_in_group)++; + VOXEL2->head=VOXEL1->head; + VOXEL2->increment = VOXEL1->increment-pointer_edge->increment; + } - //VOXELM 1 and VOXELM 2 belong to different groups - //initially each voxel is in a group by itself and one voxel can construct a group - //no else or else if to this if - if (VOXEL2->head != VOXEL1->head) - { - //VOXELM 2 is alone in its group - //merge this voxel with VOXELM 1 group and find the number of 2 pi to add - //to or subtract to unwrap it - if ((VOXEL2->next == NULL) && (VOXEL2->head == VOXEL2)) - { - VOXEL1->head->last->next = VOXEL2; - VOXEL1->head->last = VOXEL2; - (VOXEL1->head->number_of_voxels_in_group)++; - VOXEL2->head=VOXEL1->head; - VOXEL2->increment = VOXEL1->increment-pointer_edge->increment; - } + //VOXELM 1 is alone in its group + //merge this voxel with VOXELM 2 group and find the number of 2 pi to add + //to or subtract to unwrap it + else if ((VOXEL1->next == NULL) && (VOXEL1->head == VOXEL1)) + { + VOXEL2->head->last->next = VOXEL1; + VOXEL2->head->last = VOXEL1; + (VOXEL2->head->number_of_voxels_in_group)++; + VOXEL1->head = VOXEL2->head; + VOXEL1->increment = VOXEL2->increment+pointer_edge->increment; + } - //VOXELM 1 is alone in its group - //merge this voxel with VOXELM 2 group and find the number of 2 pi to add - //to or subtract to unwrap it - else if ((VOXEL1->next == NULL) && (VOXEL1->head == VOXEL1)) - { - VOXEL2->head->last->next = VOXEL1; - VOXEL2->head->last = VOXEL1; - (VOXEL2->head->number_of_voxels_in_group)++; - VOXEL1->head = VOXEL2->head; - VOXEL1->increment = VOXEL2->increment+pointer_edge->increment; - } - - //VOXELM 1 and VOXELM 2 both have groups - else + //VOXELM 1 and VOXELM 2 both have groups + else { - group1 = VOXEL1->head; - group2 = VOXEL2->head; - //if the no. of voxels in VOXELM 1 group is larger than the no. of voxels - //in VOXELM 2 group. Merge VOXELM 2 group to VOXELM 1 group - //and find the number of wraps between VOXELM 2 group and VOXELM 1 group - //to unwrap VOXELM 2 group with respect to VOXELM 1 group. - //the no. of wraps will be added to VOXELM 2 grop in the future - if (group1->number_of_voxels_in_group > group2->number_of_voxels_in_group) - { - //merge VOXELM 2 with VOXELM 1 group - group1->last->next = group2; - group1->last = group2->last; - group1->number_of_voxels_in_group = group1->number_of_voxels_in_group + group2->number_of_voxels_in_group; - incremento = VOXEL1->increment-pointer_edge->increment - VOXEL2->increment; - //merge the other voxels in VOXELM 2 group to VOXELM 1 group - while (group2 != NULL) - { - group2->head = group1; - group2->increment += incremento; - group2 = group2->next; - } - } + group1 = VOXEL1->head; + group2 = VOXEL2->head; + //if the no. of voxels in VOXELM 1 group is larger than the no. of voxels + //in VOXELM 2 group. Merge VOXELM 2 group to VOXELM 1 group + //and find the number of wraps between VOXELM 2 group and VOXELM 1 group + //to unwrap VOXELM 2 group with respect to VOXELM 1 group. + //the no. of wraps will be added to VOXELM 2 grop in the future + if (group1->number_of_voxels_in_group > group2->number_of_voxels_in_group) + { + //merge VOXELM 2 with VOXELM 1 group + group1->last->next = group2; + group1->last = group2->last; + group1->number_of_voxels_in_group = group1->number_of_voxels_in_group + group2->number_of_voxels_in_group; + incremento = VOXEL1->increment-pointer_edge->increment - VOXEL2->increment; + //merge the other voxels in VOXELM 2 group to VOXELM 1 group + while (group2 != NULL) + { + group2->head = group1; + group2->increment += incremento; + group2 = group2->next; + } + } - //if the no. of voxels in VOXELM 2 group is larger than the no. of voxels - //in VOXELM 1 group. Merge VOXELM 1 group to VOXELM 2 group - //and find the number of wraps between VOXELM 2 group and VOXELM 1 group - //to unwrap VOXELM 1 group with respect to VOXELM 2 group. - //the no. of wraps will be added to VOXELM 1 grop in the future - else + //if the no. of voxels in VOXELM 2 group is larger than the no. of voxels + //in VOXELM 1 group. Merge VOXELM 1 group to VOXELM 2 group + //and find the number of wraps between VOXELM 2 group and VOXELM 1 group + //to unwrap VOXELM 1 group with respect to VOXELM 2 group. + //the no. of wraps will be added to VOXELM 1 grop in the future + else { - //merge VOXELM 1 with VOXELM 2 group - group2->last->next = group1; - group2->last = group1->last; - group2->number_of_voxels_in_group = group2->number_of_voxels_in_group + group1->number_of_voxels_in_group; - incremento = VOXEL2->increment + pointer_edge->increment - VOXEL1->increment; - //merge the other voxels in VOXELM 2 group to VOXELM 1 group - while (group1 != NULL) - { - group1->head = group2; - group1->increment += incremento; - group1 = group1->next; - } // while + //merge VOXELM 1 with VOXELM 2 group + group2->last->next = group1; + group2->last = group1->last; + group2->number_of_voxels_in_group = group2->number_of_voxels_in_group + group1->number_of_voxels_in_group; + incremento = VOXEL2->increment + pointer_edge->increment - VOXEL1->increment; + //merge the other voxels in VOXELM 2 group to VOXELM 1 group + while (group1 != NULL) + { + group1->head = group2; + group1->increment += incremento; + group1 = group1->next; + } // while } // else } //else } //if - pointer_edge++; - } + pointer_edge++; + } } //unwrap the volume -void unwrapVolume(VOXELM *voxel, int volume_width, int volume_height, int volume_depth) +void unwrapVolume(VOXELM *voxel, int volume_width, int volume_height, int volume_depth) { - int i; - int volume_size = volume_width * volume_height * volume_depth; - VOXELM *voxel_pointer=voxel; + int i; + int volume_size = volume_width * volume_height * volume_depth; + VOXELM *voxel_pointer=voxel; - for (i = 0; i < volume_size; i++) - { - voxel_pointer->value += TWOPI * (float)(voxel_pointer->increment); - voxel_pointer++; + for (i = 0; i < volume_size; i++) + { + voxel_pointer->value += TWOPI * (float)(voxel_pointer->increment); + voxel_pointer++; } } //set the masked voxels (mask = 0) to the minimum of the unwrapper phase void maskVolume(VOXELM *voxel, unsigned char *input_mask, int volume_width, int volume_height, int volume_depth) { - int volume_width_plus_one = volume_width + 1; - int volume_height_plus_one = volume_height + 1; - int volume_width_minus_one = volume_width - 1; - int volume_height_minus_one = volume_height - 1; + int volume_width_plus_one = volume_width + 1; + int volume_height_plus_one = volume_height + 1; + int volume_width_minus_one = volume_width - 1; + int volume_height_minus_one = volume_height - 1; - VOXELM *pointer_voxel = voxel; - unsigned char *IMP = input_mask; //input mask pointer - float min=99999999.; - int i, j; - int volume_size = volume_width * volume_height * volume_depth; + VOXELM *pointer_voxel = voxel; + unsigned char *IMP = input_mask; //input mask pointer + float min=99999999.; + int i, j; + int volume_size = volume_width * volume_height * volume_depth; - //find the minimum of the unwrapped phase - for (i = 0; i < volume_size; i++) + //find the minimum of the unwrapped phase + for (i = 0; i < volume_size; i++) + { + if ((pointer_voxel->value < min) && (*IMP == NOMASK)) + min = pointer_voxel->value; + + pointer_voxel++; + IMP++; + } + + pointer_voxel = voxel; + IMP = input_mask; + + //set the masked voxels to minimum + for (i = 0; i < volume_size; i++) + { + if ((*IMP) == MASK) { - if ((pointer_voxel->value < min) && (*IMP == 255)) - min = pointer_voxel->value; - - pointer_voxel++; - IMP++; - } - - pointer_voxel = voxel; - IMP = input_mask; - - //set the masked voxels to minimum - for (i = 0; i < volume_size; i++) - { - if ((*IMP) == 0) - { - pointer_voxel->value = min; - } - pointer_voxel++; - IMP++; + pointer_voxel->value = min; } + pointer_voxel++; + IMP++; + } } -//the input to this unwrapper is an array that contains the wrapped phase map. -//copy the volume on the buffer passed to this unwrapper to over-write the unwrapped -//phase map on the buffer of the wrapped phase map. +//the input to this unwrapper is an array that contains the wrapped +//phase map. copy the volume on the buffer passed to this unwrapper +//to over-write the unwrapped phase map on the buffer of the wrapped +//phase map. void returnVolume(VOXELM *voxel, float *unwrappedVolume, int volume_width, int volume_height, int volume_depth) { - int i; - int volume_size = volume_width * volume_height * volume_depth; - float *unwrappedVolume_pointer = unwrappedVolume; - VOXELM *voxel_pointer = voxel; + int i; + int volume_size = volume_width * volume_height * volume_depth; + float *unwrappedVolume_pointer = unwrappedVolume; + VOXELM *voxel_pointer = voxel; - for (i=0; i < volume_size; i++) - { - *unwrappedVolume_pointer = voxel_pointer->value; - voxel_pointer++; - unwrappedVolume_pointer++; - } + for (i=0; i < volume_size; i++) + { + *unwrappedVolume_pointer = voxel_pointer->value; + voxel_pointer++; + unwrappedVolume_pointer++; + } } //the main function of the unwrapper -int main() -{ - float *WrappedVolume, *UnwrappedVolume; - unsigned char *input_mask, *extended_mask; - int volume_width = 64; - int volume_height = 64; - int volume_depth = 46; - int volume_size = volume_height * volume_width * volume_depth; - int No_of_Edges_initially = 3 * volume_width * volume_height * volume_depth; +unwrap3D(float* wrapped_volume, float* unwrapped_volume, unsigned char* input_mask, + int volume_width, int volume_height, int volume_depth, + int wrap_around_x, int wrap_around_y, int wrap_around_z) +{ + params_t params = {TWOPI, 0, 0, 0, 0} + unsigned char *extended_mask; + int volume_size = volume_height * volume_width * volume_depth; + int No_of_Edges_initially = 3 * volume_width * volume_height * volume_depth; - WrappedVolume = (float *) calloc(volume_size, sizeof(float)); - read_data("MRI wrapped phase volume 64X64X46.dat", WrappedVolume, volume_size); + extended_mask = (unsigned char *) calloc(volume_size, sizeof(unsigned char)); + VOXELM *voxel = (VOXELM *) calloc(volume_size, sizeof(VOXELM)); + EDGE *edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE));; - input_mask = (unsigned char *) calloc(volume_size, sizeof(unsigned char)); - extended_mask = (unsigned char *) calloc(volume_size, sizeof(unsigned char)); - read_mask("mask3d.dat", input_mask, volume_size); + extend_mask(input_mask, extended_mask, volume_width, volume_height, volume_depth, ¶ms); + initialiseVOXELs(WrappedVolume, input_mask, extended_mask, voxel, volume_width, volume_height, volume_depth); + calculate_reliability(WrappedVolume, voxel, volume_width, volume_height, volume_depth, ¶ms); + horizontalEDGEs(voxel, edge, volume_width, volume_height, volume_depth, ¶ms); + verticalEDGEs(voxel, edge, volume_width, volume_height, volume_depth, ¶ms); + normalEDGEs(voxel, edge, volume_width, volume_height, volume_depth, ¶ms); - UnwrappedVolume = (float *) calloc(volume_size, sizeof(float)); - VOXELM *voxel = (VOXELM *) calloc(volume_size, sizeof(VOXELM)); - EDGE *edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE));; + //sort the EDGEs depending on their reiability. The VOXELs with higher relibility (small value) first + quicker_sort(edge, edge + params.no_of_edges - 1); - extend_mask(input_mask, extended_mask, volume_width, volume_height, volume_depth); - - initialiseVOXELs(WrappedVolume, input_mask, extended_mask, voxel, volume_width, volume_height, volume_depth); + //gather VOXELs into groups + gatherVOXELs(edge, ¶ms); - calculate_reliability(WrappedVolume, voxel, volume_width, volume_height, volume_depth); + unwrapVolume(voxel, volume_width, volume_height, volume_depth); + maskVolume(voxel, input_mask, volume_width, volume_height, volume_depth); - horizontalEDGEs(voxel, edge, volume_width, volume_height, volume_depth); + //copy the volume from VOXELM structure to the unwrapped phase array passed to this function + returnVolume(voxel, UnwrappedVolume, volume_width, volume_height, volume_depth); - verticalEDGEs(voxel, edge, volume_width, volume_height, volume_depth); - - normalEDGEs(voxel, edge, volume_width, volume_height, volume_depth); - - //sort the EDGEs depending on their reiability. The VOXELs with higher relibility (small value) first - quicker_sort(edge, edge + No_of_edges - 1); - - //gather VOXELs into groups - gatherVOXELs(edge); - - unwrapVolume(voxel, volume_width, volume_height, volume_depth); - - maskVolume(voxel, input_mask, volume_width, volume_height, volume_depth); - - //copy the volume from VOXELM structure to the unwrapped phase array passed to this function - returnVolume(voxel, UnwrappedVolume, volume_width, volume_height, volume_depth); - - free(edge); - free(voxel); - - write_data("unwrapped.dat", UnwrappedVolume, volume_size); - free(UnwrappedVolume); - free(WrappedVolume); - free(input_mask); - - return 1; + free(edge); + free(voxel); + free(extended_mask); } diff --git a/unwrap2D/setup.py b/unwrap2D/setup.py index a8be8565..cc780a48 100644 --- a/unwrap2D/setup.py +++ b/unwrap2D/setup.py @@ -11,12 +11,18 @@ ext_modules = [ ], include_dirs = [np.get_include(),], ), + Extension('unwrap3D', + ['unwrap3D.pyx', + 'Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c', + ], + include_dirs = [np.get_include(),], + ), ] import numpy as np setup( - name = 'unwrp2D', + name = 'unwrap', #ext_modules = cythonize(['cytransient.pyx',], # include_path = [np.get_include(),], # ), diff --git a/unwrap2D/unwrap3D.pyx b/unwrap2D/unwrap3D.pyx new file mode 100644 index 00000000..1df8a4d6 --- /dev/null +++ b/unwrap2D/unwrap3D.pyx @@ -0,0 +1,18 @@ +cdef extern unwrap3D(float* wrapped_volume, + float* unwrapped_volume, + unsigned char* input_mask, + int image_width, int image_height, int volume_depth, + int wrap_around_x, int wrap_around_y, int wrap_around_z) + +def _unwrap3D(float[:,:,::1] array, + unsigned char[:,:,::1] mask, + float[:,:,::1] unwrapped_array, + wrap_around_x, wrap_around_y, wrap_around_z): + unwrap3D(&array[0,0,0], + &unwrapped_array[0,0,0], + &mask[0,0,0], + array.shape[0], array.shape[1], array.shape[2], + wrap_around_x, wrap_around_y, wrap_around_z, + ) + + From 96c293ca85e026499dfaef96971ddddbd18541a2 Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Sun, 13 May 2012 23:38:38 +0200 Subject: [PATCH 032/577] unwrap: unified 2d-3d interface, 2d tested ok, --- ...rapper_with_mask_and_wrap_around_option.c} | 8 +- ...wrapper_with_mask_and_wrap_around_option.c | 2 +- unwrap2D/test_unwrap.py | 73 +++++++++++++++---- unwrap2D/unwrap.py | 28 +++++-- unwrap2D/unwrap2D.pyx | 2 +- unwrap2D/unwrap3D.pyx | 2 +- 6 files changed, 85 insertions(+), 30 deletions(-) rename unwrap2D/{Hussein_3D_unwrapper_with_mask_and_wrap_around_option.cpp => Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c} (99%) diff --git a/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.cpp b/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c similarity index 99% rename from unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.cpp rename to unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c index 84b0b4ab..d7524d7c 100644 --- a/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.cpp +++ b/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c @@ -1015,7 +1015,7 @@ unwrap3D(float* wrapped_volume, float* unwrapped_volume, unsigned char* input_ma int volume_width, int volume_height, int volume_depth, int wrap_around_x, int wrap_around_y, int wrap_around_z) { - params_t params = {TWOPI, 0, 0, 0, 0} + params_t params = {TWOPI, wrap_around_x, wrap_around_y, wrap_around_z, 0}; unsigned char *extended_mask; int volume_size = volume_height * volume_width * volume_depth; int No_of_Edges_initially = 3 * volume_width * volume_height * volume_depth; @@ -1025,8 +1025,8 @@ unwrap3D(float* wrapped_volume, float* unwrapped_volume, unsigned char* input_ma EDGE *edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE));; extend_mask(input_mask, extended_mask, volume_width, volume_height, volume_depth, ¶ms); - initialiseVOXELs(WrappedVolume, input_mask, extended_mask, voxel, volume_width, volume_height, volume_depth); - calculate_reliability(WrappedVolume, voxel, volume_width, volume_height, volume_depth, ¶ms); + initialiseVOXELs(wrapped_volume, input_mask, extended_mask, voxel, volume_width, volume_height, volume_depth); + calculate_reliability(wrapped_volume, voxel, volume_width, volume_height, volume_depth, ¶ms); horizontalEDGEs(voxel, edge, volume_width, volume_height, volume_depth, ¶ms); verticalEDGEs(voxel, edge, volume_width, volume_height, volume_depth, ¶ms); normalEDGEs(voxel, edge, volume_width, volume_height, volume_depth, ¶ms); @@ -1041,7 +1041,7 @@ unwrap3D(float* wrapped_volume, float* unwrapped_volume, unsigned char* input_ma maskVolume(voxel, input_mask, volume_width, volume_height, volume_depth); //copy the volume from VOXELM structure to the unwrapped phase array passed to this function - returnVolume(voxel, UnwrappedVolume, volume_width, volume_height, volume_depth); + returnVolume(voxel, unwrapped_volume, volume_width, volume_height, volume_depth); free(edge); free(voxel); diff --git a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c index 131ec517..67d61c51 100644 --- a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c +++ b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c @@ -684,7 +684,7 @@ unwrap2D(float* wrapped_image, float* UnwrappedImage, unsigned char* input_mask, int image_width, int image_height, int wrap_around_x, int wrap_around_y) { - params_t params = {TWOPI, 0, 0, 0}; + params_t params = {TWOPI, wrap_around_x, wrap_around_y, 0}; unsigned char *extended_mask; int image_size = image_height * image_width; int No_of_Edges_initially = 2 * image_width * image_height; diff --git a/unwrap2D/test_unwrap.py b/unwrap2D/test_unwrap.py index af94c934..e297f1ce 100644 --- a/unwrap2D/test_unwrap.py +++ b/unwrap2D/test_unwrap.py @@ -1,30 +1,51 @@ from numpy.testing import * -from unwrap import unwrap2D +from unwrap import unwrap import numpy as np -from numpy import outer, arange, ones, abs, empty, power, indices - -import numpy.ma as ma def test_unwrap2D(): - nx, ny = 32, 32 + nx, ny = 16, 32 x = np.arange(nx) y = np.arange(ny) - x.shape = (1,-1) - y.shape = (-1,1) + x.shape = (-1,1) + y.shape = (1,-1) z = np.exp(1j*x*0.2*np.pi) * np.exp(1j*y*0.1*np.pi) phi_w = np.angle(z) - phi = unwrap2D(phi_w) + phi = unwrap(phi_w, + wrap_around_axis_0 = False) mask = 0*np.ones((nx, ny), dtype = np.uint8) mask[4:16, 4:16] = 1 - phi_w_ma = ma.array(phi_w, dtype = np.float32, mask = mask) - phi_ma = unwrap2D(phi_w_ma) + phi_w_ma = np.ma.array(phi_w, dtype = np.float32, mask = mask) + phi_ma = unwrap(phi_w_ma) - return (phi_w/(np.pi*2), phi/(np.pi*2), + return (phi/(np.pi*2), + phi_w/(np.pi*2), phi/(np.pi*2), phi_w_ma/(np.pi*2), phi_ma/(np.pi*2),) +def test_unwrap3D(): + x, y, z = np.ogrid[:8, :8, :4] + + phi = 2*np.pi*(x*0.2 + y*0.1 + z*0.05) + phi_wrapped = np.angle(np.exp(1j*phi)) + phi_unwrapped = unwrap(phi_wrapped) + + mask = np.zeros_like(phi, dtype = np.uint8) + mask[4:6, 4:6, 1:3] = 1 + phi_wrapped_masked = np.ma.array(phi_wrapped, dtype = np.float32, mask = mask) + phi_unwrapped_masked = unwrap(phi_wrapped_masked) + + s = np.round(phi_unwrapped[0,0,0]/(2*np.pi)) + assert_array_almost_equal(phi/(2*np.pi), phi_unwrapped/(2*np.pi) - s, decimal = 5) + + assert_array_almost_equal(phi + 2*np.pi*s, phi_unwrapped_masked, decimal = 5) + + return (phi/(np.pi*2), + phi_wrapped/(np.pi*2), phi_unwrapped/(np.pi*2), + phi_wrapped_masked/(np.pi*2), phi_unwrapped_masked/(np.pi*2),) + + # class test_unwrap(TestCase): # def test_simple2d(self, level=1): @@ -52,15 +73,35 @@ def test_unwrap2D(): if __name__=="__main__": #NumpyTest().run() import matplotlib.pyplot as plt - p1,p2,p3,p4 = test_unwrap2D() + + p0,p1,p2,p3,p4 = test_unwrap2D() + plt.figure(1) plt.clf() - plt.subplot(221) + plt.subplot(322) + plt.imshow(p0,interpolation = 'nearest') + plt.subplot(323) plt.imshow(p1,interpolation = 'nearest') - plt.subplot(222) + plt.subplot(324) plt.imshow(p2, interpolation = 'nearest') - plt.subplot(223) + plt.subplot(325) plt.imshow(p3, interpolation = 'nearest') - plt.subplot(224) + plt.subplot(326) plt.imshow(p4, interpolation = 'nearest') plt.draw() + + + p0,p1,p2,p3,p4 = test_unwrap3D() + plt.figure(2) + plt.clf() + plt.subplot(322) + plt.imshow(p0[:,:,0],interpolation = 'nearest') + plt.subplot(323) + plt.imshow(p1[:,:,0],interpolation = 'nearest') + plt.subplot(324) + plt.imshow(p2[:,:,0], interpolation = 'nearest') + plt.subplot(325) + plt.imshow(p3[:,:,0], interpolation = 'nearest') + plt.subplot(326) + plt.imshow(p4[:,:,0], interpolation = 'nearest') + plt.draw() plt.show() diff --git a/unwrap2D/unwrap.py b/unwrap2D/unwrap.py index 8a61a779..a4fb7d2c 100644 --- a/unwrap2D/unwrap.py +++ b/unwrap2D/unwrap.py @@ -1,15 +1,29 @@ import numpy as np -from unwrap2D import _unwrap2D -def unwrap2D(wrapped_array, wrap_around_x = False, wrap_around_y = False): +def unwrap(wrapped_array, + wrap_around_axis_0 = False, + wrap_around_axis_1 = False, + wrap_around_axis_2 = False): + wrapped_array = np.require(wrapped_array, np.float32, ['C']) + if wrapped_array.ndim not in [2,3]: + raise ValueError('input array needs to have 2 or 3 dimensions') + wrapped_array_masked = np.ma.asarray(wrapped_array) unwrapped_array = np.empty_like(wrapped_array_masked.data) - - _unwrap2D(wrapped_array_masked.data, - np.ma.getmaskarray(wrapped_array_masked).astype(np.uint8), - unwrapped_array, - wrap_around_x, wrap_around_y) + if wrapped_array.ndim == 2: + import unwrap2D + unwrap2D._unwrap2D(wrapped_array_masked.data, + np.ma.getmaskarray(wrapped_array_masked).astype(np.uint8), + unwrapped_array, + bool(wrap_around_axis_0), bool(wrap_around_axis_1)) + elif wrapped_array.ndim == 3: + import unwrap3D + unwrap3D._unwrap3D(wrapped_array_masked.data, + np.ma.getmaskarray(wrapped_array_masked).astype(np.uint8), + unwrapped_array, + bool(wrap_around_axis_0), bool(wrap_around_axis_1), bool(wrap_around_axis_2)) + if np.ma.isMaskedArray(wrapped_array): return np.ma.array(unwrapped_array, mask = wrapped_array_masked.mask) else: diff --git a/unwrap2D/unwrap2D.pyx b/unwrap2D/unwrap2D.pyx index 2dd0b33c..c4ca7f31 100644 --- a/unwrap2D/unwrap2D.pyx +++ b/unwrap2D/unwrap2D.pyx @@ -13,7 +13,7 @@ def _unwrap2D(float[:,::1] array, unwrap2D(&array[0,0], &unwrapped_array[0,0], &mask[0,0], - array.shape[0], array.shape[1], + array.shape[1], array.shape[0], wrap_around_x, wrap_around_y, ) diff --git a/unwrap2D/unwrap3D.pyx b/unwrap2D/unwrap3D.pyx index 1df8a4d6..6d5507d1 100644 --- a/unwrap2D/unwrap3D.pyx +++ b/unwrap2D/unwrap3D.pyx @@ -11,7 +11,7 @@ def _unwrap3D(float[:,:,::1] array, unwrap3D(&array[0,0,0], &unwrapped_array[0,0,0], &mask[0,0,0], - array.shape[0], array.shape[1], array.shape[2], + array.shape[0], array.shape[1], array.shape[2], #TODO: check!!! wrap_around_x, wrap_around_y, wrap_around_z, ) From 2cbdef4bb27b94e126a499ff9f98fbd6235f9195 Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Sun, 13 May 2012 23:45:38 +0200 Subject: [PATCH 033/577] unwrap: 3d tested ok --- unwrap2D/test_unwrap.py | 2 +- unwrap2D/unwrap3D.pyx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/unwrap2D/test_unwrap.py b/unwrap2D/test_unwrap.py index e297f1ce..eb2c3ee1 100644 --- a/unwrap2D/test_unwrap.py +++ b/unwrap2D/test_unwrap.py @@ -25,7 +25,7 @@ def test_unwrap2D(): phi_w_ma/(np.pi*2), phi_ma/(np.pi*2),) def test_unwrap3D(): - x, y, z = np.ogrid[:8, :8, :4] + x, y, z = np.ogrid[:8, :12, :4] phi = 2*np.pi*(x*0.2 + y*0.1 + z*0.05) phi_wrapped = np.angle(np.exp(1j*phi)) diff --git a/unwrap2D/unwrap3D.pyx b/unwrap2D/unwrap3D.pyx index 6d5507d1..7a0aee9b 100644 --- a/unwrap2D/unwrap3D.pyx +++ b/unwrap2D/unwrap3D.pyx @@ -11,7 +11,7 @@ def _unwrap3D(float[:,:,::1] array, unwrap3D(&array[0,0,0], &unwrapped_array[0,0,0], &mask[0,0,0], - array.shape[0], array.shape[1], array.shape[2], #TODO: check!!! + array.shape[2], array.shape[1], array.shape[0], #TODO: check!!! wrap_around_x, wrap_around_y, wrap_around_z, ) From abb283fdf9e6de8853805b55dd9ab453260510b5 Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Mon, 14 May 2012 11:51:10 +0200 Subject: [PATCH 034/577] unwrap: made it compile with MSVC (but crashes), still ok with gcc --- ...wrapper_with_mask_and_wrap_around_option.c | 34 ++++++++++--------- ...wrapper_with_mask_and_wrap_around_option.c | 30 ++++++++-------- unwrap2D/unwrap2D.pyx | 2 -- 3 files changed, 34 insertions(+), 32 deletions(-) mode change 100644 => 100755 unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c mode change 100644 => 100755 unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c mode change 100644 => 100755 unwrap2D/unwrap2D.pyx diff --git a/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c b/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c old mode 100644 new mode 100755 index d7524d7c..e0e4cb94 --- a/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c +++ b/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c @@ -19,8 +19,8 @@ #include #include -static float PI = 3.141592654; -static float TWOPI = 6.283185307; +static float PI = 3.141592654f; +static float TWOPI = 6.283185307f; #define NOMASK 0 #define MASK 1 @@ -35,7 +35,7 @@ typedef struct } params_t; //VOXELM information -struct voxelm +struct VOXELM { int increment; //No. of 2*pi to add to the voxel to unwrap it int number_of_voxels_in_group;//No. of voxel in the voxel group @@ -45,16 +45,16 @@ struct voxelm unsigned char extended_mask; //MASK voxel is masked. NOMASK voxel is not masked int group; //group No. int new_group; - struct voxelm *head; //pointer to the first voxel in the group in the linked list - struct voxelm *last; //pointer to the last voxel in the group - struct voxelm *next; //pointer to the next voxel in the group + struct VOXELM *head; //pointer to the first voxel in the group in the linked list + struct VOXELM *last; //pointer to the last voxel in the group + struct VOXELM *next; //pointer to the next voxel in the group }; -typedef struct voxelm VOXELM; +typedef struct VOXELM VOXELM; //the EDGE is the line that connects two voxels. //if we have S voxels, then we have S horizontal edges and S vertical edges -struct edge +struct EDGE { float reliab; //reliabilty of the edge and it depends on the two voxels VOXELM *pointer_1; //pointer to the first voxel @@ -64,7 +64,7 @@ struct edge //the second }; -typedef struct edge EDGE; +typedef struct EDGE EDGE; //---------------start quicker_sort algorithm -------------------------------- #define swap(x,y) {EDGE t; t=x; x=y; y=t;} @@ -159,7 +159,7 @@ void initialiseVOXELs(float *WrappedVolume, unsigned char *input_mask, unsigned voxel_pointer->increment = 0; voxel_pointer->number_of_voxels_in_group = 1; voxel_pointer->value = *wrapped_volume_pointer; - voxel_pointer->reliability = 9999999 + rand(); + voxel_pointer->reliability = 9999999.f + rand(); voxel_pointer->input_mask = *input_mask_pointer; voxel_pointer->extended_mask = *extended_mask_pointer; voxel_pointer->head = voxel_pointer; @@ -738,6 +738,8 @@ void verticalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_heig int no_of_edges = params->no_of_edges; VOXELM *voxel_pointer = voxel; EDGE *edge_pointer = edge + no_of_edges; + int frame_size = volume_width * volume_height; + int next_voxel = frame_size - volume_width; for (n=0; n < volume_depth; n++) { @@ -760,8 +762,6 @@ void verticalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_heig voxel_pointer += volume_width; } - int frame_size = volume_width * volume_height; - int next_voxel = frame_size - volume_width; if (params->y_connectivity == 1) { voxel_pointer = voxel + frame_size - volume_width; @@ -793,7 +793,8 @@ void normalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_height int frame_size = volume_width * volume_height; int volume_size = volume_width * volume_height * volume_depth; VOXELM *voxel_pointer = voxel; - EDGE *edge_pointer = edge + no_of_edges; + EDGE *edge_pointer = edge + no_of_edges; + int next_voxel = volume_size - frame_size; for (n=0; n < volume_depth - 1; n++) { @@ -816,7 +817,6 @@ void normalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_height } - int next_voxel = volume_size - frame_size; if (params->z_connectivity == 1) { voxel_pointer = voxel + next_voxel; @@ -1017,12 +1017,14 @@ unwrap3D(float* wrapped_volume, float* unwrapped_volume, unsigned char* input_ma { params_t params = {TWOPI, wrap_around_x, wrap_around_y, wrap_around_z, 0}; unsigned char *extended_mask; + VOXELM *voxel; + EDGE *edge; int volume_size = volume_height * volume_width * volume_depth; int No_of_Edges_initially = 3 * volume_width * volume_height * volume_depth; extended_mask = (unsigned char *) calloc(volume_size, sizeof(unsigned char)); - VOXELM *voxel = (VOXELM *) calloc(volume_size, sizeof(VOXELM)); - EDGE *edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE));; + voxel = (VOXELM *) calloc(volume_size, sizeof(VOXELM)); + edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE));; extend_mask(input_mask, extended_mask, volume_width, volume_height, volume_depth, ¶ms); initialiseVOXELs(wrapped_volume, input_mask, extended_mask, voxel, volume_width, volume_height, volume_depth); diff --git a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c old mode 100644 new mode 100755 index 67d61c51..3017c529 --- a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c +++ b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c @@ -20,8 +20,8 @@ //TODO: remove global variables //TODO: make thresholds independent -static float PI = 3.141592654; -static float TWOPI = 6.283185307; +static float PI = 3.141592654f; +static float TWOPI = 6.283185307f; #define NOMASK 0 #define MASK 1 @@ -35,7 +35,7 @@ typedef struct } params_t; //PIXELM information -struct pixelm +struct PIXELM { int increment; //No. of 2*pi to add to the pixel to unwrap it int number_of_pixels_in_group;//No. of pixel in the pixel group @@ -45,16 +45,16 @@ struct pixelm unsigned char extended_mask; //0 pixel is masked. NOMASK pixel is not masked int group; //group No. int new_group; - struct pixelm *head; //pointer to the first pixel in the group in the linked list - struct pixelm *last; //pointer to the last pixel in the group - struct pixelm *next; //pointer to the next pixel in the group + struct PIXELM *head; //pointer to the first pixel in the group in the linked list + struct PIXELM *last; //pointer to the last pixel in the group + struct PIXELM *next; //pointer to the next pixel in the group }; -typedef struct pixelm PIXELM; +typedef struct PIXELM PIXELM; //the EDGE is the line that connects two pixels. //if we have S pixels, then we have S horizontal edges and S vertical edges -struct edge +struct EDGE { float reliab; //reliabilty of the edge and it depends on the two pixels PIXELM *pointer_1; //pointer to the first pixel @@ -63,7 +63,7 @@ struct edge //unwrap it with respect to the second }; -typedef struct edge EDGE; +typedef struct EDGE EDGE; //---------------start quicker_sort algorithm -------------------------------- #define swap(x,y) {EDGE t; t=x; x=y; y=t;} @@ -155,7 +155,7 @@ void initialisePIXELs(float *wrapped_image, unsigned char *input_mask, unsigned pixel_pointer->increment = 0; pixel_pointer->number_of_pixels_in_group = 1; pixel_pointer->value = *wrapped_image_pointer; - pixel_pointer->reliability = 9999999 + rand(); + pixel_pointer->reliability = 9999999.f + rand(); pixel_pointer->input_mask = *input_mask_pointer; pixel_pointer->extended_mask = *extended_mask_pointer; pixel_pointer->head = pixel_pointer; @@ -631,8 +631,8 @@ void maskImage(PIXELM *pixel, unsigned char *input_mask, int image_width, int i PIXELM *pointer_pixel = pixel; unsigned char *IMP = input_mask; //input mask pointer - float min=99999999.; - int i, j; + float min=99999999.f; + int i; int image_size = image_width * image_height; //find the minimum of the unwrapped phase @@ -686,12 +686,14 @@ unwrap2D(float* wrapped_image, float* UnwrappedImage, unsigned char* input_mask, { params_t params = {TWOPI, wrap_around_x, wrap_around_y, 0}; unsigned char *extended_mask; + PIXELM *pixel; + EDGE *edge; int image_size = image_height * image_width; int No_of_Edges_initially = 2 * image_width * image_height; extended_mask = (unsigned char *) calloc(image_size, sizeof(unsigned char)); - PIXELM *pixel = (PIXELM *) calloc(image_size, sizeof(PIXELM)); - EDGE *edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE));; + pixel = (PIXELM *) calloc(image_size, sizeof(PIXELM)); + edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE)); extend_mask(input_mask, extended_mask, image_width, image_height, ¶ms); initialisePIXELs(wrapped_image, input_mask, extended_mask, pixel, image_width, image_height); diff --git a/unwrap2D/unwrap2D.pyx b/unwrap2D/unwrap2D.pyx old mode 100644 new mode 100755 index c4ca7f31..9bd901d5 --- a/unwrap2D/unwrap2D.pyx +++ b/unwrap2D/unwrap2D.pyx @@ -8,8 +8,6 @@ def _unwrap2D(float[:,::1] array, unsigned char[:,::1] mask, float[:,::1] unwrapped_array, wrap_around_x, wrap_around_y): - cdef int h = array.shape[0] - cdef int w = array.shape[1] unwrap2D(&array[0,0], &unwrapped_array[0,0], &mask[0,0], From c88bbf989178456293f9d78f0bd8aea24417e4ae Mon Sep 17 00:00:00 2001 From: cgohlke Date: Mon, 14 May 2012 17:05:14 -0700 Subject: [PATCH 035/577] unwrap: Fix crash on Windows --- unwrap2D/unwrap2D.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unwrap2D/unwrap2D.pyx b/unwrap2D/unwrap2D.pyx index 9bd901d5..dab52167 100755 --- a/unwrap2D/unwrap2D.pyx +++ b/unwrap2D/unwrap2D.pyx @@ -1,4 +1,4 @@ -cdef extern unwrap2D(float* wrapped_image, +cdef extern void unwrap2D(float* wrapped_image, float* unwrapped_image, unsigned char* input_mask, int image_width, int image_height, From 0231f72c96687cf62f5deb066a0fe7fbf4c6f8e5 Mon Sep 17 00:00:00 2001 From: cgohlke Date: Mon, 14 May 2012 17:05:45 -0700 Subject: [PATCH 036/577] unwrap: Fix crash on Windows --- unwrap2D/unwrap3D.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unwrap2D/unwrap3D.pyx b/unwrap2D/unwrap3D.pyx index 7a0aee9b..aa18b377 100644 --- a/unwrap2D/unwrap3D.pyx +++ b/unwrap2D/unwrap3D.pyx @@ -1,4 +1,4 @@ -cdef extern unwrap3D(float* wrapped_volume, +cdef extern void unwrap3D(float* wrapped_volume, float* unwrapped_volume, unsigned char* input_mask, int image_width, int image_height, int volume_depth, From 22f23c22fdf52845c7145b2afa6e855464b75df3 Mon Sep 17 00:00:00 2001 From: cgohlke Date: Mon, 14 May 2012 17:06:18 -0700 Subject: [PATCH 037/577] unwrap: Fix crash on Windows --- unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c | 1 + 1 file changed, 1 insertion(+) diff --git a/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c b/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c index e0e4cb94..08f51aa0 100755 --- a/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c +++ b/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c @@ -1011,6 +1011,7 @@ void returnVolume(VOXELM *voxel, float *unwrappedVolume, int volume_width, int } //the main function of the unwrapper +void unwrap3D(float* wrapped_volume, float* unwrapped_volume, unsigned char* input_mask, int volume_width, int volume_height, int volume_depth, int wrap_around_x, int wrap_around_y, int wrap_around_z) From 73b03953a8b36e1a4c00813fc3460d989dc38af9 Mon Sep 17 00:00:00 2001 From: cgohlke Date: Mon, 14 May 2012 17:06:48 -0700 Subject: [PATCH 038/577] unwrap: Fix crash on Windows --- .../Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c index 3017c529..a9bae512 100755 --- a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c +++ b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c @@ -1,9 +1,9 @@ // 2D phase unwrapping, modified for inclusion in scipy by Gregor Thalhammer -//This program was written by Munther Gdeisat and Miguel Arevallilo Herra´ez to program the two-dimensional unwrapper +//This program was written by Munther Gdeisat and Miguel Arevallilo Herra�ez to program the two-dimensional unwrapper //entitled "Fast two-dimensional phase-unwrapping algorithm based on sorting by //reliability following a noncontinuous path" -//by Miguel Arevallilo Herra´ez, David R. Burton, Michael J. Lalor, and Munther A. Gdeisat +//by Miguel Arevallilo Herra�ez, David R. Burton, Michael J. Lalor, and Munther A. Gdeisat //published in the Journal Applied Optics, Vol. 41, No. 35, pp. 7437, 2002. //This program was written by Munther Gdeisat, Liverpool John Moores University, United Kingdom. //Date 26th August 2007 @@ -680,6 +680,7 @@ void returnImage(PIXELM *pixel, float *unwrapped_image, int image_width, int im } //the main function of the unwrapper +void unwrap2D(float* wrapped_image, float* UnwrappedImage, unsigned char* input_mask, int image_width, int image_height, int wrap_around_x, int wrap_around_y) From b614206a8049ca5f6b714fcefcce68f44b3b4dd2 Mon Sep 17 00:00:00 2001 From: cgohlke Date: Mon, 14 May 2012 17:12:29 -0700 Subject: [PATCH 039/577] unwrap: Fix unicode --- .../Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c index a9bae512..854fcffd 100755 --- a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c +++ b/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c @@ -1,9 +1,9 @@ // 2D phase unwrapping, modified for inclusion in scipy by Gregor Thalhammer -//This program was written by Munther Gdeisat and Miguel Arevallilo Herra�ez to program the two-dimensional unwrapper +//This program was written by Munther Gdeisat and Miguel Arevallilo Herraez to program the two-dimensional unwrapper //entitled "Fast two-dimensional phase-unwrapping algorithm based on sorting by //reliability following a noncontinuous path" -//by Miguel Arevallilo Herra�ez, David R. Burton, Michael J. Lalor, and Munther A. Gdeisat +//by Miguel Arevallilo Herraez, David R. Burton, Michael J. Lalor, and Munther A. Gdeisat //published in the Journal Applied Optics, Vol. 41, No. 35, pp. 7437, 2002. //This program was written by Munther Gdeisat, Liverpool John Moores University, United Kingdom. //Date 26th August 2007 From 6ba69a3167c67d93c7a32968858e3f06654b2eb3 Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Fri, 18 May 2012 22:44:55 +0200 Subject: [PATCH 040/577] unwrap: added numpy test cases --- unwrap2D/test_unwrap.py | 189 ++++++++++++++++++++++------------------ 1 file changed, 102 insertions(+), 87 deletions(-) diff --git a/unwrap2D/test_unwrap.py b/unwrap2D/test_unwrap.py index eb2c3ee1..f371494f 100644 --- a/unwrap2D/test_unwrap.py +++ b/unwrap2D/test_unwrap.py @@ -1,107 +1,122 @@ -from numpy.testing import * +from numpy.testing import run_module_suite, TestCase, assert_array_almost_equal from unwrap import unwrap - import numpy as np -def test_unwrap2D(): - nx, ny = 16, 32 - x = np.arange(nx) - y = np.arange(ny) - x.shape = (-1,1) - y.shape = (1,-1) +class test_unwrap(TestCase): - z = np.exp(1j*x*0.2*np.pi) * np.exp(1j*y*0.1*np.pi) - phi_w = np.angle(z) - phi = unwrap(phi_w, - wrap_around_axis_0 = False) + def test_unwrap2D(self): + x, y = np.ogrid[:8, :16] + phi = 2*np.pi*(x*0.2 + y*0.1) + phi_wrapped = np.angle(np.exp(1j*phi)) + phi_unwrapped = unwrap(phi_wrapped) - mask = 0*np.ones((nx, ny), dtype = np.uint8) - mask[4:16, 4:16] = 1 - phi_w_ma = np.ma.array(phi_w, dtype = np.float32, mask = mask) - phi_ma = unwrap(phi_w_ma) + s = np.round(phi_unwrapped[0,0]/(2*np.pi)) + assert_array_almost_equal(phi, phi_unwrapped - s*2*np.pi) - return (phi/(np.pi*2), - phi_w/(np.pi*2), phi/(np.pi*2), - phi_w_ma/(np.pi*2), phi_ma/(np.pi*2),) + def test_unwrap2D_masked(self): + x, y = np.ogrid[:8, :16] + phi = 2*np.pi*(x*0.2 + y*0.1) + + mask = np.zeros_like(phi, dtype = np.uint8) + mask[4:6, 4:8] = 1 + + phi_wrapped = np.angle(np.exp(1j*phi)) + phi_wrapped_masked = np.ma.array(phi_wrapped, dtype = np.float32, mask = mask) + phi_unwrapped_masked = unwrap(phi_wrapped_masked) + + s = np.round(phi_unwrapped_masked[0,0]/(2*np.pi)) + assert_array_almost_equal(phi + 2*np.pi*s, phi_unwrapped_masked) + + def test_unwrap3D(self): + x, y, z = np.ogrid[:8, :12, :4] + phi = 2*np.pi*(x*0.2 + y*0.1 + z*0.05) + phi_wrapped = np.angle(np.exp(1j*phi)) + phi_unwrapped = unwrap(phi_wrapped) + + s = np.round(phi_unwrapped[0,0]/(2*np.pi)) + assert_array_almost_equal(phi, phi_unwrapped - s*2*np.pi) + + def test_unwrap3D_masked(self): + x, y, z = np.ogrid[:8, :12, :4] + phi = 2*np.pi*(x*0.2 + y*0.1 + z*0.05) + phi_wrapped = np.angle(np.exp(1j*phi)) + mask = np.zeros_like(phi, dtype = np.uint8) + mask[4:6, 4:6, 1:3] = 1 + phi_wrapped_masked = np.ma.array(phi_wrapped, dtype = np.float32, mask = mask) + phi_unwrapped_masked = unwrap(phi_wrapped_masked) + + s = np.round(phi_unwrapped_masked[0,0,0]/(2*np.pi)) + assert_array_almost_equal(phi + 2*np.pi*s, phi_unwrapped_masked) + +def unwrap_plots(): -def test_unwrap3D(): - x, y, z = np.ogrid[:8, :12, :4] + x, y = np.ogrid[:32, :32] + phi = 2*np.pi*(x*0.2 + y*0.1) - phi = 2*np.pi*(x*0.2 + y*0.1 + z*0.05) + #phi = 1*np.arctan2(x-14.3, y-6.3) - 2*np.arctan2(x-18.3, y-22.1) + + phi[8,8] = np.NaN + phi_wrapped = np.angle(np.exp(1j*phi)) - phi_unwrapped = unwrap(phi_wrapped) + phi_unwrapped = unwrap(phi_wrapped, + #wrap_around_axis_0 = True, + #wrap_around_axis_1 = True, + ) mask = np.zeros_like(phi, dtype = np.uint8) - mask[4:6, 4:6, 1:3] = 1 + #mask[10:22, 4:10] = 1 phi_wrapped_masked = np.ma.array(phi_wrapped, dtype = np.float32, mask = mask) phi_unwrapped_masked = unwrap(phi_wrapped_masked) - - s = np.round(phi_unwrapped[0,0,0]/(2*np.pi)) - assert_array_almost_equal(phi/(2*np.pi), phi_unwrapped/(2*np.pi) - s, decimal = 5) - assert_array_almost_equal(phi + 2*np.pi*s, phi_unwrapped_masked, decimal = 5) - - return (phi/(np.pi*2), - phi_wrapped/(np.pi*2), phi_unwrapped/(np.pi*2), - phi_wrapped_masked/(np.pi*2), phi_unwrapped_masked/(np.pi*2),) - - - -# class test_unwrap(TestCase): -# def test_simple2d(self, level=1): -# grid = outer(ones(64), arange(-32,32)) + \ -# 1.j * outer(arange(-32,32), ones(64)) -# pgrid = abs(grid) -# wr_grid = normalize_angle(pgrid) -# uw_grid = unwrap2D(wr_grid) -# uw_grid += (pgrid[32,32] - uw_grid[32,32]) - -# assert_array_almost_equal(pgrid, uw_grid, decimal=5) - -# def test_simple3d(self): -# grid = indices((64,64,64)) -# grid[0] -= 32 -# grid[1] -= 32 -# grid[2] -= 32 -# # get distance of each point in the grid from 0 -# grid = power(power(grid, 2.0).sum(axis=0), 0.5) -# wr_grid = normalize_angle(grid) -# uw_grid = unwrap3D(wr_grid) -# uw_grid += (grid[32,32,32] - uw_grid[32,32,32]) -# assert_array_almost_equal(grid, uw_grid, decimal=5) - -if __name__=="__main__": - #NumpyTest().run() import matplotlib.pyplot as plt - - p0,p1,p2,p3,p4 = test_unwrap2D() plt.figure(1) plt.clf() - plt.subplot(322) - plt.imshow(p0,interpolation = 'nearest') - plt.subplot(323) - plt.imshow(p1,interpolation = 'nearest') - plt.subplot(324) - plt.imshow(p2, interpolation = 'nearest') - plt.subplot(325) - plt.imshow(p3, interpolation = 'nearest') - plt.subplot(326) - plt.imshow(p4, interpolation = 'nearest') - plt.draw() + plt.gray() + plt.subplot(221) + plt.imshow(phi, interpolation = 'nearest') + plt.subplot(222) + plt.imshow(phi_wrapped, interpolation = 'nearest') + plt.subplot(223) + plt.imshow(phi_unwrapped, interpolation = 'nearest') + plt.subplot(224) + plt.imshow(phi_unwrapped_masked, interpolation = 'nearest') - - p0,p1,p2,p3,p4 = test_unwrap3D() - plt.figure(2) - plt.clf() - plt.subplot(322) - plt.imshow(p0[:,:,0],interpolation = 'nearest') - plt.subplot(323) - plt.imshow(p1[:,:,0],interpolation = 'nearest') - plt.subplot(324) - plt.imshow(p2[:,:,0], interpolation = 'nearest') - plt.subplot(325) - plt.imshow(p3[:,:,0], interpolation = 'nearest') - plt.subplot(326) - plt.imshow(p4[:,:,0], interpolation = 'nearest') plt.draw() plt.show() + +if __name__=="__main__": + run_module_suite() + + unwrap_plots() + + # p0,p1,p2,p3,p4 = test_unwrap2D() + # plt.figure(1) + # plt.clf() + # plt.subplot(322) + # plt.imshow(p0,interpolation = 'nearest') + # plt.subplot(323) + # plt.imshow(p1,interpolation = 'nearest') + # plt.subplot(324) + # plt.imshow(p2, interpolation = 'nearest') + # plt.subplot(325) + # plt.imshow(p3, interpolation = 'nearest') + # plt.subplot(326) + # plt.imshow(p4, interpolation = 'nearest') + # plt.draw() + + + # p0,p1,p2,p3,p4 = test_unwrap3D() + # plt.figure(2) + # plt.clf() + # plt.subplot(322) + # plt.imshow(p0[:,:,0],interpolation = 'nearest') + # plt.subplot(323) + # plt.imshow(p1[:,:,0],interpolation = 'nearest') + # plt.subplot(324) + # plt.imshow(p2[:,:,0], interpolation = 'nearest') + # plt.subplot(325) + # plt.imshow(p3[:,:,0], interpolation = 'nearest') + # plt.subplot(326) + # plt.imshow(p4[:,:,0], interpolation = 'nearest') + # plt.draw() + # plt.show() From aef6d7dc76e4f50069a15c12850120bad593b5f1 Mon Sep 17 00:00:00 2001 From: Gregor Thalhammer Date: Mon, 16 Jul 2012 15:03:24 +0200 Subject: [PATCH 041/577] unwrap: add unwrap.py to python modules in setup.py --- unwrap2D/setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/unwrap2D/setup.py b/unwrap2D/setup.py index cc780a48..848d43b5 100644 --- a/unwrap2D/setup.py +++ b/unwrap2D/setup.py @@ -28,4 +28,5 @@ setup( # ), cmdclass = {'build_ext': build_ext}, ext_modules = ext_modules, + py_modules = ['unwrap',] ) From 5692989a11e777ccacdd35353d55e154ba394dd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Sat, 6 Jul 2013 22:21:44 +0200 Subject: [PATCH 042/577] unwrap: Move files to skimage directory tree. --- .../Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c | 0 .../Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c | 0 {unwrap2D => skimage/exposure/tests}/test_unwrap.py | 0 {unwrap2D => skimage/exposure}/unwrap.py | 0 {unwrap2D => skimage/exposure}/unwrap2D.pyx | 0 {unwrap2D => skimage/exposure}/unwrap3D.pyx | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename {unwrap2D => skimage/exposure}/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c (100%) rename {unwrap2D => skimage/exposure}/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c (100%) rename {unwrap2D => skimage/exposure/tests}/test_unwrap.py (100%) rename {unwrap2D => skimage/exposure}/unwrap.py (100%) rename {unwrap2D => skimage/exposure}/unwrap2D.pyx (100%) rename {unwrap2D => skimage/exposure}/unwrap3D.pyx (100%) diff --git a/unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c b/skimage/exposure/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c similarity index 100% rename from unwrap2D/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c rename to skimage/exposure/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c diff --git a/unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c b/skimage/exposure/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c similarity index 100% rename from unwrap2D/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c rename to skimage/exposure/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c diff --git a/unwrap2D/test_unwrap.py b/skimage/exposure/tests/test_unwrap.py similarity index 100% rename from unwrap2D/test_unwrap.py rename to skimage/exposure/tests/test_unwrap.py diff --git a/unwrap2D/unwrap.py b/skimage/exposure/unwrap.py similarity index 100% rename from unwrap2D/unwrap.py rename to skimage/exposure/unwrap.py diff --git a/unwrap2D/unwrap2D.pyx b/skimage/exposure/unwrap2D.pyx similarity index 100% rename from unwrap2D/unwrap2D.pyx rename to skimage/exposure/unwrap2D.pyx diff --git a/unwrap2D/unwrap3D.pyx b/skimage/exposure/unwrap3D.pyx similarity index 100% rename from unwrap2D/unwrap3D.pyx rename to skimage/exposure/unwrap3D.pyx From 4aa1bfb0ba172944db9fc8e60059ffa97016330a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Sat, 6 Jul 2013 22:22:15 +0200 Subject: [PATCH 043/577] unwrap: Delete old setup script. --- unwrap2D/setup.py | 32 -------------------------------- 1 file changed, 32 deletions(-) delete mode 100644 unwrap2D/setup.py diff --git a/unwrap2D/setup.py b/unwrap2D/setup.py deleted file mode 100644 index 848d43b5..00000000 --- a/unwrap2D/setup.py +++ /dev/null @@ -1,32 +0,0 @@ -from distutils.core import setup -from distutils.extension import Extension -from Cython.Distutils import build_ext -#from Cython.Build import cythonize -import numpy as np - -ext_modules = [ - Extension('unwrap2D', - ['unwrap2D.pyx', - 'Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c', - ], - include_dirs = [np.get_include(),], - ), - Extension('unwrap3D', - ['unwrap3D.pyx', - 'Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c', - ], - include_dirs = [np.get_include(),], - ), - ] - -import numpy as np - -setup( - name = 'unwrap', - #ext_modules = cythonize(['cytransient.pyx',], - # include_path = [np.get_include(),], - # ), - cmdclass = {'build_ext': build_ext}, - ext_modules = ext_modules, - py_modules = ['unwrap',] - ) From 4c84106b2689906a4df19948a1eea2b048f11612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Sat, 6 Jul 2013 22:23:25 +0200 Subject: [PATCH 044/577] unwrap: Remove executable bit. --- .../Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c | 0 .../Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c | 0 skimage/exposure/unwrap2D.pyx | 0 3 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 skimage/exposure/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c mode change 100755 => 100644 skimage/exposure/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c mode change 100755 => 100644 skimage/exposure/unwrap2D.pyx diff --git a/skimage/exposure/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c b/skimage/exposure/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c old mode 100755 new mode 100644 diff --git a/skimage/exposure/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c b/skimage/exposure/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c old mode 100755 new mode 100644 diff --git a/skimage/exposure/unwrap2D.pyx b/skimage/exposure/unwrap2D.pyx old mode 100755 new mode 100644 From 3bd60446a2e36a8dba4431af9fd2b6c319e4d021 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 8 Jul 2013 12:21:42 +0200 Subject: [PATCH 045/577] unwrap: Rename cython files to skimage conventions. --- skimage/exposure/{unwrap2D.pyx => _unwrap_2d.pyx} | 0 skimage/exposure/{unwrap3D.pyx => _unwrap_3d.pyx} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename skimage/exposure/{unwrap2D.pyx => _unwrap_2d.pyx} (100%) rename skimage/exposure/{unwrap3D.pyx => _unwrap_3d.pyx} (100%) diff --git a/skimage/exposure/unwrap2D.pyx b/skimage/exposure/_unwrap_2d.pyx similarity index 100% rename from skimage/exposure/unwrap2D.pyx rename to skimage/exposure/_unwrap_2d.pyx diff --git a/skimage/exposure/unwrap3D.pyx b/skimage/exposure/_unwrap_3d.pyx similarity index 100% rename from skimage/exposure/unwrap3D.pyx rename to skimage/exposure/_unwrap_3d.pyx From 011ea024c97bf58d75e06aa6e3c3747f4e4261f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 8 Jul 2013 12:23:12 +0200 Subject: [PATCH 046/577] unwrap: Add setup script to build extensions. --- skimage/exposure/setup.py | 41 +++++++++++++++++++++++++++++++++++++++ skimage/setup.py | 1 + 2 files changed, 42 insertions(+) create mode 100644 skimage/exposure/setup.py diff --git a/skimage/exposure/setup.py b/skimage/exposure/setup.py new file mode 100644 index 00000000..ed1515fe --- /dev/null +++ b/skimage/exposure/setup.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python + +import os + +from skimage._build import cython + +base_path = os.path.abspath(os.path.dirname(__file__)) + + +def configuration(parent_package='', top_path=None): + from numpy.distutils.misc_util import Configuration, get_numpy_include_dirs + + config = Configuration('exposure', parent_package, top_path) + config.add_data_dir('tests') + + cython(['_unwrap_2d.pyx'], working_path=base_path) + cython(['_unwrap_3d.pyx'], working_path=base_path) + + unwrap_sources_2d = ['_unwrap_2d.c', + 'Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c'] + config.add_extension('_unwrap_2d', sources=unwrap_sources_2d, + extra_compile_args=['-g'], + include_dirs=[get_numpy_include_dirs()]) + unwrap_sources_3d = ['_unwrap_3d.c', + 'Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c'] + config.add_extension('_unwrap_3d', sources=unwrap_sources_3d, + extra_compile_args=['-g'], + include_dirs=[get_numpy_include_dirs()]) + + return config + +if __name__ == '__main__': + from numpy.distutils.core import setup + setup(maintainer='scikit-image Developers', + author='scikit-image Developers', + maintainer_email='scikit-image@googlegroups.com', + description='Exposure corrections', + url='https://github.com/scikit-image/scikit-image', + license='SciPy License (BSD Style)', + **(configuration(top_path='').todict()) + ) diff --git a/skimage/setup.py b/skimage/setup.py index 1082ba07..14f66897 100644 --- a/skimage/setup.py +++ b/skimage/setup.py @@ -10,6 +10,7 @@ def configuration(parent_package='', top_path=None): config.add_subpackage('color') config.add_subpackage('data') config.add_subpackage('draw') + config.add_subpackage('exposure') config.add_subpackage('feature') config.add_subpackage('filter') config.add_subpackage('graph') From 0df05f6048ab4a411f807713a1ee166cfead56e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 8 Jul 2013 12:26:47 +0200 Subject: [PATCH 047/577] unwrap: Use new imports in python module. --- skimage/exposure/unwrap.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index a4fb7d2c..0c76ea94 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -12,14 +12,14 @@ def unwrap(wrapped_array, wrapped_array_masked = np.ma.asarray(wrapped_array) unwrapped_array = np.empty_like(wrapped_array_masked.data) if wrapped_array.ndim == 2: - import unwrap2D - unwrap2D._unwrap2D(wrapped_array_masked.data, + import _unwrap_2d + _unwrap_2d._unwrap2D(wrapped_array_masked.data, np.ma.getmaskarray(wrapped_array_masked).astype(np.uint8), unwrapped_array, bool(wrap_around_axis_0), bool(wrap_around_axis_1)) elif wrapped_array.ndim == 3: - import unwrap3D - unwrap3D._unwrap3D(wrapped_array_masked.data, + import _unwrap_3d + _unwrap_3d._unwrap3D(wrapped_array_masked.data, np.ma.getmaskarray(wrapped_array_masked).astype(np.uint8), unwrapped_array, bool(wrap_around_axis_0), bool(wrap_around_axis_1), bool(wrap_around_axis_2)) From 05419e49c438c3f867c1ab4bd37021755ec09332 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Sat, 6 Jul 2013 23:31:10 +0200 Subject: [PATCH 048/577] Make unwrap visible in the exposure package. --- skimage/exposure/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/skimage/exposure/__init__.py b/skimage/exposure/__init__.py index b873c339..390d042b 100644 --- a/skimage/exposure/__init__.py +++ b/skimage/exposure/__init__.py @@ -3,6 +3,7 @@ from .exposure import histogram, equalize, equalize_hist, \ adjust_gamma, adjust_sigmoid, adjust_log from ._adapthist import equalize_adapthist +from .unwrap import unwrap __all__ = ['histogram', 'equalize', @@ -12,4 +13,5 @@ __all__ = ['histogram', 'cumulative_distribution', 'adjust_gamma', 'adjust_sigmoid', - 'adjust_log'] + 'adjust_log', + 'unwrap'] From e780bd7a5ac7b958994963cd396f69e0dc322e57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Sat, 6 Jul 2013 23:32:02 +0200 Subject: [PATCH 049/577] unwrap: refactor tests. Update imports to skimage Use simple test functions, do not wrap in a class Whitespace fixes --- skimage/exposure/tests/test_unwrap.py | 85 +++++++++++++-------------- 1 file changed, 42 insertions(+), 43 deletions(-) diff --git a/skimage/exposure/tests/test_unwrap.py b/skimage/exposure/tests/test_unwrap.py index f371494f..5627bd79 100644 --- a/skimage/exposure/tests/test_unwrap.py +++ b/skimage/exposure/tests/test_unwrap.py @@ -1,64 +1,63 @@ -from numpy.testing import run_module_suite, TestCase, assert_array_almost_equal -from unwrap import unwrap import numpy as np +from numpy.testing import run_module_suite, TestCase, assert_array_almost_equal -class test_unwrap(TestCase): +from skimage.exposure import unwrap - def test_unwrap2D(self): - x, y = np.ogrid[:8, :16] - phi = 2*np.pi*(x*0.2 + y*0.1) - phi_wrapped = np.angle(np.exp(1j*phi)) - phi_unwrapped = unwrap(phi_wrapped) +def test_unwrap2D(): + x, y = np.ogrid[:8, :16] + phi = 2*np.pi*(x*0.2 + y*0.1) + phi_wrapped = np.angle(np.exp(1j*phi)) + phi_unwrapped = unwrap(phi_wrapped) - s = np.round(phi_unwrapped[0,0]/(2*np.pi)) - assert_array_almost_equal(phi, phi_unwrapped - s*2*np.pi) + s = np.round(phi_unwrapped[0,0]/(2*np.pi)) + assert_array_almost_equal(phi, phi_unwrapped - s*2*np.pi) - def test_unwrap2D_masked(self): - x, y = np.ogrid[:8, :16] - phi = 2*np.pi*(x*0.2 + y*0.1) +def test_unwrap2D_masked(): + x, y = np.ogrid[:8, :16] + phi = 2*np.pi*(x*0.2 + y*0.1) - mask = np.zeros_like(phi, dtype = np.uint8) - mask[4:6, 4:8] = 1 + mask = np.zeros_like(phi, dtype = np.uint8) + mask[4:6, 4:8] = 1 - phi_wrapped = np.angle(np.exp(1j*phi)) - phi_wrapped_masked = np.ma.array(phi_wrapped, dtype = np.float32, mask = mask) - phi_unwrapped_masked = unwrap(phi_wrapped_masked) + phi_wrapped = np.angle(np.exp(1j*phi)) + phi_wrapped_masked = np.ma.array(phi_wrapped, dtype = np.float32, mask = mask) + phi_unwrapped_masked = unwrap(phi_wrapped_masked) - s = np.round(phi_unwrapped_masked[0,0]/(2*np.pi)) - assert_array_almost_equal(phi + 2*np.pi*s, phi_unwrapped_masked) + s = np.round(phi_unwrapped_masked[0,0]/(2*np.pi)) + assert_array_almost_equal(phi + 2*np.pi*s, phi_unwrapped_masked) - def test_unwrap3D(self): - x, y, z = np.ogrid[:8, :12, :4] - phi = 2*np.pi*(x*0.2 + y*0.1 + z*0.05) - phi_wrapped = np.angle(np.exp(1j*phi)) - phi_unwrapped = unwrap(phi_wrapped) +def test_unwrap3D(): + x, y, z = np.ogrid[:8, :12, :4] + phi = 2*np.pi*(x*0.2 + y*0.1 + z*0.05) + phi_wrapped = np.angle(np.exp(1j*phi)) + phi_unwrapped = unwrap(phi_wrapped) - s = np.round(phi_unwrapped[0,0]/(2*np.pi)) - assert_array_almost_equal(phi, phi_unwrapped - s*2*np.pi) + s = np.round(phi_unwrapped[0,0]/(2*np.pi)) + assert_array_almost_equal(phi, phi_unwrapped - s*2*np.pi) - def test_unwrap3D_masked(self): - x, y, z = np.ogrid[:8, :12, :4] - phi = 2*np.pi*(x*0.2 + y*0.1 + z*0.05) - phi_wrapped = np.angle(np.exp(1j*phi)) - mask = np.zeros_like(phi, dtype = np.uint8) - mask[4:6, 4:6, 1:3] = 1 - phi_wrapped_masked = np.ma.array(phi_wrapped, dtype = np.float32, mask = mask) - phi_unwrapped_masked = unwrap(phi_wrapped_masked) +def test_unwrap3D_masked(): + x, y, z = np.ogrid[:8, :12, :4] + phi = 2*np.pi*(x*0.2 + y*0.1 + z*0.05) + phi_wrapped = np.angle(np.exp(1j*phi)) + mask = np.zeros_like(phi, dtype = np.uint8) + mask[4:6, 4:6, 1:3] = 1 + phi_wrapped_masked = np.ma.array(phi_wrapped, dtype = np.float32, mask = mask) + phi_unwrapped_masked = unwrap(phi_wrapped_masked) - s = np.round(phi_unwrapped_masked[0,0,0]/(2*np.pi)) - assert_array_almost_equal(phi + 2*np.pi*s, phi_unwrapped_masked) + s = np.round(phi_unwrapped_masked[0,0,0]/(2*np.pi)) + assert_array_almost_equal(phi + 2*np.pi*s, phi_unwrapped_masked) def unwrap_plots(): - + x, y = np.ogrid[:32, :32] phi = 2*np.pi*(x*0.2 + y*0.1) #phi = 1*np.arctan2(x-14.3, y-6.3) - 2*np.arctan2(x-18.3, y-22.1) phi[8,8] = np.NaN - + phi_wrapped = np.angle(np.exp(1j*phi)) - phi_unwrapped = unwrap(phi_wrapped, + phi_unwrapped = unwrap(phi_wrapped, #wrap_around_axis_0 = True, #wrap_around_axis_1 = True, ) @@ -67,7 +66,7 @@ def unwrap_plots(): #mask[10:22, 4:10] = 1 phi_wrapped_masked = np.ma.array(phi_wrapped, dtype = np.float32, mask = mask) phi_unwrapped_masked = unwrap(phi_wrapped_masked) - + import matplotlib.pyplot as plt plt.figure(1) plt.clf() @@ -83,12 +82,12 @@ def unwrap_plots(): plt.draw() plt.show() - + if __name__=="__main__": run_module_suite() unwrap_plots() - + # p0,p1,p2,p3,p4 = test_unwrap2D() # plt.figure(1) # plt.clf() From d2fb06fa3b460f0fa76d64ed9e59bb9065cc02fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 8 Jul 2013 12:29:53 +0200 Subject: [PATCH 050/577] unwrap: Whitespace fixes. --- skimage/exposure/unwrap.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index 0c76ea94..eb3e442b 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -1,8 +1,9 @@ import numpy as np -def unwrap(wrapped_array, - wrap_around_axis_0 = False, - wrap_around_axis_1 = False, + +def unwrap(wrapped_array, + wrap_around_axis_0 = False, + wrap_around_axis_1 = False, wrap_around_axis_2 = False): wrapped_array = np.require(wrapped_array, np.float32, ['C']) From e72e5de06e0e6df4852a750a7a95b0e1d79edb48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 8 Jul 2013 12:30:15 +0200 Subject: [PATCH 051/577] unwrap: Move imports to module level. --- skimage/exposure/unwrap.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index eb3e442b..b5f32fed 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -1,5 +1,8 @@ import numpy as np +import _unwrap_2d +import _unwrap_3d + def unwrap(wrapped_array, wrap_around_axis_0 = False, @@ -13,13 +16,11 @@ def unwrap(wrapped_array, wrapped_array_masked = np.ma.asarray(wrapped_array) unwrapped_array = np.empty_like(wrapped_array_masked.data) if wrapped_array.ndim == 2: - import _unwrap_2d _unwrap_2d._unwrap2D(wrapped_array_masked.data, np.ma.getmaskarray(wrapped_array_masked).astype(np.uint8), unwrapped_array, bool(wrap_around_axis_0), bool(wrap_around_axis_1)) elif wrapped_array.ndim == 3: - import _unwrap_3d _unwrap_3d._unwrap3D(wrapped_array_masked.data, np.ma.getmaskarray(wrapped_array_masked).astype(np.uint8), unwrapped_array, From f67b03643a8674845670562069adc584900fe81e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 8 Jul 2013 12:35:29 +0200 Subject: [PATCH 052/577] unwrap: Fix whitespace in c code. --- ...wrapper_with_mask_and_wrap_around_option.c | 208 +++++++++--------- ...wrapper_with_mask_and_wrap_around_option.c | 126 +++++------ 2 files changed, 167 insertions(+), 167 deletions(-) diff --git a/skimage/exposure/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c b/skimage/exposure/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c index 08f51aa0..7c203465 100644 --- a/skimage/exposure/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c +++ b/skimage/exposure/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c @@ -1,17 +1,17 @@ // 3D phase unwrapping, modified for inclusion in scipy by Gregor Thalhammer //This program was written by Hussein Abdul-Rahman and Munther Gdeisat to program the three-dimensional phase unwrapper -//entitled "Fast three-dimensional phase-unwrapping algorithm based on sorting by +//entitled "Fast three-dimensional phase-unwrapping algorithm based on sorting by //reliability following a noncontinuous path" -//by Hussein Abdul-Rahman, Munther A. Gdeisat, David R. Burton, and Michael J. Lalor, -//published in the Proceedings of SPIE - +//by Hussein Abdul-Rahman, Munther A. Gdeisat, David R. Burton, and Michael J. Lalor, +//published in the Proceedings of SPIE - //The International Society for Optical Engineering, Vol. 5856, No. 1, 2005, pp. 32-40 //This program was written by Munther Gdeisat, Liverpool John Moores University, United Kingdom. //Date 31st August 2007 //The wrapped phase volume is assumed to be of floating point data type. The resultant unwrapped phase volume is also of floating point type. //Read the data from the file frame by frame -//The mask is of byte data type. -//When the mask is 255 this means that the voxel is valid +//The mask is of byte data type. +//When the mask is 255 this means that the voxel is valid //When the mask is 0 this means that the voxel is invalid (noisy or corrupted voxel) //This program takes into consideration the image wrap around problem encountered in MRI imaging. @@ -32,7 +32,7 @@ typedef struct int y_connectivity; int z_connectivity; int no_of_edges; -} params_t; +} params_t; //VOXELM information struct VOXELM @@ -55,7 +55,7 @@ typedef struct VOXELM VOXELM; //the EDGE is the line that connects two voxels. //if we have S voxels, then we have S horizontal edges and S vertical edges struct EDGE -{ +{ float reliab; //reliabilty of the edge and it depends on the two voxels VOXELM *pointer_1; //pointer to the first voxel VOXELM *pointer_2; //pointer to the second voxel @@ -157,14 +157,14 @@ void initialiseVOXELs(float *WrappedVolume, unsigned char *input_mask, unsigned for (j=0; j < volume_width; j++) { voxel_pointer->increment = 0; - voxel_pointer->number_of_voxels_in_group = 1; + voxel_pointer->number_of_voxels_in_group = 1; voxel_pointer->value = *wrapped_volume_pointer; voxel_pointer->reliability = 9999999.f + rand(); voxel_pointer->input_mask = *input_mask_pointer; voxel_pointer->extended_mask = *extended_mask_pointer; voxel_pointer->head = voxel_pointer; voxel_pointer->last = voxel_pointer; - voxel_pointer->next = NULL; + voxel_pointer->next = NULL; voxel_pointer->new_group = 0; voxel_pointer->group = -1; voxel_pointer++; @@ -190,7 +190,7 @@ float wrap(float voxel_value) // voxelL_value is the left voxel, voxelR_value is the right voxel int find_wrap(float voxelL_value, float voxelR_value) { - float difference; + float difference; int wrap_value; difference = voxelL_value - voxelR_value; @@ -199,14 +199,14 @@ int find_wrap(float voxelL_value, float voxelR_value) else wrap_value = 0; return wrap_value; -} +} void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int volume_width, int volume_height, int volume_depth, params_t *params) { int n, i, j; int vw = volume_width, vh = volume_height, vd = volume_depth; int fs = volume_width * volume_height; //frame size - int frame_size = volume_width * volume_height; + int frame_size = volume_width * volume_height; int volume_size = volume_width * volume_height * volume_depth; //volume size int vs = volume_size; unsigned char *IMP = input_mask + frame_size + volume_width + 1; //input mask pointer @@ -219,7 +219,7 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int vo { for (j=1; j < volume_width - 1; j++) { - if( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + if( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && (*(IMP + vw) == NOMASK) && (*(IMP + vw - 1) == NOMASK) && (*(IMP + vw + 1) == NOMASK) && (*(IMP - vw) == NOMASK) && (*(IMP - vw - 1) == NOMASK) && (*(IMP - vw + 1) == NOMASK) && (*(IMP + fs) == NOMASK) && (*(IMP + fs - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && @@ -228,7 +228,7 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int vo (*(IMP - fs) == NOMASK) && (*(IMP - fs - 1) == NOMASK) && (*(IMP - fs + 1) == NOMASK) && (*(IMP - fs - vw) == NOMASK) && (*(IMP - fs - vw - 1) == NOMASK) && (*(IMP - fs - vw + 1) == NOMASK) && (*(IMP - fs + vw) == NOMASK) && (*(IMP - fs + vw - 1) == NOMASK) && (*(IMP - fs + vw + 1) == NOMASK)) - { + { *EMP = NOMASK; } ++EMP; @@ -239,7 +239,7 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int vo } EMP += 2 * volume_width; IMP += 2 * volume_width; - } + } if (params->x_connectivity == 1) { @@ -251,19 +251,19 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int vo for (i=1; i < volume_height - 1; i++) { if( (*IMP) == NOMASK && (*(IMP + vw - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && - (*(IMP - vw) == NOMASK) && (*(IMP + vw) == NOMASK) && + (*(IMP - vw) == NOMASK) && (*(IMP + vw) == NOMASK) && (*(IMP - fs) == NOMASK) && (*(IMP + fs) == NOMASK) && (*(IMP - 1) == NOMASK) && (*(IMP + vw + 1) == NOMASK) && - (*(IMP - vw + 1) == NOMASK) && (*(IMP + 2 * vw - 1) == NOMASK) && - (*(IMP - fs - 1) == NOMASK) && (*(IMP + fs + vw + 1) == NOMASK) && + (*(IMP - vw + 1) == NOMASK) && (*(IMP + 2 * vw - 1) == NOMASK) && + (*(IMP - fs - 1) == NOMASK) && (*(IMP + fs + vw + 1) == NOMASK) && (*(IMP - fs - vw) == NOMASK) && (*(IMP + fs + vw) == NOMASK) && - (*(IMP - fs - vw + 1) == NOMASK) && (*(IMP + fs + 2 * vw - 1) == NOMASK) && - (*(IMP - fs + vw - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && + (*(IMP - fs - vw + 1) == NOMASK) && (*(IMP + fs + 2 * vw - 1) == NOMASK) && + (*(IMP - fs + vw - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && (*(IMP - fs + 1) == NOMASK) && (*(IMP + fs + vw - 1) == NOMASK) && (*(IMP - fs + 2 * vw - 1) == NOMASK) && (*(IMP + fs - vw + 1) == NOMASK) && - (*(IMP - fs + vw) == NOMASK) && (*(IMP + fs - vw) == NOMASK) && + (*(IMP - fs + vw) == NOMASK) && (*(IMP + fs - vw) == NOMASK) && (*(IMP - fs + vw + 1) == NOMASK) && (*(IMP + fs - 1) == NOMASK) ) - { + { *EMP = NOMASK; } EMP += vw; @@ -281,19 +281,19 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int vo for (i=1; i < volume_height - 1; i++) { if( (*IMP) == NOMASK && (*(IMP - vw + 1) == NOMASK) && (*(IMP - 1) == NOMASK) && - (*(IMP - vw) == NOMASK) && (*(IMP + vw) == NOMASK) && + (*(IMP - vw) == NOMASK) && (*(IMP + vw) == NOMASK) && (*(IMP - fs) == NOMASK) && (*(IMP + fs) == NOMASK) && (*(IMP - vw - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && - (*(IMP + vw - 1) == NOMASK) && (*(IMP - 2 * vw + 1) == NOMASK) && - (*(IMP - fs - vw - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && + (*(IMP + vw - 1) == NOMASK) && (*(IMP - 2 * vw + 1) == NOMASK) && + (*(IMP - fs - vw - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && (*(IMP - fs - 2 * vw + 1) == NOMASK) && (*(IMP + fs + vw - 1) == NOMASK) && - (*(IMP - fs - 1) == NOMASK) && (*(IMP + fs - vw + 1) == NOMASK) && - (*(IMP - fs - vw + 1) == NOMASK) && (*(IMP + fs - 1) == NOMASK) && + (*(IMP - fs - 1) == NOMASK) && (*(IMP + fs - vw + 1) == NOMASK) && + (*(IMP - fs - vw + 1) == NOMASK) && (*(IMP + fs - 1) == NOMASK) && (*(IMP - fs - vw) == NOMASK) && (*(IMP + fs + vw) == NOMASK) && (*(IMP - fs + vw - 1) == NOMASK) && (*(IMP + fs - 2 * vw + 1) == NOMASK) && - (*(IMP - fs + vw) == NOMASK) && (*(IMP + fs - vw) == NOMASK) && - (*(IMP - fs + 1) == NOMASK) && (*(IMP + fs - vw - 1) == NOMASK) ) - { + (*(IMP - fs + vw) == NOMASK) && (*(IMP + fs - vw) == NOMASK) && + (*(IMP - fs + 1) == NOMASK) && (*(IMP + fs - vw - 1) == NOMASK) ) + { *EMP = NOMASK; } EMP += vw; @@ -302,31 +302,31 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int vo EMP += 2 * vw; IMP += 2 *vw; } - } + } if (params->y_connectivity == 1) { //extend the mask to the left side of the phase volume - IMP = input_mask + frame_size + 1; + IMP = input_mask + frame_size + 1; EMP = extended_mask + frame_size + 1; for (n=1; n < volume_depth - 1; n++) { for (j=1; j < volume_width - 1; j++) { if( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && - (*(IMP + fs - vw) == NOMASK) && (*(IMP + vw) == NOMASK) && + (*(IMP + fs - vw) == NOMASK) && (*(IMP + vw) == NOMASK) && (*(IMP - fs) == NOMASK) && (*(IMP + fs) == NOMASK) && (*(IMP + fs - vw - 1) == NOMASK) && (*(IMP + vw + 1) == NOMASK) && - (*(IMP + fs - vw + 1) == NOMASK) && (*(IMP + vw - 1) == NOMASK) && - (*(IMP - vw - 1) == NOMASK) && (*(IMP + fs + vw + 1) == NOMASK) && + (*(IMP + fs - vw + 1) == NOMASK) && (*(IMP + vw - 1) == NOMASK) && + (*(IMP - vw - 1) == NOMASK) && (*(IMP + fs + vw + 1) == NOMASK) && (*(IMP - vw) == NOMASK) && (*(IMP + fs + vw) == NOMASK) && - (*(IMP - vw + 1) == NOMASK) && (*(IMP + fs + vw - 1) == NOMASK) && - (*(IMP - fs - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && + (*(IMP - vw + 1) == NOMASK) && (*(IMP + fs + vw - 1) == NOMASK) && + (*(IMP - fs - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && (*(IMP - fs + 1) == NOMASK) && (*(IMP + fs - 1) == NOMASK) && (*(IMP - fs + vw - 1) == NOMASK) && (*(IMP + 2 * fs - vw + 1) == NOMASK) && - (*(IMP - fs + vw) == NOMASK) && (*(IMP + 2 * fs - vw) == NOMASK) && + (*(IMP - fs + vw) == NOMASK) && (*(IMP + 2 * fs - vw) == NOMASK) && (*(IMP - fs + vw + 1) == NOMASK) && (*(IMP + 2 * fs - vw - 1) == NOMASK) ) - { + { *EMP = NOMASK; } EMP++; @@ -344,19 +344,19 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int vo for (j=1; j < volume_width - 1; j++) { if( (*IMP) == NOMASK && (*(IMP + 1) == NOMASK) && (*(IMP - 1) == NOMASK) && - (*(IMP - vw) == NOMASK) && (*(IMP - fs + vw) == NOMASK) && + (*(IMP - vw) == NOMASK) && (*(IMP - fs + vw) == NOMASK) && (*(IMP - fs) == NOMASK) && (*(IMP + fs) == NOMASK) && (*(IMP - vw - 1) == NOMASK) && (*(IMP - fs + vw + 1) == NOMASK) && - (*(IMP - vw + 1) == NOMASK) && (*(IMP - fs + vw - 1) == NOMASK) && - (*(IMP - fs - vw - 1) == NOMASK) && (*(IMP + vw + 1) == NOMASK) && + (*(IMP - vw + 1) == NOMASK) && (*(IMP - fs + vw - 1) == NOMASK) && + (*(IMP - fs - vw - 1) == NOMASK) && (*(IMP + vw + 1) == NOMASK) && (*(IMP - fs - vw + 1) == NOMASK) && (*(IMP + vw - 1) == NOMASK) && - (*(IMP - fs - vw) == NOMASK) && (*(IMP + vw) == NOMASK) && - (*(IMP - fs - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && + (*(IMP - fs - vw) == NOMASK) && (*(IMP + vw) == NOMASK) && + (*(IMP - fs - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && (*(IMP - fs + 1) == NOMASK) && (*(IMP + fs - 1) == NOMASK) && (*(IMP - 2 * fs + vw - 1) == NOMASK) && (*(IMP + fs - vw + 1) == NOMASK) && - (*(IMP - 2 * fs + vw) == NOMASK) && (*(IMP + fs - vw) == NOMASK) && - (*(IMP - 2 * fs + vw + 1) == NOMASK) && (*(IMP + fs - vw - 1) == NOMASK) ) - { + (*(IMP - 2 * fs + vw) == NOMASK) && (*(IMP + fs - vw) == NOMASK) && + (*(IMP - 2 * fs + vw + 1) == NOMASK) && (*(IMP + fs - vw - 1) == NOMASK) ) + { *EMP = NOMASK; } EMP++; @@ -370,26 +370,26 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int vo if (params->z_connectivity == 1) { //extend the mask to the bottom side of the phase volume - IMP = input_mask + volume_width + 1; + IMP = input_mask + volume_width + 1; EMP = extended_mask + volume_width + 1; for (i=1; i < volume_height - 1; ++i) { for (j=1; j < volume_width - 1; ++j) { if( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && - (*(IMP - vw) == NOMASK) && (*(IMP + vw) == NOMASK) && + (*(IMP - vw) == NOMASK) && (*(IMP + vw) == NOMASK) && (*(IMP + fs) == NOMASK) && (*(IMP + vs - fs) == NOMASK) && (*(IMP - vw - 1) == NOMASK) && (*(IMP + vw + 1) == NOMASK) && - (*(IMP - vw + 1) == NOMASK) && (*(IMP + vw - 1) == NOMASK) && - (*(IMP + vs - fs - vw - 1) == NOMASK) && (*(IMP + fs + vw + 1) == NOMASK) && + (*(IMP - vw + 1) == NOMASK) && (*(IMP + vw - 1) == NOMASK) && + (*(IMP + vs - fs - vw - 1) == NOMASK) && (*(IMP + fs + vw + 1) == NOMASK) && (*(IMP + vs - fs - vw) == NOMASK) && (*(IMP + fs + vw) == NOMASK) && - (*(IMP + vs - fs - vw + 1) == NOMASK) && (*(IMP + fs + vw - 1) == NOMASK) && - (*(IMP + vs - fs - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && + (*(IMP + vs - fs - vw + 1) == NOMASK) && (*(IMP + fs + vw - 1) == NOMASK) && + (*(IMP + vs - fs - 1) == NOMASK) && (*(IMP + fs + 1) == NOMASK) && (*(IMP + vs - fs + 1) == NOMASK) && (*(IMP + fs - 1) == NOMASK) && (*(IMP + vs - fs + vw - 1) == NOMASK) && (*(IMP + fs - vw + 1) == NOMASK) && - (*(IMP + vs - fs + vw) == NOMASK) && (*(IMP + fs - vw) == NOMASK) && + (*(IMP + vs - fs + vw) == NOMASK) && (*(IMP + fs - vw) == NOMASK) && (*(IMP + vs - fs + vw + 1) == NOMASK) && (*(IMP + fs - vw - 1) == NOMASK) ) - { + { *EMP = NOMASK; } EMP++; @@ -400,26 +400,26 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int vo } //extend the mask to the top side of the phase volume - IMP = input_mask + volume_size - frame_size + volume_width + 1; + IMP = input_mask + volume_size - frame_size + volume_width + 1; EMP = extended_mask + volume_size - frame_size + volume_width + 1; for (i=1; i < volume_height - 1; ++i) { for (j=1; j < volume_width - 1; ++j) { if( (*IMP) == NOMASK && (*(IMP + 1) == NOMASK) && (*(IMP - 1) == NOMASK) && - (*(IMP - vw) == NOMASK) && (*(IMP - fs + vw) == NOMASK) && + (*(IMP - vw) == NOMASK) && (*(IMP - fs + vw) == NOMASK) && (*(IMP - fs) == NOMASK) && (*(IMP - vs + fs) == NOMASK) && (*(IMP - vw - 1) == NOMASK) && (*(IMP + vw + 1) == NOMASK) && - (*(IMP - vw + 1) == NOMASK) && (*(IMP + vw - 1) == NOMASK) && - (*(IMP - fs - vw - 1) == NOMASK) && (*(IMP - vs + fs + vw + 1) == NOMASK) && + (*(IMP - vw + 1) == NOMASK) && (*(IMP + vw - 1) == NOMASK) && + (*(IMP - fs - vw - 1) == NOMASK) && (*(IMP - vs + fs + vw + 1) == NOMASK) && (*(IMP - fs - vw + 1) == NOMASK) && (*(IMP - vs + fs + vw - 1) == NOMASK) && - (*(IMP - fs - vw) == NOMASK) && (*(IMP - vs + fs + vw) == NOMASK) && - (*(IMP - fs - 1) == NOMASK) && (*(IMP - vs + fs + 1) == NOMASK) && + (*(IMP - fs - vw) == NOMASK) && (*(IMP - vs + fs + vw) == NOMASK) && + (*(IMP - fs - 1) == NOMASK) && (*(IMP - vs + fs + 1) == NOMASK) && (*(IMP - fs + 1) == NOMASK) && (*(IMP - vs + fs - 1) == NOMASK) && (*(IMP - fs + vw - 1) == NOMASK) && (*(IMP - vs + fs - vw + 1) == NOMASK) && - (*(IMP - fs + vw) == NOMASK) && (*(IMP - vs + fs - vw) == NOMASK) && - (*(IMP - fs + vw + 1) == NOMASK) && (*(IMP - vs + fs - vw - 1) == NOMASK) ) - { + (*(IMP - fs + vw) == NOMASK) && (*(IMP - vs + fs - vw) == NOMASK) && + (*(IMP - fs + vw + 1) == NOMASK) && (*(IMP - vs + fs - vw - 1) == NOMASK) ) + { *EMP = NOMASK; } EMP++; @@ -432,14 +432,14 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int vo } void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width, int volume_height, int volume_depth, params_t *params) -{ +{ int frame_size = volume_width * volume_height; int volume_size = volume_width * volume_height * volume_depth; VOXELM *voxel_pointer; float H, V, N, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10; float *WVP; int n, i, j; - + WVP = wrappedVolume + frame_size + volume_width + 1; voxel_pointer = voxel + frame_size + volume_width + 1; for (n=1; n < volume_depth - 1; n++) @@ -449,7 +449,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width for (j=1; j < volume_width - 1; j++) { if (voxel_pointer->extended_mask == NOMASK) - { + { H = wrap(*(WVP - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); @@ -463,7 +463,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width D8 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); D10 = wrap(*(WVP - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width - 1)); - voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + D7*D7 + D8*D8 + D9*D9 + D10*D10; } voxel_pointer++; @@ -486,7 +486,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width for (i=1; i < volume_height - 1; ++i) { if (voxel_pointer->extended_mask == NOMASK) - { + { H = wrap(*(WVP + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); @@ -500,7 +500,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width D8 = wrap(*(WVP - frame_size + 2 * volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); D10 = wrap(*(WVP - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 1)); - voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + D7*D7 + D8*D8 + D9*D9 + D10*D10; } voxel_pointer += volume_width; @@ -509,7 +509,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width voxel_pointer += 2 * volume_width; WVP += 2 * volume_width; } - + //calculating reliability for the rear side of the phase volume..... subtract volume_width WVP = wrappedVolume + frame_size + 2 * volume_width - 1; voxel_pointer = voxel + frame_size + 2 * volume_width - 1; @@ -518,7 +518,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width for (i=1; i < volume_height - 1; ++i) { if (voxel_pointer->extended_mask == NOMASK) - { + { H = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP - 1)); V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); @@ -532,7 +532,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width D8 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - 2 * volume_width + 1)); D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); D10 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width - 1)); - voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + D7*D7 + D8*D8 + D9*D9 + D10*D10; } voxel_pointer += volume_width; @@ -540,7 +540,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width } voxel_pointer += 2 * volume_width; WVP += 2 * volume_width; - } + } } if (params->y_connectivity == 1) @@ -553,7 +553,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width for (j=1; j < volume_width - 1; ++j) { if (voxel_pointer->extended_mask == NOMASK) - { + { H = wrap(*(WVP - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); V = wrap(*(WVP + frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); @@ -567,7 +567,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width D8 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + 2 * frame_size - volume_width + 1)); D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + 2 * frame_size - volume_width)); D10 = wrap(*(WVP - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + 2 * frame_size - volume_width - 1)); - voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + D7*D7 + D8*D8 + D9*D9 + D10*D10; } voxel_pointer++; @@ -575,7 +575,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width } voxel_pointer += frame_size - volume_width + 2; WVP += frame_size - volume_width + 2; - } + } //calculating reliability for the right side of the phase volume...subtract frame_size WVP = wrappedVolume + 2 * frame_size - volume_width + 1; @@ -585,7 +585,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width for (j=1; j < volume_width - 1; ++j) { if (voxel_pointer->extended_mask == NOMASK) - { + { H = wrap(*(WVP + 1) - *WVP) - wrap(*WVP - *(WVP - 1)); V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP - frame_size + volume_width)); N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP + frame_size)); @@ -599,7 +599,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width D8 = wrap(*(WVP - 2 * frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); D9 = wrap(*(WVP - 2 * frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); D10 = wrap(*(WVP - 2 * frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width - 1)); - voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + D7*D7 + D8*D8 + D9*D9 + D10*D10; } voxel_pointer++; @@ -607,7 +607,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width } voxel_pointer += frame_size - volume_width + 2; WVP += frame_size - volume_width + 2; - } + } } if (params->z_connectivity == 1) @@ -620,7 +620,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width for (j=1; j < volume_width - 1; ++j) { if (voxel_pointer->extended_mask == NOMASK) - { + { H = wrap(*(WVP - 1) - *WVP) - wrap(*WVP - *(WVP + 1)); V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); N = wrap(*(WVP + frame_size) - *WVP) - wrap(*WVP - *(WVP + volume_size - frame_size)); @@ -634,7 +634,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width D8 = wrap(*(WVP + volume_size - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width + 1)); D9 = wrap(*(WVP + volume_size - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width)); D10 = wrap(*(WVP + volume_size - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + frame_size - volume_width - 1)); - voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + D7*D7 + D8*D8 + D9*D9 + D10*D10; } voxel_pointer++; @@ -642,7 +642,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width } voxel_pointer += 2; WVP += 2; - } + } //calculating reliability for the top side of the phase volume...subtract volume_size WVP = wrappedVolume + volume_size - frame_size + volume_width + 1; @@ -652,7 +652,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width for (j=1; j < volume_width - 1; ++j) { if (voxel_pointer->extended_mask == NOMASK) - { + { H = wrap(*(WVP + 1) - *WVP) - wrap(*WVP - *(WVP - 1)); V = wrap(*(WVP - volume_width) - *WVP) - wrap(*WVP - *(WVP + volume_width)); N = wrap(*(WVP - frame_size) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size)); @@ -660,13 +660,13 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width D2 = wrap(*(WVP - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP + volume_width - 1)); D3 = wrap(*(WVP - frame_size - volume_width - 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + volume_width + 1)); D4 = wrap(*(WVP - frame_size - volume_width + 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + volume_width - 1)); - D5 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + volume_width)); + D5 = wrap(*(WVP - frame_size - volume_width) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + volume_width)); D6 = wrap(*(WVP - frame_size - 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size + 1)); D7 = wrap(*(WVP - frame_size + 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size - 1)); D8 = wrap(*(WVP - frame_size + volume_width - 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size - volume_width + 1)); D9 = wrap(*(WVP - frame_size + volume_width) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size - volume_width)); D10 = wrap(*(WVP - frame_size + volume_width + 1) - *WVP) - wrap(*WVP - *(WVP - volume_size + frame_size - volume_width - 1)); - voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + voxel_pointer->reliability = H*H + V*V + N*N + D1*D1 + D2*D2 + D3*D3 + D4*D4 + D5*D5 + D6*D6 + D7*D7 + D8*D8 + D9*D9 + D10*D10; } voxel_pointer++; @@ -674,7 +674,7 @@ void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width } voxel_pointer += 2; WVP += 2; - } + } } } @@ -688,12 +688,12 @@ void horizontalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_he EDGE *edge_pointer = edge; VOXELM *voxel_pointer = voxel; int no_of_edges = params->no_of_edges; - + for (n=0; n < volume_depth; n++) { for (i = 0; i < volume_height; i++) { - for (j = 0; j < volume_width - 1; j++) + for (j = 0; j < volume_width - 1; j++) { if (voxel_pointer->input_mask == NOMASK && (voxel_pointer + 1)->input_mask == NOMASK ) { @@ -737,7 +737,7 @@ void verticalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_heig int n, i, j; int no_of_edges = params->no_of_edges; VOXELM *voxel_pointer = voxel; - EDGE *edge_pointer = edge + no_of_edges; + EDGE *edge_pointer = edge + no_of_edges; int frame_size = volume_width * volume_height; int next_voxel = frame_size - volume_width; @@ -745,7 +745,7 @@ void verticalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_heig { for (i=0; iinput_mask == NOMASK && (voxel_pointer + volume_width)->input_mask == NOMASK ) { @@ -760,7 +760,7 @@ void verticalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_heig } } voxel_pointer += volume_width; - } + } if (params->y_connectivity == 1) { @@ -800,7 +800,7 @@ void normalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_height { for (i=0; iinput_mask == NOMASK && (voxel_pointer + frame_size)->input_mask == NOMASK ) { @@ -816,7 +816,7 @@ void normalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_height } } - + if (params->z_connectivity == 1) { voxel_pointer = voxel + next_voxel; @@ -840,11 +840,11 @@ void normalEDGEs(VOXELM *voxel, EDGE *edge, int volume_width, int volume_height params->no_of_edges = no_of_edges; } -//gather the voxels of the volume into groups +//gather the voxels of the volume into groups void gatherVOXELs(EDGE *edge, params_t *params) { int k; - VOXELM *VOXEL1; + VOXELM *VOXEL1; VOXELM *VOXEL2; VOXELM *group1; VOXELM *group2; @@ -862,7 +862,7 @@ void gatherVOXELs(EDGE *edge, params_t *params) if (VOXEL2->head != VOXEL1->head) { //VOXELM 2 is alone in its group - //merge this voxel with VOXELM 1 group and find the number of 2 pi to add + //merge this voxel with VOXELM 1 group and find the number of 2 pi to add //to or subtract to unwrap it if ((VOXEL2->next == NULL) && (VOXEL2->head == VOXEL2)) { @@ -874,7 +874,7 @@ void gatherVOXELs(EDGE *edge, params_t *params) } //VOXELM 1 is alone in its group - //merge this voxel with VOXELM 2 group and find the number of 2 pi to add + //merge this voxel with VOXELM 2 group and find the number of 2 pi to add //to or subtract to unwrap it else if ((VOXEL1->next == NULL) && (VOXEL1->head == VOXEL1)) { @@ -883,7 +883,7 @@ void gatherVOXELs(EDGE *edge, params_t *params) (VOXEL2->head->number_of_voxels_in_group)++; VOXEL1->head = VOXEL2->head; VOXEL1->increment = VOXEL2->increment+pointer_edge->increment; - } + } //VOXELM 1 and VOXELM 2 both have groups else @@ -909,7 +909,7 @@ void gatherVOXELs(EDGE *edge, params_t *params) group2->increment += incremento; group2 = group2->next; } - } + } //if the no. of voxels in VOXELM 2 group is larger than the no. of voxels //in VOXELM 1 group. Merge VOXELM 1 group to VOXELM 2 group @@ -938,7 +938,7 @@ void gatherVOXELs(EDGE *edge, params_t *params) } } -//unwrap the volume +//unwrap the volume void unwrapVolume(VOXELM *voxel, int volume_width, int volume_height, int volume_depth) { int i; @@ -969,7 +969,7 @@ void maskVolume(VOXELM *voxel, unsigned char *input_mask, int volume_width, int //find the minimum of the unwrapped phase for (i = 0; i < volume_size; i++) { - if ((pointer_voxel->value < min) && (*IMP == NOMASK)) + if ((pointer_voxel->value < min) && (*IMP == NOMASK)) min = pointer_voxel->value; pointer_voxel++; @@ -977,7 +977,7 @@ void maskVolume(VOXELM *voxel, unsigned char *input_mask, int volume_width, int } pointer_voxel = voxel; - IMP = input_mask; + IMP = input_mask; //set the masked voxels to minimum for (i = 0; i < volume_size; i++) @@ -1002,7 +1002,7 @@ void returnVolume(VOXELM *voxel, float *unwrappedVolume, int volume_width, int float *unwrappedVolume_pointer = unwrappedVolume; VOXELM *voxel_pointer = voxel; - for (i=0; i < volume_size; i++) + for (i=0; i < volume_size; i++) { *unwrappedVolume_pointer = voxel_pointer->value; voxel_pointer++; diff --git a/skimage/exposure/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c b/skimage/exposure/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c index 854fcffd..e6249062 100644 --- a/skimage/exposure/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c +++ b/skimage/exposure/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c @@ -1,15 +1,15 @@ // 2D phase unwrapping, modified for inclusion in scipy by Gregor Thalhammer //This program was written by Munther Gdeisat and Miguel Arevallilo Herraez to program the two-dimensional unwrapper -//entitled "Fast two-dimensional phase-unwrapping algorithm based on sorting by +//entitled "Fast two-dimensional phase-unwrapping algorithm based on sorting by //reliability following a noncontinuous path" //by Miguel Arevallilo Herraez, David R. Burton, Michael J. Lalor, and Munther A. Gdeisat //published in the Journal Applied Optics, Vol. 41, No. 35, pp. 7437, 2002. //This program was written by Munther Gdeisat, Liverpool John Moores University, United Kingdom. //Date 26th August 2007 //The wrapped phase map is assumed to be of floating point data type. The resultant unwrapped phase map is also of floating point type. -//The mask is of byte data type. -//When the mask is 255 this means that the pixel is valid +//The mask is of byte data type. +//When the mask is 255 this means that the pixel is valid //When the mask is 0 this means that the pixel is invalid (noisy or corrupted pixel) //This program takes into consideration the image wrap around problem encountered in MRI imaging. @@ -55,13 +55,13 @@ typedef struct PIXELM PIXELM; //the EDGE is the line that connects two pixels. //if we have S pixels, then we have S horizontal edges and S vertical edges struct EDGE -{ +{ float reliab; //reliabilty of the edge and it depends on the two pixels PIXELM *pointer_1; //pointer to the first pixel PIXELM *pointer_2; //pointer to the second pixel int increment; //No. of 2*pi to add to one of the pixels to //unwrap it with respect to the second -}; +}; typedef struct EDGE EDGE; @@ -147,20 +147,20 @@ void initialisePIXELs(float *wrapped_image, unsigned char *input_mask, unsigned unsigned char *input_mask_pointer = input_mask; unsigned char *extended_mask_pointer = extended_mask; int i, j; - + for (i=0; i < image_height; i++) { for (j=0; j < image_width; j++) { pixel_pointer->increment = 0; - pixel_pointer->number_of_pixels_in_group = 1; + pixel_pointer->number_of_pixels_in_group = 1; pixel_pointer->value = *wrapped_image_pointer; pixel_pointer->reliability = 9999999.f + rand(); pixel_pointer->input_mask = *input_mask_pointer; pixel_pointer->extended_mask = *extended_mask_pointer; pixel_pointer->head = pixel_pointer; pixel_pointer->last = pixel_pointer; - pixel_pointer->next = NULL; + pixel_pointer->next = NULL; pixel_pointer->new_group = 0; pixel_pointer->group = -1; pixel_pointer++; @@ -185,7 +185,7 @@ float wrap(float pixel_value) // pixelL_value is the left pixel, pixelR_value is the right pixel int find_wrap(float pixelL_value, float pixelR_value) { - float difference; + float difference; int wrap_value; difference = pixelL_value - pixelR_value; @@ -194,10 +194,10 @@ int find_wrap(float pixelL_value, float pixelR_value) else wrap_value = 0; return wrap_value; -} +} -void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, - int image_width, int image_height, +void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, + int image_width, int image_height, params_t *params) { int i,j; @@ -211,11 +211,11 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, { for (j=1; j < image_width - 1; ++j) { - if ( (*IMP) == NOMASK && (*(IMP + 1) == NOMASK) && (*(IMP - 1) == NOMASK) && + if ( (*IMP) == NOMASK && (*(IMP + 1) == NOMASK) && (*(IMP - 1) == NOMASK) && (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && (*(IMP - image_width_minus_one) == NOMASK) && (*(IMP - image_width_plus_one) == NOMASK) && (*(IMP + image_width_minus_one) == NOMASK) && (*(IMP + image_width_plus_one) == NOMASK) ) - { + { *EMP = NOMASK; } ++EMP; @@ -224,7 +224,7 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, EMP += 2; IMP += 2; } - + if (params->x_connectivity == 1) { //extend the mask for the right border of the image @@ -236,7 +236,7 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && (*(IMP - image_width - 1) == NOMASK) && (*(IMP - image_width + 1) == NOMASK) && (*(IMP + image_width - 1) == NOMASK) && (*(IMP - 2 * image_width + 1) == NOMASK) ) - { + { *EMP = NOMASK; } EMP += image_width; @@ -248,11 +248,11 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, EMP = extended_mask + image_width; for (i=1; i < image_height - 1; ++i) { - if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && (*(IMP - image_width + 1) == NOMASK) && (*(IMP + image_width + 1) == NOMASK) && (*(IMP + image_width - 1) == NOMASK) && (*(IMP + 2 * image_width - 1) == NOMASK) ) - { + { *EMP = NOMASK; } EMP += image_width; @@ -267,11 +267,11 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, EMP = extended_mask + 1; for (i=1; i < image_width - 1; ++i) { - if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && (*(IMP + image_width) == NOMASK) && (*(IMP + image_width * (image_height - 1)) == NOMASK) && (*(IMP + image_width + 1) == NOMASK) && (*(IMP + image_width - 1) == NOMASK) && (*(IMP + image_width * (image_height - 1) - 1) == NOMASK) && (*(IMP + image_width * (image_height - 1) + 1) == NOMASK) ) - { + { *EMP = NOMASK; } EMP++; @@ -283,21 +283,21 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, EMP = extended_mask + image_width * (image_height - 1) + 1; for (i=1; i < image_width - 1; ++i) { - if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && (*(IMP - image_width) == NOMASK) && (*(IMP - image_width - 1) == NOMASK) && (*(IMP - image_width + 1) == NOMASK) && - (*(IMP - image_width * (image_height - 1) ) == NOMASK) && - (*(IMP - image_width * (image_height - 1) - 1) == NOMASK) && + (*(IMP - image_width * (image_height - 1) ) == NOMASK) && + (*(IMP - image_width * (image_height - 1) - 1) == NOMASK) && (*(IMP - image_width * (image_height - 1) + 1) == NOMASK) ) - { + { *EMP = NOMASK; } EMP++; IMP++; } - } + } } -void calculate_reliability(float *wrappedImage, PIXELM *pixel, +void calculate_reliability(float *wrappedImage, PIXELM *pixel, int image_width, int image_height, params_t *params) { @@ -307,7 +307,7 @@ void calculate_reliability(float *wrappedImage, PIXELM *pixel, float *WIP = wrappedImage + image_width_plus_one; //WIP is the wrapped image pointer float H, V, D1, D2; int i, j; - + for (i = 1; i < image_height -1; ++i) { for (j = 1; j < image_width - 1; ++j) @@ -331,8 +331,8 @@ void calculate_reliability(float *wrappedImage, PIXELM *pixel, { //calculating the reliability for the left border of the image PIXELM *pixel_pointer = pixel + image_width; - float *WIP = wrappedImage + image_width; - + float *WIP = wrappedImage + image_width; + for (i = 1; i < image_height - 1; ++i) { if (pixel_pointer->extended_mask == NOMASK) @@ -349,8 +349,8 @@ void calculate_reliability(float *wrappedImage, PIXELM *pixel, //calculating the reliability for the right border of the image pixel_pointer = pixel + 2 * image_width - 1; - WIP = wrappedImage + 2 * image_width - 1; - + WIP = wrappedImage + 2 * image_width - 1; + for (i = 1; i < image_height - 1; ++i) { if (pixel_pointer->extended_mask == NOMASK) @@ -370,8 +370,8 @@ void calculate_reliability(float *wrappedImage, PIXELM *pixel, { //calculating the reliability for the top border of the image PIXELM *pixel_pointer = pixel + 1; - float *WIP = wrappedImage + 1; - + float *WIP = wrappedImage + 1; + for (i = 1; i < image_width - 1; ++i) { if (pixel_pointer->extended_mask == NOMASK) @@ -388,8 +388,8 @@ void calculate_reliability(float *wrappedImage, PIXELM *pixel, //calculating the reliability for the bottom border of the image pixel_pointer = pixel + (image_height - 1) * image_width + 1; - WIP = wrappedImage + (image_height - 1) * image_width + 1; - + WIP = wrappedImage + (image_height - 1) * image_width + 1; + for (i = 1; i < image_width - 1; ++i) { if (pixel_pointer->extended_mask == NOMASK) @@ -407,10 +407,10 @@ void calculate_reliability(float *wrappedImage, PIXELM *pixel, } //calculate the reliability of the horizontal edges of the image -//it is calculated by adding the reliability of pixel and the relibility of +//it is calculated by adding the reliability of pixel and the relibility of //its right-hand neighbour //edge is calculated between a pixel and its next neighbour -void horizontalEDGEs(PIXELM *pixel, EDGE *edge, +void horizontalEDGEs(PIXELM *pixel, EDGE *edge, int image_width, int image_height, params_t *params) { @@ -418,10 +418,10 @@ void horizontalEDGEs(PIXELM *pixel, EDGE *edge, EDGE *edge_pointer = edge; PIXELM *pixel_pointer = pixel; int no_of_edges = params->no_of_edges; - + for (i = 0; i < image_height; i++) { - for (j = 0; j < image_width - 1; j++) + for (j = 0; j < image_width - 1; j++) { if (pixel_pointer->input_mask == NOMASK && (pixel_pointer + 1)->input_mask == NOMASK) { @@ -458,20 +458,20 @@ void horizontalEDGEs(PIXELM *pixel, EDGE *edge, } //calculate the reliability of the vertical edges of the image -//it is calculated by adding the reliability of pixel and the relibility of +//it is calculated by adding the reliability of pixel and the relibility of //its lower neighbour in the image. -void verticalEDGEs(PIXELM *pixel, EDGE *edge, +void verticalEDGEs(PIXELM *pixel, EDGE *edge, int image_width, int image_height, params_t *params) { int i, j; int no_of_edges = params->no_of_edges; PIXELM *pixel_pointer = pixel; - EDGE *edge_pointer = edge + no_of_edges; + EDGE *edge_pointer = edge + no_of_edges; for (i=0; i < image_height - 1; i++) { - for (j=0; j < image_width; j++) + for (j=0; j < image_width; j++) { if (pixel_pointer->input_mask == NOMASK && (pixel_pointer + image_width)->input_mask == NOMASK) { @@ -507,11 +507,11 @@ void verticalEDGEs(PIXELM *pixel, EDGE *edge, params->no_of_edges = no_of_edges; } -//gather the pixels of the image into groups +//gather the pixels of the image into groups void gatherPIXELs(EDGE *edge, params_t *params) { int k; - PIXELM *PIXEL1; + PIXELM *PIXEL1; PIXELM *PIXEL2; PIXELM *group1; PIXELM *group2; @@ -529,7 +529,7 @@ void gatherPIXELs(EDGE *edge, params_t *params) if (PIXEL2->head != PIXEL1->head) { //PIXELM 2 is alone in its group - //merge this pixel with PIXELM 1 group and find the number of 2 pi to add + //merge this pixel with PIXELM 1 group and find the number of 2 pi to add //to or subtract to unwrap it if ((PIXEL2->next == NULL) && (PIXEL2->head == PIXEL2)) { @@ -541,7 +541,7 @@ void gatherPIXELs(EDGE *edge, params_t *params) } //PIXELM 1 is alone in its group - //merge this pixel with PIXELM 2 group and find the number of 2 pi to add + //merge this pixel with PIXELM 2 group and find the number of 2 pi to add //to or subtract to unwrap it else if ((PIXEL1->next == NULL) && (PIXEL1->head == PIXEL1)) { @@ -550,7 +550,7 @@ void gatherPIXELs(EDGE *edge, params_t *params) (PIXEL2->head->number_of_pixels_in_group)++; PIXEL1->head = PIXEL2->head; PIXEL1->increment = PIXEL2->increment+pointer_edge->increment; - } + } //PIXELM 1 and PIXELM 2 both have groups else @@ -577,7 +577,7 @@ void gatherPIXELs(EDGE *edge, params_t *params) group2->increment += incremento; group2 = group2->next; } - } + } //if the no. of pixels in PIXELM 2 group is larger than the //no. of pixels in PIXELM 1 group. Merge PIXELM 1 group to @@ -607,7 +607,7 @@ void gatherPIXELs(EDGE *edge, params_t *params) } } -//unwrap the image +//unwrap the image void unwrapImage(PIXELM *pixel, int image_width, int image_height) { int i; @@ -638,7 +638,7 @@ void maskImage(PIXELM *pixel, unsigned char *input_mask, int image_width, int i //find the minimum of the unwrapped phase for (i = 0; i < image_size; i++) { - if ((pointer_pixel->value < min) && (*IMP == NOMASK)) + if ((pointer_pixel->value < min) && (*IMP == NOMASK)) min = pointer_pixel->value; pointer_pixel++; @@ -646,7 +646,7 @@ void maskImage(PIXELM *pixel, unsigned char *input_mask, int image_width, int i } pointer_pixel = pixel; - IMP = input_mask; + IMP = input_mask; //set the masked pixels to minimum for (i = 0; i < image_size; i++) @@ -670,8 +670,8 @@ void returnImage(PIXELM *pixel, float *unwrapped_image, int image_width, int im int image_size = image_width * image_height; float *unwrapped_image_pointer = unwrapped_image; PIXELM *pixel_pointer = pixel; - - for (i=0; i < image_size; i++) + + for (i=0; i < image_size; i++) { *unwrapped_image_pointer = pixel_pointer->value; pixel_pointer++; @@ -681,8 +681,8 @@ void returnImage(PIXELM *pixel, float *unwrapped_image, int image_width, int im //the main function of the unwrapper void -unwrap2D(float* wrapped_image, float* UnwrappedImage, unsigned char* input_mask, - int image_width, int image_height, +unwrap2D(float* wrapped_image, float* UnwrappedImage, unsigned char* input_mask, + int image_width, int image_height, int wrap_around_x, int wrap_around_y) { params_t params = {TWOPI, wrap_around_x, wrap_around_y, 0}; @@ -691,32 +691,32 @@ unwrap2D(float* wrapped_image, float* UnwrappedImage, unsigned char* input_mask, EDGE *edge; int image_size = image_height * image_width; int No_of_Edges_initially = 2 * image_width * image_height; - + extended_mask = (unsigned char *) calloc(image_size, sizeof(unsigned char)); pixel = (PIXELM *) calloc(image_size, sizeof(PIXELM)); edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE)); - + extend_mask(input_mask, extended_mask, image_width, image_height, ¶ms); initialisePIXELs(wrapped_image, input_mask, extended_mask, pixel, image_width, image_height); calculate_reliability(wrapped_image, pixel, image_width, image_height, ¶ms); horizontalEDGEs(pixel, edge, image_width, image_height, ¶ms); verticalEDGEs(pixel, edge, image_width, image_height, ¶ms); - + //sort the EDGEs depending on their reiability. The PIXELs with higher //relibility (small value) first quicker_sort(edge, edge + params.no_of_edges - 1); - + //gather PIXELs into groups gatherPIXELs(edge, ¶ms); - + unwrapImage(pixel, image_width, image_height); maskImage(pixel, input_mask, image_width, image_height); - + //copy the image from PIXELM structure to the unwrapped phase array //passed to this function //TODO: replace by (cython?) function to directly write into numpy array ? returnImage(pixel, UnwrappedImage, image_width, image_height); - + free(edge); free(pixel); free(extended_mask); From 933e2c77f3affc4043b78f430e01c8c01c1f86c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 8 Jul 2013 11:52:06 +0200 Subject: [PATCH 053/577] unwrap: Add unfinished docstrings. Conflicts: skimage/exposure/unwrap.py --- skimage/exposure/unwrap.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index b5f32fed..76dc3dbe 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -5,10 +5,21 @@ import _unwrap_3d def unwrap(wrapped_array, - wrap_around_axis_0 = False, - wrap_around_axis_1 = False, - wrap_around_axis_2 = False): + wrap_around_axis_0=False, + wrap_around_axis_1=False, + wrap_around_axis_2=False): + '''From ``image``, wrapped to lie in the interval [-pi, pi), recover the + original, unwrapped image. + Parameters + ---------- + image : 2D or 3D ndarray, optionally a masked array + wrap_around : bool or sequence of bool + + Returns + ------- + image_unwrapped : array_like + ''' wrapped_array = np.require(wrapped_array, np.float32, ['C']) if wrapped_array.ndim not in [2,3]: raise ValueError('input array needs to have 2 or 3 dimensions') From b29dd83eea3c6dc04ee0ff32ee712c8a3cea5cc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 8 Jul 2013 11:59:22 +0200 Subject: [PATCH 054/577] unwrap: Refactor wrap_around argument. --- skimage/exposure/unwrap.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index 76dc3dbe..ea674af3 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -4,10 +4,7 @@ import _unwrap_2d import _unwrap_3d -def unwrap(wrapped_array, - wrap_around_axis_0=False, - wrap_around_axis_1=False, - wrap_around_axis_2=False): +def unwrap(wrapped_array, wrap_around=False): '''From ``image``, wrapped to lie in the interval [-pi, pi), recover the original, unwrapped image. @@ -21,8 +18,19 @@ def unwrap(wrapped_array, image_unwrapped : array_like ''' wrapped_array = np.require(wrapped_array, np.float32, ['C']) - if wrapped_array.ndim not in [2,3]: - raise ValueError('input array needs to have 2 or 3 dimensions') + if wrapped_array.ndim not in (2, 3): + raise ValueError('image must be 2 or 3 dimensional') + if isinstance(wrap_around, bool): + wrap_around = [wrap_around] * wrapped_array.ndim + elif (hasattr(wrap_around, '__getitem__') + and not isinstance(wrap_around, basestring)): + if not len(wrap_around) == wrapped_array.ndim: + raise ValueError('Length of wrap_around must equal the ' + 'dimensionality of image') + wrap_around = [bool(wa) for wa in wrap_around] + else: + raise ValueError('wrap_around must be a bool or a sequence with ' + 'length equal to the dimensionality of image') wrapped_array_masked = np.ma.asarray(wrapped_array) unwrapped_array = np.empty_like(wrapped_array_masked.data) @@ -30,12 +38,12 @@ def unwrap(wrapped_array, _unwrap_2d._unwrap2D(wrapped_array_masked.data, np.ma.getmaskarray(wrapped_array_masked).astype(np.uint8), unwrapped_array, - bool(wrap_around_axis_0), bool(wrap_around_axis_1)) + wrap_around[0], wrap_around[1]) elif wrapped_array.ndim == 3: _unwrap_3d._unwrap3D(wrapped_array_masked.data, np.ma.getmaskarray(wrapped_array_masked).astype(np.uint8), unwrapped_array, - bool(wrap_around_axis_0), bool(wrap_around_axis_1), bool(wrap_around_axis_2)) + wrap_around[0], wrap_around[1], wrap_around[2]) if np.ma.isMaskedArray(wrapped_array): return np.ma.array(unwrapped_array, mask = wrapped_array_masked.mask) From 26138fbeb61965da2d332eeed33c768f65d67692 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 8 Jul 2013 12:43:28 +0200 Subject: [PATCH 055/577] unwrap: Refactor to skimage-style variable names. --- skimage/exposure/unwrap.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index ea674af3..8a0b8970 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -4,7 +4,7 @@ import _unwrap_2d import _unwrap_3d -def unwrap(wrapped_array, wrap_around=False): +def unwrap(image, wrap_around=False): '''From ``image``, wrapped to lie in the interval [-pi, pi), recover the original, unwrapped image. @@ -17,14 +17,14 @@ def unwrap(wrapped_array, wrap_around=False): ------- image_unwrapped : array_like ''' - wrapped_array = np.require(wrapped_array, np.float32, ['C']) - if wrapped_array.ndim not in (2, 3): + image = np.require(image, np.float32, ['C']) + if image.ndim not in (2, 3): raise ValueError('image must be 2 or 3 dimensional') if isinstance(wrap_around, bool): - wrap_around = [wrap_around] * wrapped_array.ndim + wrap_around = [wrap_around] * image.ndim elif (hasattr(wrap_around, '__getitem__') and not isinstance(wrap_around, basestring)): - if not len(wrap_around) == wrapped_array.ndim: + if not len(wrap_around) == image.ndim: raise ValueError('Length of wrap_around must equal the ' 'dimensionality of image') wrap_around = [bool(wa) for wa in wrap_around] @@ -32,23 +32,23 @@ def unwrap(wrapped_array, wrap_around=False): raise ValueError('wrap_around must be a bool or a sequence with ' 'length equal to the dimensionality of image') - wrapped_array_masked = np.ma.asarray(wrapped_array) - unwrapped_array = np.empty_like(wrapped_array_masked.data) - if wrapped_array.ndim == 2: - _unwrap_2d._unwrap2D(wrapped_array_masked.data, - np.ma.getmaskarray(wrapped_array_masked).astype(np.uint8), - unwrapped_array, + image_masked = np.ma.asarray(image) + image_unwrapped = np.empty_like(image_masked.data) + if image.ndim == 2: + _unwrap_2d._unwrap2D(image_masked.data, + np.ma.getmaskarray(image_masked).astype(np.uint8), + image_unwrapped, wrap_around[0], wrap_around[1]) - elif wrapped_array.ndim == 3: - _unwrap_3d._unwrap3D(wrapped_array_masked.data, - np.ma.getmaskarray(wrapped_array_masked).astype(np.uint8), - unwrapped_array, + elif image.ndim == 3: + _unwrap_3d._unwrap3D(image_masked.data, + np.ma.getmaskarray(image_masked).astype(np.uint8), + image_unwrapped, wrap_around[0], wrap_around[1], wrap_around[2]) - if np.ma.isMaskedArray(wrapped_array): - return np.ma.array(unwrapped_array, mask = wrapped_array_masked.mask) + if np.ma.isMaskedArray(image): + return np.ma.array(image_unwrapped, mask = image_masked.mask) else: - return unwrapped_array + return image_unwrapped #TODO: set_fill to minimum value #TODO: check for empty mask, not a single contiguous pixel From 37f36cd98b51a9b7776660e263f768643c1bae43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 8 Jul 2013 12:55:02 +0200 Subject: [PATCH 056/577] unwrap: Add docstring. --- skimage/exposure/unwrap.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index 8a0b8970..d208e0ce 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -10,12 +10,29 @@ def unwrap(image, wrap_around=False): Parameters ---------- - image : 2D or 3D ndarray, optionally a masked array + image : 2D or 3D ndarray of floats, optionally a masked array + The values should be in the range ``[-pi, pi)``. If a masked array is + provided, the masked entries will not be changed, and their values + will not be used to guide the unwrapping of neighboring, unmasked + values. wrap_around : bool or sequence of bool + When an element of the sequence is ``True``, the unwrapping process + will regard the edges along the corresponding axis of the image to be + connected and use this connectivity to guide the phase unwrapping + process. If only a single boolean is given, it will apply to all axes. Returns ------- - image_unwrapped : array_like + image_unwrapped : array_like, float32 + Unwrapped image of the same shape as the input. If the input ``image`` + was a masked array, the mask will be preserved. + + References + ---------- + - Miguel Arevallilo Herraez, David R. Burton, Michael J. Lalor, + and Munther A. Gdeisat, "Fast two-dimensional phase-unwrapping + algorithm based on sorting by reliability following a noncontinuous + path", Journal Applied Optics, Vol. 41, No. 35, pp. 7437, 2002 ''' image = np.require(image, np.float32, ['C']) if image.ndim not in (2, 3): From 5bfbd7cdadae691176bab93b754b51b3b185ddd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 8 Jul 2013 13:44:31 +0200 Subject: [PATCH 057/577] Add example for phase unwrapping. --- doc/examples/plot_phase_unwrap.py | 64 +++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 doc/examples/plot_phase_unwrap.py diff --git a/doc/examples/plot_phase_unwrap.py b/doc/examples/plot_phase_unwrap.py new file mode 100644 index 00000000..258ed21e --- /dev/null +++ b/doc/examples/plot_phase_unwrap.py @@ -0,0 +1,64 @@ +""" +================ +Phase Unwrapping +================ + +Some signals can only be observed modulo 2*pi, and this can also apply to +two- and three dimensional images. In these cases phase unwrapping is +needed to recover the underlying, unwrapped signal. In this example we will +demonstrate an algorithm [1]_ implemented in ``skimage`` at work for such a +problem. +""" + +import numpy as np +from matplotlib import pyplot as plt +from skimage import data, img_as_float, color, exposure + + +# Load an image as a floating-point grayscale +image = color.rgb2gray(img_as_float(data.chelsea())) +# Scale the image to [0, 4*pi] +image = exposure.rescale_intensity(image, out_range=(0, 4 * np.pi)) +# Create a phase-wrapped image in the interval [-pi, pi) +image_wrapped = np.angle(np.exp(1j * image)) +# Perform phase unwrapping +image_unwrapped = exposure.unwrap(image_wrapped) + +# Plotting +plt.figure() +plt.gray() # grayscale colormap as default +imkwargs = dict(vmin=0, vmax=4 * np.pi) +plt.subplot(221) +plt.title('Original') +plt.imshow(image, **imkwargs) +plt.colorbar() + +plt.subplot(222) +plt.title('Wrapped phase') +plt.imshow(image_wrapped, vmin=-np.pi, vmax=np.pi) +plt.colorbar() + +plt.subplot(223) +plt.title('After phase unwrapping') +plt.imshow(image_unwrapped) +plt.colorbar() + +plt.subplot(224) +plt.title('Unwrapped minus original') +plt.imshow(image_unwrapped - image) +plt.colorbar() + +plt.show() + + +""" +.. image:: PLOT2RST.current_figure + +References +---------- + +.. [1] Miguel Arevallilo Herraez, David R. Burton, Michael J. Lalor, + and Munther A. Gdeisat, "Fast two-dimensional phase-unwrapping + algorithm based on sorting by reliability following a noncontinuous + path", Journal Applied Optics, Vol. 41, No. 35, pp. 7437, 2002 +""" From a2a6f8d4b505e5a7d21a71a2920509927aa99a23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 8 Jul 2013 14:06:28 +0200 Subject: [PATCH 058/577] unwrap: Use relative imports --- skimage/exposure/unwrap.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index d208e0ce..d83c2c65 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -1,7 +1,7 @@ import numpy as np -import _unwrap_2d -import _unwrap_3d +import ._unwrap_2d +import ._unwrap_3d def unwrap(image, wrap_around=False): From 2f784366b7f1ccc9e8ec18f9e1baf9c53bc4e055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 8 Jul 2013 14:26:37 +0200 Subject: [PATCH 059/577] unwrap: Correct use of relative imports. --- skimage/exposure/unwrap.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index d83c2c65..648842db 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -1,7 +1,7 @@ import numpy as np -import ._unwrap_2d -import ._unwrap_3d +from . import _unwrap_2d +from . import _unwrap_3d def unwrap(image, wrap_around=False): From 8a81624ba887dc3d5699f1645f2bc9c7cebe18d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Tue, 9 Jul 2013 20:49:57 +0200 Subject: [PATCH 060/577] unwrap: Format references correctly. --- skimage/exposure/unwrap.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index 648842db..01b996e5 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -29,10 +29,10 @@ def unwrap(image, wrap_around=False): References ---------- - - Miguel Arevallilo Herraez, David R. Burton, Michael J. Lalor, - and Munther A. Gdeisat, "Fast two-dimensional phase-unwrapping - algorithm based on sorting by reliability following a noncontinuous - path", Journal Applied Optics, Vol. 41, No. 35, pp. 7437, 2002 + .. [1] Miguel Arevallilo Herraez, David R. Burton, Michael J. Lalor, + and Munther A. Gdeisat, "Fast two-dimensional phase-unwrapping + algorithm based on sorting by reliability following a noncontinuous + path", Journal Applied Optics, Vol. 41, No. 35, pp. 7437, 2002 ''' image = np.require(image, np.float32, ['C']) if image.ndim not in (2, 3): From 0e56ee957754c635266119b2a5bcc8596084e5d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Tue, 9 Jul 2013 20:50:43 +0200 Subject: [PATCH 061/577] unwrap: Remove plotting code. --- skimage/exposure/tests/test_unwrap.py | 34 --------------------------- 1 file changed, 34 deletions(-) diff --git a/skimage/exposure/tests/test_unwrap.py b/skimage/exposure/tests/test_unwrap.py index 5627bd79..8de57c92 100644 --- a/skimage/exposure/tests/test_unwrap.py +++ b/skimage/exposure/tests/test_unwrap.py @@ -85,37 +85,3 @@ def unwrap_plots(): if __name__=="__main__": run_module_suite() - - unwrap_plots() - - # p0,p1,p2,p3,p4 = test_unwrap2D() - # plt.figure(1) - # plt.clf() - # plt.subplot(322) - # plt.imshow(p0,interpolation = 'nearest') - # plt.subplot(323) - # plt.imshow(p1,interpolation = 'nearest') - # plt.subplot(324) - # plt.imshow(p2, interpolation = 'nearest') - # plt.subplot(325) - # plt.imshow(p3, interpolation = 'nearest') - # plt.subplot(326) - # plt.imshow(p4, interpolation = 'nearest') - # plt.draw() - - - # p0,p1,p2,p3,p4 = test_unwrap3D() - # plt.figure(2) - # plt.clf() - # plt.subplot(322) - # plt.imshow(p0[:,:,0],interpolation = 'nearest') - # plt.subplot(323) - # plt.imshow(p1[:,:,0],interpolation = 'nearest') - # plt.subplot(324) - # plt.imshow(p2[:,:,0], interpolation = 'nearest') - # plt.subplot(325) - # plt.imshow(p3[:,:,0], interpolation = 'nearest') - # plt.subplot(326) - # plt.imshow(p4[:,:,0], interpolation = 'nearest') - # plt.draw() - # plt.show() From ebef821a70041cf230b2ebacb10ed2262816a5a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Thu, 11 Jul 2013 10:51:44 +0200 Subject: [PATCH 062/577] unwrap: Add citation for 3D. --- skimage/exposure/unwrap.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index 01b996e5..04e7d9c6 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -33,6 +33,11 @@ def unwrap(image, wrap_around=False): and Munther A. Gdeisat, "Fast two-dimensional phase-unwrapping algorithm based on sorting by reliability following a noncontinuous path", Journal Applied Optics, Vol. 41, No. 35, pp. 7437, 2002 + .. [2] Abdul-Rahman, H., Gdeisat, M., Burton, D., & Lalor, M., "Fast + three-dimensional phase-unwrapping algorithm based on sorting by + reliability following a non-continuous path. In W. Osten, + C. Gorecki, & E. L. Novak (Eds.), Optical Metrology (2005) 32--40, + International Society for Optics and Photonics. ''' image = np.require(image, np.float32, ['C']) if image.ndim not in (2, 3): From 54865ecb23a3c840e8ef2c5350efaf9074e1e327 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Thu, 11 Jul 2013 10:52:12 +0200 Subject: [PATCH 063/577] unwrap: reformat references --- skimage/exposure/unwrap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index 04e7d9c6..a80c02f3 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -32,7 +32,7 @@ def unwrap(image, wrap_around=False): .. [1] Miguel Arevallilo Herraez, David R. Burton, Michael J. Lalor, and Munther A. Gdeisat, "Fast two-dimensional phase-unwrapping algorithm based on sorting by reliability following a noncontinuous - path", Journal Applied Optics, Vol. 41, No. 35, pp. 7437, 2002 + path", Journal Applied Optics, Vol. 41, No. 35 (2002) 7437, .. [2] Abdul-Rahman, H., Gdeisat, M., Burton, D., & Lalor, M., "Fast three-dimensional phase-unwrapping algorithm based on sorting by reliability following a non-continuous path. In W. Osten, From ac330662b9ed6ede245889b3c958037dd172455f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Thu, 11 Jul 2013 10:52:31 +0200 Subject: [PATCH 064/577] unwrap: Remove unused imports --- skimage/exposure/tests/test_unwrap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/exposure/tests/test_unwrap.py b/skimage/exposure/tests/test_unwrap.py index 8de57c92..4a329928 100644 --- a/skimage/exposure/tests/test_unwrap.py +++ b/skimage/exposure/tests/test_unwrap.py @@ -1,5 +1,5 @@ import numpy as np -from numpy.testing import run_module_suite, TestCase, assert_array_almost_equal +from numpy.testing import run_module_suite, assert_array_almost_equal from skimage.exposure import unwrap From 0e8be31ba60a1426325576bc05581d3d74be7b75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Thu, 11 Jul 2013 12:14:59 +0200 Subject: [PATCH 065/577] unwrap: Simplify handling of masked arrays. --- skimage/exposure/unwrap.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index a80c02f3..c1251734 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -39,7 +39,6 @@ def unwrap(image, wrap_around=False): C. Gorecki, & E. L. Novak (Eds.), Optical Metrology (2005) 32--40, International Society for Optics and Photonics. ''' - image = np.require(image, np.float32, ['C']) if image.ndim not in (2, 3): raise ValueError('image must be 2 or 3 dimensional') if isinstance(wrap_around, bool): @@ -54,21 +53,22 @@ def unwrap(image, wrap_around=False): raise ValueError('wrap_around must be a bool or a sequence with ' 'length equal to the dimensionality of image') - image_masked = np.ma.asarray(image) - image_unwrapped = np.empty_like(image_masked.data) + if np.ma.isMaskedArray(image): + mask = np.require(image.mask, np.uint8, ['C']) + else: + mask = np.zeros(image.shape, dtype=np.uint8, order='C') + image_not_masked = np.asarray(image, dtype=np.float32, order='C') + image_unwrapped = np.empty(image.shape, dtype=np.float32) + if image.ndim == 2: - _unwrap_2d._unwrap2D(image_masked.data, - np.ma.getmaskarray(image_masked).astype(np.uint8), - image_unwrapped, + _unwrap_2d._unwrap2D(image_not_masked, mask, image_unwrapped, wrap_around[0], wrap_around[1]) elif image.ndim == 3: - _unwrap_3d._unwrap3D(image_masked.data, - np.ma.getmaskarray(image_masked).astype(np.uint8), - image_unwrapped, + _unwrap_3d._unwrap3D(image_not_masked, mask, image_unwrapped, wrap_around[0], wrap_around[1], wrap_around[2]) if np.ma.isMaskedArray(image): - return np.ma.array(image_unwrapped, mask = image_masked.mask) + return np.ma.array(image_unwrapped, mask=mask) else: return image_unwrapped From 6dbe6965e6d5a7dd13c481cd7868fb46cbf64d42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Thu, 11 Jul 2013 12:46:45 +0200 Subject: [PATCH 066/577] unwrap: Test wrap_around functionality. This test is currently failing. Most likely, the axes are swapped. --- skimage/exposure/tests/test_unwrap.py | 43 ++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/skimage/exposure/tests/test_unwrap.py b/skimage/exposure/tests/test_unwrap.py index 4a329928..9798bba0 100644 --- a/skimage/exposure/tests/test_unwrap.py +++ b/skimage/exposure/tests/test_unwrap.py @@ -1,8 +1,12 @@ +from __future__ import print_function, division + import numpy as np -from numpy.testing import run_module_suite, assert_array_almost_equal +from numpy.testing import (run_module_suite, assert_array_almost_equal, + assert_almost_equal) from skimage.exposure import unwrap + def test_unwrap2D(): x, y = np.ogrid[:8, :16] phi = 2*np.pi*(x*0.2 + y*0.1) @@ -47,6 +51,43 @@ def test_unwrap3D_masked(): s = np.round(phi_unwrapped_masked[0,0,0]/(2*np.pi)) assert_array_almost_equal(phi + 2*np.pi*s, phi_unwrapped_masked) + +def check_wrap_around(ndim, axis): + # create a ramp, but with the last pixel along axis equalling the first + elements = 100 + ramp = np.linspace(0, 12 * np.pi, elements) + ramp[-1] = ramp[0] + image = ramp.reshape(tuple([elements if n == axis else 1 + for n in range(ndim)])) + image_wrapped = np.angle(np.exp(1j * image)) + + index_first = tuple([0] * ndim) + index_last = tuple([-1 if n == axis else 0 for n in range(ndim)]) + # unwrap the image without wrap around + image_unwrap_no_wrap_around = unwrap(image_wrapped) + print('endpoints without wrap_around:', + image_unwrap_no_wrap_around[index_first], + image_unwrap_no_wrap_around[index_last]) + # without wrap around, the endpoints of the image should differ + assert abs(image_unwrap_no_wrap_around[index_first] + - image_unwrap_no_wrap_around[index_last]) > np.pi + # unwrap the image with wrap around + wrap_around = [n == axis for n in range(ndim)] + image_unwrap_wrap_around = unwrap(image_wrapped, wrap_around) + print('endpoints with wrap_around:', + image_unwrap_wrap_around[index_first], + image_unwrap_wrap_around[index_last]) + # with wrap around, the endpoints of the image should be equal + assert_almost_equal(image_unwrap_wrap_around[index_first], + image_unwrap_wrap_around[index_last]) + + +def test_wrap_around(): + for ndim in (2, 3): + for axis in range(ndim): + yield check_wrap_around, ndim, axis + + def unwrap_plots(): x, y = np.ogrid[:32, :32] From 12268ff5553753791beacfa84006e9cffb7bd15f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Thu, 11 Jul 2013 12:51:08 +0200 Subject: [PATCH 067/577] unwrap: Refactor and fix wrap around functionality. --- skimage/exposure/_unwrap_2d.pyx | 4 ++-- skimage/exposure/_unwrap_3d.pyx | 4 ++-- skimage/exposure/unwrap.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/skimage/exposure/_unwrap_2d.pyx b/skimage/exposure/_unwrap_2d.pyx index dab52167..19292f02 100644 --- a/skimage/exposure/_unwrap_2d.pyx +++ b/skimage/exposure/_unwrap_2d.pyx @@ -7,12 +7,12 @@ cdef extern void unwrap2D(float* wrapped_image, def _unwrap2D(float[:,::1] array, unsigned char[:,::1] mask, float[:,::1] unwrapped_array, - wrap_around_x, wrap_around_y): + wrap_around): unwrap2D(&array[0,0], &unwrapped_array[0,0], &mask[0,0], array.shape[1], array.shape[0], - wrap_around_x, wrap_around_y, + wrap_around[1], wrap_around[0], ) diff --git a/skimage/exposure/_unwrap_3d.pyx b/skimage/exposure/_unwrap_3d.pyx index aa18b377..871bc293 100644 --- a/skimage/exposure/_unwrap_3d.pyx +++ b/skimage/exposure/_unwrap_3d.pyx @@ -7,12 +7,12 @@ cdef extern void unwrap3D(float* wrapped_volume, def _unwrap3D(float[:,:,::1] array, unsigned char[:,:,::1] mask, float[:,:,::1] unwrapped_array, - wrap_around_x, wrap_around_y, wrap_around_z): + wrap_around): unwrap3D(&array[0,0,0], &unwrapped_array[0,0,0], &mask[0,0,0], array.shape[2], array.shape[1], array.shape[0], #TODO: check!!! - wrap_around_x, wrap_around_y, wrap_around_z, + wrap_around[2], wrap_around[1], wrap_around[0], ) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index c1251734..a67adc22 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -62,10 +62,10 @@ def unwrap(image, wrap_around=False): if image.ndim == 2: _unwrap_2d._unwrap2D(image_not_masked, mask, image_unwrapped, - wrap_around[0], wrap_around[1]) + wrap_around) elif image.ndim == 3: _unwrap_3d._unwrap3D(image_not_masked, mask, image_unwrapped, - wrap_around[0], wrap_around[1], wrap_around[2]) + wrap_around) if np.ma.isMaskedArray(image): return np.ma.array(image_unwrapped, mask=mask) From e8fa4998ad86642e63f313fbc9dac25e247c3301 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Thu, 11 Jul 2013 12:52:15 +0200 Subject: [PATCH 068/577] unwrap: Whitespace fixes and comment removal. --- skimage/exposure/_unwrap_2d.pyx | 16 +++++++--------- skimage/exposure/_unwrap_3d.pyx | 16 +++++++--------- skimage/exposure/unwrap.py | 4 ---- 3 files changed, 14 insertions(+), 22 deletions(-) diff --git a/skimage/exposure/_unwrap_2d.pyx b/skimage/exposure/_unwrap_2d.pyx index 19292f02..bbbe301c 100644 --- a/skimage/exposure/_unwrap_2d.pyx +++ b/skimage/exposure/_unwrap_2d.pyx @@ -1,18 +1,16 @@ -cdef extern void unwrap2D(float* wrapped_image, - float* unwrapped_image, - unsigned char* input_mask, +cdef extern void unwrap2D(float* wrapped_image, + float* unwrapped_image, + unsigned char* input_mask, int image_width, int image_height, int wrap_around_x, int wrap_around_y) -def _unwrap2D(float[:,::1] array, +def _unwrap2D(float[:,::1] array, unsigned char[:,::1] mask, float[:,::1] unwrapped_array, wrap_around): - unwrap2D(&array[0,0], - &unwrapped_array[0,0], - &mask[0,0], + unwrap2D(&array[0,0], + &unwrapped_array[0,0], + &mask[0,0], array.shape[1], array.shape[0], wrap_around[1], wrap_around[0], ) - - diff --git a/skimage/exposure/_unwrap_3d.pyx b/skimage/exposure/_unwrap_3d.pyx index 871bc293..b214c96e 100644 --- a/skimage/exposure/_unwrap_3d.pyx +++ b/skimage/exposure/_unwrap_3d.pyx @@ -1,18 +1,16 @@ -cdef extern void unwrap3D(float* wrapped_volume, - float* unwrapped_volume, - unsigned char* input_mask, +cdef extern void unwrap3D(float* wrapped_volume, + float* unwrapped_volume, + unsigned char* input_mask, int image_width, int image_height, int volume_depth, int wrap_around_x, int wrap_around_y, int wrap_around_z) -def _unwrap3D(float[:,:,::1] array, +def _unwrap3D(float[:,:,::1] array, unsigned char[:,:,::1] mask, float[:,:,::1] unwrapped_array, wrap_around): - unwrap3D(&array[0,0,0], - &unwrapped_array[0,0,0], - &mask[0,0,0], + unwrap3D(&array[0,0,0], + &unwrapped_array[0,0,0], + &mask[0,0,0], array.shape[2], array.shape[1], array.shape[0], #TODO: check!!! wrap_around[2], wrap_around[1], wrap_around[0], ) - - diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index a67adc22..9fd9621c 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -71,7 +71,3 @@ def unwrap(image, wrap_around=False): return np.ma.array(image_unwrapped, mask=mask) else: return image_unwrapped - - #TODO: set_fill to minimum value - #TODO: check for empty mask, not a single contiguous pixel - From 676ba5a07ed7de88f20456f94db1081a5449a605 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Thu, 11 Jul 2013 13:03:05 +0200 Subject: [PATCH 069/577] unwrap: rename cython functions. --- skimage/exposure/_unwrap_2d.pyx | 2 +- skimage/exposure/_unwrap_3d.pyx | 2 +- skimage/exposure/unwrap.py | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/skimage/exposure/_unwrap_2d.pyx b/skimage/exposure/_unwrap_2d.pyx index bbbe301c..1d67d932 100644 --- a/skimage/exposure/_unwrap_2d.pyx +++ b/skimage/exposure/_unwrap_2d.pyx @@ -4,7 +4,7 @@ cdef extern void unwrap2D(float* wrapped_image, int image_width, int image_height, int wrap_around_x, int wrap_around_y) -def _unwrap2D(float[:,::1] array, +def unwrap_2d(float[:,::1] array, unsigned char[:,::1] mask, float[:,::1] unwrapped_array, wrap_around): diff --git a/skimage/exposure/_unwrap_3d.pyx b/skimage/exposure/_unwrap_3d.pyx index b214c96e..9a900cf2 100644 --- a/skimage/exposure/_unwrap_3d.pyx +++ b/skimage/exposure/_unwrap_3d.pyx @@ -4,7 +4,7 @@ cdef extern void unwrap3D(float* wrapped_volume, int image_width, int image_height, int volume_depth, int wrap_around_x, int wrap_around_y, int wrap_around_z) -def _unwrap3D(float[:,:,::1] array, +def unwrap_3d(float[:,:,::1] array, unsigned char[:,:,::1] mask, float[:,:,::1] unwrapped_array, wrap_around): diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index 9fd9621c..f21ec455 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -1,7 +1,7 @@ import numpy as np -from . import _unwrap_2d -from . import _unwrap_3d +from ._unwrap_2d import unwrap_2d +from ._unwrap_3d import unwrap_3d def unwrap(image, wrap_around=False): @@ -61,10 +61,10 @@ def unwrap(image, wrap_around=False): image_unwrapped = np.empty(image.shape, dtype=np.float32) if image.ndim == 2: - _unwrap_2d._unwrap2D(image_not_masked, mask, image_unwrapped, + unwrap_2d(image_not_masked, mask, image_unwrapped, wrap_around) elif image.ndim == 3: - _unwrap_3d._unwrap3D(image_not_masked, mask, image_unwrapped, + unwrap_3d(image_not_masked, mask, image_unwrapped, wrap_around) if np.ma.isMaskedArray(image): From 5022cfb699ca3e49a5ab1a9a9d0c48852e86c708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Thu, 11 Jul 2013 13:04:38 +0200 Subject: [PATCH 070/577] unwrap: PEP8 fixes for cython extensions. --- skimage/exposure/_unwrap_2d.pyx | 12 ++++++------ skimage/exposure/_unwrap_3d.pyx | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/skimage/exposure/_unwrap_2d.pyx b/skimage/exposure/_unwrap_2d.pyx index 1d67d932..4727404c 100644 --- a/skimage/exposure/_unwrap_2d.pyx +++ b/skimage/exposure/_unwrap_2d.pyx @@ -4,13 +4,13 @@ cdef extern void unwrap2D(float* wrapped_image, int image_width, int image_height, int wrap_around_x, int wrap_around_y) -def unwrap_2d(float[:,::1] array, - unsigned char[:,::1] mask, - float[:,::1] unwrapped_array, +def unwrap_2d(float[:, ::1] array, + unsigned char[:, ::1] mask, + float[:, ::1] unwrapped_array, wrap_around): - unwrap2D(&array[0,0], - &unwrapped_array[0,0], - &mask[0,0], + unwrap2D(&array[0, 0], + &unwrapped_array[0, 0], + &mask[0, 0], array.shape[1], array.shape[0], wrap_around[1], wrap_around[0], ) diff --git a/skimage/exposure/_unwrap_3d.pyx b/skimage/exposure/_unwrap_3d.pyx index 9a900cf2..f7a4f10e 100644 --- a/skimage/exposure/_unwrap_3d.pyx +++ b/skimage/exposure/_unwrap_3d.pyx @@ -4,13 +4,13 @@ cdef extern void unwrap3D(float* wrapped_volume, int image_width, int image_height, int volume_depth, int wrap_around_x, int wrap_around_y, int wrap_around_z) -def unwrap_3d(float[:,:,::1] array, - unsigned char[:,:,::1] mask, - float[:,:,::1] unwrapped_array, +def unwrap_3d(float[:, :, ::1] array, + unsigned char[:, :, ::1] mask, + float[:, :, ::1] unwrapped_array, wrap_around): - unwrap3D(&array[0,0,0], - &unwrapped_array[0,0,0], - &mask[0,0,0], + unwrap3D(&array[0, 0, 0], + &unwrapped_array[0, 0, 0], + &mask[0, 0, 0], array.shape[2], array.shape[1], array.shape[0], #TODO: check!!! wrap_around[2], wrap_around[1], wrap_around[0], ) From 9644ed56551b12a67e7ac53cc1617337ba4e328b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Thu, 11 Jul 2013 13:06:43 +0200 Subject: [PATCH 071/577] unwrap: rename variables in cython extensions --- skimage/exposure/_unwrap_2d.pyx | 10 +++++----- skimage/exposure/_unwrap_3d.pyx | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/skimage/exposure/_unwrap_2d.pyx b/skimage/exposure/_unwrap_2d.pyx index 4727404c..88983287 100644 --- a/skimage/exposure/_unwrap_2d.pyx +++ b/skimage/exposure/_unwrap_2d.pyx @@ -4,13 +4,13 @@ cdef extern void unwrap2D(float* wrapped_image, int image_width, int image_height, int wrap_around_x, int wrap_around_y) -def unwrap_2d(float[:, ::1] array, +def unwrap_2d(float[:, ::1] image, unsigned char[:, ::1] mask, - float[:, ::1] unwrapped_array, + float[:, ::1] unwrapped_image, wrap_around): - unwrap2D(&array[0, 0], - &unwrapped_array[0, 0], + unwrap2D(&image[0, 0], + &unwrapped_image[0, 0], &mask[0, 0], - array.shape[1], array.shape[0], + image.shape[1], image.shape[0], wrap_around[1], wrap_around[0], ) diff --git a/skimage/exposure/_unwrap_3d.pyx b/skimage/exposure/_unwrap_3d.pyx index f7a4f10e..b202e8b9 100644 --- a/skimage/exposure/_unwrap_3d.pyx +++ b/skimage/exposure/_unwrap_3d.pyx @@ -4,13 +4,13 @@ cdef extern void unwrap3D(float* wrapped_volume, int image_width, int image_height, int volume_depth, int wrap_around_x, int wrap_around_y, int wrap_around_z) -def unwrap_3d(float[:, :, ::1] array, +def unwrap_3d(float[:, :, ::1] image, unsigned char[:, :, ::1] mask, - float[:, :, ::1] unwrapped_array, + float[:, :, ::1] unwrapped_image, wrap_around): - unwrap3D(&array[0, 0, 0], - &unwrapped_array[0, 0, 0], + unwrap3D(&image[0, 0, 0], + &unwrapped_image[0, 0, 0], &mask[0, 0, 0], - array.shape[2], array.shape[1], array.shape[0], #TODO: check!!! + image.shape[2], image.shape[1], image.shape[0], #TODO: check!!! wrap_around[2], wrap_around[1], wrap_around[0], ) From a39695154fef8ed695ebc22cc231558a2939fbec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Thu, 11 Jul 2013 14:16:32 +0200 Subject: [PATCH 072/577] unwrap: Update bento.info. --- bento.info | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bento.info b/bento.info index 84ddf4a8..7be7bbd3 100644 --- a/bento.info +++ b/bento.info @@ -144,6 +144,12 @@ Library: Extension: skimage.filter.rank.bilateral_cy Sources: skimage/filter/rank/bilateral_cy.pyx + Extension: skimage.exposure._unwrap_3d + Sources: + skimage/exposure/_unwrap_3d.pyx, skimage/exposure/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c + Extension: skimage.exposure._unwrap_2d + Sources: + skimage/exposure/_unwrap_2d.pyx, skimage/exposure/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c Executable: skivi Module: skimage.scripts.skivi From b9f119a42876f6e4e5647f7d0428d67ddac228f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Thu, 11 Jul 2013 18:01:58 +0200 Subject: [PATCH 073/577] unwrap: Python 3 compatibility. --- skimage/exposure/unwrap.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index f21ec455..4f93ae0a 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -2,6 +2,7 @@ import numpy as np from ._unwrap_2d import unwrap_2d from ._unwrap_3d import unwrap_3d +from .._shared.six import string_types def unwrap(image, wrap_around=False): @@ -44,7 +45,7 @@ def unwrap(image, wrap_around=False): if isinstance(wrap_around, bool): wrap_around = [wrap_around] * image.ndim elif (hasattr(wrap_around, '__getitem__') - and not isinstance(wrap_around, basestring)): + and not isinstance(wrap_around, string_types)): if not len(wrap_around) == image.ndim: raise ValueError('Length of wrap_around must equal the ' 'dimensionality of image') From 43d110627b8c0f0a65567cccb314c382a9f6f8f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 15 Jul 2013 10:51:30 +0200 Subject: [PATCH 074/577] unwrap: PEP8 fixes. --- skimage/exposure/tests/test_unwrap.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/skimage/exposure/tests/test_unwrap.py b/skimage/exposure/tests/test_unwrap.py index 9798bba0..bb345b00 100644 --- a/skimage/exposure/tests/test_unwrap.py +++ b/skimage/exposure/tests/test_unwrap.py @@ -16,6 +16,7 @@ def test_unwrap2D(): s = np.round(phi_unwrapped[0,0]/(2*np.pi)) assert_array_almost_equal(phi, phi_unwrapped - s*2*np.pi) + def test_unwrap2D_masked(): x, y = np.ogrid[:8, :16] phi = 2*np.pi*(x*0.2 + y*0.1) @@ -30,6 +31,7 @@ def test_unwrap2D_masked(): s = np.round(phi_unwrapped_masked[0,0]/(2*np.pi)) assert_array_almost_equal(phi + 2*np.pi*s, phi_unwrapped_masked) + def test_unwrap3D(): x, y, z = np.ogrid[:8, :12, :4] phi = 2*np.pi*(x*0.2 + y*0.1 + z*0.05) @@ -39,6 +41,7 @@ def test_unwrap3D(): s = np.round(phi_unwrapped[0,0]/(2*np.pi)) assert_array_almost_equal(phi, phi_unwrapped - s*2*np.pi) + def test_unwrap3D_masked(): x, y, z = np.ogrid[:8, :12, :4] phi = 2*np.pi*(x*0.2 + y*0.1 + z*0.05) @@ -124,5 +127,6 @@ def unwrap_plots(): plt.draw() plt.show() + if __name__=="__main__": run_module_suite() From b0c21ea9727dc1f1841663af447b4852c9ca7580 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 15 Jul 2013 11:38:36 +0200 Subject: [PATCH 075/577] unwrap: Reduce duplication in tests. --- skimage/exposure/tests/test_unwrap.py | 43 ++++++++++++++++++--------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/skimage/exposure/tests/test_unwrap.py b/skimage/exposure/tests/test_unwrap.py index bb345b00..a549cc0b 100644 --- a/skimage/exposure/tests/test_unwrap.py +++ b/skimage/exposure/tests/test_unwrap.py @@ -2,19 +2,40 @@ from __future__ import print_function, division import numpy as np from numpy.testing import (run_module_suite, assert_array_almost_equal, - assert_almost_equal) + assert_almost_equal, assert_array_equal) +import warnings from skimage.exposure import unwrap +def assert_phase_almost_equal(a, b, *args, **kwargs): + '''An assert_almost_equal insensitive to phase shifts of n*2*pi.''' + shift = 2 * np.pi * np.round((b.mean() - a.mean()) / (2 * np.pi)) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + print('assert_phase_allclose, abs', np.max(np.abs(a - (b - shift)))) + print('assert_phase_allclose, rel', + np.max(np.abs((a - (b - shift)) / a))) + if np.ma.isMaskedArray(a): + assert np.ma.isMaskedArray(b) + assert_array_equal(a.mask, b.mask) + au = np.asarray(a) + bu = np.asarray(b) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + print('assert_phase_allclose, no mask, abs', + np.max(np.abs(au - (bu - shift)))) + print('assert_phase_allclose, no mask, rel', + np.max(np.abs((au - (bu - shift)) / au))) + assert_array_almost_equal(a + shift, b, *args, **kwargs) + + def test_unwrap2D(): x, y = np.ogrid[:8, :16] phi = 2*np.pi*(x*0.2 + y*0.1) phi_wrapped = np.angle(np.exp(1j*phi)) phi_unwrapped = unwrap(phi_wrapped) - - s = np.round(phi_unwrapped[0,0]/(2*np.pi)) - assert_array_almost_equal(phi, phi_unwrapped - s*2*np.pi) + assert_phase_almost_equal(phi, phi_unwrapped) def test_unwrap2D_masked(): @@ -25,11 +46,9 @@ def test_unwrap2D_masked(): mask[4:6, 4:8] = 1 phi_wrapped = np.angle(np.exp(1j*phi)) - phi_wrapped_masked = np.ma.array(phi_wrapped, dtype = np.float32, mask = mask) + phi_wrapped_masked = np.ma.array(phi_wrapped, dtype=np.float32, mask=mask) phi_unwrapped_masked = unwrap(phi_wrapped_masked) - - s = np.round(phi_unwrapped_masked[0,0]/(2*np.pi)) - assert_array_almost_equal(phi + 2*np.pi*s, phi_unwrapped_masked) + assert_phase_almost_equal(phi, phi_unwrapped_masked) def test_unwrap3D(): @@ -37,9 +56,7 @@ def test_unwrap3D(): phi = 2*np.pi*(x*0.2 + y*0.1 + z*0.05) phi_wrapped = np.angle(np.exp(1j*phi)) phi_unwrapped = unwrap(phi_wrapped) - - s = np.round(phi_unwrapped[0,0]/(2*np.pi)) - assert_array_almost_equal(phi, phi_unwrapped - s*2*np.pi) + assert_phase_almost_equal(phi, phi_unwrapped) def test_unwrap3D_masked(): @@ -50,9 +67,7 @@ def test_unwrap3D_masked(): mask[4:6, 4:6, 1:3] = 1 phi_wrapped_masked = np.ma.array(phi_wrapped, dtype = np.float32, mask = mask) phi_unwrapped_masked = unwrap(phi_wrapped_masked) - - s = np.round(phi_unwrapped_masked[0,0,0]/(2*np.pi)) - assert_array_almost_equal(phi + 2*np.pi*s, phi_unwrapped_masked) + assert_phase_almost_equal(phi, phi_unwrapped_masked) def check_wrap_around(ndim, axis): From 619da811d87eadcc91b3577c268da3fb0d4c6c82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 15 Jul 2013 11:56:28 +0200 Subject: [PATCH 076/577] unwrap: Reduce code duplication. Use the yield functionality in nose to minimize setup. --- skimage/exposure/tests/test_unwrap.py | 56 +++++++++++---------------- 1 file changed, 22 insertions(+), 34 deletions(-) diff --git a/skimage/exposure/tests/test_unwrap.py b/skimage/exposure/tests/test_unwrap.py index a549cc0b..9e11c207 100644 --- a/skimage/exposure/tests/test_unwrap.py +++ b/skimage/exposure/tests/test_unwrap.py @@ -30,44 +30,32 @@ def assert_phase_almost_equal(a, b, *args, **kwargs): assert_array_almost_equal(a + shift, b, *args, **kwargs) -def test_unwrap2D(): +def check_unwrap(image, mask=None): + image_wrapped = np.angle(np.exp(1j * image)) + if not mask is None: + print('Testing a masked image') + image = np.ma.array(image, mask=mask) + image_wrapped = np.ma.array(image_wrapped, mask=mask) + image_unwrapped = unwrap(image_wrapped) + assert_phase_almost_equal(image_unwrapped, image) + + +def test_unwrap_2d(): x, y = np.ogrid[:8, :16] - phi = 2*np.pi*(x*0.2 + y*0.1) - phi_wrapped = np.angle(np.exp(1j*phi)) - phi_unwrapped = unwrap(phi_wrapped) - assert_phase_almost_equal(phi, phi_unwrapped) + image = 2 * np.pi * (x * 0.2 + y * 0.1) + yield check_unwrap, image + mask = np.zeros(image.shape, dtype=np.bool) + mask[4:6, 4:8] = True + yield check_unwrap, image, mask -def test_unwrap2D_masked(): - x, y = np.ogrid[:8, :16] - phi = 2*np.pi*(x*0.2 + y*0.1) - - mask = np.zeros_like(phi, dtype = np.uint8) - mask[4:6, 4:8] = 1 - - phi_wrapped = np.angle(np.exp(1j*phi)) - phi_wrapped_masked = np.ma.array(phi_wrapped, dtype=np.float32, mask=mask) - phi_unwrapped_masked = unwrap(phi_wrapped_masked) - assert_phase_almost_equal(phi, phi_unwrapped_masked) - - -def test_unwrap3D(): +def test_unwrap_3d(): x, y, z = np.ogrid[:8, :12, :4] - phi = 2*np.pi*(x*0.2 + y*0.1 + z*0.05) - phi_wrapped = np.angle(np.exp(1j*phi)) - phi_unwrapped = unwrap(phi_wrapped) - assert_phase_almost_equal(phi, phi_unwrapped) - - -def test_unwrap3D_masked(): - x, y, z = np.ogrid[:8, :12, :4] - phi = 2*np.pi*(x*0.2 + y*0.1 + z*0.05) - phi_wrapped = np.angle(np.exp(1j*phi)) - mask = np.zeros_like(phi, dtype = np.uint8) - mask[4:6, 4:6, 1:3] = 1 - phi_wrapped_masked = np.ma.array(phi_wrapped, dtype = np.float32, mask = mask) - phi_unwrapped_masked = unwrap(phi_wrapped_masked) - assert_phase_almost_equal(phi, phi_unwrapped_masked) + image = 2 * np.pi * (x * 0.2 + y * 0.1 + z * 0.05) + yield check_unwrap, image + mask = np.zeros(image.shape, dtype=np.bool) + mask[4:6, 4:6, 1:3] = True + yield check_unwrap, image, mask def check_wrap_around(ndim, axis): From c0d0984049b7849b0b01f1e1c0454cfb3d5826fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 15 Jul 2013 12:01:04 +0200 Subject: [PATCH 077/577] unwrap: Make sure test data wraps along all dimensions. --- skimage/exposure/tests/test_unwrap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/exposure/tests/test_unwrap.py b/skimage/exposure/tests/test_unwrap.py index 9e11c207..0115a192 100644 --- a/skimage/exposure/tests/test_unwrap.py +++ b/skimage/exposure/tests/test_unwrap.py @@ -50,7 +50,7 @@ def test_unwrap_2d(): def test_unwrap_3d(): - x, y, z = np.ogrid[:8, :12, :4] + x, y, z = np.ogrid[:8, :12, :16] image = 2 * np.pi * (x * 0.2 + y * 0.1 + z * 0.05) yield check_unwrap, image mask = np.zeros(image.shape, dtype=np.bool) From 8a93677db04d189dd9bc4c1be39882aaec65bdce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 15 Jul 2013 12:01:45 +0200 Subject: [PATCH 078/577] unwrap: Delete "example" from the test file. --- skimage/exposure/tests/test_unwrap.py | 37 --------------------------- 1 file changed, 37 deletions(-) diff --git a/skimage/exposure/tests/test_unwrap.py b/skimage/exposure/tests/test_unwrap.py index 0115a192..39e97769 100644 --- a/skimage/exposure/tests/test_unwrap.py +++ b/skimage/exposure/tests/test_unwrap.py @@ -94,42 +94,5 @@ def test_wrap_around(): yield check_wrap_around, ndim, axis -def unwrap_plots(): - - x, y = np.ogrid[:32, :32] - phi = 2*np.pi*(x*0.2 + y*0.1) - - #phi = 1*np.arctan2(x-14.3, y-6.3) - 2*np.arctan2(x-18.3, y-22.1) - - phi[8,8] = np.NaN - - phi_wrapped = np.angle(np.exp(1j*phi)) - phi_unwrapped = unwrap(phi_wrapped, - #wrap_around_axis_0 = True, - #wrap_around_axis_1 = True, - ) - - mask = np.zeros_like(phi, dtype = np.uint8) - #mask[10:22, 4:10] = 1 - phi_wrapped_masked = np.ma.array(phi_wrapped, dtype = np.float32, mask = mask) - phi_unwrapped_masked = unwrap(phi_wrapped_masked) - - import matplotlib.pyplot as plt - plt.figure(1) - plt.clf() - plt.gray() - plt.subplot(221) - plt.imshow(phi, interpolation = 'nearest') - plt.subplot(222) - plt.imshow(phi_wrapped, interpolation = 'nearest') - plt.subplot(223) - plt.imshow(phi_unwrapped, interpolation = 'nearest') - plt.subplot(224) - plt.imshow(phi_unwrapped_masked, interpolation = 'nearest') - - plt.draw() - plt.show() - - if __name__=="__main__": run_module_suite() From 9e50686c8f49a6b2f90b22e52ecf38c140b9bfe8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 15 Jul 2013 12:22:42 +0200 Subject: [PATCH 079/577] unwrap: Add test for unwrapping masked images. --- skimage/exposure/tests/test_unwrap.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/skimage/exposure/tests/test_unwrap.py b/skimage/exposure/tests/test_unwrap.py index 39e97769..74e84aee 100644 --- a/skimage/exposure/tests/test_unwrap.py +++ b/skimage/exposure/tests/test_unwrap.py @@ -94,5 +94,32 @@ def test_wrap_around(): yield check_wrap_around, ndim, axis +def test_mask(): + length = 100 + ramps = [np.linspace(0, 4 * np.pi, length), + np.linspace(0, 8 * np.pi, length), + np.linspace(0, 6 * np.pi, length)] + image = np.vstack(ramps) + mask_1d = np.ones((length,), dtype=np.bool) + mask_1d[0] = mask_1d[-1] = False + for i in range(len(ramps)): + # mask all ramps but the i'th one + mask = np.zeros(image.shape, dtype=np.bool) + mask |= mask_1d.reshape(1, -1) + mask[i, :] = False # unmask i'th ramp + image_wrapped = np.ma.array(np.angle(np.exp(1j * image)), mask=mask) + image_unwrapped = unwrap(image_wrapped) + image_unwrapped -= image_unwrapped[0, 0] # remove phase shift + # The end of the unwrapped array should have value equal to the + # endpoint of the unmasked ramp + assert_array_almost_equal(image_unwrapped[:, -1], image[i, -1]) + + # Same tests, but forcing use of the 3D unwrapper by reshaping + image_wrapped_3d = image_wrapped.reshape((1,) + image_wrapped.shape) + image_unwrapped_3d = unwrap(image_wrapped_3d) + image_unwrapped_3d -= image_unwrapped_3d[0, 0, 0] # remove phase shift + assert_array_almost_equal(image_unwrapped_3d[:, :, -1], image[i, -1]) + + if __name__=="__main__": run_module_suite() From 3ddd94a89cd822039caef3ef12d6852032b96c27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 15 Jul 2013 12:29:27 +0200 Subject: [PATCH 080/577] unwrap: Simplify example. --- doc/examples/plot_phase_unwrap.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/doc/examples/plot_phase_unwrap.py b/doc/examples/plot_phase_unwrap.py index 258ed21e..85be5fde 100644 --- a/doc/examples/plot_phase_unwrap.py +++ b/doc/examples/plot_phase_unwrap.py @@ -26,26 +26,24 @@ image_unwrapped = exposure.unwrap(image_wrapped) # Plotting plt.figure() -plt.gray() # grayscale colormap as default -imkwargs = dict(vmin=0, vmax=4 * np.pi) plt.subplot(221) plt.title('Original') -plt.imshow(image, **imkwargs) +plt.imshow(image, cmap='gray', vmin=0, vmax=4 * np.pi) plt.colorbar() plt.subplot(222) plt.title('Wrapped phase') -plt.imshow(image_wrapped, vmin=-np.pi, vmax=np.pi) +plt.imshow(image_wrapped, cmap='gray', vmin=-np.pi, vmax=np.pi) plt.colorbar() plt.subplot(223) plt.title('After phase unwrapping') -plt.imshow(image_unwrapped) +plt.imshow(image_unwrapped, cmap='gray') plt.colorbar() plt.subplot(224) plt.title('Unwrapped minus original') -plt.imshow(image_unwrapped - image) +plt.imshow(image_unwrapped - image, cmap='gray') plt.colorbar() plt.show() From e0b7fe32a1de50e1ce24db19d35c973b608d49d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 15 Jul 2013 12:31:31 +0200 Subject: [PATCH 081/577] unwrap: PEP8 fixes. --- skimage/exposure/unwrap.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index 4f93ae0a..b9c099e0 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -63,10 +63,10 @@ def unwrap(image, wrap_around=False): if image.ndim == 2: unwrap_2d(image_not_masked, mask, image_unwrapped, - wrap_around) + wrap_around) elif image.ndim == 3: unwrap_3d(image_not_masked, mask, image_unwrapped, - wrap_around) + wrap_around) if np.ma.isMaskedArray(image): return np.ma.array(image_unwrapped, mask=mask) From 4cfec880b68962647638b6dd16439b2d01433114 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 15 Jul 2013 17:44:17 +0200 Subject: [PATCH 082/577] unwrap: Small style-like fixes. Based on comments by ahojnnes. --- skimage/exposure/unwrap.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index b9c099e0..e4d112bd 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -46,7 +46,7 @@ def unwrap(image, wrap_around=False): wrap_around = [wrap_around] * image.ndim elif (hasattr(wrap_around, '__getitem__') and not isinstance(wrap_around, string_types)): - if not len(wrap_around) == image.ndim: + if len(wrap_around) != image.ndim: raise ValueError('Length of wrap_around must equal the ' 'dimensionality of image') wrap_around = [bool(wa) for wa in wrap_around] @@ -57,9 +57,9 @@ def unwrap(image, wrap_around=False): if np.ma.isMaskedArray(image): mask = np.require(image.mask, np.uint8, ['C']) else: - mask = np.zeros(image.shape, dtype=np.uint8, order='C') + mask = np.zeros_like(image, dtype=np.uint8, order='C') image_not_masked = np.asarray(image, dtype=np.float32, order='C') - image_unwrapped = np.empty(image.shape, dtype=np.float32) + image_unwrapped = np.empty_like(image, dtype=np.float32, order='C') if image.ndim == 2: unwrap_2d(image_not_masked, mask, image_unwrapped, From 781ead2c9f136f088eeb0e6f316df506fddaa7b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 15 Jul 2013 17:47:48 +0200 Subject: [PATCH 083/577] unwrap: Rename function unwrap() -> unwrap_phase(). --- doc/examples/plot_phase_unwrap.py | 2 +- skimage/exposure/__init__.py | 4 ++-- skimage/exposure/tests/test_unwrap.py | 12 ++++++------ skimage/exposure/unwrap.py | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/doc/examples/plot_phase_unwrap.py b/doc/examples/plot_phase_unwrap.py index 85be5fde..c2aecdb5 100644 --- a/doc/examples/plot_phase_unwrap.py +++ b/doc/examples/plot_phase_unwrap.py @@ -22,7 +22,7 @@ image = exposure.rescale_intensity(image, out_range=(0, 4 * np.pi)) # Create a phase-wrapped image in the interval [-pi, pi) image_wrapped = np.angle(np.exp(1j * image)) # Perform phase unwrapping -image_unwrapped = exposure.unwrap(image_wrapped) +image_unwrapped = exposure.unwrap_phase(image_wrapped) # Plotting plt.figure() diff --git a/skimage/exposure/__init__.py b/skimage/exposure/__init__.py index 390d042b..c8f7b1be 100644 --- a/skimage/exposure/__init__.py +++ b/skimage/exposure/__init__.py @@ -3,7 +3,7 @@ from .exposure import histogram, equalize, equalize_hist, \ adjust_gamma, adjust_sigmoid, adjust_log from ._adapthist import equalize_adapthist -from .unwrap import unwrap +from .unwrap import unwrap_phase __all__ = ['histogram', 'equalize', @@ -14,4 +14,4 @@ __all__ = ['histogram', 'adjust_gamma', 'adjust_sigmoid', 'adjust_log', - 'unwrap'] + 'unwrap_phase'] diff --git a/skimage/exposure/tests/test_unwrap.py b/skimage/exposure/tests/test_unwrap.py index 74e84aee..a465cd2c 100644 --- a/skimage/exposure/tests/test_unwrap.py +++ b/skimage/exposure/tests/test_unwrap.py @@ -5,7 +5,7 @@ from numpy.testing import (run_module_suite, assert_array_almost_equal, assert_almost_equal, assert_array_equal) import warnings -from skimage.exposure import unwrap +from skimage.exposure import unwrap_phase def assert_phase_almost_equal(a, b, *args, **kwargs): @@ -36,7 +36,7 @@ def check_unwrap(image, mask=None): print('Testing a masked image') image = np.ma.array(image, mask=mask) image_wrapped = np.ma.array(image_wrapped, mask=mask) - image_unwrapped = unwrap(image_wrapped) + image_unwrapped = unwrap_phase(image_wrapped) assert_phase_almost_equal(image_unwrapped, image) @@ -70,7 +70,7 @@ def check_wrap_around(ndim, axis): index_first = tuple([0] * ndim) index_last = tuple([-1 if n == axis else 0 for n in range(ndim)]) # unwrap the image without wrap around - image_unwrap_no_wrap_around = unwrap(image_wrapped) + image_unwrap_no_wrap_around = unwrap_phase(image_wrapped) print('endpoints without wrap_around:', image_unwrap_no_wrap_around[index_first], image_unwrap_no_wrap_around[index_last]) @@ -79,7 +79,7 @@ def check_wrap_around(ndim, axis): - image_unwrap_no_wrap_around[index_last]) > np.pi # unwrap the image with wrap around wrap_around = [n == axis for n in range(ndim)] - image_unwrap_wrap_around = unwrap(image_wrapped, wrap_around) + image_unwrap_wrap_around = unwrap_phase(image_wrapped, wrap_around) print('endpoints with wrap_around:', image_unwrap_wrap_around[index_first], image_unwrap_wrap_around[index_last]) @@ -108,7 +108,7 @@ def test_mask(): mask |= mask_1d.reshape(1, -1) mask[i, :] = False # unmask i'th ramp image_wrapped = np.ma.array(np.angle(np.exp(1j * image)), mask=mask) - image_unwrapped = unwrap(image_wrapped) + image_unwrapped = unwrap_phase(image_wrapped) image_unwrapped -= image_unwrapped[0, 0] # remove phase shift # The end of the unwrapped array should have value equal to the # endpoint of the unmasked ramp @@ -116,7 +116,7 @@ def test_mask(): # Same tests, but forcing use of the 3D unwrapper by reshaping image_wrapped_3d = image_wrapped.reshape((1,) + image_wrapped.shape) - image_unwrapped_3d = unwrap(image_wrapped_3d) + image_unwrapped_3d = unwrap_phase(image_wrapped_3d) image_unwrapped_3d -= image_unwrapped_3d[0, 0, 0] # remove phase shift assert_array_almost_equal(image_unwrapped_3d[:, :, -1], image[i, -1]) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index e4d112bd..ab05bc5e 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -5,7 +5,7 @@ from ._unwrap_3d import unwrap_3d from .._shared.six import string_types -def unwrap(image, wrap_around=False): +def unwrap_phase(image, wrap_around=False): '''From ``image``, wrapped to lie in the interval [-pi, pi), recover the original, unwrapped image. From 27c13a119368356a0f3005e1117cb36e1d189ab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 15 Jul 2013 17:58:49 +0200 Subject: [PATCH 084/577] unwrap: Warn about singleton dimensions in 3D arrays. --- skimage/exposure/tests/test_unwrap.py | 10 ++++++++-- skimage/exposure/unwrap.py | 4 ++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/skimage/exposure/tests/test_unwrap.py b/skimage/exposure/tests/test_unwrap.py index a465cd2c..1e1b0cd5 100644 --- a/skimage/exposure/tests/test_unwrap.py +++ b/skimage/exposure/tests/test_unwrap.py @@ -70,7 +70,10 @@ def check_wrap_around(ndim, axis): index_first = tuple([0] * ndim) index_last = tuple([-1 if n == axis else 0 for n in range(ndim)]) # unwrap the image without wrap around - image_unwrap_no_wrap_around = unwrap_phase(image_wrapped) + with warnings.catch_warnings(): + # We do not want warnings about length 1 dimensions + warnings.simplefilter("ignore") + image_unwrap_no_wrap_around = unwrap_phase(image_wrapped) print('endpoints without wrap_around:', image_unwrap_no_wrap_around[index_first], image_unwrap_no_wrap_around[index_last]) @@ -79,7 +82,10 @@ def check_wrap_around(ndim, axis): - image_unwrap_no_wrap_around[index_last]) > np.pi # unwrap the image with wrap around wrap_around = [n == axis for n in range(ndim)] - image_unwrap_wrap_around = unwrap_phase(image_wrapped, wrap_around) + with warnings.catch_warnings(): + # We do not want warnings about length 1 dimensions + warnings.simplefilter("ignore") + image_unwrap_wrap_around = unwrap_phase(image_wrapped, wrap_around) print('endpoints with wrap_around:', image_unwrap_wrap_around[index_first], image_unwrap_wrap_around[index_last]) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index ab05bc5e..c43e263d 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -1,4 +1,5 @@ import numpy as np +import warnings from ._unwrap_2d import unwrap_2d from ._unwrap_3d import unwrap_3d @@ -53,6 +54,9 @@ def unwrap_phase(image, wrap_around=False): else: raise ValueError('wrap_around must be a bool or a sequence with ' 'length equal to the dimensionality of image') + if image.ndim == 3 and 1 in image.shape: + warnings.warn('image is 3D and has a length 1 dimension; consider ' + 'using a 2D array to use the 2D unwrapping algorithm') if np.ma.isMaskedArray(image): mask = np.require(image.mask, np.uint8, ['C']) From b2ac1a587265e9fec53aa96fe1ce9dfeadd2cf9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 15 Jul 2013 18:33:26 +0200 Subject: [PATCH 085/577] unwrap: Add docstring example. --- skimage/exposure/unwrap.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index c43e263d..a38162bd 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -29,6 +29,15 @@ def unwrap_phase(image, wrap_around=False): Unwrapped image of the same shape as the input. If the input ``image`` was a masked array, the mask will be preserved. + Examples + -------- + >>> c0, c1 = np.ogrid[-1:1:128j, -1:1:128j] + >>> image = 12 * np.pi * np.exp(-(c0**2 + c1**2)) + >>> image_wrapped = np.angle(np.exp(1j * image)) + >>> image_unwrapped = unwrap_phase(image_wrapped) + >>> np.std(image_unwrapped - image) < 1e-6 # A constant offset is normal + True + References ---------- .. [1] Miguel Arevallilo Herraez, David R. Burton, Michael J. Lalor, From f87fadf0f070469af5d6c6d737ca1c41102600a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Mon, 15 Jul 2013 18:47:58 +0200 Subject: [PATCH 086/577] unwrap: Rename C files. --- bento.info | 4 ++-- skimage/exposure/setup.py | 6 ++---- ..._with_mask_and_wrap_around_option.c => unwrap_2d_ljmu.c} | 1 + ..._with_mask_and_wrap_around_option.c => unwrap_3d_ljmu.c} | 1 + 4 files changed, 6 insertions(+), 6 deletions(-) rename skimage/exposure/{Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c => unwrap_2d_ljmu.c} (96%) rename skimage/exposure/{Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c => unwrap_3d_ljmu.c} (99%) diff --git a/bento.info b/bento.info index 7be7bbd3..e8ae3b07 100644 --- a/bento.info +++ b/bento.info @@ -146,10 +146,10 @@ Library: skimage/filter/rank/bilateral_cy.pyx Extension: skimage.exposure._unwrap_3d Sources: - skimage/exposure/_unwrap_3d.pyx, skimage/exposure/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c + skimage/exposure/_unwrap_3d.pyx, skimage/exposure/unwrap_3d_ljmu.c Extension: skimage.exposure._unwrap_2d Sources: - skimage/exposure/_unwrap_2d.pyx, skimage/exposure/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c + skimage/exposure/_unwrap_2d.pyx, skimage/exposure/unwrap_2d_ljmu.c Executable: skivi Module: skimage.scripts.skivi diff --git a/skimage/exposure/setup.py b/skimage/exposure/setup.py index ed1515fe..d21f41f0 100644 --- a/skimage/exposure/setup.py +++ b/skimage/exposure/setup.py @@ -16,13 +16,11 @@ def configuration(parent_package='', top_path=None): cython(['_unwrap_2d.pyx'], working_path=base_path) cython(['_unwrap_3d.pyx'], working_path=base_path) - unwrap_sources_2d = ['_unwrap_2d.c', - 'Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c'] + unwrap_sources_2d = ['_unwrap_2d.c', 'unwrap_2d_ljmu.c'] config.add_extension('_unwrap_2d', sources=unwrap_sources_2d, extra_compile_args=['-g'], include_dirs=[get_numpy_include_dirs()]) - unwrap_sources_3d = ['_unwrap_3d.c', - 'Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c'] + unwrap_sources_3d = ['_unwrap_3d.c', 'unwrap_3d_ljmu.c'] config.add_extension('_unwrap_3d', sources=unwrap_sources_3d, extra_compile_args=['-g'], include_dirs=[get_numpy_include_dirs()]) diff --git a/skimage/exposure/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c b/skimage/exposure/unwrap_2d_ljmu.c similarity index 96% rename from skimage/exposure/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c rename to skimage/exposure/unwrap_2d_ljmu.c index e6249062..7ffcbeef 100644 --- a/skimage/exposure/Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c +++ b/skimage/exposure/unwrap_2d_ljmu.c @@ -1,4 +1,5 @@ // 2D phase unwrapping, modified for inclusion in scipy by Gregor Thalhammer +// Original file name: Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c //This program was written by Munther Gdeisat and Miguel Arevallilo Herraez to program the two-dimensional unwrapper //entitled "Fast two-dimensional phase-unwrapping algorithm based on sorting by diff --git a/skimage/exposure/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c b/skimage/exposure/unwrap_3d_ljmu.c similarity index 99% rename from skimage/exposure/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c rename to skimage/exposure/unwrap_3d_ljmu.c index 7c203465..b8a44a73 100644 --- a/skimage/exposure/Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c +++ b/skimage/exposure/unwrap_3d_ljmu.c @@ -1,4 +1,5 @@ // 3D phase unwrapping, modified for inclusion in scipy by Gregor Thalhammer +// Original file name: Hussein_3D_unwrapper_with_mask_and_wrap_around_option.c //This program was written by Hussein Abdul-Rahman and Munther Gdeisat to program the three-dimensional phase unwrapper //entitled "Fast three-dimensional phase-unwrapping algorithm based on sorting by From f53a4e0764583a4f0f074efb466db4cf242b204c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Tue, 16 Jul 2013 12:40:52 +0200 Subject: [PATCH 087/577] unwrap: Add naive 1D unwrapper. The naive 1D unwrapper does not support masked arrays because the 1D unwrapping problem has an infite number of solutions when faced with missing data. Wrap around is not implemented because 1D phase unwrapping must start at a certain pixel, and there will always be a risk of a discontinuity there, wrap around or not. --- bento.info | 3 +++ skimage/exposure/_unwrap_1d.pyx | 22 ++++++++++++++++++ skimage/exposure/setup.py | 3 +++ skimage/exposure/tests/test_unwrap.py | 12 +++++++++- skimage/exposure/unwrap.py | 33 ++++++++++++++++++++------- 5 files changed, 64 insertions(+), 9 deletions(-) create mode 100644 skimage/exposure/_unwrap_1d.pyx diff --git a/bento.info b/bento.info index e8ae3b07..30367057 100644 --- a/bento.info +++ b/bento.info @@ -150,6 +150,9 @@ Library: Extension: skimage.exposure._unwrap_2d Sources: skimage/exposure/_unwrap_2d.pyx, skimage/exposure/unwrap_2d_ljmu.c + Extension: skimage.exposure._unwrap_1d + Sources: + skimage/exposure/_unwrap_1d.pyx Executable: skivi Module: skimage.scripts.skivi diff --git a/skimage/exposure/_unwrap_1d.pyx b/skimage/exposure/_unwrap_1d.pyx new file mode 100644 index 00000000..d39f9e57 --- /dev/null +++ b/skimage/exposure/_unwrap_1d.pyx @@ -0,0 +1,22 @@ +#cython: cdivision=True +#cython: boundscheck=False +#cython: nonecheck=False +#cython: wraparound=False + +from libc.math cimport M_PI + + +def unwrap_1d(float[::1] image, float[::1] unwrapped_image): + '''Phase unwrapping using the naive approach.''' + cdef: + Py_ssize_t i + float difference + long periods = 0 + unwrapped_image[0] = image[0] + for i in range(1, image.shape[0]): + difference = image[i] - image[i - 1] + if difference > M_PI: + periods -= 1 + elif difference < -M_PI: + periods += 1 + unwrapped_image[i] = image[i] + 2 * M_PI * periods diff --git a/skimage/exposure/setup.py b/skimage/exposure/setup.py index d21f41f0..1e801088 100644 --- a/skimage/exposure/setup.py +++ b/skimage/exposure/setup.py @@ -13,9 +13,12 @@ def configuration(parent_package='', top_path=None): config = Configuration('exposure', parent_package, top_path) config.add_data_dir('tests') + cython(['_unwrap_1d.pyx'], working_path=base_path) cython(['_unwrap_2d.pyx'], working_path=base_path) cython(['_unwrap_3d.pyx'], working_path=base_path) + config.add_extension('_unwrap_1d', sources=['_unwrap_1d.c'], + include_dirs=[get_numpy_include_dirs()]) unwrap_sources_2d = ['_unwrap_2d.c', 'unwrap_2d_ljmu.c'] config.add_extension('_unwrap_2d', sources=unwrap_sources_2d, extra_compile_args=['-g'], diff --git a/skimage/exposure/tests/test_unwrap.py b/skimage/exposure/tests/test_unwrap.py index 1e1b0cd5..220bb177 100644 --- a/skimage/exposure/tests/test_unwrap.py +++ b/skimage/exposure/tests/test_unwrap.py @@ -2,7 +2,8 @@ from __future__ import print_function, division import numpy as np from numpy.testing import (run_module_suite, assert_array_almost_equal, - assert_almost_equal, assert_array_equal) + assert_almost_equal, assert_array_equal, + assert_raises) import warnings from skimage.exposure import unwrap_phase @@ -40,6 +41,15 @@ def check_unwrap(image, mask=None): assert_phase_almost_equal(image_unwrapped, image) +def test_unwrap_1d(): + image = np.linspace(0, 10 * np.pi, 100) + check_unwrap(image) + # Masked arrays are not allowed in 1D + assert_raises(ValueError, check_unwrap, image, True) + # wrap_around is not allowed in 1D + assert_raises(ValueError, unwrap_phase, image, True) + + def test_unwrap_2d(): x, y = np.ogrid[:8, :16] image = 2 * np.pi * (x * 0.2 + y * 0.1) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index a38162bd..a2a8c42a 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -1,6 +1,7 @@ import numpy as np import warnings +from ._unwrap_1d import unwrap_1d from ._unwrap_2d import unwrap_2d from ._unwrap_3d import unwrap_3d from .._shared.six import string_types @@ -12,16 +13,18 @@ def unwrap_phase(image, wrap_around=False): Parameters ---------- - image : 2D or 3D ndarray of floats, optionally a masked array + image : 1D, 2D or 3D ndarray of floats, optionally a masked array The values should be in the range ``[-pi, pi)``. If a masked array is provided, the masked entries will not be changed, and their values will not be used to guide the unwrapping of neighboring, unmasked - values. + values. Masked 1D arrays are not allowed, and will raise a + ``ValueError``. wrap_around : bool or sequence of bool When an element of the sequence is ``True``, the unwrapping process will regard the edges along the corresponding axis of the image to be connected and use this connectivity to guide the phase unwrapping process. If only a single boolean is given, it will apply to all axes. + Wrap around is not supported for 1D arrays. Returns ------- @@ -29,6 +32,12 @@ def unwrap_phase(image, wrap_around=False): Unwrapped image of the same shape as the input. If the input ``image`` was a masked array, the mask will be preserved. + Raises + ------ + ValueError + If called with a masked 1D array or called with a 1D array and + ``wrap_around=True``. + Examples -------- >>> c0, c1 = np.ogrid[-1:1:128j, -1:1:128j] @@ -50,8 +59,8 @@ def unwrap_phase(image, wrap_around=False): C. Gorecki, & E. L. Novak (Eds.), Optical Metrology (2005) 32--40, International Society for Optics and Photonics. ''' - if image.ndim not in (2, 3): - raise ValueError('image must be 2 or 3 dimensional') + if image.ndim not in (1, 2, 3): + raise ValueError('image must be 1, 2 or 3 dimensional') if isinstance(wrap_around, bool): wrap_around = [wrap_around] * image.ndim elif (hasattr(wrap_around, '__getitem__') @@ -63,9 +72,15 @@ def unwrap_phase(image, wrap_around=False): else: raise ValueError('wrap_around must be a bool or a sequence with ' 'length equal to the dimensionality of image') - if image.ndim == 3 and 1 in image.shape: - warnings.warn('image is 3D and has a length 1 dimension; consider ' - 'using a 2D array to use the 2D unwrapping algorithm') + if image.ndim == 1: + if np.ma.isMaskedArray(image): + raise ValueError('1D masked images cannot be unwrapped') + if wrap_around[0]: + raise ValueError('wrap_around is not supported for 1D images') + if image.ndim in (2, 3) and 1 in image.shape: + warnings.warn('image has a length 1 dimension; consider using an ' + 'array of lower dimensionality to use a more efficient ' + 'algorithm') if np.ma.isMaskedArray(image): mask = np.require(image.mask, np.uint8, ['C']) @@ -74,7 +89,9 @@ def unwrap_phase(image, wrap_around=False): image_not_masked = np.asarray(image, dtype=np.float32, order='C') image_unwrapped = np.empty_like(image, dtype=np.float32, order='C') - if image.ndim == 2: + if image.ndim == 1: + unwrap_1d(image_not_masked, image_unwrapped) + elif image.ndim == 2: unwrap_2d(image_not_masked, mask, image_unwrapped, wrap_around) elif image.ndim == 3: From a6e7bd4a00afba5aba43d937facc22bc5c7c6f00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Tue, 16 Jul 2013 12:49:27 +0200 Subject: [PATCH 088/577] unwrap: Use constants from math.h in C code. --- skimage/exposure/unwrap_2d_ljmu.c | 7 ++++--- skimage/exposure/unwrap_3d_ljmu.c | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/skimage/exposure/unwrap_2d_ljmu.c b/skimage/exposure/unwrap_2d_ljmu.c index 7ffcbeef..abc66451 100644 --- a/skimage/exposure/unwrap_2d_ljmu.c +++ b/skimage/exposure/unwrap_2d_ljmu.c @@ -17,13 +17,14 @@ #include #include #include +#include + +#define PI M_PI +#define TWOPI (2 * M_PI) //TODO: remove global variables //TODO: make thresholds independent -static float PI = 3.141592654f; -static float TWOPI = 6.283185307f; - #define NOMASK 0 #define MASK 1 diff --git a/skimage/exposure/unwrap_3d_ljmu.c b/skimage/exposure/unwrap_3d_ljmu.c index b8a44a73..99800410 100644 --- a/skimage/exposure/unwrap_3d_ljmu.c +++ b/skimage/exposure/unwrap_3d_ljmu.c @@ -19,9 +19,10 @@ #include #include #include +#include -static float PI = 3.141592654f; -static float TWOPI = 6.283185307f; +#define PI M_PI +#define TWOPI (2 * M_PI) #define NOMASK 0 #define MASK 1 From ebf457cea82dfb4765fc5377f2b2ed83d8484beb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Tue, 16 Jul 2013 13:00:49 +0200 Subject: [PATCH 089/577] unwrap: Convert 2D C code from float to double. --- skimage/exposure/unwrap_2d_ljmu.c | 48 +++++++++++++++---------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/skimage/exposure/unwrap_2d_ljmu.c b/skimage/exposure/unwrap_2d_ljmu.c index abc66451..285fca3d 100644 --- a/skimage/exposure/unwrap_2d_ljmu.c +++ b/skimage/exposure/unwrap_2d_ljmu.c @@ -30,7 +30,7 @@ typedef struct { - float mod; + double mod; int x_connectivity; int y_connectivity; int no_of_edges; @@ -41,8 +41,8 @@ struct PIXELM { int increment; //No. of 2*pi to add to the pixel to unwrap it int number_of_pixels_in_group;//No. of pixel in the pixel group - float value; //value of the pixel - float reliability; + double value; //value of the pixel + double reliability; unsigned char input_mask; //0 pixel is masked. NOMASK pixel is not masked unsigned char extended_mask; //0 pixel is masked. NOMASK pixel is not masked int group; //group No. @@ -58,7 +58,7 @@ typedef struct PIXELM PIXELM; //if we have S pixels, then we have S horizontal edges and S vertical edges struct EDGE { - float reliab; //reliabilty of the edge and it depends on the two pixels + double reliab; //reliabilty of the edge and it depends on the two pixels PIXELM *pointer_1; //pointer to the first pixel PIXELM *pointer_2; //pointer to the second pixel int increment; //No. of 2*pi to add to one of the pixels to @@ -75,7 +75,7 @@ typedef struct EDGE EDGE; typedef enum {yes, no} yes_no; -yes_no find_pivot(EDGE *left, EDGE *right, float *pivot_ptr) +yes_no find_pivot(EDGE *left, EDGE *right, double *pivot_ptr) { EDGE a, b, c, *p; @@ -107,7 +107,7 @@ yes_no find_pivot(EDGE *left, EDGE *right, float *pivot_ptr) } } -EDGE *partition(EDGE *left, EDGE *right, float pivot) +EDGE *partition(EDGE *left, EDGE *right, double pivot) { while (left <= right) { @@ -128,7 +128,7 @@ EDGE *partition(EDGE *left, EDGE *right, float pivot) void quicker_sort(EDGE *left, EDGE *right) { EDGE *p; - float pivot; + double pivot; if (find_pivot(left, right, &pivot) == yes) { @@ -142,10 +142,10 @@ void quicker_sort(EDGE *left, EDGE *right) //--------------------start initialize pixels ---------------------------------- //initialize pixels. See the explination of the pixel class above. //initially every pixel is assumed to belong to a group consisting of only itself -void initialisePIXELs(float *wrapped_image, unsigned char *input_mask, unsigned char *extended_mask, PIXELM *pixel, int image_width, int image_height) +void initialisePIXELs(double *wrapped_image, unsigned char *input_mask, unsigned char *extended_mask, PIXELM *pixel, int image_width, int image_height) { PIXELM *pixel_pointer = pixel; - float *wrapped_image_pointer = wrapped_image; + double *wrapped_image_pointer = wrapped_image; unsigned char *input_mask_pointer = input_mask; unsigned char *extended_mask_pointer = extended_mask; int i, j; @@ -157,7 +157,7 @@ void initialisePIXELs(float *wrapped_image, unsigned char *input_mask, unsigned pixel_pointer->increment = 0; pixel_pointer->number_of_pixels_in_group = 1; pixel_pointer->value = *wrapped_image_pointer; - pixel_pointer->reliability = 9999999.f + rand(); + pixel_pointer->reliability = 9999999. + rand(); pixel_pointer->input_mask = *input_mask_pointer; pixel_pointer->extended_mask = *extended_mask_pointer; pixel_pointer->head = pixel_pointer; @@ -175,9 +175,9 @@ void initialisePIXELs(float *wrapped_image, unsigned char *input_mask, unsigned //-------------------end initialize pixels ----------- //gamma function in the paper -float wrap(float pixel_value) +double wrap(double pixel_value) { - float wrapped_pixel_value; + double wrapped_pixel_value; if (pixel_value > PI) wrapped_pixel_value = pixel_value - TWOPI; else if (pixel_value < -PI) wrapped_pixel_value = pixel_value + TWOPI; else wrapped_pixel_value = pixel_value; @@ -185,9 +185,9 @@ float wrap(float pixel_value) } // pixelL_value is the left pixel, pixelR_value is the right pixel -int find_wrap(float pixelL_value, float pixelR_value) +int find_wrap(double pixelL_value, double pixelR_value) { - float difference; + double difference; int wrap_value; difference = pixelL_value - pixelR_value; @@ -299,15 +299,15 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, } } -void calculate_reliability(float *wrappedImage, PIXELM *pixel, +void calculate_reliability(double *wrappedImage, PIXELM *pixel, int image_width, int image_height, params_t *params) { int image_width_plus_one = image_width + 1; int image_width_minus_one = image_width - 1; PIXELM *pixel_pointer = pixel + image_width_plus_one; - float *WIP = wrappedImage + image_width_plus_one; //WIP is the wrapped image pointer - float H, V, D1, D2; + double *WIP = wrappedImage + image_width_plus_one; //WIP is the wrapped image pointer + double H, V, D1, D2; int i, j; for (i = 1; i < image_height -1; ++i) @@ -333,7 +333,7 @@ void calculate_reliability(float *wrappedImage, PIXELM *pixel, { //calculating the reliability for the left border of the image PIXELM *pixel_pointer = pixel + image_width; - float *WIP = wrappedImage + image_width; + double *WIP = wrappedImage + image_width; for (i = 1; i < image_height - 1; ++i) { @@ -372,7 +372,7 @@ void calculate_reliability(float *wrappedImage, PIXELM *pixel, { //calculating the reliability for the top border of the image PIXELM *pixel_pointer = pixel + 1; - float *WIP = wrappedImage + 1; + double *WIP = wrappedImage + 1; for (i = 1; i < image_width - 1; ++i) { @@ -618,7 +618,7 @@ void unwrapImage(PIXELM *pixel, int image_width, int image_height) for (i = 0; i < image_size; i++) { - pixel_pointer->value += TWOPI * (float)(pixel_pointer->increment); + pixel_pointer->value += TWOPI * (double)(pixel_pointer->increment); pixel_pointer++; } } @@ -633,7 +633,7 @@ void maskImage(PIXELM *pixel, unsigned char *input_mask, int image_width, int i PIXELM *pointer_pixel = pixel; unsigned char *IMP = input_mask; //input mask pointer - float min=99999999.f; + double min=99999999; int i; int image_size = image_width * image_height; @@ -666,11 +666,11 @@ void maskImage(PIXELM *pixel, unsigned char *input_mask, int image_width, int i //phase map. copy the image on the buffer passed to this unwrapper to //over-write the unwrapped phase map on the buffer of the wrapped //phase map. -void returnImage(PIXELM *pixel, float *unwrapped_image, int image_width, int image_height) +void returnImage(PIXELM *pixel, double *unwrapped_image, int image_width, int image_height) { int i; int image_size = image_width * image_height; - float *unwrapped_image_pointer = unwrapped_image; + double *unwrapped_image_pointer = unwrapped_image; PIXELM *pixel_pointer = pixel; for (i=0; i < image_size; i++) @@ -683,7 +683,7 @@ void returnImage(PIXELM *pixel, float *unwrapped_image, int image_width, int im //the main function of the unwrapper void -unwrap2D(float* wrapped_image, float* UnwrappedImage, unsigned char* input_mask, +unwrap2D(double* wrapped_image, double* UnwrappedImage, unsigned char* input_mask, int image_width, int image_height, int wrap_around_x, int wrap_around_y) { From 9bacb0d54a4dcef760923bb340ac7386e6fd45c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Tue, 16 Jul 2013 13:02:14 +0200 Subject: [PATCH 090/577] unwrap: Use UNIX line endings. --- skimage/exposure/unwrap_2d_ljmu.c | 1450 ++++++++++++++--------------- 1 file changed, 725 insertions(+), 725 deletions(-) diff --git a/skimage/exposure/unwrap_2d_ljmu.c b/skimage/exposure/unwrap_2d_ljmu.c index 285fca3d..6be7966a 100644 --- a/skimage/exposure/unwrap_2d_ljmu.c +++ b/skimage/exposure/unwrap_2d_ljmu.c @@ -1,725 +1,725 @@ -// 2D phase unwrapping, modified for inclusion in scipy by Gregor Thalhammer -// Original file name: Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c - -//This program was written by Munther Gdeisat and Miguel Arevallilo Herraez to program the two-dimensional unwrapper -//entitled "Fast two-dimensional phase-unwrapping algorithm based on sorting by -//reliability following a noncontinuous path" -//by Miguel Arevallilo Herraez, David R. Burton, Michael J. Lalor, and Munther A. Gdeisat -//published in the Journal Applied Optics, Vol. 41, No. 35, pp. 7437, 2002. -//This program was written by Munther Gdeisat, Liverpool John Moores University, United Kingdom. -//Date 26th August 2007 -//The wrapped phase map is assumed to be of floating point data type. The resultant unwrapped phase map is also of floating point type. -//The mask is of byte data type. -//When the mask is 255 this means that the pixel is valid -//When the mask is 0 this means that the pixel is invalid (noisy or corrupted pixel) -//This program takes into consideration the image wrap around problem encountered in MRI imaging. - -#include -#include -#include -#include - -#define PI M_PI -#define TWOPI (2 * M_PI) - -//TODO: remove global variables -//TODO: make thresholds independent - -#define NOMASK 0 -#define MASK 1 - -typedef struct -{ - double mod; - int x_connectivity; - int y_connectivity; - int no_of_edges; -} params_t; - -//PIXELM information -struct PIXELM -{ - int increment; //No. of 2*pi to add to the pixel to unwrap it - int number_of_pixels_in_group;//No. of pixel in the pixel group - double value; //value of the pixel - double reliability; - unsigned char input_mask; //0 pixel is masked. NOMASK pixel is not masked - unsigned char extended_mask; //0 pixel is masked. NOMASK pixel is not masked - int group; //group No. - int new_group; - struct PIXELM *head; //pointer to the first pixel in the group in the linked list - struct PIXELM *last; //pointer to the last pixel in the group - struct PIXELM *next; //pointer to the next pixel in the group -}; - -typedef struct PIXELM PIXELM; - -//the EDGE is the line that connects two pixels. -//if we have S pixels, then we have S horizontal edges and S vertical edges -struct EDGE -{ - double reliab; //reliabilty of the edge and it depends on the two pixels - PIXELM *pointer_1; //pointer to the first pixel - PIXELM *pointer_2; //pointer to the second pixel - int increment; //No. of 2*pi to add to one of the pixels to - //unwrap it with respect to the second -}; - -typedef struct EDGE EDGE; - -//---------------start quicker_sort algorithm -------------------------------- -#define swap(x,y) {EDGE t; t=x; x=y; y=t;} -#define order(x,y) if (x.reliab > y.reliab) swap(x,y) -#define o2(x,y) order(x,y) -#define o3(x,y,z) o2(x,y); o2(x,z); o2(y,z) - -typedef enum {yes, no} yes_no; - -yes_no find_pivot(EDGE *left, EDGE *right, double *pivot_ptr) -{ - EDGE a, b, c, *p; - - a = *left; - b = *(left + (right - left) /2 ); - c = *right; - o3(a,b,c); - - if (a.reliab < b.reliab) - { - *pivot_ptr = b.reliab; - return yes; - } - - if (b.reliab < c.reliab) - { - *pivot_ptr = c.reliab; - return yes; - } - - for (p = left + 1; p <= right; ++p) - { - if (p->reliab != left->reliab) - { - *pivot_ptr = (p->reliab < left->reliab) ? left->reliab : p->reliab; - return yes; - } - return no; - } -} - -EDGE *partition(EDGE *left, EDGE *right, double pivot) -{ - while (left <= right) - { - while (left->reliab < pivot) - ++left; - while (right->reliab >= pivot) - --right; - if (left < right) - { - swap (*left, *right); - ++left; - --right; - } - } - return left; -} - -void quicker_sort(EDGE *left, EDGE *right) -{ - EDGE *p; - double pivot; - - if (find_pivot(left, right, &pivot) == yes) - { - p = partition(left, right, pivot); - quicker_sort(left, p - 1); - quicker_sort(p, right); - } -} -//--------------end quicker_sort algorithm ----------------------------------- - -//--------------------start initialize pixels ---------------------------------- -//initialize pixels. See the explination of the pixel class above. -//initially every pixel is assumed to belong to a group consisting of only itself -void initialisePIXELs(double *wrapped_image, unsigned char *input_mask, unsigned char *extended_mask, PIXELM *pixel, int image_width, int image_height) -{ - PIXELM *pixel_pointer = pixel; - double *wrapped_image_pointer = wrapped_image; - unsigned char *input_mask_pointer = input_mask; - unsigned char *extended_mask_pointer = extended_mask; - int i, j; - - for (i=0; i < image_height; i++) - { - for (j=0; j < image_width; j++) - { - pixel_pointer->increment = 0; - pixel_pointer->number_of_pixels_in_group = 1; - pixel_pointer->value = *wrapped_image_pointer; - pixel_pointer->reliability = 9999999. + rand(); - pixel_pointer->input_mask = *input_mask_pointer; - pixel_pointer->extended_mask = *extended_mask_pointer; - pixel_pointer->head = pixel_pointer; - pixel_pointer->last = pixel_pointer; - pixel_pointer->next = NULL; - pixel_pointer->new_group = 0; - pixel_pointer->group = -1; - pixel_pointer++; - wrapped_image_pointer++; - input_mask_pointer++; - extended_mask_pointer++; - } - } -} -//-------------------end initialize pixels ----------- - -//gamma function in the paper -double wrap(double pixel_value) -{ - double wrapped_pixel_value; - if (pixel_value > PI) wrapped_pixel_value = pixel_value - TWOPI; - else if (pixel_value < -PI) wrapped_pixel_value = pixel_value + TWOPI; - else wrapped_pixel_value = pixel_value; - return wrapped_pixel_value; -} - -// pixelL_value is the left pixel, pixelR_value is the right pixel -int find_wrap(double pixelL_value, double pixelR_value) -{ - double difference; - int wrap_value; - difference = pixelL_value - pixelR_value; - - if (difference > PI) wrap_value = -1; - else if (difference < -PI) wrap_value = 1; - else wrap_value = 0; - - return wrap_value; -} - -void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, - int image_width, int image_height, - params_t *params) -{ - int i,j; - int image_width_plus_one = image_width + 1; - int image_width_minus_one = image_width - 1; - unsigned char *IMP = input_mask + image_width + 1; //input mask pointer - unsigned char *EMP = extended_mask + image_width + 1; //extended mask pointer - - //extend the mask for the image except borders - for (i=1; i < image_height - 1; ++i) - { - for (j=1; j < image_width - 1; ++j) - { - if ( (*IMP) == NOMASK && (*(IMP + 1) == NOMASK) && (*(IMP - 1) == NOMASK) && - (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && - (*(IMP - image_width_minus_one) == NOMASK) && (*(IMP - image_width_plus_one) == NOMASK) && - (*(IMP + image_width_minus_one) == NOMASK) && (*(IMP + image_width_plus_one) == NOMASK) ) - { - *EMP = NOMASK; - } - ++EMP; - ++IMP; - } - EMP += 2; - IMP += 2; - } - - if (params->x_connectivity == 1) - { - //extend the mask for the right border of the image - IMP = input_mask + 2 * image_width - 1; - EMP = extended_mask + 2 * image_width -1; - for (i=1; i < image_height - 1; ++ i) - { - if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && - (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && - (*(IMP - image_width - 1) == NOMASK) && (*(IMP - image_width + 1) == NOMASK) && - (*(IMP + image_width - 1) == NOMASK) && (*(IMP - 2 * image_width + 1) == NOMASK) ) - { - *EMP = NOMASK; - } - EMP += image_width; - IMP += image_width; - } - - //extend the mask for the left border of the image - IMP = input_mask + image_width; - EMP = extended_mask + image_width; - for (i=1; i < image_height - 1; ++i) - { - if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && - (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && - (*(IMP - image_width + 1) == NOMASK) && (*(IMP + image_width + 1) == NOMASK) && - (*(IMP + image_width - 1) == NOMASK) && (*(IMP + 2 * image_width - 1) == NOMASK) ) - { - *EMP = NOMASK; - } - EMP += image_width; - IMP += image_width; - } - } - - if (params->y_connectivity == 1) - { - //extend the mask for the top border of the image - IMP = input_mask + 1; - EMP = extended_mask + 1; - for (i=1; i < image_width - 1; ++i) - { - if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && - (*(IMP + image_width) == NOMASK) && (*(IMP + image_width * (image_height - 1)) == NOMASK) && - (*(IMP + image_width + 1) == NOMASK) && (*(IMP + image_width - 1) == NOMASK) && - (*(IMP + image_width * (image_height - 1) - 1) == NOMASK) && (*(IMP + image_width * (image_height - 1) + 1) == NOMASK) ) - { - *EMP = NOMASK; - } - EMP++; - IMP++; - } - - //extend the mask for the bottom border of the image - IMP = input_mask + image_width * (image_height - 1) + 1; - EMP = extended_mask + image_width * (image_height - 1) + 1; - for (i=1; i < image_width - 1; ++i) - { - if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && - (*(IMP - image_width) == NOMASK) && (*(IMP - image_width - 1) == NOMASK) && (*(IMP - image_width + 1) == NOMASK) && - (*(IMP - image_width * (image_height - 1) ) == NOMASK) && - (*(IMP - image_width * (image_height - 1) - 1) == NOMASK) && - (*(IMP - image_width * (image_height - 1) + 1) == NOMASK) ) - { - *EMP = NOMASK; - } - EMP++; - IMP++; - } - } -} - -void calculate_reliability(double *wrappedImage, PIXELM *pixel, - int image_width, int image_height, - params_t *params) -{ - int image_width_plus_one = image_width + 1; - int image_width_minus_one = image_width - 1; - PIXELM *pixel_pointer = pixel + image_width_plus_one; - double *WIP = wrappedImage + image_width_plus_one; //WIP is the wrapped image pointer - double H, V, D1, D2; - int i, j; - - for (i = 1; i < image_height -1; ++i) - { - for (j = 1; j < image_width - 1; ++j) - { - if (pixel_pointer->extended_mask == NOMASK) - { - H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); - V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); - D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); - D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer++; - WIP++; - } - pixel_pointer += 2; - WIP += 2; - } - - if (params->x_connectivity == 1) - { - //calculating the reliability for the left border of the image - PIXELM *pixel_pointer = pixel + image_width; - double *WIP = wrappedImage + image_width; - - for (i = 1; i < image_height - 1; ++i) - { - if (pixel_pointer->extended_mask == NOMASK) - { - H = wrap(*(WIP + image_width - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); - V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); - D1 = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); - D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + 2* image_width - 1)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer += image_width; - WIP += image_width; - } - - //calculating the reliability for the right border of the image - pixel_pointer = pixel + 2 * image_width - 1; - WIP = wrappedImage + 2 * image_width - 1; - - for (i = 1; i < image_height - 1; ++i) - { - if (pixel_pointer->extended_mask == NOMASK) - { - H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP - image_width_minus_one)); - V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); - D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + 1)); - D2 = wrap(*(WIP - 2 * image_width - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer += image_width; - WIP += image_width; - } - } - - if (params->y_connectivity == 1) - { - //calculating the reliability for the top border of the image - PIXELM *pixel_pointer = pixel + 1; - double *WIP = wrappedImage + 1; - - for (i = 1; i < image_width - 1; ++i) - { - if (pixel_pointer->extended_mask == NOMASK) - { - H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); - V = wrap(*(WIP + image_width*(image_height - 1)) - *WIP) - wrap(*WIP - *(WIP + image_width)); - D1 = wrap(*(WIP + image_width*(image_height - 1) - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); - D2 = wrap(*(WIP + image_width*(image_height - 1) + 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer++; - WIP++; - } - - //calculating the reliability for the bottom border of the image - pixel_pointer = pixel + (image_height - 1) * image_width + 1; - WIP = wrappedImage + (image_height - 1) * image_width + 1; - - for (i = 1; i < image_width - 1; ++i) - { - if (pixel_pointer->extended_mask == NOMASK) - { - H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); - V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP -(image_height - 1) * (image_width))); - D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) + 1)); - D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) - 1)); - pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; - } - pixel_pointer++; - WIP++; - } - } -} - -//calculate the reliability of the horizontal edges of the image -//it is calculated by adding the reliability of pixel and the relibility of -//its right-hand neighbour -//edge is calculated between a pixel and its next neighbour -void horizontalEDGEs(PIXELM *pixel, EDGE *edge, - int image_width, int image_height, - params_t *params) -{ - int i, j; - EDGE *edge_pointer = edge; - PIXELM *pixel_pointer = pixel; - int no_of_edges = params->no_of_edges; - - for (i = 0; i < image_height; i++) - { - for (j = 0; j < image_width - 1; j++) - { - if (pixel_pointer->input_mask == NOMASK && (pixel_pointer + 1)->input_mask == NOMASK) - { - edge_pointer->pointer_1 = pixel_pointer; - edge_pointer->pointer_2 = (pixel_pointer+1); - edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + 1)->reliability; - edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + 1)->value); - edge_pointer++; - no_of_edges++; - } - pixel_pointer++; - } - pixel_pointer++; - } - //construct edges at the right border of the image - if (params->x_connectivity == 1) - { - pixel_pointer = pixel + image_width - 1; - for (i = 0; i < image_height; i++) - { - if (pixel_pointer->input_mask == NOMASK && (pixel_pointer - image_width + 1)->input_mask == NOMASK) - { - edge_pointer->pointer_1 = pixel_pointer; - edge_pointer->pointer_2 = (pixel_pointer - image_width + 1); - edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width + 1)->reliability; - edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width + 1)->value); - edge_pointer++; - no_of_edges++; - } - pixel_pointer+=image_width; - } - } - params->no_of_edges = no_of_edges; -} - -//calculate the reliability of the vertical edges of the image -//it is calculated by adding the reliability of pixel and the relibility of -//its lower neighbour in the image. -void verticalEDGEs(PIXELM *pixel, EDGE *edge, - int image_width, int image_height, - params_t *params) -{ - int i, j; - int no_of_edges = params->no_of_edges; - PIXELM *pixel_pointer = pixel; - EDGE *edge_pointer = edge + no_of_edges; - - for (i=0; i < image_height - 1; i++) - { - for (j=0; j < image_width; j++) - { - if (pixel_pointer->input_mask == NOMASK && (pixel_pointer + image_width)->input_mask == NOMASK) - { - edge_pointer->pointer_1 = pixel_pointer; - edge_pointer->pointer_2 = (pixel_pointer + image_width); - edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + image_width)->reliability; - edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + image_width)->value); - edge_pointer++; - no_of_edges++; - } - pixel_pointer++; - } //j loop - } // i loop - - //construct edges that connect at the bottom border of the image - if (params->y_connectivity == 1) - { - pixel_pointer = pixel + image_width *(image_height - 1); - for (i = 0; i < image_width; i++) - { - if (pixel_pointer->input_mask == NOMASK && (pixel_pointer - image_width *(image_height - 1))->input_mask == NOMASK) - { - edge_pointer->pointer_1 = pixel_pointer; - edge_pointer->pointer_2 = (pixel_pointer - image_width *(image_height - 1)); - edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width *(image_height - 1))->reliability; - edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width *(image_height - 1))->value); - edge_pointer++; - no_of_edges++; - } - pixel_pointer++; - } - } - params->no_of_edges = no_of_edges; -} - -//gather the pixels of the image into groups -void gatherPIXELs(EDGE *edge, params_t *params) -{ - int k; - PIXELM *PIXEL1; - PIXELM *PIXEL2; - PIXELM *group1; - PIXELM *group2; - EDGE *pointer_edge = edge; - int incremento; - - for (k = 0; k < params->no_of_edges; k++) - { - PIXEL1 = pointer_edge->pointer_1; - PIXEL2 = pointer_edge->pointer_2; - - //PIXELM 1 and PIXELM 2 belong to different groups - //initially each pixel is a group by it self and one pixel can construct a group - //no else or else if to this if - if (PIXEL2->head != PIXEL1->head) - { - //PIXELM 2 is alone in its group - //merge this pixel with PIXELM 1 group and find the number of 2 pi to add - //to or subtract to unwrap it - if ((PIXEL2->next == NULL) && (PIXEL2->head == PIXEL2)) - { - PIXEL1->head->last->next = PIXEL2; - PIXEL1->head->last = PIXEL2; - (PIXEL1->head->number_of_pixels_in_group)++; - PIXEL2->head=PIXEL1->head; - PIXEL2->increment = PIXEL1->increment-pointer_edge->increment; - } - - //PIXELM 1 is alone in its group - //merge this pixel with PIXELM 2 group and find the number of 2 pi to add - //to or subtract to unwrap it - else if ((PIXEL1->next == NULL) && (PIXEL1->head == PIXEL1)) - { - PIXEL2->head->last->next = PIXEL1; - PIXEL2->head->last = PIXEL1; - (PIXEL2->head->number_of_pixels_in_group)++; - PIXEL1->head = PIXEL2->head; - PIXEL1->increment = PIXEL2->increment+pointer_edge->increment; - } - - //PIXELM 1 and PIXELM 2 both have groups - else - { - group1 = PIXEL1->head; - group2 = PIXEL2->head; - //if the no. of pixels in PIXELM 1 group is larger than the - //no. of pixels in PIXELM 2 group. Merge PIXELM 2 group to - //PIXELM 1 group and find the number of wraps between PIXELM 2 - //group and PIXELM 1 group to unwrap PIXELM 2 group with respect - //to PIXELM 1 group. the no. of wraps will be added to PIXELM 2 - //group in the future - if (group1->number_of_pixels_in_group > group2->number_of_pixels_in_group) - { - //merge PIXELM 2 with PIXELM 1 group - group1->last->next = group2; - group1->last = group2->last; - group1->number_of_pixels_in_group = group1->number_of_pixels_in_group + group2->number_of_pixels_in_group; - incremento = PIXEL1->increment-pointer_edge->increment - PIXEL2->increment; - //merge the other pixels in PIXELM 2 group to PIXELM 1 group - while (group2 != NULL) - { - group2->head = group1; - group2->increment += incremento; - group2 = group2->next; - } - } - - //if the no. of pixels in PIXELM 2 group is larger than the - //no. of pixels in PIXELM 1 group. Merge PIXELM 1 group to - //PIXELM 2 group and find the number of wraps between PIXELM 2 - //group and PIXELM 1 group to unwrap PIXELM 1 group with respect - //to PIXELM 2 group. the no. of wraps will be added to PIXELM 1 - //group in the future - else - { - //merge PIXELM 1 with PIXELM 2 group - group2->last->next = group1; - group2->last = group1->last; - group2->number_of_pixels_in_group = group2->number_of_pixels_in_group + group1->number_of_pixels_in_group; - incremento = PIXEL2->increment + pointer_edge->increment - PIXEL1->increment; - //merge the other pixels in PIXELM 2 group to PIXELM 1 group - while (group1 != NULL) - { - group1->head = group2; - group1->increment += incremento; - group1 = group1->next; - } // while - - } // else - } //else - } //if - pointer_edge++; - } -} - -//unwrap the image -void unwrapImage(PIXELM *pixel, int image_width, int image_height) -{ - int i; - int image_size = image_width * image_height; - PIXELM *pixel_pointer=pixel; - - for (i = 0; i < image_size; i++) - { - pixel_pointer->value += TWOPI * (double)(pixel_pointer->increment); - pixel_pointer++; - } -} - -//set the masked pixels (mask = 0) to the minimum of the unwrapper phase -void maskImage(PIXELM *pixel, unsigned char *input_mask, int image_width, int image_height) -{ - int image_width_plus_one = image_width + 1; - int image_height_plus_one = image_height + 1; - int image_width_minus_one = image_width - 1; - int image_height_minus_one = image_height - 1; - - PIXELM *pointer_pixel = pixel; - unsigned char *IMP = input_mask; //input mask pointer - double min=99999999; - int i; - int image_size = image_width * image_height; - - //find the minimum of the unwrapped phase - for (i = 0; i < image_size; i++) - { - if ((pointer_pixel->value < min) && (*IMP == NOMASK)) - min = pointer_pixel->value; - - pointer_pixel++; - IMP++; - } - - pointer_pixel = pixel; - IMP = input_mask; - - //set the masked pixels to minimum - for (i = 0; i < image_size; i++) - { - if ((*IMP) == MASK) - { - pointer_pixel->value = min; - } - pointer_pixel++; - IMP++; - } -} - -//the input to this unwrapper is an array that contains the wrapped -//phase map. copy the image on the buffer passed to this unwrapper to -//over-write the unwrapped phase map on the buffer of the wrapped -//phase map. -void returnImage(PIXELM *pixel, double *unwrapped_image, int image_width, int image_height) -{ - int i; - int image_size = image_width * image_height; - double *unwrapped_image_pointer = unwrapped_image; - PIXELM *pixel_pointer = pixel; - - for (i=0; i < image_size; i++) - { - *unwrapped_image_pointer = pixel_pointer->value; - pixel_pointer++; - unwrapped_image_pointer++; - } -} - -//the main function of the unwrapper -void -unwrap2D(double* wrapped_image, double* UnwrappedImage, unsigned char* input_mask, - int image_width, int image_height, - int wrap_around_x, int wrap_around_y) -{ - params_t params = {TWOPI, wrap_around_x, wrap_around_y, 0}; - unsigned char *extended_mask; - PIXELM *pixel; - EDGE *edge; - int image_size = image_height * image_width; - int No_of_Edges_initially = 2 * image_width * image_height; - - extended_mask = (unsigned char *) calloc(image_size, sizeof(unsigned char)); - pixel = (PIXELM *) calloc(image_size, sizeof(PIXELM)); - edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE)); - - extend_mask(input_mask, extended_mask, image_width, image_height, ¶ms); - initialisePIXELs(wrapped_image, input_mask, extended_mask, pixel, image_width, image_height); - calculate_reliability(wrapped_image, pixel, image_width, image_height, ¶ms); - horizontalEDGEs(pixel, edge, image_width, image_height, ¶ms); - verticalEDGEs(pixel, edge, image_width, image_height, ¶ms); - - //sort the EDGEs depending on their reiability. The PIXELs with higher - //relibility (small value) first - quicker_sort(edge, edge + params.no_of_edges - 1); - - //gather PIXELs into groups - gatherPIXELs(edge, ¶ms); - - unwrapImage(pixel, image_width, image_height); - maskImage(pixel, input_mask, image_width, image_height); - - //copy the image from PIXELM structure to the unwrapped phase array - //passed to this function - //TODO: replace by (cython?) function to directly write into numpy array ? - returnImage(pixel, UnwrappedImage, image_width, image_height); - - free(edge); - free(pixel); - free(extended_mask); -} +// 2D phase unwrapping, modified for inclusion in scipy by Gregor Thalhammer +// Original file name: Miguel_2D_unwrapper_with_mask_and_wrap_around_option.c + +//This program was written by Munther Gdeisat and Miguel Arevallilo Herraez to program the two-dimensional unwrapper +//entitled "Fast two-dimensional phase-unwrapping algorithm based on sorting by +//reliability following a noncontinuous path" +//by Miguel Arevallilo Herraez, David R. Burton, Michael J. Lalor, and Munther A. Gdeisat +//published in the Journal Applied Optics, Vol. 41, No. 35, pp. 7437, 2002. +//This program was written by Munther Gdeisat, Liverpool John Moores University, United Kingdom. +//Date 26th August 2007 +//The wrapped phase map is assumed to be of floating point data type. The resultant unwrapped phase map is also of floating point type. +//The mask is of byte data type. +//When the mask is 255 this means that the pixel is valid +//When the mask is 0 this means that the pixel is invalid (noisy or corrupted pixel) +//This program takes into consideration the image wrap around problem encountered in MRI imaging. + +#include +#include +#include +#include + +#define PI M_PI +#define TWOPI (2 * M_PI) + +//TODO: remove global variables +//TODO: make thresholds independent + +#define NOMASK 0 +#define MASK 1 + +typedef struct +{ + double mod; + int x_connectivity; + int y_connectivity; + int no_of_edges; +} params_t; + +//PIXELM information +struct PIXELM +{ + int increment; //No. of 2*pi to add to the pixel to unwrap it + int number_of_pixels_in_group;//No. of pixel in the pixel group + double value; //value of the pixel + double reliability; + unsigned char input_mask; //0 pixel is masked. NOMASK pixel is not masked + unsigned char extended_mask; //0 pixel is masked. NOMASK pixel is not masked + int group; //group No. + int new_group; + struct PIXELM *head; //pointer to the first pixel in the group in the linked list + struct PIXELM *last; //pointer to the last pixel in the group + struct PIXELM *next; //pointer to the next pixel in the group +}; + +typedef struct PIXELM PIXELM; + +//the EDGE is the line that connects two pixels. +//if we have S pixels, then we have S horizontal edges and S vertical edges +struct EDGE +{ + double reliab; //reliabilty of the edge and it depends on the two pixels + PIXELM *pointer_1; //pointer to the first pixel + PIXELM *pointer_2; //pointer to the second pixel + int increment; //No. of 2*pi to add to one of the pixels to + //unwrap it with respect to the second +}; + +typedef struct EDGE EDGE; + +//---------------start quicker_sort algorithm -------------------------------- +#define swap(x,y) {EDGE t; t=x; x=y; y=t;} +#define order(x,y) if (x.reliab > y.reliab) swap(x,y) +#define o2(x,y) order(x,y) +#define o3(x,y,z) o2(x,y); o2(x,z); o2(y,z) + +typedef enum {yes, no} yes_no; + +yes_no find_pivot(EDGE *left, EDGE *right, double *pivot_ptr) +{ + EDGE a, b, c, *p; + + a = *left; + b = *(left + (right - left) /2 ); + c = *right; + o3(a,b,c); + + if (a.reliab < b.reliab) + { + *pivot_ptr = b.reliab; + return yes; + } + + if (b.reliab < c.reliab) + { + *pivot_ptr = c.reliab; + return yes; + } + + for (p = left + 1; p <= right; ++p) + { + if (p->reliab != left->reliab) + { + *pivot_ptr = (p->reliab < left->reliab) ? left->reliab : p->reliab; + return yes; + } + return no; + } +} + +EDGE *partition(EDGE *left, EDGE *right, double pivot) +{ + while (left <= right) + { + while (left->reliab < pivot) + ++left; + while (right->reliab >= pivot) + --right; + if (left < right) + { + swap (*left, *right); + ++left; + --right; + } + } + return left; +} + +void quicker_sort(EDGE *left, EDGE *right) +{ + EDGE *p; + double pivot; + + if (find_pivot(left, right, &pivot) == yes) + { + p = partition(left, right, pivot); + quicker_sort(left, p - 1); + quicker_sort(p, right); + } +} +//--------------end quicker_sort algorithm ----------------------------------- + +//--------------------start initialize pixels ---------------------------------- +//initialize pixels. See the explination of the pixel class above. +//initially every pixel is assumed to belong to a group consisting of only itself +void initialisePIXELs(double *wrapped_image, unsigned char *input_mask, unsigned char *extended_mask, PIXELM *pixel, int image_width, int image_height) +{ + PIXELM *pixel_pointer = pixel; + double *wrapped_image_pointer = wrapped_image; + unsigned char *input_mask_pointer = input_mask; + unsigned char *extended_mask_pointer = extended_mask; + int i, j; + + for (i=0; i < image_height; i++) + { + for (j=0; j < image_width; j++) + { + pixel_pointer->increment = 0; + pixel_pointer->number_of_pixels_in_group = 1; + pixel_pointer->value = *wrapped_image_pointer; + pixel_pointer->reliability = 9999999. + rand(); + pixel_pointer->input_mask = *input_mask_pointer; + pixel_pointer->extended_mask = *extended_mask_pointer; + pixel_pointer->head = pixel_pointer; + pixel_pointer->last = pixel_pointer; + pixel_pointer->next = NULL; + pixel_pointer->new_group = 0; + pixel_pointer->group = -1; + pixel_pointer++; + wrapped_image_pointer++; + input_mask_pointer++; + extended_mask_pointer++; + } + } +} +//-------------------end initialize pixels ----------- + +//gamma function in the paper +double wrap(double pixel_value) +{ + double wrapped_pixel_value; + if (pixel_value > PI) wrapped_pixel_value = pixel_value - TWOPI; + else if (pixel_value < -PI) wrapped_pixel_value = pixel_value + TWOPI; + else wrapped_pixel_value = pixel_value; + return wrapped_pixel_value; +} + +// pixelL_value is the left pixel, pixelR_value is the right pixel +int find_wrap(double pixelL_value, double pixelR_value) +{ + double difference; + int wrap_value; + difference = pixelL_value - pixelR_value; + + if (difference > PI) wrap_value = -1; + else if (difference < -PI) wrap_value = 1; + else wrap_value = 0; + + return wrap_value; +} + +void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, + int image_width, int image_height, + params_t *params) +{ + int i,j; + int image_width_plus_one = image_width + 1; + int image_width_minus_one = image_width - 1; + unsigned char *IMP = input_mask + image_width + 1; //input mask pointer + unsigned char *EMP = extended_mask + image_width + 1; //extended mask pointer + + //extend the mask for the image except borders + for (i=1; i < image_height - 1; ++i) + { + for (j=1; j < image_width - 1; ++j) + { + if ( (*IMP) == NOMASK && (*(IMP + 1) == NOMASK) && (*(IMP - 1) == NOMASK) && + (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && + (*(IMP - image_width_minus_one) == NOMASK) && (*(IMP - image_width_plus_one) == NOMASK) && + (*(IMP + image_width_minus_one) == NOMASK) && (*(IMP + image_width_plus_one) == NOMASK) ) + { + *EMP = NOMASK; + } + ++EMP; + ++IMP; + } + EMP += 2; + IMP += 2; + } + + if (params->x_connectivity == 1) + { + //extend the mask for the right border of the image + IMP = input_mask + 2 * image_width - 1; + EMP = extended_mask + 2 * image_width -1; + for (i=1; i < image_height - 1; ++ i) + { + if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && + (*(IMP - image_width - 1) == NOMASK) && (*(IMP - image_width + 1) == NOMASK) && + (*(IMP + image_width - 1) == NOMASK) && (*(IMP - 2 * image_width + 1) == NOMASK) ) + { + *EMP = NOMASK; + } + EMP += image_width; + IMP += image_width; + } + + //extend the mask for the left border of the image + IMP = input_mask + image_width; + EMP = extended_mask + image_width; + for (i=1; i < image_height - 1; ++i) + { + if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP + image_width) == NOMASK) && (*(IMP - image_width) == NOMASK) && + (*(IMP - image_width + 1) == NOMASK) && (*(IMP + image_width + 1) == NOMASK) && + (*(IMP + image_width - 1) == NOMASK) && (*(IMP + 2 * image_width - 1) == NOMASK) ) + { + *EMP = NOMASK; + } + EMP += image_width; + IMP += image_width; + } + } + + if (params->y_connectivity == 1) + { + //extend the mask for the top border of the image + IMP = input_mask + 1; + EMP = extended_mask + 1; + for (i=1; i < image_width - 1; ++i) + { + if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP + image_width) == NOMASK) && (*(IMP + image_width * (image_height - 1)) == NOMASK) && + (*(IMP + image_width + 1) == NOMASK) && (*(IMP + image_width - 1) == NOMASK) && + (*(IMP + image_width * (image_height - 1) - 1) == NOMASK) && (*(IMP + image_width * (image_height - 1) + 1) == NOMASK) ) + { + *EMP = NOMASK; + } + EMP++; + IMP++; + } + + //extend the mask for the bottom border of the image + IMP = input_mask + image_width * (image_height - 1) + 1; + EMP = extended_mask + image_width * (image_height - 1) + 1; + for (i=1; i < image_width - 1; ++i) + { + if ( (*IMP) == NOMASK && (*(IMP - 1) == NOMASK) && (*(IMP + 1) == NOMASK) && + (*(IMP - image_width) == NOMASK) && (*(IMP - image_width - 1) == NOMASK) && (*(IMP - image_width + 1) == NOMASK) && + (*(IMP - image_width * (image_height - 1) ) == NOMASK) && + (*(IMP - image_width * (image_height - 1) - 1) == NOMASK) && + (*(IMP - image_width * (image_height - 1) + 1) == NOMASK) ) + { + *EMP = NOMASK; + } + EMP++; + IMP++; + } + } +} + +void calculate_reliability(double *wrappedImage, PIXELM *pixel, + int image_width, int image_height, + params_t *params) +{ + int image_width_plus_one = image_width + 1; + int image_width_minus_one = image_width - 1; + PIXELM *pixel_pointer = pixel + image_width_plus_one; + double *WIP = wrappedImage + image_width_plus_one; //WIP is the wrapped image pointer + double H, V, D1, D2; + int i, j; + + for (i = 1; i < image_height -1; ++i) + { + for (j = 1; j < image_width - 1; ++j) + { + if (pixel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); + D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer++; + WIP++; + } + pixel_pointer += 2; + WIP += 2; + } + + if (params->x_connectivity == 1) + { + //calculating the reliability for the left border of the image + PIXELM *pixel_pointer = pixel + image_width; + double *WIP = wrappedImage + image_width; + + for (i = 1; i < image_height - 1; ++i) + { + if (pixel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WIP + image_width - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); + D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP + 2* image_width - 1)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer += image_width; + WIP += image_width; + } + + //calculating the reliability for the right border of the image + pixel_pointer = pixel + 2 * image_width - 1; + WIP = wrappedImage + 2 * image_width - 1; + + for (i = 1; i < image_height - 1; ++i) + { + if (pixel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP - image_width_minus_one)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP + 1)); + D2 = wrap(*(WIP - 2 * image_width - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer += image_width; + WIP += image_width; + } + } + + if (params->y_connectivity == 1) + { + //calculating the reliability for the top border of the image + PIXELM *pixel_pointer = pixel + 1; + double *WIP = wrappedImage + 1; + + for (i = 1; i < image_width - 1; ++i) + { + if (pixel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP + image_width*(image_height - 1)) - *WIP) - wrap(*WIP - *(WIP + image_width)); + D1 = wrap(*(WIP + image_width*(image_height - 1) - 1) - *WIP) - wrap(*WIP - *(WIP + image_width_plus_one)); + D2 = wrap(*(WIP + image_width*(image_height - 1) + 1) - *WIP) - wrap(*WIP - *(WIP + image_width_minus_one)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer++; + WIP++; + } + + //calculating the reliability for the bottom border of the image + pixel_pointer = pixel + (image_height - 1) * image_width + 1; + WIP = wrappedImage + (image_height - 1) * image_width + 1; + + for (i = 1; i < image_width - 1; ++i) + { + if (pixel_pointer->extended_mask == NOMASK) + { + H = wrap(*(WIP - 1) - *WIP) - wrap(*WIP - *(WIP + 1)); + V = wrap(*(WIP - image_width) - *WIP) - wrap(*WIP - *(WIP -(image_height - 1) * (image_width))); + D1 = wrap(*(WIP - image_width_plus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) + 1)); + D2 = wrap(*(WIP - image_width_minus_one) - *WIP) - wrap(*WIP - *(WIP - (image_height - 1) * (image_width) - 1)); + pixel_pointer->reliability = H*H + V*V + D1*D1 + D2*D2; + } + pixel_pointer++; + WIP++; + } + } +} + +//calculate the reliability of the horizontal edges of the image +//it is calculated by adding the reliability of pixel and the relibility of +//its right-hand neighbour +//edge is calculated between a pixel and its next neighbour +void horizontalEDGEs(PIXELM *pixel, EDGE *edge, + int image_width, int image_height, + params_t *params) +{ + int i, j; + EDGE *edge_pointer = edge; + PIXELM *pixel_pointer = pixel; + int no_of_edges = params->no_of_edges; + + for (i = 0; i < image_height; i++) + { + for (j = 0; j < image_width - 1; j++) + { + if (pixel_pointer->input_mask == NOMASK && (pixel_pointer + 1)->input_mask == NOMASK) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer+1); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + 1)->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + 1)->value); + edge_pointer++; + no_of_edges++; + } + pixel_pointer++; + } + pixel_pointer++; + } + //construct edges at the right border of the image + if (params->x_connectivity == 1) + { + pixel_pointer = pixel + image_width - 1; + for (i = 0; i < image_height; i++) + { + if (pixel_pointer->input_mask == NOMASK && (pixel_pointer - image_width + 1)->input_mask == NOMASK) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer - image_width + 1); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width + 1)->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width + 1)->value); + edge_pointer++; + no_of_edges++; + } + pixel_pointer+=image_width; + } + } + params->no_of_edges = no_of_edges; +} + +//calculate the reliability of the vertical edges of the image +//it is calculated by adding the reliability of pixel and the relibility of +//its lower neighbour in the image. +void verticalEDGEs(PIXELM *pixel, EDGE *edge, + int image_width, int image_height, + params_t *params) +{ + int i, j; + int no_of_edges = params->no_of_edges; + PIXELM *pixel_pointer = pixel; + EDGE *edge_pointer = edge + no_of_edges; + + for (i=0; i < image_height - 1; i++) + { + for (j=0; j < image_width; j++) + { + if (pixel_pointer->input_mask == NOMASK && (pixel_pointer + image_width)->input_mask == NOMASK) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer + image_width); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer + image_width)->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer + image_width)->value); + edge_pointer++; + no_of_edges++; + } + pixel_pointer++; + } //j loop + } // i loop + + //construct edges that connect at the bottom border of the image + if (params->y_connectivity == 1) + { + pixel_pointer = pixel + image_width *(image_height - 1); + for (i = 0; i < image_width; i++) + { + if (pixel_pointer->input_mask == NOMASK && (pixel_pointer - image_width *(image_height - 1))->input_mask == NOMASK) + { + edge_pointer->pointer_1 = pixel_pointer; + edge_pointer->pointer_2 = (pixel_pointer - image_width *(image_height - 1)); + edge_pointer->reliab = pixel_pointer->reliability + (pixel_pointer - image_width *(image_height - 1))->reliability; + edge_pointer->increment = find_wrap(pixel_pointer->value, (pixel_pointer - image_width *(image_height - 1))->value); + edge_pointer++; + no_of_edges++; + } + pixel_pointer++; + } + } + params->no_of_edges = no_of_edges; +} + +//gather the pixels of the image into groups +void gatherPIXELs(EDGE *edge, params_t *params) +{ + int k; + PIXELM *PIXEL1; + PIXELM *PIXEL2; + PIXELM *group1; + PIXELM *group2; + EDGE *pointer_edge = edge; + int incremento; + + for (k = 0; k < params->no_of_edges; k++) + { + PIXEL1 = pointer_edge->pointer_1; + PIXEL2 = pointer_edge->pointer_2; + + //PIXELM 1 and PIXELM 2 belong to different groups + //initially each pixel is a group by it self and one pixel can construct a group + //no else or else if to this if + if (PIXEL2->head != PIXEL1->head) + { + //PIXELM 2 is alone in its group + //merge this pixel with PIXELM 1 group and find the number of 2 pi to add + //to or subtract to unwrap it + if ((PIXEL2->next == NULL) && (PIXEL2->head == PIXEL2)) + { + PIXEL1->head->last->next = PIXEL2; + PIXEL1->head->last = PIXEL2; + (PIXEL1->head->number_of_pixels_in_group)++; + PIXEL2->head=PIXEL1->head; + PIXEL2->increment = PIXEL1->increment-pointer_edge->increment; + } + + //PIXELM 1 is alone in its group + //merge this pixel with PIXELM 2 group and find the number of 2 pi to add + //to or subtract to unwrap it + else if ((PIXEL1->next == NULL) && (PIXEL1->head == PIXEL1)) + { + PIXEL2->head->last->next = PIXEL1; + PIXEL2->head->last = PIXEL1; + (PIXEL2->head->number_of_pixels_in_group)++; + PIXEL1->head = PIXEL2->head; + PIXEL1->increment = PIXEL2->increment+pointer_edge->increment; + } + + //PIXELM 1 and PIXELM 2 both have groups + else + { + group1 = PIXEL1->head; + group2 = PIXEL2->head; + //if the no. of pixels in PIXELM 1 group is larger than the + //no. of pixels in PIXELM 2 group. Merge PIXELM 2 group to + //PIXELM 1 group and find the number of wraps between PIXELM 2 + //group and PIXELM 1 group to unwrap PIXELM 2 group with respect + //to PIXELM 1 group. the no. of wraps will be added to PIXELM 2 + //group in the future + if (group1->number_of_pixels_in_group > group2->number_of_pixels_in_group) + { + //merge PIXELM 2 with PIXELM 1 group + group1->last->next = group2; + group1->last = group2->last; + group1->number_of_pixels_in_group = group1->number_of_pixels_in_group + group2->number_of_pixels_in_group; + incremento = PIXEL1->increment-pointer_edge->increment - PIXEL2->increment; + //merge the other pixels in PIXELM 2 group to PIXELM 1 group + while (group2 != NULL) + { + group2->head = group1; + group2->increment += incremento; + group2 = group2->next; + } + } + + //if the no. of pixels in PIXELM 2 group is larger than the + //no. of pixels in PIXELM 1 group. Merge PIXELM 1 group to + //PIXELM 2 group and find the number of wraps between PIXELM 2 + //group and PIXELM 1 group to unwrap PIXELM 1 group with respect + //to PIXELM 2 group. the no. of wraps will be added to PIXELM 1 + //group in the future + else + { + //merge PIXELM 1 with PIXELM 2 group + group2->last->next = group1; + group2->last = group1->last; + group2->number_of_pixels_in_group = group2->number_of_pixels_in_group + group1->number_of_pixels_in_group; + incremento = PIXEL2->increment + pointer_edge->increment - PIXEL1->increment; + //merge the other pixels in PIXELM 2 group to PIXELM 1 group + while (group1 != NULL) + { + group1->head = group2; + group1->increment += incremento; + group1 = group1->next; + } // while + + } // else + } //else + } //if + pointer_edge++; + } +} + +//unwrap the image +void unwrapImage(PIXELM *pixel, int image_width, int image_height) +{ + int i; + int image_size = image_width * image_height; + PIXELM *pixel_pointer=pixel; + + for (i = 0; i < image_size; i++) + { + pixel_pointer->value += TWOPI * (double)(pixel_pointer->increment); + pixel_pointer++; + } +} + +//set the masked pixels (mask = 0) to the minimum of the unwrapper phase +void maskImage(PIXELM *pixel, unsigned char *input_mask, int image_width, int image_height) +{ + int image_width_plus_one = image_width + 1; + int image_height_plus_one = image_height + 1; + int image_width_minus_one = image_width - 1; + int image_height_minus_one = image_height - 1; + + PIXELM *pointer_pixel = pixel; + unsigned char *IMP = input_mask; //input mask pointer + double min=99999999; + int i; + int image_size = image_width * image_height; + + //find the minimum of the unwrapped phase + for (i = 0; i < image_size; i++) + { + if ((pointer_pixel->value < min) && (*IMP == NOMASK)) + min = pointer_pixel->value; + + pointer_pixel++; + IMP++; + } + + pointer_pixel = pixel; + IMP = input_mask; + + //set the masked pixels to minimum + for (i = 0; i < image_size; i++) + { + if ((*IMP) == MASK) + { + pointer_pixel->value = min; + } + pointer_pixel++; + IMP++; + } +} + +//the input to this unwrapper is an array that contains the wrapped +//phase map. copy the image on the buffer passed to this unwrapper to +//over-write the unwrapped phase map on the buffer of the wrapped +//phase map. +void returnImage(PIXELM *pixel, double *unwrapped_image, int image_width, int image_height) +{ + int i; + int image_size = image_width * image_height; + double *unwrapped_image_pointer = unwrapped_image; + PIXELM *pixel_pointer = pixel; + + for (i=0; i < image_size; i++) + { + *unwrapped_image_pointer = pixel_pointer->value; + pixel_pointer++; + unwrapped_image_pointer++; + } +} + +//the main function of the unwrapper +void +unwrap2D(double* wrapped_image, double* UnwrappedImage, unsigned char* input_mask, + int image_width, int image_height, + int wrap_around_x, int wrap_around_y) +{ + params_t params = {TWOPI, wrap_around_x, wrap_around_y, 0}; + unsigned char *extended_mask; + PIXELM *pixel; + EDGE *edge; + int image_size = image_height * image_width; + int No_of_Edges_initially = 2 * image_width * image_height; + + extended_mask = (unsigned char *) calloc(image_size, sizeof(unsigned char)); + pixel = (PIXELM *) calloc(image_size, sizeof(PIXELM)); + edge = (EDGE *) calloc(No_of_Edges_initially, sizeof(EDGE)); + + extend_mask(input_mask, extended_mask, image_width, image_height, ¶ms); + initialisePIXELs(wrapped_image, input_mask, extended_mask, pixel, image_width, image_height); + calculate_reliability(wrapped_image, pixel, image_width, image_height, ¶ms); + horizontalEDGEs(pixel, edge, image_width, image_height, ¶ms); + verticalEDGEs(pixel, edge, image_width, image_height, ¶ms); + + //sort the EDGEs depending on their reiability. The PIXELs with higher + //relibility (small value) first + quicker_sort(edge, edge + params.no_of_edges - 1); + + //gather PIXELs into groups + gatherPIXELs(edge, ¶ms); + + unwrapImage(pixel, image_width, image_height); + maskImage(pixel, input_mask, image_width, image_height); + + //copy the image from PIXELM structure to the unwrapped phase array + //passed to this function + //TODO: replace by (cython?) function to directly write into numpy array ? + returnImage(pixel, UnwrappedImage, image_width, image_height); + + free(edge); + free(pixel); + free(extended_mask); +} From 9091d2759a70e9714d4fa9fb5549a5a632dc479b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Tue, 16 Jul 2013 13:06:53 +0200 Subject: [PATCH 091/577] unwrap: Change 2D wrapper code from float to double. --- skimage/exposure/_unwrap_2d.pyx | 8 ++++---- skimage/exposure/unwrap.py | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/skimage/exposure/_unwrap_2d.pyx b/skimage/exposure/_unwrap_2d.pyx index 88983287..6e889729 100644 --- a/skimage/exposure/_unwrap_2d.pyx +++ b/skimage/exposure/_unwrap_2d.pyx @@ -1,12 +1,12 @@ -cdef extern void unwrap2D(float* wrapped_image, - float* unwrapped_image, +cdef extern void unwrap2D(double* wrapped_image, + double* unwrapped_image, unsigned char* input_mask, int image_width, int image_height, int wrap_around_x, int wrap_around_y) -def unwrap_2d(float[:, ::1] image, +def unwrap_2d(double[:, ::1] image, unsigned char[:, ::1] mask, - float[:, ::1] unwrapped_image, + double[:, ::1] unwrapped_image, wrap_around): unwrap2D(&image[0, 0], &unwrapped_image[0, 0], diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index a2a8c42a..039ae911 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -92,6 +92,8 @@ def unwrap_phase(image, wrap_around=False): if image.ndim == 1: unwrap_1d(image_not_masked, image_unwrapped) elif image.ndim == 2: + image_not_masked = np.asarray(image, dtype=np.float64, order='C') + image_unwrapped = np.empty_like(image, dtype=np.float64, order='C') unwrap_2d(image_not_masked, mask, image_unwrapped, wrap_around) elif image.ndim == 3: From d0ccbe71c118f4bf24fefeafcba039b2c9db8cf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Tue, 16 Jul 2013 13:09:01 +0200 Subject: [PATCH 092/577] unwrap: Change 3D C code from float to double. --- skimage/exposure/unwrap_3d_ljmu.c | 44 +++++++++++++++---------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/skimage/exposure/unwrap_3d_ljmu.c b/skimage/exposure/unwrap_3d_ljmu.c index 99800410..1874c051 100644 --- a/skimage/exposure/unwrap_3d_ljmu.c +++ b/skimage/exposure/unwrap_3d_ljmu.c @@ -29,7 +29,7 @@ typedef struct { - float mod; + double mod; int x_connectivity; int y_connectivity; int z_connectivity; @@ -41,8 +41,8 @@ struct VOXELM { int increment; //No. of 2*pi to add to the voxel to unwrap it int number_of_voxels_in_group;//No. of voxel in the voxel group - float value; //value of the voxel - float reliability; + double value; //value of the voxel + double reliability; unsigned char input_mask; //MASK voxel is masked. NOMASK voxel is not masked unsigned char extended_mask; //MASK voxel is masked. NOMASK voxel is not masked int group; //group No. @@ -58,7 +58,7 @@ typedef struct VOXELM VOXELM; //if we have S voxels, then we have S horizontal edges and S vertical edges struct EDGE { - float reliab; //reliabilty of the edge and it depends on the two voxels + double reliab; //reliabilty of the edge and it depends on the two voxels VOXELM *pointer_1; //pointer to the first voxel VOXELM *pointer_2; //pointer to the second voxel int increment; //No. of 2*pi to add to one of the @@ -76,7 +76,7 @@ typedef struct EDGE EDGE; typedef enum {yes, no} yes_no; -yes_no find_pivot(EDGE *left, EDGE *right, float *pivot_ptr) +yes_no find_pivot(EDGE *left, EDGE *right, double *pivot_ptr) { EDGE a, b, c, *p; @@ -108,7 +108,7 @@ yes_no find_pivot(EDGE *left, EDGE *right, float *pivot_ptr) } } -EDGE *partition(EDGE *left, EDGE *right, float pivot) +EDGE *partition(EDGE *left, EDGE *right, double pivot) { while (left <= right) { @@ -129,7 +129,7 @@ EDGE *partition(EDGE *left, EDGE *right, float pivot) void quicker_sort(EDGE *left, EDGE *right) { EDGE *p; - float pivot; + double pivot; if (find_pivot(left, right, &pivot) == yes) { @@ -144,10 +144,10 @@ void quicker_sort(EDGE *left, EDGE *right) //--------------------start initialize voxels ---------------------------------- //initiale voxels. See the explanation of the voxel class above. //initially every voxel is assumed to belong to a group consisting of only itself -void initialiseVOXELs(float *WrappedVolume, unsigned char *input_mask, unsigned char *extended_mask, VOXELM *voxel, int volume_width, int volume_height, int volume_depth) +void initialiseVOXELs(double *WrappedVolume, unsigned char *input_mask, unsigned char *extended_mask, VOXELM *voxel, int volume_width, int volume_height, int volume_depth) { VOXELM *voxel_pointer = voxel; - float *wrapped_volume_pointer = WrappedVolume; + double *wrapped_volume_pointer = WrappedVolume; unsigned char *input_mask_pointer = input_mask; unsigned char *extended_mask_pointer = extended_mask; int n, i, j; @@ -161,7 +161,7 @@ void initialiseVOXELs(float *WrappedVolume, unsigned char *input_mask, unsigned voxel_pointer->increment = 0; voxel_pointer->number_of_voxels_in_group = 1; voxel_pointer->value = *wrapped_volume_pointer; - voxel_pointer->reliability = 9999999.f + rand(); + voxel_pointer->reliability = 9999999 + rand(); voxel_pointer->input_mask = *input_mask_pointer; voxel_pointer->extended_mask = *extended_mask_pointer; voxel_pointer->head = voxel_pointer; @@ -180,9 +180,9 @@ void initialiseVOXELs(float *WrappedVolume, unsigned char *input_mask, unsigned //-------------------end initialize voxels ----------- //gamma function in the paper -float wrap(float voxel_value) +double wrap(double voxel_value) { - float wrapped_voxel_value; + double wrapped_voxel_value; if (voxel_value > PI) wrapped_voxel_value = voxel_value - TWOPI; else if (voxel_value < -PI) wrapped_voxel_value = voxel_value + TWOPI; else wrapped_voxel_value = voxel_value; @@ -190,9 +190,9 @@ float wrap(float voxel_value) } // voxelL_value is the left voxel, voxelR_value is the right voxel -int find_wrap(float voxelL_value, float voxelR_value) +int find_wrap(double voxelL_value, double voxelR_value) { - float difference; + double difference; int wrap_value; difference = voxelL_value - voxelR_value; @@ -433,13 +433,13 @@ void extend_mask(unsigned char *input_mask, unsigned char *extended_mask, int vo } } -void calculate_reliability(float *wrappedVolume, VOXELM *voxel, int volume_width, int volume_height, int volume_depth, params_t *params) +void calculate_reliability(double *wrappedVolume, VOXELM *voxel, int volume_width, int volume_height, int volume_depth, params_t *params) { int frame_size = volume_width * volume_height; int volume_size = volume_width * volume_height * volume_depth; VOXELM *voxel_pointer; - float H, V, N, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10; - float *WVP; + double H, V, N, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10; + double *WVP; int n, i, j; WVP = wrappedVolume + frame_size + volume_width + 1; @@ -949,7 +949,7 @@ void unwrapVolume(VOXELM *voxel, int volume_width, int volume_height, int volume for (i = 0; i < volume_size; i++) { - voxel_pointer->value += TWOPI * (float)(voxel_pointer->increment); + voxel_pointer->value += TWOPI * (double)(voxel_pointer->increment); voxel_pointer++; } } @@ -964,7 +964,7 @@ void maskVolume(VOXELM *voxel, unsigned char *input_mask, int volume_width, int VOXELM *pointer_voxel = voxel; unsigned char *IMP = input_mask; //input mask pointer - float min=99999999.; + double min=99999999.; int i, j; int volume_size = volume_width * volume_height * volume_depth; @@ -997,11 +997,11 @@ void maskVolume(VOXELM *voxel, unsigned char *input_mask, int volume_width, int //phase map. copy the volume on the buffer passed to this unwrapper //to over-write the unwrapped phase map on the buffer of the wrapped //phase map. -void returnVolume(VOXELM *voxel, float *unwrappedVolume, int volume_width, int volume_height, int volume_depth) +void returnVolume(VOXELM *voxel, double *unwrappedVolume, int volume_width, int volume_height, int volume_depth) { int i; int volume_size = volume_width * volume_height * volume_depth; - float *unwrappedVolume_pointer = unwrappedVolume; + double *unwrappedVolume_pointer = unwrappedVolume; VOXELM *voxel_pointer = voxel; for (i=0; i < volume_size; i++) @@ -1014,7 +1014,7 @@ void returnVolume(VOXELM *voxel, float *unwrappedVolume, int volume_width, int //the main function of the unwrapper void -unwrap3D(float* wrapped_volume, float* unwrapped_volume, unsigned char* input_mask, +unwrap3D(double* wrapped_volume, double* unwrapped_volume, unsigned char* input_mask, int volume_width, int volume_height, int volume_depth, int wrap_around_x, int wrap_around_y, int wrap_around_z) { From cd5cc84aa98301dc718f29f694d9915e08c8814c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Tue, 16 Jul 2013 13:10:34 +0200 Subject: [PATCH 093/577] unwrap: Change 3D wrapper code from float to double. --- skimage/exposure/_unwrap_3d.pyx | 8 ++++---- skimage/exposure/unwrap.py | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/skimage/exposure/_unwrap_3d.pyx b/skimage/exposure/_unwrap_3d.pyx index b202e8b9..370d58be 100644 --- a/skimage/exposure/_unwrap_3d.pyx +++ b/skimage/exposure/_unwrap_3d.pyx @@ -1,12 +1,12 @@ -cdef extern void unwrap3D(float* wrapped_volume, - float* unwrapped_volume, +cdef extern void unwrap3D(double* wrapped_volume, + double* unwrapped_volume, unsigned char* input_mask, int image_width, int image_height, int volume_depth, int wrap_around_x, int wrap_around_y, int wrap_around_z) -def unwrap_3d(float[:, :, ::1] image, +def unwrap_3d(double[:, :, ::1] image, unsigned char[:, :, ::1] mask, - float[:, :, ::1] unwrapped_image, + double[:, :, ::1] unwrapped_image, wrap_around): unwrap3D(&image[0, 0, 0], &unwrapped_image[0, 0, 0], diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index 039ae911..0f0d4ae4 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -97,6 +97,8 @@ def unwrap_phase(image, wrap_around=False): unwrap_2d(image_not_masked, mask, image_unwrapped, wrap_around) elif image.ndim == 3: + image_not_masked = np.asarray(image, dtype=np.float64, order='C') + image_unwrapped = np.empty_like(image, dtype=np.float64, order='C') unwrap_3d(image_not_masked, mask, image_unwrapped, wrap_around) From 593a7d63cec47ff60871667d2337fdb2f98e4135 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Tue, 16 Jul 2013 13:12:18 +0200 Subject: [PATCH 094/577] unwrap: Change 1D unwrapper from float to double. --- skimage/exposure/_unwrap_1d.pyx | 4 ++-- skimage/exposure/unwrap.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/skimage/exposure/_unwrap_1d.pyx b/skimage/exposure/_unwrap_1d.pyx index d39f9e57..f23e5f40 100644 --- a/skimage/exposure/_unwrap_1d.pyx +++ b/skimage/exposure/_unwrap_1d.pyx @@ -6,11 +6,11 @@ from libc.math cimport M_PI -def unwrap_1d(float[::1] image, float[::1] unwrapped_image): +def unwrap_1d(double[::1] image, double[::1] unwrapped_image): '''Phase unwrapping using the naive approach.''' cdef: Py_ssize_t i - float difference + double difference long periods = 0 unwrapped_image[0] = image[0] for i in range(1, image.shape[0]): diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index 0f0d4ae4..3c52acde 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -90,6 +90,8 @@ def unwrap_phase(image, wrap_around=False): image_unwrapped = np.empty_like(image, dtype=np.float32, order='C') if image.ndim == 1: + image_not_masked = np.asarray(image, dtype=np.float64, order='C') + image_unwrapped = np.empty_like(image, dtype=np.float64, order='C') unwrap_1d(image_not_masked, image_unwrapped) elif image.ndim == 2: image_not_masked = np.asarray(image, dtype=np.float64, order='C') From 8ad3d1df17aa4880515634ebcc583f17d5229713 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Tue, 16 Jul 2013 13:13:59 +0200 Subject: [PATCH 095/577] unwrap: Simplify code after completing float->double. --- skimage/exposure/unwrap.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/skimage/exposure/unwrap.py b/skimage/exposure/unwrap.py index 3c52acde..86444aef 100644 --- a/skimage/exposure/unwrap.py +++ b/skimage/exposure/unwrap.py @@ -86,21 +86,15 @@ def unwrap_phase(image, wrap_around=False): mask = np.require(image.mask, np.uint8, ['C']) else: mask = np.zeros_like(image, dtype=np.uint8, order='C') - image_not_masked = np.asarray(image, dtype=np.float32, order='C') - image_unwrapped = np.empty_like(image, dtype=np.float32, order='C') + image_not_masked = np.asarray(image, dtype=np.float64, order='C') + image_unwrapped = np.empty_like(image, dtype=np.float64, order='C') if image.ndim == 1: - image_not_masked = np.asarray(image, dtype=np.float64, order='C') - image_unwrapped = np.empty_like(image, dtype=np.float64, order='C') unwrap_1d(image_not_masked, image_unwrapped) elif image.ndim == 2: - image_not_masked = np.asarray(image, dtype=np.float64, order='C') - image_unwrapped = np.empty_like(image, dtype=np.float64, order='C') unwrap_2d(image_not_masked, mask, image_unwrapped, wrap_around) elif image.ndim == 3: - image_not_masked = np.asarray(image, dtype=np.float64, order='C') - image_unwrapped = np.empty_like(image, dtype=np.float64, order='C') unwrap_3d(image_not_masked, mask, image_unwrapped, wrap_around) From a10f1c1468da96877382fa621c1e3f396eeda576 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Tue, 16 Jul 2013 14:00:53 +0200 Subject: [PATCH 096/577] unwrap example: cleanup. --- doc/examples/plot_phase_unwrap.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/examples/plot_phase_unwrap.py b/doc/examples/plot_phase_unwrap.py index c2aecdb5..a525a823 100644 --- a/doc/examples/plot_phase_unwrap.py +++ b/doc/examples/plot_phase_unwrap.py @@ -13,6 +13,7 @@ problem. import numpy as np from matplotlib import pyplot as plt from skimage import data, img_as_float, color, exposure +from skimage.exposure import unwrap_phase # Load an image as a floating-point grayscale @@ -22,9 +23,8 @@ image = exposure.rescale_intensity(image, out_range=(0, 4 * np.pi)) # Create a phase-wrapped image in the interval [-pi, pi) image_wrapped = np.angle(np.exp(1j * image)) # Perform phase unwrapping -image_unwrapped = exposure.unwrap_phase(image_wrapped) +image_unwrapped = unwrap_phase(image_wrapped) -# Plotting plt.figure() plt.subplot(221) plt.title('Original') From 3737e6ebd3b933af126885cb1fde3418e3041194 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Tue, 16 Jul 2013 14:01:15 +0200 Subject: [PATCH 097/577] unwrap example: Mention dimensionalities available. --- doc/examples/plot_phase_unwrap.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/examples/plot_phase_unwrap.py b/doc/examples/plot_phase_unwrap.py index a525a823..aefc493e 100644 --- a/doc/examples/plot_phase_unwrap.py +++ b/doc/examples/plot_phase_unwrap.py @@ -7,7 +7,8 @@ Some signals can only be observed modulo 2*pi, and this can also apply to two- and three dimensional images. In these cases phase unwrapping is needed to recover the underlying, unwrapped signal. In this example we will demonstrate an algorithm [1]_ implemented in ``skimage`` at work for such a -problem. +problem. One-, two- and three dimensional images can all be unwrapped using +skimage. Here we will demonstrate phase unwrapping in the two dimensional case. """ import numpy as np From 38d502208f506d1397e7b477aaf79d4b09d3d08b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Tue, 16 Jul 2013 14:01:47 +0200 Subject: [PATCH 098/577] unwrap example: Include masking and wrap around. --- doc/examples/plot_phase_unwrap.py | 59 +++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 3 deletions(-) diff --git a/doc/examples/plot_phase_unwrap.py b/doc/examples/plot_phase_unwrap.py index aefc493e..39055995 100644 --- a/doc/examples/plot_phase_unwrap.py +++ b/doc/examples/plot_phase_unwrap.py @@ -39,20 +39,73 @@ plt.colorbar() plt.subplot(223) plt.title('After phase unwrapping') -plt.imshow(image_unwrapped, cmap='gray') +plt.imshow(image_unwrapped, cmap='gray') plt.colorbar() plt.subplot(224) plt.title('Unwrapped minus original') -plt.imshow(image_unwrapped - image, cmap='gray') +plt.imshow(image_unwrapped - image, cmap='gray') +plt.colorbar() + +""" +.. image:: PLOT2RST.current_figure + +The unwrapping procedure accepts masked arrays, and can also optionally +assume cyclic boundaries to connect edges of an image. In the example below, +we study a simple phase ramp which has been split in two by masking +a row of the image. +""" + +# Create a simple ramp +image = np.ones((100, 100)) * np.linspace(0, 8 * np.pi, 100).reshape((-1, 1)) +# Mask the image to split it in two horizontally +mask = np.zeros_like(image, dtype=np.bool) +mask[image.shape[0] // 2, :] = True + +image_wrapped = np.ma.array(np.angle(np.exp(1j * image)), mask=mask) +# Unwrap image without wrap around +image_unwrapped_no_wrap_around = unwrap_phase(image_wrapped, + wrap_around=(False, False)) +# Unwrap with wrap around enabled for the 0th dimension +image_unwrapped_wrap_around = unwrap_phase(image_wrapped, + wrap_around=(True, False)) + +plt.figure() +plt.subplot(221) +plt.title('Original') +plt.imshow(np.ma.array(image, mask=mask), cmap='jet') +plt.colorbar() + +plt.subplot(222) +plt.title('Wrapped phase') +plt.imshow(image_wrapped, cmap='jet', vmin=-np.pi, vmax=np.pi) +plt.colorbar() + +plt.subplot(223) +plt.title('Unwrapped without wrap_around') +plt.imshow(image_unwrapped_no_wrap_around, cmap='jet') +plt.colorbar() + +plt.subplot(224) +plt.title('Unwrapped with wrap_around') +plt.imshow(image_unwrapped_wrap_around, cmap='jet') plt.colorbar() plt.show() - """ .. image:: PLOT2RST.current_figure +In the figures above, the masked row can be seen as a white line across +the image. The difference between the two unwrapped images in the bottom row +is clear: Without unwrapping (lower left), the regions above and below the +masked boundary do not interact at all, resulting in an offset between the +two regions of an arbitrary integer times two pi. We could just as well have +unwrapped the regions as two separate images. With wrap around enabled for the +vertical direction (lower rigth), the situation changes: Unwrapping paths are +now allowed to pass from the bottom to the top of the image and vice versa, in +effect providing a way to determine the offset between the two regions. + References ---------- From 37b5a946c8bb859128b2ecd1b0042e22af369eb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Tue, 16 Jul 2013 14:09:56 +0200 Subject: [PATCH 099/577] unwrap tests: PEP8 fixes. --- skimage/exposure/tests/test_unwrap.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/exposure/tests/test_unwrap.py b/skimage/exposure/tests/test_unwrap.py index 220bb177..1b3ecca3 100644 --- a/skimage/exposure/tests/test_unwrap.py +++ b/skimage/exposure/tests/test_unwrap.py @@ -133,9 +133,9 @@ def test_mask(): # Same tests, but forcing use of the 3D unwrapper by reshaping image_wrapped_3d = image_wrapped.reshape((1,) + image_wrapped.shape) image_unwrapped_3d = unwrap_phase(image_wrapped_3d) - image_unwrapped_3d -= image_unwrapped_3d[0, 0, 0] # remove phase shift + image_unwrapped_3d -= image_unwrapped_3d[0, 0, 0] # remove phase shift assert_array_almost_equal(image_unwrapped_3d[:, :, -1], image[i, -1]) -if __name__=="__main__": +if __name__ == "__main__": run_module_suite() From ccbd3bfcedfa3318d9ec72c2a89aa3938d52ddb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Wed, 17 Jul 2013 13:46:24 +0200 Subject: [PATCH 100/577] unwrap: Do not include debug symbols in extension builds. --- skimage/exposure/setup.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/skimage/exposure/setup.py b/skimage/exposure/setup.py index 1e801088..b90b082c 100644 --- a/skimage/exposure/setup.py +++ b/skimage/exposure/setup.py @@ -21,11 +21,9 @@ def configuration(parent_package='', top_path=None): include_dirs=[get_numpy_include_dirs()]) unwrap_sources_2d = ['_unwrap_2d.c', 'unwrap_2d_ljmu.c'] config.add_extension('_unwrap_2d', sources=unwrap_sources_2d, - extra_compile_args=['-g'], include_dirs=[get_numpy_include_dirs()]) unwrap_sources_3d = ['_unwrap_3d.c', 'unwrap_3d_ljmu.c'] config.add_extension('_unwrap_3d', sources=unwrap_sources_3d, - extra_compile_args=['-g'], include_dirs=[get_numpy_include_dirs()]) return config From 06a9c5da8a3206316b1b8e6941a6bac784e16a1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 11:34:32 +0100 Subject: [PATCH 101/577] Add test case for union of heterogenous tform types --- skimage/transform/tests/test_geometric.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/skimage/transform/tests/test_geometric.py b/skimage/transform/tests/test_geometric.py index c7f9f832..aa968380 100644 --- a/skimage/transform/tests/test_geometric.py +++ b/skimage/transform/tests/test_geometric.py @@ -169,11 +169,16 @@ def test_union(): tform1 = SimilarityTransform(scale=0.1, rotation=0.3) tform2 = SimilarityTransform(scale=0.1, rotation=0.9) tform3 = SimilarityTransform(scale=0.1 ** 2, rotation=0.3 + 0.9) - tform = tform1 + tform2 - assert_array_almost_equal(tform._matrix, tform3._matrix) + tform1 = AffineTransform(scale=(0.1, 0.1), rotation=0.3) + tform2 = SimilarityTransform(scale=0.1, rotation=0.9) + tform3 = SimilarityTransform(scale=0.1 ** 2, rotation=0.3 + 0.9) + tform = tform1 + tform2 + assert_array_almost_equal(tform._matrix, tform3._matrix) + assert tform.__class__ == ProjectiveTransform + if __name__ == "__main__": from numpy.testing import run_module_suite From 0fb48a6153c1523d27da17c40ad38de61f4f3098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 11:38:25 +0100 Subject: [PATCH 102/577] Add test cases for abstract geometric base class --- skimage/transform/tests/test_geometric.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/skimage/transform/tests/test_geometric.py b/skimage/transform/tests/test_geometric.py index aa968380..125abe06 100644 --- a/skimage/transform/tests/test_geometric.py +++ b/skimage/transform/tests/test_geometric.py @@ -1,6 +1,8 @@ import numpy as np -from numpy.testing import assert_equal, assert_array_almost_equal +from numpy.testing import (assert_equal, assert_array_almost_equal, + assert_raises) from skimage.transform._geometric import _stackcopy +from skimage.transform._geometric import GeometricTransform from skimage.transform import (estimate_transform, SimilarityTransform, AffineTransform, ProjectiveTransform, PolynomialTransform, @@ -180,6 +182,13 @@ def test_union(): assert tform.__class__ == ProjectiveTransform +def test_geometric_tform(): + tform = GeometricTransform() + assert_raises(NotImplementedError, tform, 0) + assert_raises(NotImplementedError, tform.inverse, 0) + assert_raises(NotImplementedError, tform.__add__, 0) + + if __name__ == "__main__": from numpy.testing import run_module_suite run_module_suite() From 4ba9eaa98be4552d6c39eb95875e61891b01c5e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 11:42:41 +0100 Subject: [PATCH 103/577] Test invalid input --- skimage/transform/tests/test_geometric.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/skimage/transform/tests/test_geometric.py b/skimage/transform/tests/test_geometric.py index 125abe06..0af70fdd 100644 --- a/skimage/transform/tests/test_geometric.py +++ b/skimage/transform/tests/test_geometric.py @@ -189,6 +189,17 @@ def test_geometric_tform(): assert_raises(NotImplementedError, tform.__add__, 0) +def test_invalid_input(): + assert_raises(ValueError, ProjectiveTransform, np.zeros((2, 3))) + assert_raises(ValueError, AffineTransform, np.zeros((2, 3))) + assert_raises(ValueError, SimilarityTransform, np.zeros((2, 3))) + + assert_raises(ValueError, AffineTransform, + matrix=np.zeros((2, 3)), scale=1) + assert_raises(ValueError, SimilarityTransform, + matrix=np.zeros((2, 3)), scale=1) + + if __name__ == "__main__": from numpy.testing import run_module_suite run_module_suite() From bd240d9f92d0c5caced4b330fb9b169f8ce91b69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 11:43:08 +0100 Subject: [PATCH 104/577] Test scale determination for 0 rotation --- skimage/transform/tests/test_geometric.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/skimage/transform/tests/test_geometric.py b/skimage/transform/tests/test_geometric.py index 0af70fdd..4315029d 100644 --- a/skimage/transform/tests/test_geometric.py +++ b/skimage/transform/tests/test_geometric.py @@ -76,6 +76,16 @@ def test_similarity_init(): assert_array_almost_equal(tform2.rotation, rotation) assert_array_almost_equal(tform2.translation, translation) + # test special case for scale if rotation=0 + scale = 0.1 + rotation = 0 + translation = (1, 1) + tform = SimilarityTransform(scale=scale, rotation=rotation, + translation=translation) + assert_array_almost_equal(tform.scale, scale) + assert_array_almost_equal(tform.rotation, rotation) + assert_array_almost_equal(tform.translation, translation) + def test_affine_estimation(): # exact solution From 62f51e35a1fedb4bc44165892aae9e528d909214 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 11:45:51 +0100 Subject: [PATCH 105/577] Add missing test coverage of polynomial tform --- skimage/transform/tests/test_geometric.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/skimage/transform/tests/test_geometric.py b/skimage/transform/tests/test_geometric.py index 4315029d..73d3a0c4 100644 --- a/skimage/transform/tests/test_geometric.py +++ b/skimage/transform/tests/test_geometric.py @@ -177,6 +177,10 @@ def test_polynomial_default_order(): assert_array_almost_equal(tform2._params, tform._params) +def test_polynomial_inverse(): + assert_raises(Exception, PolynomialTransform().inverse, 0) + + def test_union(): tform1 = SimilarityTransform(scale=0.1, rotation=0.3) tform2 = SimilarityTransform(scale=0.1, rotation=0.9) @@ -209,6 +213,8 @@ def test_invalid_input(): assert_raises(ValueError, SimilarityTransform, matrix=np.zeros((2, 3)), scale=1) + assert_raises(ValueError, PolynomialTransform, np.zeros((3, 3))) + if __name__ == "__main__": from numpy.testing import run_module_suite From e159fa0e9d29cbc5e68dfc7b09ef95932c49902a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 11:48:32 +0100 Subject: [PATCH 106/577] Add test case for estimate_transform --- skimage/transform/tests/test_geometric.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/skimage/transform/tests/test_geometric.py b/skimage/transform/tests/test_geometric.py index 73d3a0c4..774d0888 100644 --- a/skimage/transform/tests/test_geometric.py +++ b/skimage/transform/tests/test_geometric.py @@ -40,6 +40,13 @@ def test_stackcopy(): assert_array_almost_equal(x[..., i], y) +def test_estimate_transform(): + for tform in ('similarity', 'affine', 'projective', 'polynomial'): + estimate_transform(tform, SRC[:2, :], DST[:2, :]) + assert_raises(ValueError, estimate_transform, 'foobar', + SRC[:2, :], DST[:2, :]) + + def test_similarity_estimation(): # exact solution tform = estimate_transform('similarity', SRC[:2, :], DST[:2, :]) From da42c46ab42010a0379fa42096b1eb1f88394ee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 11:51:15 +0100 Subject: [PATCH 107/577] Add matrix_transform function to namespace --- skimage/transform/__init__.py | 2 ++ skimage/transform/tests/test_geometric.py | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/skimage/transform/__init__.py b/skimage/transform/__init__.py index 4f00a076..c6408309 100644 --- a/skimage/transform/__init__.py +++ b/skimage/transform/__init__.py @@ -5,6 +5,7 @@ from .radon_transform import radon, iradon, iradon_sart from .finite_radon_transform import frt2, ifrt2 from .integral import integral_image, integrate from ._geometric import (warp, warp_coords, estimate_transform, + matrix_transform, SimilarityTransform, AffineTransform, ProjectiveTransform, PolynomialTransform, PiecewiseAffineTransform) @@ -30,6 +31,7 @@ __all__ = ['hough_circle', 'warp', 'warp_coords', 'estimate_transform', + 'matrix_transform', 'SimilarityTransform', 'AffineTransform', 'ProjectiveTransform', diff --git a/skimage/transform/tests/test_geometric.py b/skimage/transform/tests/test_geometric.py index 774d0888..06c4f652 100644 --- a/skimage/transform/tests/test_geometric.py +++ b/skimage/transform/tests/test_geometric.py @@ -3,7 +3,7 @@ from numpy.testing import (assert_equal, assert_array_almost_equal, assert_raises) from skimage.transform._geometric import _stackcopy from skimage.transform._geometric import GeometricTransform -from skimage.transform import (estimate_transform, +from skimage.transform import (estimate_transform, matrix_transform, SimilarityTransform, AffineTransform, ProjectiveTransform, PolynomialTransform, PiecewiseAffineTransform) @@ -47,6 +47,11 @@ def test_estimate_transform(): SRC[:2, :], DST[:2, :]) +def test_matrix_transform(): + tform = AffineTransform(scale=(0.1, 0.5), rotation=2) + assert_equal(tform(SRC), matrix_transform(SRC, tform._matrix)) + + def test_similarity_estimation(): # exact solution tform = estimate_transform('similarity', SRC[:2, :], DST[:2, :]) From d659cdc6b0df54838e8456a5cd90bdf8f1ec69b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 11:55:18 +0100 Subject: [PATCH 108/577] Deprecate reverse_map parameter and add to future removal list --- TODO.txt | 5 +++++ skimage/transform/_geometric.py | 2 ++ 2 files changed, 7 insertions(+) diff --git a/TODO.txt b/TODO.txt index 25070d05..742f853e 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,3 +1,8 @@ +Version 0.11 +------------ +* Remove deprecated `reverse_map` parameter of `skimage.transform.warp` + + Version 0.10 ------------ * Remove deprecated functions in `skimage.filter.rank.*` diff --git a/skimage/transform/_geometric.py b/skimage/transform/_geometric.py index eb89460e..b55078ef 100644 --- a/skimage/transform/_geometric.py +++ b/skimage/transform/_geometric.py @@ -1021,6 +1021,8 @@ def warp(image, inverse_map=None, map_args={}, output_shape=None, order=1, """ # Backward API compatibility if reverse_map is not None: + warnings.warn('`reverse_map` parameter is deprecated and replaced by ' + 'the `inverse_map` parameter.') inverse_map = reverse_map if image.ndim < 2: From 396b686bab9addf2a0ea09b6d7dde69ee8bf3565 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 11:59:07 +0100 Subject: [PATCH 109/577] Add test case for invalid image dimensions --- skimage/transform/_geometric.py | 4 ++-- skimage/transform/tests/test_warps.py | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/skimage/transform/_geometric.py b/skimage/transform/_geometric.py index b55078ef..af193173 100644 --- a/skimage/transform/_geometric.py +++ b/skimage/transform/_geometric.py @@ -1025,8 +1025,8 @@ def warp(image, inverse_map=None, map_args={}, output_shape=None, order=1, 'the `inverse_map` parameter.') inverse_map = reverse_map - if image.ndim < 2: - raise ValueError("Input must have more than 1 dimension.") + if image.ndim < 2 or image.ndim > 3: + raise ValueError("Input must have 2 or 3 dimensions.") orig_ndim = image.ndim image = np.atleast_3d(img_as_float(image)) diff --git a/skimage/transform/tests/test_warps.py b/skimage/transform/tests/test_warps.py index 7f7ef47d..760d4696 100644 --- a/skimage/transform/tests/test_warps.py +++ b/skimage/transform/tests/test_warps.py @@ -1,4 +1,5 @@ -from numpy.testing import assert_array_almost_equal, run_module_suite, assert_array_equal +from numpy.testing import (assert_array_almost_equal, run_module_suite, + assert_array_equal, assert_raises) import numpy as np from scipy.ndimage import map_coordinates @@ -234,5 +235,10 @@ def test_downscale_local_mean(): assert_array_equal(expected2, out2) +def test_invalid(): + assert_raises(ValueError, warp, np.ones((4, )), SimilarityTransform()) + assert_raises(ValueError, warp, np.ones((4, 3, 3, 3)), SimilarityTransform()) + + if __name__ == "__main__": run_module_suite() From c53e98a3c62c6278f40c2c22b83a08b39f80e40a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 12:07:36 +0100 Subject: [PATCH 110/577] Fix bug in inverse warping and add test case --- skimage/transform/_geometric.py | 4 ++-- skimage/transform/tests/test_warps.py | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/skimage/transform/_geometric.py b/skimage/transform/_geometric.py index af193173..a4587c10 100644 --- a/skimage/transform/_geometric.py +++ b/skimage/transform/_geometric.py @@ -1051,8 +1051,8 @@ def warp(image, inverse_map=None, map_args={}, output_shape=None, order=1, # inverse_map is the inverse of a homography elif (hasattr(inverse_map, '__name__') and inverse_map.__name__ == 'inverse' - and isinstance(get_bound_method_class(inverse_map), - HOMOGRAPHY_TRANSFORMS)): + and get_bound_method_class(inverse_map) \ + in HOMOGRAPHY_TRANSFORMS): matrix = np.linalg.inv(six.get_method_self(inverse_map)._matrix) if matrix is not None: diff --git a/skimage/transform/tests/test_warps.py b/skimage/transform/tests/test_warps.py index 760d4696..db936a3a 100644 --- a/skimage/transform/tests/test_warps.py +++ b/skimage/transform/tests/test_warps.py @@ -237,7 +237,15 @@ def test_downscale_local_mean(): def test_invalid(): assert_raises(ValueError, warp, np.ones((4, )), SimilarityTransform()) - assert_raises(ValueError, warp, np.ones((4, 3, 3, 3)), SimilarityTransform()) + assert_raises(ValueError, warp, np.ones((4, 3, 3, 3)), + SimilarityTransform()) + + +def test_inverse(): + tform = SimilarityTransform(scale=0.5, rotation=0.1) + inverse_tform = SimilarityTransform(matrix=np.linalg.inv(tform._matrix)) + image = np.arange(10 * 10).reshape(10, 10).astype(np.double) + assert_array_equal(warp(image, inverse_tform), warp(image, tform.inverse)) if __name__ == "__main__": From 2e8a36a28388e53037ee6f68fb0aa240071e5c43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 12:11:47 +0100 Subject: [PATCH 111/577] Rename test to enable hidden line model test --- skimage/measure/tests/test_fit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/measure/tests/test_fit.py b/skimage/measure/tests/test_fit.py index bde1fcc7..62c543f4 100644 --- a/skimage/measure/tests/test_fit.py +++ b/skimage/measure/tests/test_fit.py @@ -127,7 +127,7 @@ def test_ellipse_model_estimate(): assert_almost_equal(model0._params, model_est._params, 0) -def test_line_model_residuals(): +def test_ellipse_model_residuals(): model = EllipseModel() # vertical line through origin model._params = (0, 0, 10, 5, 0) From 6e6505ecb6caf97ea3bea4d05734538c14355b3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 12:16:44 +0100 Subject: [PATCH 112/577] Increase test coverage of regionprops --- skimage/measure/tests/test_regionprops.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/skimage/measure/tests/test_regionprops.py b/skimage/measure/tests/test_regionprops.py index 5a4dd117..42926499 100644 --- a/skimage/measure/tests/test_regionprops.py +++ b/skimage/measure/tests/test_regionprops.py @@ -345,6 +345,9 @@ def test_old_dict_interface(): np.array([list(props.values()) for props in feats], np.float) assert_equal(len(feats[0]), 8) + def assign(): + feats[0]['Area'] = 0 + assert_raises(RuntimeError, assign) def test_label_sequence(): @@ -361,6 +364,13 @@ def test_pure_background(): assert len(ps) == 0 +def test_invalid(): + ps = regionprops(SAMPLE) + def get_intensity_image(): + ps[0].intensity_image + assert_raises(AttributeError, get_intensity_image) + + if __name__ == "__main__": from numpy.testing import run_module_suite run_module_suite() From 4033566ae6ad419f147cd8925a3b83dd710fcde1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 12:22:10 +0100 Subject: [PATCH 113/577] Add test for invalid parameter combination --- skimage/segmentation/tests/test_slic.py | 28 +++++++++++++++---------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/skimage/segmentation/tests/test_slic.py b/skimage/segmentation/tests/test_slic.py index a4657785..15d1fe6d 100644 --- a/skimage/segmentation/tests/test_slic.py +++ b/skimage/segmentation/tests/test_slic.py @@ -1,7 +1,7 @@ import itertools as it import warnings import numpy as np -from numpy.testing import assert_equal, assert_array_equal +from numpy.testing import assert_equal, assert_raises from skimage.segmentation import slic @@ -21,10 +21,10 @@ def test_color_2d(): # we expect 4 segments assert_equal(len(np.unique(seg)), 4) assert_equal(seg.shape, img.shape[:-1]) - assert_array_equal(seg[:10, :10], 0) - assert_array_equal(seg[10:, :10], 2) - assert_array_equal(seg[:10, 10:], 1) - assert_array_equal(seg[10:, 10:], 3) + assert_equal(seg[:10, :10], 0) + assert_equal(seg[10:, :10], 2) + assert_equal(seg[:10, 10:], 1) + assert_equal(seg[10:, 10:], 3) def test_gray_2d(): @@ -41,10 +41,10 @@ def test_gray_2d(): assert_equal(len(np.unique(seg)), 4) assert_equal(seg.shape, img.shape) - assert_array_equal(seg[:10, :10], 0) - assert_array_equal(seg[10:, :10], 2) - assert_array_equal(seg[:10, 10:], 1) - assert_array_equal(seg[10:, 10:], 3) + assert_equal(seg[:10, :10], 0) + assert_equal(seg[10:, :10], 2) + assert_equal(seg[:10, 10:], 1) + assert_equal(seg[10:, 10:], 3) def test_color_3d(): @@ -65,7 +65,7 @@ def test_color_3d(): assert_equal(len(np.unique(seg)), 8) for s, c in zip(slices, range(8)): - assert_array_equal(seg[s], c) + assert_equal(seg[s], c) def test_gray_3d(): @@ -87,7 +87,7 @@ def test_gray_3d(): assert_equal(len(np.unique(seg)), 8) for s, c in zip(slices, range(8)): - assert_array_equal(seg[s], c) + assert_equal(seg[s], c) def test_list_sigma(): @@ -118,6 +118,12 @@ def test_spacing(): assert_equal(seg_spaced, result_spaced) +def test_invalid_lab_conversion(): + img = np.array([[1, 1, 1, 0, 0], + [1, 1, 0, 0, 0]], np.float) + assert_raises(ValueError, slic, img, multichannel=True, convert2lab=True) + + if __name__ == '__main__': from numpy import testing From 335a74e11f27295df79b9e1807554ce256045f48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 12:25:06 +0100 Subject: [PATCH 114/577] Add test case for eps corner_harris method --- skimage/feature/tests/test_corner.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/skimage/feature/tests/test_corner.py b/skimage/feature/tests/test_corner.py index 9c07c006..25d42efa 100644 --- a/skimage/feature/tests/test_corner.py +++ b/skimage/feature/tests/test_corner.py @@ -19,7 +19,11 @@ def test_square_image(): assert len(results) == 57 # Harris - results = peak_local_max(corner_harris(im)) + results = peak_local_max(corner_harris(im, method='k')) + # interest at corner + assert len(results) == 1 + + results = peak_local_max(corner_harris(im, method='eps')) # interest at corner assert len(results) == 1 @@ -41,7 +45,9 @@ def test_noisy_square_image(): assert results.any() # Harris - results = peak_local_max(corner_harris(im, sigma=1.5)) + results = peak_local_max(corner_harris(im, sigma=1.5, method='k')) + assert len(results) == 1 + results = peak_local_max(corner_harris(im, sigma=1.5, method='eps')) assert len(results) == 1 # Shi-Tomasi From e904454c2e57afdd1203bca438d3b8cd906f937d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 12:26:41 +0100 Subject: [PATCH 115/577] Add test for mask output of corner_peaks --- skimage/feature/tests/test_corner.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/skimage/feature/tests/test_corner.py b/skimage/feature/tests/test_corner.py index 25d42efa..7ff34796 100644 --- a/skimage/feature/tests/test_corner.py +++ b/skimage/feature/tests/test_corner.py @@ -146,6 +146,10 @@ def test_corner_peaks(): corners = corner_peaks(response, exclude_border=False, min_distance=0) assert len(corners) == 4 + corners = corner_peaks(response, exclude_border=False, min_distance=0, + indices=False) + assert np.sum(corners) == 4 + def test_blank_image_nans(): """Some of the corner detectors had a weakness in terms of returning From 8c734eaccb58dd65c9011fdeb54c7c679140683f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 12:28:31 +0100 Subject: [PATCH 116/577] Add missing removal of deprecated function to todo --- TODO.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO.txt b/TODO.txt index 742f853e..4fe8e90d 100644 --- a/TODO.txt +++ b/TODO.txt @@ -21,3 +21,4 @@ Version 0.10 * Enable doctests of experimental `skimage.feature.brief` * Remove deprecated `skimage.segmentation.visualize_boundaries` * Remove deprecated `skimage.morphology.greyscale_*` +* Remove deprecated `skimage.exposure.equalize` From 51f94d83a9e66a8d74fab78313700a4dda1a9a26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Fri, 22 Nov 2013 12:29:31 +0100 Subject: [PATCH 117/577] Less verbose entry in CONTRIBUTORS. --- CONTRIBUTORS.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 39a2f988..27e9a042 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -144,8 +144,7 @@ Color separation (color deconvolution) for several stainings. - Jostein Bø Fløystad - Reconstruction circle mode for Radon transform - Simultaneous Algebraic Reconstruction Technique for inverse Radon transform + Tomography: radon/iradon improvements and SART implementation - Matt Terry Color difference functions From 0a2ed352538e1cb96c7cb39d69ecbbe6a71da854 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 12:30:49 +0100 Subject: [PATCH 118/577] Add test for negative input image --- skimage/exposure/tests/test_exposure.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/skimage/exposure/tests/test_exposure.py b/skimage/exposure/tests/test_exposure.py index 2b696b32..f952d158 100644 --- a/skimage/exposure/tests/test_exposure.py +++ b/skimage/exposure/tests/test_exposure.py @@ -2,7 +2,7 @@ import warnings import numpy as np from numpy.testing import assert_array_almost_equal as assert_close -from numpy.testing import assert_array_equal +from numpy.testing import assert_array_equal, assert_raises import skimage from skimage import data from skimage import exposure @@ -336,3 +336,8 @@ def test_adjust_inv_sigmoid_cutoff_half(): result = exposure.adjust_sigmoid(image, 0.5, 10, True) assert_array_equal(result, expected) + + +def test_neggative(): + image = np.arange(-10, 245, 4).reshape(8, 8).astype(np.double) + assert_raises(ValueError, exposure.adjust_gamma, image) From 5b3c21a4d42b024edb4e28ef5c8d35262fed7499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 12:33:21 +0100 Subject: [PATCH 119/577] Add test for neggative gamma parameter --- skimage/exposure/exposure.py | 2 +- skimage/exposure/tests/test_exposure.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/skimage/exposure/exposure.py b/skimage/exposure/exposure.py index f703f846..31d9a57f 100644 --- a/skimage/exposure/exposure.py +++ b/skimage/exposure/exposure.py @@ -263,7 +263,7 @@ def adjust_gamma(image, gamma=1, gain=1): dtype = image.dtype.type if gamma < 0: - return "Gamma should be a non-negative real number" + raise ValueError("Gamma should be a non-negative real number.") scale = float(dtype_limits(image, True)[1] - dtype_limits(image, True)[0]) diff --git a/skimage/exposure/tests/test_exposure.py b/skimage/exposure/tests/test_exposure.py index f952d158..e6610874 100644 --- a/skimage/exposure/tests/test_exposure.py +++ b/skimage/exposure/tests/test_exposure.py @@ -230,6 +230,11 @@ def test_adjust_gamma_greater_one(): assert_array_equal(result, expected) +def test_adjust_gamma_neggative(): + image = np.arange(0, 255, 4, np.uint8).reshape(8,8) + assert_raises(ValueError, exposure.adjust_gamma, image, -1) + + # Test Logarithmic Correction # =========================== From 43f6ae9a2c948cd4fa16ad7556c6277eb3048dca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 12:46:41 +0100 Subject: [PATCH 120/577] Add test case for explicit use of radii and sigmas parameters --- skimage/feature/_daisy.py | 8 ++++---- skimage/feature/tests/test_daisy.py | 9 ++++++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/skimage/feature/_daisy.py b/skimage/feature/_daisy.py index 1a97de8f..3a55faf1 100644 --- a/skimage/feature/_daisy.py +++ b/skimage/feature/_daisy.py @@ -94,15 +94,15 @@ def daisy(img, step=4, radius=15, rings=3, histograms=8, orientations=8, ''' # Validate image format. - if img.ndim > 2: + if img.ndim != 2: raise ValueError('Only grey-level images are supported.') - if img.dtype.kind != 'f': - img = img_as_float(img) + + img = img_as_float(img) # Validate parameters. if sigmas is not None and ring_radii is not None \ and len(sigmas) - 1 != len(ring_radii): - raise ValueError('len(sigmas)-1 != len(ring_radii)') + raise ValueError('`len(sigmas)-1 != len(ring_radii)`') if ring_radii is not None: rings = len(ring_radii) radius = ring_radii[-1] diff --git a/skimage/feature/tests/test_daisy.py b/skimage/feature/tests/test_daisy.py index 7f4e85d7..32a7a5df 100644 --- a/skimage/feature/tests/test_daisy.py +++ b/skimage/feature/tests/test_daisy.py @@ -45,8 +45,15 @@ def test_descs_shape(): assert(descs.shape[1] == ceil((img.shape[1] - radius * 2) / float(step))) +def test_daisy_sigmas_and_radii(): + img = img_as_float(data.lena()[:64, :64].mean(axis=2)) + sigmas = [1, 2, 3] + radii = [1, 2] + daisy(img, sigmas=sigmas, ring_radii=radii) + + def test_daisy_incompatible_sigmas_and_radii(): - img = img_as_float(data.lena()[:128, :128].mean(axis=2)) + img = img_as_float(data.lena()[:64, :64].mean(axis=2)) sigmas = [1, 2] radii = [1, 2] assert_raises(ValueError, daisy, img, sigmas=sigmas, ring_radii=radii) From 7afae271dd6a44126929eaeab524a1116e947dc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Fri, 22 Nov 2013 12:59:35 +0100 Subject: [PATCH 121/577] Add contributors for phase unwrapping. --- CONTRIBUTORS.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 27e9a042..86463b69 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -145,6 +145,7 @@ - Jostein Bø Fløystad Tomography: radon/iradon improvements and SART implementation + Phase unwrapping integration - Matt Terry Color difference functions @@ -160,3 +161,15 @@ - Michael Hansen novice submodule + +- Munther Gdeisat + Phase unwrapping implementation + +- Miguel Arevallilo Herraez + Phase unwrapping implementation + +- Hussein Abdul-Rahman + Phase unwrapping implementation + +- Gregor Thalhammer + Phase unwrapping integration From 4d6308c8108a2175d5b03708b4fc0120a33414d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 22 Nov 2013 13:28:53 +0100 Subject: [PATCH 122/577] Fix error in line model test --- skimage/measure/tests/test_fit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/measure/tests/test_fit.py b/skimage/measure/tests/test_fit.py index 62c543f4..253ac0ea 100644 --- a/skimage/measure/tests/test_fit.py +++ b/skimage/measure/tests/test_fit.py @@ -44,7 +44,7 @@ def test_line_model_residuals(): assert_equal(abs(model.residuals(np.array([[10, 0]]))), 10) model._params = (5, np.pi / 4) assert_equal(abs(model.residuals(np.array([[0, 0]]))), 5) - assert_equal(abs(model.residuals(np.array([[np.sqrt(50), 0]]))), 5) + assert_almost_equal(abs(model.residuals(np.array([[np.sqrt(50), 0]]))), 0) def test_line_model_under_determined(): From 8d0405206508954db702a9933fdd5254601198b9 Mon Sep 17 00:00:00 2001 From: Stefan van der Walt Date: Fri, 22 Nov 2013 14:39:44 +0200 Subject: [PATCH 123/577] Ignore main sections of library code --- .coveragerc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.coveragerc b/.coveragerc index f7ea687a..5a372d61 100644 --- a/.coveragerc +++ b/.coveragerc @@ -7,3 +7,7 @@ include = */skimage/* omit = */setup.py +[report] +exclude_lines = + def __repr__ + if __name__ == .__main__.: From 82ff8ddf8c4c26ae12d8effb5fa8fb6c0399f358 Mon Sep 17 00:00:00 2001 From: Thomas Robitaille Date: Sun, 24 Nov 2013 22:50:09 +0100 Subject: [PATCH 124/577] Use ``cythonize`` instead of hard-coding Cython commands. Fixes #829. --- skimage/_build.py | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/skimage/_build.py b/skimage/_build.py index 38239e4b..862117ed 100644 --- a/skimage/_build.py +++ b/skimage/_build.py @@ -3,7 +3,6 @@ import os import hashlib import subprocess - # WindowsError is not defined on unix systems try: WindowsError @@ -26,7 +25,7 @@ def cython(pyx_files, working_path=''): return try: - import Cython + from Cython.Build import cythonize except ImportError: # If cython is not found, we do nothing -- the build will make use of # the distributed .c files @@ -39,24 +38,7 @@ def cython(pyx_files, working_path=''): if not _changed(pyxfile): continue - c_file = pyxfile[:-4] + '.c' - - # run cython compiler - cmd = 'cython -o %s %s' % (c_file, pyxfile) - print(cmd) - - try: - subprocess.call(['cython', '-o', c_file, pyxfile]) - except WindowsError: - # On Windows cython.exe may be missing if Cython was installed - # via distutils. Run the cython.py script instead. - subprocess.call( - [sys.executable, - os.path.join(os.path.dirname(sys.executable), - 'Scripts', 'cython.py'), - '-o', c_file, pyxfile], - shell=True) - + cythonize(pyxfile) def _md5sum(f): m = hashlib.new('md5') From ba9c985abff2d5602d60321a8a3dc1dad27529e3 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Fri, 16 Aug 2013 15:01:43 +0530 Subject: [PATCH 125/577] Quick initial implementation of ORB descriptor in Python --- skimage/feature/orb.py | 296 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 296 insertions(+) create mode 100644 skimage/feature/orb.py diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py new file mode 100644 index 00000000..3cc3366c --- /dev/null +++ b/skimage/feature/orb.py @@ -0,0 +1,296 @@ +import numpy as np + +from ..util import img_as_float +from .util import _mask_border_keypoints + + +def descriptor_orb(image, keypoints, keypoints_angle): + + image = np.squeeze(image) + if image.ndim != 2: + raise ValueError("Only 2-D gray-scale images supported.") + + image = img_as_float(image) + + mask = _mask_border_keypoints(image, keypoints, 13) + keypoints = keypoints[mask] + keypoints_angle = keypoints_angle[mask] + + pos1 = binary_tests[:, :2] + pos2 = binary_tests[:, 2:] + + descriptors = np.zeros((keypoints.shape[0], 256), dtype=bool) + + for i in range(keypoints.shape[0]): + angle = keypoints_angle[i] + a = np.sin(angle * np.pi / 180.) + b = np.cos(angle * np.pi / 180.) + rotation_matrix = [[b, a], [-a, b]] + steered_pos1 = pos1 * rotation_matrix + steered_pos2 = pos2 * rotation_matrix + for j in range(256): + pr1 = steered_pos1[j][0] + pc1 = steered_pos1[j][1] + pr2 = steered_pos2[j][0] + pc2 = steered_pos2[j][1] + descriptors[i, j] = (image[pr1, pc1] < image[pr2, pc2]) + return descriptors + + +# Learned 256 decision pairs for binary tests in rBRIEF. Taken from OpenCV. +binary_tests = np.asarray([[8,-3, 9,5], + [4,2, 7,-12], + [-11,9, -8,2], + [7,-12, 12,-13], + [2,-13, 2,12], + [1,-7, 1,6], + [-2,-10, -2,-4], + [-13,-13, -11,-8], + [-13,-3, -12,-9], + [10,4, 11,9], + [-13,-8, -8,-9], + [-11,7, -9,12], + [7,7, 12,6], + [-4,-5, -3,0], + [-13,2, -12,-3], + [-9,0, -7,5], + [12,-6, 12,-1], + [-3,6, -2,12], + [-6,-13, -4,-8], + [11,-13, 12,-8], + [4,7, 5,1], + [5,-3, 10,-3], + [3,-7, 6,12], + [-8,-7, -6,-2], + [-2,11, -1,-10], + [-13,12, -8,10], + [-7,3, -5,-3], + [-4,2, -3,7], + [-10,-12, -6,11], + [5,-12, 6,-7], + [5,-6, 7,-1], + [1,0, 4,-5], + [9,11, 11,-13], + [4,7, 4,12], + [2,-1, 4,4], + [-4,-12, -2,7], + [-8,-5, -7,-10], + [4,11, 9,12], + [0,-8, 1,-13], + [-13,-2, -8,2], + [-3,-2, -2,3], + [-6,9, -4,-9], + [8,12, 10,7], + [0,9, 1,3], + [7,-5, 11,-10], + [-13,-6, -11,0], + [10,7, 12,1], + [-6,-3, -6,12], + [10,-9, 12,-4], + [-13,8, -8,-12], + [-13,0, -8,-4], + [3,3, 7,8], + [5,7, 10,-7], + [-1,7, 1,-12], + [3,-10, 5,6], + [2,-4, 3,-10], + [-13,0, -13,5], + [-13,-7, -12,12], + [-13,3, -11,8], + [-7,12, -4,7], + [6,-10, 12,8], + [-9,-1, -7,-6], + [-2,-5, 0,12], + [-12,5, -7,5], + [3,-10, 8,-13], + [-7,-7, -4,5], + [-3,-2, -1,-7], + [2,9, 5,-11], + [-11,-13, -5,-13], + [-1,6, 0,-1], + [5,-3, 5,2], + [-4,-13, -4,12], + [-9,-6, -9,6], + [-12,-10, -8,-4], + [10,2, 12,-3], + [7,12, 12,12], + [-7,-13, -6,5], + [-4,9, -3,4], + [7,-1, 12,2], + [-7,6, -5,1], + [-13,11, -12,5], + [-3,7, -2,-6], + [7,-8, 12,-7], + [-13,-7, -11,-12], + [1,-3, 12,12], + [2,-6, 3,0], + [-4,3, -2,-13], + [-1,-13, 1,9], + [7,1, 8,-6], + [1,-1, 3,12], + [9,1, 12,6], + [-1,-9, -1,3], + [-13,-13, -10,5], + [7,7, 10,12], + [12,-5, 12,9], + [6,3, 7,11], + [5,-13, 6,10], + [2,-12, 2,3], + [3,8, 4,-6], + [2,6, 12,-13], + [9,-12, 10,3], + [-8,4, -7,9], + [-11,12, -4,-6], + [1,12, 2,-8], + [6,-9, 7,-4], + [2,3, 3,-2], + [6,3, 11,0], + [3,-3, 8,-8], + [7,8, 9,3], + [-11,-5, -6,-4], + [-10,11, -5,10], + [-5,-8, -3,12], + [-10,5, -9,0], + [8,-1, 12,-6], + [4,-6, 6,-11], + [-10,12, -8,7], + [4,-2, 6,7], + [-2,0, -2,12], + [-5,-8, -5,2], + [7,-6, 10,12], + [-9,-13, -8,-8], + [-5,-13, -5,-2], + [8,-8, 9,-13], + [-9,-11, -9,0], + [1,-8, 1,-2], + [7,-4, 9,1], + [-2,1, -1,-4], + [11,-6, 12,-11], + [-12,-9, -6,4], + [3,7, 7,12], + [5,5, 10,8], + [0,-4, 2,8], + [-9,12, -5,-13], + [0,7, 2,12], + [-1,2, 1,7], + [5,11, 7,-9], + [3,5, 6,-8], + [-13,-4, -8,9], + [-5,9, -3,-3], + [-4,-7, -3,-12], + [6,5, 8,0], + [-7,6, -6,12], + [-13,6, -5,-2], + [1,-10, 3,10], + [4,1, 8,-4], + [-2,-2, 2,-13], + [2,-12, 12,12], + [-2,-13, 0,-6], + [4,1, 9,3], + [-6,-10, -3,-5], + [-3,-13, -1,1], + [7,5, 12,-11], + [4,-2, 5,-7], + [-13,9, -9,-5], + [7,1, 8,6], + [7,-8, 7,6], + [-7,-4, -7,1], + [-8,11, -7,-8], + [-13,6, -12,-8], + [2,4, 3,9], + [10,-5, 12,3], + [-6,-5, -6,7], + [8,-3, 9,-8], + [2,-12, 2,8], + [-11,-2, -10,3], + [-12,-13, -7,-9], + [-11,0, -10,-5], + [5,-3, 11,8], + [-2,-13, -1,12], + [-1,-8, 0,9], + [-13,-11, -12,-5], + [-10,-2, -10,11], + [-3,9, -2,-13], + [2,-3, 3,2], + [-9,-13, -4,0], + [-4,6, -3,-10], + [-4,12, -2,-7], + [-6,-11, -4,9], + [6,-3, 6,11], + [-13,11, -5,5], + [11,11, 12,6], + [7,-5, 12,-2], + [-1,12, 0,7], + [-4,-8, -3,-2], + [-7,1, -6,7], + [-13,-12, -8,-13], + [-7,-2, -6,-8], + [-8,5, -6,-9], + [-5,-1, -4,5], + [-13,7, -8,10], + [1,5, 5,-13], + [1,0, 10,-13], + [9,12, 10,-1], + [5,-8, 10,-9], + [-1,11, 1,-13], + [-9,-3, -6,2], + [-1,-10, 1,12], + [-13,1, -8,-10], + [8,-11, 10,-6], + [2,-13, 3,-6], + [7,-13, 12,-9], + [-10,-10, -5,-7], + [-10,-8, -8,-13], + [4,-6, 8,5], + [3,12, 8,-13], + [-4,2, -3,-3], + [5,-13, 10,-12], + [4,-13, 5,-1], + [-9,9, -4,3], + [0,3, 3,-9], + [-12,1, -6,1], + [3,2, 4,-8], + [-10,-10, -10,9], + [8,-13, 12,12], + [-8,-12, -6,-5], + [2,2, 3,7], + [10,6, 11,-8], + [6,8, 8,-12], + [-7,10, -6,5], + [-3,-9, -3,9], + [-1,-13, -1,5], + [-3,-7, -3,4], + [-8,-2, -8,3], + [4,2, 12,12], + [2,-5, 3,11], + [6,-9, 11,-13], + [3,-1, 7,12], + [11,-1, 12,4], + [-3,0, -3,6], + [4,-11, 4,12], + [2,-4, 2,1], + [-10,-6, -8,1], + [-13,7, -11,1], + [-13,12, -11,-13], + [6,0, 11,-13], + [0,-1, 1,4], + [-13,3, -9,-2], + [-9,8, -6,-3], + [-13,-6, -8,-2], + [5,-9, 8,10], + [2,7, 3,-9], + [-1,-6, -1,-1], + [9,5, 11,-2], + [11,-3, 12,-8], + [3,0, 3,5], + [-1,4, 0,10], + [3,-6, 4,5], + [-13,0, -10,5], + [5,8, 12,11], + [8,9, 9,-6], + [7,-4, 8,-12], + [-10,4, -10,9], + [7,3, 12,4], + [9,-7, 10,-2], + [7,0, 12,-2], + [-1,-6, 0,-11]]) From 03980b10ee5045c1752c83fad5c13c89adf96566 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Sat, 17 Aug 2013 16:15:34 +0530 Subject: [PATCH 126/577] Quick Python implementation of FAST corner detector --- skimage/feature/fast.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 skimage/feature/fast.py diff --git a/skimage/feature/fast.py b/skimage/feature/fast.py new file mode 100644 index 00000000..6b6ae264 --- /dev/null +++ b/skimage/feature/fast.py @@ -0,0 +1,35 @@ +import numpy as np +from ..util import img_as_float + + +def corner_fast(image, n=9, threshold=0.15): + + image = np.squeeze(image) + if image.ndim != 2: + raise ValueError("Only 2-D gray-scale images supported.") + + image = img_as_float(image) + corner_mask = np.zeros(image.shape, dtype=bool) + + test_pixels = np.asarray([[-3, 0], [-3, 1], [-2, 2], [-1, 3], [0, 3], + [1, 3], [2, 2], [3, 1], [3, 0], [3, -1], + [2, -2], [1, -3], [0, -3], [-1, -3], + [-2, -2], [-1, -3]]) + + # TODO : Outsource to Cython + for i in range(3, image.shape[0] - 3): + for j in range(3, image.shape[1] - 3): + test_x = i + test_pixels[:, 0] + test_y = j + test_pixels[:, 1] + intensities = image[test_x, test_y] + low = intensities < image[i, j] - threshold + high = intensities > image[i, j] + threshold + low = np.concatenate(low, low) + high = np.concatenate(high, high) + # How to check if a sequence n * [True] exists in low/high ? + # if n * [True] in low or n * True in high: + # corner_mask[i, j] = True + + corner_x, corner_y = np.where(corner_mask == True) + corners = np.dstack(corner_x, corner_y) + return corners From 5f1976ace2092fda2525111f7d11d2c56b0d7645 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Tue, 20 Aug 2013 00:57:12 +0530 Subject: [PATCH 127/577] Implemented FAST corner detector --- bento.info | 3 ++ skimage/feature/__init__.py | 12 +++++- skimage/feature/fast.py | 37 ++++++----------- skimage/feature/fast_cy.pyx | 82 +++++++++++++++++++++++++++++++++++++ skimage/feature/setup.py | 3 ++ 5 files changed, 110 insertions(+), 27 deletions(-) create mode 100644 skimage/feature/fast_cy.pyx diff --git a/bento.info b/bento.info index 30367057..ae547267 100644 --- a/bento.info +++ b/bento.info @@ -102,6 +102,9 @@ Library: Extension: skimage.feature.corner_cy Sources: skimage/feature/corner_cy.pyx + Extension: skimage.feature.fast_cy + Sources: + skimage/feature/fast_cy.pyx Extension: skimage.feature._texture Sources: skimage/feature/_texture.pyx diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index 4a6518d6..4a98fe9a 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -7,7 +7,10 @@ from .corner import (corner_kitchen_rosenfeld, corner_harris, corner_peaks) from .corner_cy import corner_moravec from .template import match_template - +from ._brief import brief, match_keypoints_brief +from .util import pairwise_hamming_distance +from .censure import keypoints_censure +from .fast import corner_fast __all__ = ['daisy', 'hog', @@ -22,4 +25,9 @@ __all__ = ['daisy', 'corner_subpix', 'corner_peaks', 'corner_moravec', - 'match_template'] + 'match_template', + 'brief', + 'pairwise_hamming_distance', + 'match_keypoints_brief', + 'keypoints_censure', + 'corner_fast'] diff --git a/skimage/feature/fast.py b/skimage/feature/fast.py index 6b6ae264..8194093e 100644 --- a/skimage/feature/fast.py +++ b/skimage/feature/fast.py @@ -1,35 +1,22 @@ import numpy as np -from ..util import img_as_float +from scipy.ndimage.filters import maximum_filter + +from fast_cy import _corner_fast -def corner_fast(image, n=9, threshold=0.15): +def corner_fast(image, n=12, threshold=0.15): image = np.squeeze(image) if image.ndim != 2: raise ValueError("Only 2-D gray-scale images supported.") - image = img_as_float(image) - corner_mask = np.zeros(image.shape, dtype=bool) + image = np.ascontiguousarray(image, dtype=np.double) + corner = _corner_fast(image, n, threshold) - test_pixels = np.asarray([[-3, 0], [-3, 1], [-2, 2], [-1, 3], [0, 3], - [1, 3], [2, 2], [3, 1], [3, 0], [3, -1], - [2, -2], [1, -3], [0, -3], [-1, -3], - [-2, -2], [-1, -3]]) + corner_zero_mask = corner != 0 + c, d = np.nonzero(corner) - # TODO : Outsource to Cython - for i in range(3, image.shape[0] - 3): - for j in range(3, image.shape[1] - 3): - test_x = i + test_pixels[:, 0] - test_y = j + test_pixels[:, 1] - intensities = image[test_x, test_y] - low = intensities < image[i, j] - threshold - high = intensities > image[i, j] + threshold - low = np.concatenate(low, low) - high = np.concatenate(high, high) - # How to check if a sequence n * [True] exists in low/high ? - # if n * [True] in low or n * True in high: - # corner_mask[i, j] = True - - corner_x, corner_y = np.where(corner_mask == True) - corners = np.dstack(corner_x, corner_y) - return corners + maximas = (maximum_filter(corner, (3, 3)) == corner) & corner_zero_mask + x, y = np.where(maximas == True) + + return np.squeeze(np.dstack((x, y))) diff --git a/skimage/feature/fast_cy.pyx b/skimage/feature/fast_cy.pyx new file mode 100644 index 00000000..a7af63c2 --- /dev/null +++ b/skimage/feature/fast_cy.pyx @@ -0,0 +1,82 @@ +#cython: cdivision=True +#cython: boundscheck=False +#cython: nonecheck=False +#cython: wraparound=False + +import numpy as np + +from ..util import img_as_float + + +def _corner_fast(double[:, ::1] image, int n, double threshold): + + cdef int[:] rp = (np.round(3 * np.sin(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) + cdef int[:] cp = (np.round(3 * np.cos(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) + + cdef Py_ssize_t rows = image.shape[0] + cdef Py_ssize_t cols = image.shape[1] + + cdef Py_ssize_t i, j, k, l, m + + cdef char[:] bins + cdef int consecutive_count = 0 + cdef double sum_b + cdef double sum_d + cdef double[:, ::1] corner = np.zeros((rows, cols), dtype=np.double) + + cdef double circle_intensity + + for i in range(3, rows - 3): + for j in range(3, cols - 3): + + bins = np.zeros(16, dtype='S1') + sum_b = 0 + sum_d = 0 + + for k in range(16): + circle_intensity = image[i + rp[k], j + cp[k]] + if circle_intensity > image[i, j] + threshold: + bins[k] = 'b' + elif circle_intensity < image[i, j] - threshold: + bins[k] = 'd' + else: + bins[k] = 's' + + consecutive_count = 0 + for l in range(15 + n): + if bins[l % 16] == 'b': + consecutive_count += 1 + if consecutive_count == n: + for m in range(16): + if bins[m] == 'b': + sum_b += image[i + rp[m], j + cp[m]] - image[i, j] - threshold + elif bins[m] == 'd': + sum_d += image[i, j] - image[i + rp[m], j + cp[m]] - threshold + if sum_d > sum_b: + corner[i, j] = sum_d + else: + corner[i, j] = sum_b + break + else: + consecutive_count = 0 + + if corner[i, j] == 0: + consecutive_count = 0 + for l in range(15 + n): + if bins[l % 16] == 'd': + consecutive_count += 1 + if consecutive_count == n: + for m in range(16): + if bins[m] == 'b': + sum_b += image[i + rp[m], j + cp[m]] - image[i, j] - threshold + elif bins[m] == 'd': + sum_d += image[i, j] - image[i + rp[m], j + cp[m]] - threshold + if sum_d > sum_b: + corner[i, j] = sum_d + else: + corner[i, j] = sum_b + break + else: + consecutive_count = 0 + + return np.asarray(corner) diff --git a/skimage/feature/setup.py b/skimage/feature/setup.py index 7df64c32..039d234f 100644 --- a/skimage/feature/setup.py +++ b/skimage/feature/setup.py @@ -14,6 +14,7 @@ def configuration(parent_package='', top_path=None): cython(['corner_cy.pyx'], working_path=base_path) cython(['censure_cy.pyx'], working_path=base_path) + cython(['fast_cy.pyx'], working_path=base_path) cython(['_brief_cy.pyx'], working_path=base_path) cython(['_texture.pyx'], working_path=base_path) cython(['_template.pyx'], working_path=base_path) @@ -22,6 +23,8 @@ def configuration(parent_package='', top_path=None): include_dirs=[get_numpy_include_dirs()]) config.add_extension('censure_cy', sources=['censure_cy.c'], include_dirs=[get_numpy_include_dirs()]) + config.add_extension('fast_cy', sources=['fast_cy.c'], + include_dirs=[get_numpy_include_dirs()]) config.add_extension('_brief_cy', sources=['_brief_cy.c'], include_dirs=[get_numpy_include_dirs()]) config.add_extension('_texture', sources=['_texture.c'], From 5c6420d58441c9f24f3c6a97a03ac1ffbff19e4c Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Tue, 20 Aug 2013 01:24:29 +0530 Subject: [PATCH 128/577] Adding docstrings and commenting the code --- skimage/feature/fast.py | 40 +++++++++++++++++++++++++++++++------ skimage/feature/fast_cy.pyx | 21 +++++++++++-------- 2 files changed, 47 insertions(+), 14 deletions(-) diff --git a/skimage/feature/fast.py b/skimage/feature/fast.py index 8194093e..36a4c7e1 100644 --- a/skimage/feature/fast.py +++ b/skimage/feature/fast.py @@ -6,17 +6,45 @@ from fast_cy import _corner_fast def corner_fast(image, n=12, threshold=0.15): + """Extract FAST corners for a given image. + + Parameters + ---------- + image : 2D ndarray + Input image. + n : integer + Number of consecutive pixels out of 16 pixels on the circle that + should be brighter or darker with respect to test pixel above the + `threshold` so as to classify the test pixel as a FAST corner. Also + stands for the n in `FAST-n` corner detector. + threshold : float + Threshold used in deciding whether the pixels on the circle are + brighter, darker or similar to the test pixel. Decrease the threshold + when more corners are desired and vice-versa. + + Returns + ------- + corners : (N, 2) ndarray + Location i.e. (row, col) of extracted FAST corners. + + References + ---------- + .. [1] Edward Rosten and Tom Drummond + "Machine Learning for high-speed corner detection", + http://www.edwardrosten.com/work/rosten_2006_machine.pdf + + """ image = np.squeeze(image) if image.ndim != 2: raise ValueError("Only 2-D gray-scale images supported.") image = np.ascontiguousarray(image, dtype=np.double) - corner = _corner_fast(image, n, threshold) + corner_response = _corner_fast(image, n, threshold) - corner_zero_mask = corner != 0 - c, d = np.nonzero(corner) - - maximas = (maximum_filter(corner, (3, 3)) == corner) & corner_zero_mask + # Non-maximal Suppression + corner_zero_mask = corner_response != 0 + maximas = (maximum_filter(corner_response, (3, 3)) == corner_response) & corner_zero_mask x, y = np.where(maximas == True) - return np.squeeze(np.dstack((x, y))) + corners = np.squeeze(np.dstack((x, y))) + return corners diff --git a/skimage/feature/fast_cy.pyx b/skimage/feature/fast_cy.pyx index a7af63c2..d80aa318 100644 --- a/skimage/feature/fast_cy.pyx +++ b/skimage/feature/fast_cy.pyx @@ -8,7 +8,7 @@ import numpy as np from ..util import img_as_float -def _corner_fast(double[:, ::1] image, int n, double threshold): +def _corner_response_fast(double[:, ::1] image, int n, double threshold): cdef int[:] rp = (np.round(3 * np.sin(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) cdef int[:] cp = (np.round(3 * np.cos(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) @@ -22,7 +22,7 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): cdef int consecutive_count = 0 cdef double sum_b cdef double sum_d - cdef double[:, ::1] corner = np.zeros((rows, cols), dtype=np.double) + cdef double[:, ::1] corner_response = np.zeros((rows, cols), dtype=np.double) cdef double circle_intensity @@ -36,10 +36,13 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): for k in range(16): circle_intensity = image[i + rp[k], j + cp[k]] if circle_intensity > image[i, j] + threshold: + # Brighter pixel bins[k] = 'b' elif circle_intensity < image[i, j] - threshold: + # Darker pixel bins[k] = 'd' else: + # Similar pixel bins[k] = 's' consecutive_count = 0 @@ -52,15 +55,16 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): sum_b += image[i + rp[m], j + cp[m]] - image[i, j] - threshold elif bins[m] == 'd': sum_d += image[i, j] - image[i + rp[m], j + cp[m]] - threshold + # Finding the response of the corner if sum_d > sum_b: - corner[i, j] = sum_d + corner_response[i, j] = sum_d else: - corner[i, j] = sum_b + corner_response[i, j] = sum_b break else: consecutive_count = 0 - if corner[i, j] == 0: + if corner_response[i, j] == 0: consecutive_count = 0 for l in range(15 + n): if bins[l % 16] == 'd': @@ -71,12 +75,13 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): sum_b += image[i + rp[m], j + cp[m]] - image[i, j] - threshold elif bins[m] == 'd': sum_d += image[i, j] - image[i + rp[m], j + cp[m]] - threshold + # Finding the response of the corner if sum_d > sum_b: - corner[i, j] = sum_d + corner_response[i, j] = sum_d else: - corner[i, j] = sum_b + corner_response[i, j] = sum_b break else: consecutive_count = 0 - return np.asarray(corner) + return np.asarray(corner_response) From cfcefe192c5bd9da0ad2c9c920f8eb3d49d09b53 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Tue, 20 Aug 2013 02:33:29 +0530 Subject: [PATCH 129/577] Adding high speed test for n>=12 --- skimage/feature/fast_cy.pyx | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/skimage/feature/fast_cy.pyx b/skimage/feature/fast_cy.pyx index d80aa318..43ffee08 100644 --- a/skimage/feature/fast_cy.pyx +++ b/skimage/feature/fast_cy.pyx @@ -8,7 +8,7 @@ import numpy as np from ..util import img_as_float -def _corner_response_fast(double[:, ::1] image, int n, double threshold): +def _corner_fast(double[:, ::1] image, int n, double threshold): cdef int[:] rp = (np.round(3 * np.sin(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) cdef int[:] cp = (np.round(3 * np.cos(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) @@ -19,7 +19,8 @@ def _corner_response_fast(double[:, ::1] image, int n, double threshold): cdef Py_ssize_t i, j, k, l, m cdef char[:] bins - cdef int consecutive_count = 0 + cdef int consecutive_count, speed_sum_b, speed_sum_d + cdef int sp cdef double sum_b cdef double sum_d cdef double[:, ::1] corner_response = np.zeros((rows, cols), dtype=np.double) @@ -30,6 +31,8 @@ def _corner_response_fast(double[:, ::1] image, int n, double threshold): for j in range(3, cols - 3): bins = np.zeros(16, dtype='S1') + speed_sum_b = 0 + speed_sum_d = 0 sum_b = 0 sum_d = 0 @@ -45,6 +48,16 @@ def _corner_response_fast(double[:, ::1] image, int n, double threshold): # Similar pixel bins[k] = 's' + # High speed test for n>=12 + if n >= 12: + for k in range(4): + if bins[4 * k] == 'b': + speed_sum_b += 1 + elif bins[4 * k] == 'd': + speed_sum_d += 1 + if speed_sum_d < 3 and speed_sum_b < 3: + continue + consecutive_count = 0 for l in range(15 + n): if bins[l % 16] == 'b': From 5a886e69c33e3e1f70ca9821cb543de62b1d3eb1 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 21 Aug 2013 01:19:31 +0530 Subject: [PATCH 130/577] Making various minor optimizations --- skimage/feature/fast.py | 6 +++--- skimage/feature/fast_cy.pyx | 28 ++++++++++++---------------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/skimage/feature/fast.py b/skimage/feature/fast.py index 36a4c7e1..4a7b84e6 100644 --- a/skimage/feature/fast.py +++ b/skimage/feature/fast.py @@ -12,15 +12,15 @@ def corner_fast(image, n=12, threshold=0.15): ---------- image : 2D ndarray Input image. - n : integer + n : int Number of consecutive pixels out of 16 pixels on the circle that should be brighter or darker with respect to test pixel above the `threshold` so as to classify the test pixel as a FAST corner. Also stands for the n in `FAST-n` corner detector. threshold : float Threshold used in deciding whether the pixels on the circle are - brighter, darker or similar to the test pixel. Decrease the threshold - when more corners are desired and vice-versa. + brighter, darker or similar w.r.t. the test pixel. Decrease the + threshold when more corners are desired and vice-versa. Returns ------- diff --git a/skimage/feature/fast_cy.pyx b/skimage/feature/fast_cy.pyx index 43ffee08..d2292eac 100644 --- a/skimage/feature/fast_cy.pyx +++ b/skimage/feature/fast_cy.pyx @@ -5,11 +5,8 @@ import numpy as np -from ..util import img_as_float - def _corner_fast(double[:, ::1] image, int n, double threshold): - cdef int[:] rp = (np.round(3 * np.sin(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) cdef int[:] cp = (np.round(3 * np.cos(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) @@ -18,11 +15,10 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): cdef Py_ssize_t i, j, k, l, m - cdef char[:] bins + cdef char[:] bins = np.zeros(16, dtype=np.uint8) cdef int consecutive_count, speed_sum_b, speed_sum_d cdef int sp - cdef double sum_b - cdef double sum_d + cdef double sum_b, sum_d, current_pixel cdef double[:, ::1] corner_response = np.zeros((rows, cols), dtype=np.double) cdef double circle_intensity @@ -30,7 +26,7 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): for i in range(3, rows - 3): for j in range(3, cols - 3): - bins = np.zeros(16, dtype='S1') + current_pixel = image[i, j] speed_sum_b = 0 speed_sum_d = 0 sum_b = 0 @@ -38,10 +34,10 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): for k in range(16): circle_intensity = image[i + rp[k], j + cp[k]] - if circle_intensity > image[i, j] + threshold: + if circle_intensity > current_pixel + threshold: # Brighter pixel bins[k] = 'b' - elif circle_intensity < image[i, j] - threshold: + elif circle_intensity < current_pixel - threshold: # Darker pixel bins[k] = 'd' else: @@ -50,10 +46,10 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): # High speed test for n>=12 if n >= 12: - for k in range(4): - if bins[4 * k] == 'b': + for k in range(0, 16, 4): + if bins[k] == 'b': speed_sum_b += 1 - elif bins[4 * k] == 'd': + elif bins[k] == 'd': speed_sum_d += 1 if speed_sum_d < 3 and speed_sum_b < 3: continue @@ -65,9 +61,9 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): if consecutive_count == n: for m in range(16): if bins[m] == 'b': - sum_b += image[i + rp[m], j + cp[m]] - image[i, j] - threshold + sum_b += image[i + rp[m], j + cp[m]] - current_pixel - threshold elif bins[m] == 'd': - sum_d += image[i, j] - image[i + rp[m], j + cp[m]] - threshold + sum_d += current_pixel - image[i + rp[m], j + cp[m]] - threshold # Finding the response of the corner if sum_d > sum_b: corner_response[i, j] = sum_d @@ -85,9 +81,9 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): if consecutive_count == n: for m in range(16): if bins[m] == 'b': - sum_b += image[i + rp[m], j + cp[m]] - image[i, j] - threshold + sum_b += image[i + rp[m], j + cp[m]] - current_pixel - threshold elif bins[m] == 'd': - sum_d += image[i, j] - image[i + rp[m], j + cp[m]] - threshold + sum_d += current_pixel - image[i + rp[m], j + cp[m]] - threshold # Finding the response of the corner if sum_d > sum_b: corner_response[i, j] = sum_d From b8958ccee08403abf48da76f8cca9831eaccc6da Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 21 Aug 2013 01:44:04 +0530 Subject: [PATCH 131/577] Transferring all the FAST code to corner.py and corner_cy.pyx --- bento.info | 3 -- skimage/feature/__init__.py | 3 +- skimage/feature/corner.py | 49 +++++++++++++++++++ skimage/feature/corner_cy.pyx | 90 +++++++++++++++++++++++++++++++++++ skimage/feature/setup.py | 3 -- 5 files changed, 140 insertions(+), 8 deletions(-) diff --git a/bento.info b/bento.info index ae547267..30367057 100644 --- a/bento.info +++ b/bento.info @@ -102,9 +102,6 @@ Library: Extension: skimage.feature.corner_cy Sources: skimage/feature/corner_cy.pyx - Extension: skimage.feature.fast_cy - Sources: - skimage/feature/fast_cy.pyx Extension: skimage.feature._texture Sources: skimage/feature/_texture.pyx diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index 4a98fe9a..c16edb87 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -4,13 +4,12 @@ from .texture import greycomatrix, greycoprops, local_binary_pattern from .peak import peak_local_max from .corner import (corner_kitchen_rosenfeld, corner_harris, corner_shi_tomasi, corner_foerstner, corner_subpix, - corner_peaks) + corner_peaks, corner_fast) from .corner_cy import corner_moravec from .template import match_template from ._brief import brief, match_keypoints_brief from .util import pairwise_hamming_distance from .censure import keypoints_censure -from .fast import corner_fast __all__ = ['daisy', 'hog', diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index a025a7e4..bbb7fde5 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -1,10 +1,13 @@ import numpy as np from scipy import ndimage from scipy import stats +from scipy.ndimage.filters import maximum_filter from skimage.color import rgb2grey from skimage.util import img_as_float, pad from skimage.feature import peak_local_max +from corner_cy import _corner_fast + def _compute_derivatives(image): """Compute derivatives in x and y direction using the Sobel operator. @@ -542,3 +545,49 @@ def corner_peaks(image, min_distance=10, threshold_abs=0, threshold_rel=0.1, return np.transpose(peaks.nonzero()) else: return peaks + + +def corner_fast(image, n=12, threshold=0.15): + + """Extract FAST corners for a given image. + + Parameters + ---------- + image : 2D ndarray + Input image. + n : int + Number of consecutive pixels out of 16 pixels on the circle that + should be brighter or darker with respect to test pixel above the + `threshold` so as to classify the test pixel as a FAST corner. Also + stands for the n in `FAST-n` corner detector. + threshold : float + Threshold used in deciding whether the pixels on the circle are + brighter, darker or similar w.r.t. the test pixel. Decrease the + threshold when more corners are desired and vice-versa. + + Returns + ------- + corners : (N, 2) ndarray + Location i.e. (row, col) of extracted FAST corners. + + References + ---------- + .. [1] Edward Rosten and Tom Drummond + "Machine Learning for high-speed corner detection", + http://www.edwardrosten.com/work/rosten_2006_machine.pdf + + """ + image = np.squeeze(image) + if image.ndim != 2: + raise ValueError("Only 2-D gray-scale images supported.") + + image = np.ascontiguousarray(image, dtype=np.double) + corner_response = _corner_fast(image, n, threshold) + + # Non-maximal Suppression + corner_zero_mask = corner_response != 0 + maximas = (maximum_filter(corner_response, (3, 3)) == corner_response) & corner_zero_mask + x, y = np.where(maximas == True) + + corners = np.squeeze(np.dstack((x, y))) + return corners diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index c459ee92..56112211 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -80,3 +80,93 @@ def corner_moravec(image, Py_ssize_t window_size=1): out[r, c] = min_msum return np.asarray(out) + + +def _corner_fast(double[:, ::1] image, int n, double threshold): + cdef int[:] rp = (np.round(3 * np.sin(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) + cdef int[:] cp = (np.round(3 * np.cos(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) + + cdef Py_ssize_t rows = image.shape[0] + cdef Py_ssize_t cols = image.shape[1] + + cdef Py_ssize_t i, j, k, l, m + + cdef char[:] bins = np.zeros(16, dtype=np.uint8) + cdef int consecutive_count, speed_sum_b, speed_sum_d + cdef int sp + cdef double sum_b, sum_d, current_pixel + cdef double[:, ::1] corner_response = np.zeros((rows, cols), dtype=np.double) + + cdef double circle_intensity + + for i in range(3, rows - 3): + for j in range(3, cols - 3): + + current_pixel = image[i, j] + speed_sum_b = 0 + speed_sum_d = 0 + sum_b = 0 + sum_d = 0 + + for k in range(16): + circle_intensity = image[i + rp[k], j + cp[k]] + if circle_intensity > current_pixel + threshold: + # Brighter pixel + bins[k] = 'b' + elif circle_intensity < current_pixel - threshold: + # Darker pixel + bins[k] = 'd' + else: + # Similar pixel + bins[k] = 's' + + # High speed test for n>=12 + if n >= 12: + for k in range(0, 16, 4): + if bins[k] == 'b': + speed_sum_b += 1 + elif bins[k] == 'd': + speed_sum_d += 1 + if speed_sum_d < 3 and speed_sum_b < 3: + continue + + consecutive_count = 0 + for l in range(15 + n): + if bins[l % 16] == 'b': + consecutive_count += 1 + if consecutive_count == n: + for m in range(16): + if bins[m] == 'b': + sum_b += image[i + rp[m], j + cp[m]] - current_pixel - threshold + elif bins[m] == 'd': + sum_d += current_pixel - image[i + rp[m], j + cp[m]] - threshold + # Finding the response of the corner + if sum_d > sum_b: + corner_response[i, j] = sum_d + else: + corner_response[i, j] = sum_b + break + else: + consecutive_count = 0 + + if corner_response[i, j] == 0: + consecutive_count = 0 + for l in range(15 + n): + if bins[l % 16] == 'd': + consecutive_count += 1 + if consecutive_count == n: + for m in range(16): + if bins[m] == 'b': + sum_b += image[i + rp[m], j + cp[m]] - current_pixel - threshold + elif bins[m] == 'd': + sum_d += current_pixel - image[i + rp[m], j + cp[m]] - threshold + # Finding the response of the corner + if sum_d > sum_b: + corner_response[i, j] = sum_d + else: + corner_response[i, j] = sum_b + break + else: + consecutive_count = 0 + + return np.asarray(corner_response) diff --git a/skimage/feature/setup.py b/skimage/feature/setup.py index 039d234f..7df64c32 100644 --- a/skimage/feature/setup.py +++ b/skimage/feature/setup.py @@ -14,7 +14,6 @@ def configuration(parent_package='', top_path=None): cython(['corner_cy.pyx'], working_path=base_path) cython(['censure_cy.pyx'], working_path=base_path) - cython(['fast_cy.pyx'], working_path=base_path) cython(['_brief_cy.pyx'], working_path=base_path) cython(['_texture.pyx'], working_path=base_path) cython(['_template.pyx'], working_path=base_path) @@ -23,8 +22,6 @@ def configuration(parent_package='', top_path=None): include_dirs=[get_numpy_include_dirs()]) config.add_extension('censure_cy', sources=['censure_cy.c'], include_dirs=[get_numpy_include_dirs()]) - config.add_extension('fast_cy', sources=['fast_cy.c'], - include_dirs=[get_numpy_include_dirs()]) config.add_extension('_brief_cy', sources=['_brief_cy.c'], include_dirs=[get_numpy_include_dirs()]) config.add_extension('_texture', sources=['_texture.c'], From 1fe124102ddbac22a5f1cb949489ba66049697f6 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 21 Aug 2013 18:59:17 +0530 Subject: [PATCH 132/577] Using inline function in corner_cy._corner_fast --- skimage/feature/corner_cy.pyx | 76 +++++++++++++++-------------------- skimage/feature/orb.py | 2 +- 2 files changed, 34 insertions(+), 44 deletions(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 56112211..96588eeb 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -82,9 +82,35 @@ def corner_moravec(image, Py_ssize_t window_size=1): return np.asarray(out) +cdef int[:] RP = (np.round(3 * np.sin(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) +cdef int[:] CP = (np.round(3 * np.cos(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) + + +cdef inline _get_corner_response(double[:, ::1] image, int i, int j, char[:] bins, char check_state, int n, double threshold, double[:, ::1] corner_response): + cdef int consecutive_count = 0 + cdef double sum_b = 0 + cdef double sum_d = 0 + cdef double curr_pixel = image[i, j] + cdef Py_ssize_t l, m + for l in range(15 + n): + if bins[l % 16] == check_state: + consecutive_count += 1 + if consecutive_count == n: + for m in range(16): + if bins[m] == 'b': + sum_b += image[i + RP[m], j + CP[m]] - curr_pixel - threshold + elif bins[m] == 'd': + sum_d += curr_pixel - image[i + RP[m], j + CP[m]] - threshold + # Finding the response of the corner + if sum_d > sum_b: + corner_response[i, j] = sum_d + else: + corner_response[i, j] = sum_b + else: + consecutive_count = 0 + + def _corner_fast(double[:, ::1] image, int n, double threshold): - cdef int[:] rp = (np.round(3 * np.sin(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) - cdef int[:] cp = (np.round(3 * np.cos(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) cdef Py_ssize_t rows = image.shape[0] cdef Py_ssize_t cols = image.shape[1] @@ -92,9 +118,9 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): cdef Py_ssize_t i, j, k, l, m cdef char[:] bins = np.zeros(16, dtype=np.uint8) - cdef int consecutive_count, speed_sum_b, speed_sum_d + cdef int speed_sum_b, speed_sum_d cdef int sp - cdef double sum_b, sum_d, current_pixel + cdef double current_pixel cdef double[:, ::1] corner_response = np.zeros((rows, cols), dtype=np.double) cdef double circle_intensity @@ -105,11 +131,9 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): current_pixel = image[i, j] speed_sum_b = 0 speed_sum_d = 0 - sum_b = 0 - sum_d = 0 for k in range(16): - circle_intensity = image[i + rp[k], j + cp[k]] + circle_intensity = image[i + RP[k], j + CP[k]] if circle_intensity > current_pixel + threshold: # Brighter pixel bins[k] = 'b' @@ -130,43 +154,9 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): if speed_sum_d < 3 and speed_sum_b < 3: continue - consecutive_count = 0 - for l in range(15 + n): - if bins[l % 16] == 'b': - consecutive_count += 1 - if consecutive_count == n: - for m in range(16): - if bins[m] == 'b': - sum_b += image[i + rp[m], j + cp[m]] - current_pixel - threshold - elif bins[m] == 'd': - sum_d += current_pixel - image[i + rp[m], j + cp[m]] - threshold - # Finding the response of the corner - if sum_d > sum_b: - corner_response[i, j] = sum_d - else: - corner_response[i, j] = sum_b - break - else: - consecutive_count = 0 + _get_corner_response(image, i, j, bins, 'b', n, threshold, corner_response) if corner_response[i, j] == 0: - consecutive_count = 0 - for l in range(15 + n): - if bins[l % 16] == 'd': - consecutive_count += 1 - if consecutive_count == n: - for m in range(16): - if bins[m] == 'b': - sum_b += image[i + rp[m], j + cp[m]] - current_pixel - threshold - elif bins[m] == 'd': - sum_d += current_pixel - image[i + rp[m], j + cp[m]] - threshold - # Finding the response of the corner - if sum_d > sum_b: - corner_response[i, j] = sum_d - else: - corner_response[i, j] = sum_b - break - else: - consecutive_count = 0 + _get_corner_response(image, i, j, bins, 'd', n, threshold, corner_response) return np.asarray(corner_response) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 3cc3366c..d5189a32 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -34,7 +34,7 @@ def descriptor_orb(image, keypoints, keypoints_angle): pr2 = steered_pos2[j][0] pc2 = steered_pos2[j][1] descriptors[i, j] = (image[pr1, pc1] < image[pr2, pc2]) - return descriptors + return descriptors # Learned 256 decision pairs for binary tests in rBRIEF. Taken from OpenCV. From 68fa6b015bff1726f59d93e765ef68d1f16ccaac Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 21 Aug 2013 23:02:41 +0530 Subject: [PATCH 133/577] Deleting FAST files --- skimage/feature/fast.py | 50 ------------------- skimage/feature/fast_cy.pyx | 96 ------------------------------------- 2 files changed, 146 deletions(-) delete mode 100644 skimage/feature/fast.py delete mode 100644 skimage/feature/fast_cy.pyx diff --git a/skimage/feature/fast.py b/skimage/feature/fast.py deleted file mode 100644 index 4a7b84e6..00000000 --- a/skimage/feature/fast.py +++ /dev/null @@ -1,50 +0,0 @@ -import numpy as np -from scipy.ndimage.filters import maximum_filter - -from fast_cy import _corner_fast - - -def corner_fast(image, n=12, threshold=0.15): - - """Extract FAST corners for a given image. - - Parameters - ---------- - image : 2D ndarray - Input image. - n : int - Number of consecutive pixels out of 16 pixels on the circle that - should be brighter or darker with respect to test pixel above the - `threshold` so as to classify the test pixel as a FAST corner. Also - stands for the n in `FAST-n` corner detector. - threshold : float - Threshold used in deciding whether the pixels on the circle are - brighter, darker or similar w.r.t. the test pixel. Decrease the - threshold when more corners are desired and vice-versa. - - Returns - ------- - corners : (N, 2) ndarray - Location i.e. (row, col) of extracted FAST corners. - - References - ---------- - .. [1] Edward Rosten and Tom Drummond - "Machine Learning for high-speed corner detection", - http://www.edwardrosten.com/work/rosten_2006_machine.pdf - - """ - image = np.squeeze(image) - if image.ndim != 2: - raise ValueError("Only 2-D gray-scale images supported.") - - image = np.ascontiguousarray(image, dtype=np.double) - corner_response = _corner_fast(image, n, threshold) - - # Non-maximal Suppression - corner_zero_mask = corner_response != 0 - maximas = (maximum_filter(corner_response, (3, 3)) == corner_response) & corner_zero_mask - x, y = np.where(maximas == True) - - corners = np.squeeze(np.dstack((x, y))) - return corners diff --git a/skimage/feature/fast_cy.pyx b/skimage/feature/fast_cy.pyx deleted file mode 100644 index d2292eac..00000000 --- a/skimage/feature/fast_cy.pyx +++ /dev/null @@ -1,96 +0,0 @@ -#cython: cdivision=True -#cython: boundscheck=False -#cython: nonecheck=False -#cython: wraparound=False - -import numpy as np - - -def _corner_fast(double[:, ::1] image, int n, double threshold): - cdef int[:] rp = (np.round(3 * np.sin(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) - cdef int[:] cp = (np.round(3 * np.cos(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) - - cdef Py_ssize_t rows = image.shape[0] - cdef Py_ssize_t cols = image.shape[1] - - cdef Py_ssize_t i, j, k, l, m - - cdef char[:] bins = np.zeros(16, dtype=np.uint8) - cdef int consecutive_count, speed_sum_b, speed_sum_d - cdef int sp - cdef double sum_b, sum_d, current_pixel - cdef double[:, ::1] corner_response = np.zeros((rows, cols), dtype=np.double) - - cdef double circle_intensity - - for i in range(3, rows - 3): - for j in range(3, cols - 3): - - current_pixel = image[i, j] - speed_sum_b = 0 - speed_sum_d = 0 - sum_b = 0 - sum_d = 0 - - for k in range(16): - circle_intensity = image[i + rp[k], j + cp[k]] - if circle_intensity > current_pixel + threshold: - # Brighter pixel - bins[k] = 'b' - elif circle_intensity < current_pixel - threshold: - # Darker pixel - bins[k] = 'd' - else: - # Similar pixel - bins[k] = 's' - - # High speed test for n>=12 - if n >= 12: - for k in range(0, 16, 4): - if bins[k] == 'b': - speed_sum_b += 1 - elif bins[k] == 'd': - speed_sum_d += 1 - if speed_sum_d < 3 and speed_sum_b < 3: - continue - - consecutive_count = 0 - for l in range(15 + n): - if bins[l % 16] == 'b': - consecutive_count += 1 - if consecutive_count == n: - for m in range(16): - if bins[m] == 'b': - sum_b += image[i + rp[m], j + cp[m]] - current_pixel - threshold - elif bins[m] == 'd': - sum_d += current_pixel - image[i + rp[m], j + cp[m]] - threshold - # Finding the response of the corner - if sum_d > sum_b: - corner_response[i, j] = sum_d - else: - corner_response[i, j] = sum_b - break - else: - consecutive_count = 0 - - if corner_response[i, j] == 0: - consecutive_count = 0 - for l in range(15 + n): - if bins[l % 16] == 'd': - consecutive_count += 1 - if consecutive_count == n: - for m in range(16): - if bins[m] == 'b': - sum_b += image[i + rp[m], j + cp[m]] - current_pixel - threshold - elif bins[m] == 'd': - sum_d += current_pixel - image[i + rp[m], j + cp[m]] - threshold - # Finding the response of the corner - if sum_d > sum_b: - corner_response[i, j] = sum_d - else: - corner_response[i, j] = sum_b - break - else: - consecutive_count = 0 - - return np.asarray(corner_response) From df43c5cfc798ec297635c45dec3c107f0059ff6e Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 22 Aug 2013 00:01:15 +0530 Subject: [PATCH 134/577] Converting image to float --- skimage/feature/corner.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index bbb7fde5..f2864d8b 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -581,7 +581,8 @@ def corner_fast(image, n=12, threshold=0.15): if image.ndim != 2: raise ValueError("Only 2-D gray-scale images supported.") - image = np.ascontiguousarray(image, dtype=np.double) + image = img_as_float(image) + image = np.ascontiguousarray(image) corner_response = _corner_fast(image, n, threshold) # Non-maximal Suppression From 53c9e3e6e4f77eb84ffc710958fa656330f31fcb Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 22 Aug 2013 00:37:34 +0530 Subject: [PATCH 135/577] Adding additional parameter for setting shape for Non-max suppression --- skimage/feature/corner.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index f2864d8b..5525a8b3 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -547,7 +547,7 @@ def corner_peaks(image, min_distance=10, threshold_abs=0, threshold_rel=0.1, return peaks -def corner_fast(image, n=12, threshold=0.15): +def corner_fast(image, n=12, threshold=0.15, non_max_shape=(3, 3)): """Extract FAST corners for a given image. @@ -564,6 +564,9 @@ def corner_fast(image, n=12, threshold=0.15): Threshold used in deciding whether the pixels on the circle are brighter, darker or similar w.r.t. the test pixel. Decrease the threshold when more corners are desired and vice-versa. + non_max_shape : tuple of two odd int + Represents the area in which Non-maximal suppression is applied. + By default, a 3 x 3 area is used. Returns ------- @@ -587,7 +590,7 @@ def corner_fast(image, n=12, threshold=0.15): # Non-maximal Suppression corner_zero_mask = corner_response != 0 - maximas = (maximum_filter(corner_response, (3, 3)) == corner_response) & corner_zero_mask + maximas = (maximum_filter(corner_response, non_max_shape) == corner_response) & corner_zero_mask x, y = np.where(maximas == True) corners = np.squeeze(np.dstack((x, y))) From fbc15c96a82e5397937b851c47e53b456931bd2f Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 22 Aug 2013 04:06:56 +0530 Subject: [PATCH 136/577] Wrapping lines; returning corner_response at a pixel --- skimage/feature/corner_cy.pyx | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 96588eeb..37b26a8c 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -86,7 +86,10 @@ cdef int[:] RP = (np.round(3 * np.sin(2 * np.pi * np.arange(16, dtype=np.double) cdef int[:] CP = (np.round(3 * np.cos(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) -cdef inline _get_corner_response(double[:, ::1] image, int i, int j, char[:] bins, char check_state, int n, double threshold, double[:, ::1] corner_response): +cdef inline _get_fast_corner_response(double[:, ::1] image, Py_ssize_t i, + Py_ssize_t j, char[:] bins, + char check_state, int n, + double threshold): cdef int consecutive_count = 0 cdef double sum_b = 0 cdef double sum_d = 0 @@ -98,16 +101,19 @@ cdef inline _get_corner_response(double[:, ::1] image, int i, int j, char[:] bin if consecutive_count == n: for m in range(16): if bins[m] == 'b': - sum_b += image[i + RP[m], j + CP[m]] - curr_pixel - threshold + sum_b = (sum_b + image[i + RP[m], j + CP[m]] + - curr_pixel - threshold) elif bins[m] == 'd': - sum_d += curr_pixel - image[i + RP[m], j + CP[m]] - threshold + sum_d = (sum_d + curr_pixel - image[i + RP[m], j + + CP[m]] - threshold) # Finding the response of the corner if sum_d > sum_b: - corner_response[i, j] = sum_d + return sum_d else: - corner_response[i, j] = sum_b + return sum_b else: consecutive_count = 0 + return 0 def _corner_fast(double[:, ::1] image, int n, double threshold): @@ -121,7 +127,8 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): cdef int speed_sum_b, speed_sum_d cdef int sp cdef double current_pixel - cdef double[:, ::1] corner_response = np.zeros((rows, cols), dtype=np.double) + cdef double[:, ::1] corner_response = np.zeros((rows, cols), + dtype=np.double) cdef double circle_intensity @@ -154,9 +161,13 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): if speed_sum_d < 3 and speed_sum_b < 3: continue - _get_corner_response(image, i, j, bins, 'b', n, threshold, corner_response) + corner_response[i, j] = _get_fast_corner_response(image, i, j, + bins, 'b', n, + threshold) if corner_response[i, j] == 0: - _get_corner_response(image, i, j, bins, 'd', n, threshold, corner_response) + corner_response[i, j] = _get_fast_corner_response(image, i, j, + bins, 'd', + n, threshold) return np.asarray(corner_response) From e06415929b3ff122b193d1c70c278878a8e82133 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 22 Aug 2013 17:57:30 +0530 Subject: [PATCH 137/577] Returning the corner response --- skimage/feature/corner.py | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 5525a8b3..0156dcb4 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -547,7 +547,7 @@ def corner_peaks(image, min_distance=10, threshold_abs=0, threshold_rel=0.1, return peaks -def corner_fast(image, n=12, threshold=0.15, non_max_shape=(3, 3)): +def corner_fast(image, n=12, threshold=0.15): """Extract FAST corners for a given image. @@ -564,9 +564,6 @@ def corner_fast(image, n=12, threshold=0.15, non_max_shape=(3, 3)): Threshold used in deciding whether the pixels on the circle are brighter, darker or similar w.r.t. the test pixel. Decrease the threshold when more corners are desired and vice-versa. - non_max_shape : tuple of two odd int - Represents the area in which Non-maximal suppression is applied. - By default, a 3 x 3 area is used. Returns ------- @@ -586,12 +583,4 @@ def corner_fast(image, n=12, threshold=0.15, non_max_shape=(3, 3)): image = img_as_float(image) image = np.ascontiguousarray(image) - corner_response = _corner_fast(image, n, threshold) - - # Non-maximal Suppression - corner_zero_mask = corner_response != 0 - maximas = (maximum_filter(corner_response, non_max_shape) == corner_response) & corner_zero_mask - x, y = np.where(maximas == True) - - corners = np.squeeze(np.dstack((x, y))) - return corners + return _corner_fast(image, n, threshold) From 3a37505d228bed337698e97c433dea96052cd388 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 22 Aug 2013 20:06:11 +0530 Subject: [PATCH 138/577] More optimizations --- skimage/feature/corner_cy.pyx | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 37b26a8c..1da25907 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -89,7 +89,8 @@ cdef int[:] CP = (np.round(3 * np.cos(2 * np.pi * np.arange(16, dtype=np.double) cdef inline _get_fast_corner_response(double[:, ::1] image, Py_ssize_t i, Py_ssize_t j, char[:] bins, char check_state, int n, - double threshold): + double threshold, + double[:] circle_intensities): cdef int consecutive_count = 0 cdef double sum_b = 0 cdef double sum_d = 0 @@ -101,11 +102,11 @@ cdef inline _get_fast_corner_response(double[:, ::1] image, Py_ssize_t i, if consecutive_count == n: for m in range(16): if bins[m] == 'b': - sum_b = (sum_b + image[i + RP[m], j + CP[m]] + sum_b = (sum_b + circle_intensities[m] - curr_pixel - threshold) elif bins[m] == 'd': - sum_d = (sum_d + curr_pixel - image[i + RP[m], j - + CP[m]] - threshold) + sum_d = (sum_d + curr_pixel - circle_intensities[m] + - threshold) # Finding the response of the corner if sum_d > sum_b: return sum_d @@ -127,10 +128,11 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): cdef int speed_sum_b, speed_sum_d cdef int sp cdef double current_pixel + cdef double lower_threshold, upper_threshold cdef double[:, ::1] corner_response = np.zeros((rows, cols), dtype=np.double) - cdef double circle_intensity + cdef double[:] circle_intensities = np.zeros(16, dtype=np.double) for i in range(3, rows - 3): for j in range(3, cols - 3): @@ -138,13 +140,15 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): current_pixel = image[i, j] speed_sum_b = 0 speed_sum_d = 0 + lower_threshold = current_pixel - threshold + upper_threshold = current_pixel + threshold for k in range(16): - circle_intensity = image[i + RP[k], j + CP[k]] - if circle_intensity > current_pixel + threshold: + circle_intensities[k] = image[i + RP[k], j + CP[k]] + if circle_intensities[k] > upper_threshold: # Brighter pixel bins[k] = 'b' - elif circle_intensity < current_pixel - threshold: + elif circle_intensities[k] < lower_threshold: # Darker pixel bins[k] = 'd' else: @@ -163,11 +167,13 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): corner_response[i, j] = _get_fast_corner_response(image, i, j, bins, 'b', n, - threshold) + threshold, + circle_intensities) if corner_response[i, j] == 0: corner_response[i, j] = _get_fast_corner_response(image, i, j, bins, 'd', - n, threshold) + n, threshold, + circle_intensities) return np.asarray(corner_response) From 97f0a3886c0b2ee0b79ea6defe4b4c0ba5a6c349 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 23 Aug 2013 22:39:11 +0200 Subject: [PATCH 139/577] Fix some performance regressions in Cython implementation of FAST --- skimage/feature/corner_cy.pyx | 36 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 1da25907..60e4cdbf 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -82,22 +82,18 @@ def corner_moravec(image, Py_ssize_t window_size=1): return np.asarray(out) -cdef int[:] RP = (np.round(3 * np.sin(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) -cdef int[:] CP = (np.round(3 * np.cos(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) - - -cdef inline _get_fast_corner_response(double[:, ::1] image, Py_ssize_t i, - Py_ssize_t j, char[:] bins, - char check_state, int n, - double threshold, - double[:] circle_intensities): +cdef inline double _get_fast_corner_response(double[:, ::1] image, + Py_ssize_t i, Py_ssize_t j, + char[:] bins, char state, int n, + double threshold, + double[:] circle_intensities): cdef int consecutive_count = 0 cdef double sum_b = 0 cdef double sum_d = 0 cdef double curr_pixel = image[i, j] cdef Py_ssize_t l, m for l in range(15 + n): - if bins[l % 16] == check_state: + if bins[l % 16] == state: consecutive_count += 1 if consecutive_count == n: for m in range(16): @@ -132,6 +128,10 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): cdef double[:, ::1] corner_response = np.zeros((rows, cols), dtype=np.double) + cdef char[:] rp = np.array([-3, -3, -2, -1, 0, 1, 2, 3, 3, 3, 2, 1, 0, + -1, -2, -1, -3], dtype=np.int8) + cdef char[:] cp = np.array([0, 1, 2, 3, 3, 3, 2, 1, 0, -1, -2, -3, + -3, -3, -2, -3], dtype=np.int8) cdef double[:] circle_intensities = np.zeros(16, dtype=np.double) for i in range(3, rows - 3): @@ -144,7 +144,7 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): upper_threshold = current_pixel + threshold for k in range(16): - circle_intensities[k] = image[i + RP[k], j + CP[k]] + circle_intensities[k] = image[i + rp[k], j + cp[k]] if circle_intensities[k] > upper_threshold: # Brighter pixel bins[k] = 'b' @@ -165,15 +165,13 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): if speed_sum_d < 3 and speed_sum_b < 3: continue - corner_response[i, j] = _get_fast_corner_response(image, i, j, - bins, 'b', n, - threshold, - circle_intensities) + corner_response[i, j] = \ + _get_fast_corner_response(image, i, j, bins, 'b', n, + threshold, circle_intensities) if corner_response[i, j] == 0: - corner_response[i, j] = _get_fast_corner_response(image, i, j, - bins, 'd', - n, threshold, - circle_intensities) + corner_response[i, j] = \ + _get_fast_corner_response(image, i, j, bins, 'd', n, + threshold, circle_intensities) return np.asarray(corner_response) From 2e0882994acd4ea429218c970bbcd2d8bc670f03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 24 Aug 2013 08:51:09 +0200 Subject: [PATCH 140/577] Fix some performance regressions in Cython implementation of FAST --- skimage/feature/corner_cy.pyx | 80 +++++++++++++++-------------------- 1 file changed, 35 insertions(+), 45 deletions(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 60e4cdbf..248a3165 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -82,66 +82,51 @@ def corner_moravec(image, Py_ssize_t window_size=1): return np.asarray(out) -cdef inline double _get_fast_corner_response(double[:, ::1] image, - Py_ssize_t i, Py_ssize_t j, - char[:] bins, char state, int n, - double threshold, - double[:] circle_intensities): - cdef int consecutive_count = 0 - cdef double sum_b = 0 - cdef double sum_d = 0 - cdef double curr_pixel = image[i, j] +cdef inline double _corner_fast_response(double curr_pixel, + double* circle_intensities, + char* bins, char state, char n): + cdef char consecutive_count = 0 + cdef double curr_response cdef Py_ssize_t l, m for l in range(15 + n): if bins[l % 16] == state: consecutive_count += 1 if consecutive_count == n: + curr_response = 0 for m in range(16): - if bins[m] == 'b': - sum_b = (sum_b + circle_intensities[m] - - curr_pixel - threshold) - elif bins[m] == 'd': - sum_d = (sum_d + curr_pixel - circle_intensities[m] - - threshold) - # Finding the response of the corner - if sum_d > sum_b: - return sum_d - else: - return sum_b + curr_response += abs(circle_intensities[m] - curr_pixel) + return curr_response else: consecutive_count = 0 return 0 -def _corner_fast(double[:, ::1] image, int n, double threshold): +def _corner_fast(double[:, ::1] image, char n, double threshold): cdef Py_ssize_t rows = image.shape[0] cdef Py_ssize_t cols = image.shape[1] - cdef Py_ssize_t i, j, k, l, m + cdef Py_ssize_t i, j, k - cdef char[:] bins = np.zeros(16, dtype=np.uint8) - cdef int speed_sum_b, speed_sum_d - cdef int sp - cdef double current_pixel + cdef char speed_sum_b, speed_sum_d + cdef double curr_pixel cdef double lower_threshold, upper_threshold - cdef double[:, ::1] corner_response = np.zeros((rows, cols), - dtype=np.double) + cdef double[:, ::1] corner_response = np.empty((rows, cols), + dtype=np.double) - cdef char[:] rp = np.array([-3, -3, -2, -1, 0, 1, 2, 3, 3, 3, 2, 1, 0, - -1, -2, -1, -3], dtype=np.int8) - cdef char[:] cp = np.array([0, 1, 2, 3, 3, 3, 2, 1, 0, -1, -2, -3, - -3, -3, -2, -3], dtype=np.int8) - cdef double[:] circle_intensities = np.zeros(16, dtype=np.double) + cdef char *rp = [-3, -3, -2, -1, 0, 1, 2, 3, 3, 3, 2, 1, 0, -1, -2, -1, -3] + cdef char *cp = [0, 1, 2, 3, 3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -2, -3] + cdef char bins[16] + cdef double circle_intensities[16] + + cdef double curr_response for i in range(3, rows - 3): for j in range(3, cols - 3): - current_pixel = image[i, j] - speed_sum_b = 0 - speed_sum_d = 0 - lower_threshold = current_pixel - threshold - upper_threshold = current_pixel + threshold + curr_pixel = image[i, j] + lower_threshold = curr_pixel - threshold + upper_threshold = curr_pixel + threshold for k in range(16): circle_intensities[k] = image[i + rp[k], j + cp[k]] @@ -157,21 +142,26 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): # High speed test for n>=12 if n >= 12: + speed_sum_b = 0 + speed_sum_d = 0 for k in range(0, 16, 4): if bins[k] == 'b': speed_sum_b += 1 elif bins[k] == 'd': speed_sum_d += 1 if speed_sum_d < 3 and speed_sum_b < 3: + corner_response[i, j] = 0 continue - corner_response[i, j] = \ - _get_fast_corner_response(image, i, j, bins, 'b', n, - threshold, circle_intensities) + curr_response = \ + _corner_fast_response(curr_pixel, circle_intensities, + bins, 'b', n) - if corner_response[i, j] == 0: - corner_response[i, j] = \ - _get_fast_corner_response(image, i, j, bins, 'd', n, - threshold, circle_intensities) + if curr_response == 0: + curr_response = \ + _corner_fast_response(curr_pixel, circle_intensities, + bins, 'd', n) + + corner_response[i, j] = curr_response return np.asarray(corner_response) From aeef8ef3e7225ec777215b23d7bacf8856ff86bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 24 Aug 2013 17:27:28 +0200 Subject: [PATCH 141/577] Fix invalid circle coordinates --- skimage/feature/corner_cy.pyx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 248a3165..e2f2506f 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -114,8 +114,8 @@ def _corner_fast(double[:, ::1] image, char n, double threshold): cdef double[:, ::1] corner_response = np.empty((rows, cols), dtype=np.double) - cdef char *rp = [-3, -3, -2, -1, 0, 1, 2, 3, 3, 3, 2, 1, 0, -1, -2, -1, -3] - cdef char *cp = [0, 1, 2, 3, 3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -2, -3] + cdef char *rp = [0, 1, 2, 3, 3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -2, -1] + cdef char *cp = [3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -2, -1, 0, 1, 2, 3] cdef char bins[16] cdef double circle_intensities[16] From 63b47a7cb6d6aec233e96e92d57c0165f1f58888 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Fri, 16 Aug 2013 15:01:43 +0530 Subject: [PATCH 142/577] Quick initial implementation of ORB descriptor in Python --- skimage/feature/orb.py | 1 + 1 file changed, 1 insertion(+) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index d5189a32..009d1276 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -34,6 +34,7 @@ def descriptor_orb(image, keypoints, keypoints_angle): pr2 = steered_pos2[j][0] pc2 = steered_pos2[j][1] descriptors[i, j] = (image[pr1, pc1] < image[pr2, pc2]) + return descriptors From 8fd9a77a5afb1ccaf1cef281b56c3dd6ac4c19dd Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Sat, 17 Aug 2013 16:15:34 +0530 Subject: [PATCH 143/577] Quick Python implementation of FAST corner detector --- skimage/feature/fast.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 skimage/feature/fast.py diff --git a/skimage/feature/fast.py b/skimage/feature/fast.py new file mode 100644 index 00000000..6b6ae264 --- /dev/null +++ b/skimage/feature/fast.py @@ -0,0 +1,35 @@ +import numpy as np +from ..util import img_as_float + + +def corner_fast(image, n=9, threshold=0.15): + + image = np.squeeze(image) + if image.ndim != 2: + raise ValueError("Only 2-D gray-scale images supported.") + + image = img_as_float(image) + corner_mask = np.zeros(image.shape, dtype=bool) + + test_pixels = np.asarray([[-3, 0], [-3, 1], [-2, 2], [-1, 3], [0, 3], + [1, 3], [2, 2], [3, 1], [3, 0], [3, -1], + [2, -2], [1, -3], [0, -3], [-1, -3], + [-2, -2], [-1, -3]]) + + # TODO : Outsource to Cython + for i in range(3, image.shape[0] - 3): + for j in range(3, image.shape[1] - 3): + test_x = i + test_pixels[:, 0] + test_y = j + test_pixels[:, 1] + intensities = image[test_x, test_y] + low = intensities < image[i, j] - threshold + high = intensities > image[i, j] + threshold + low = np.concatenate(low, low) + high = np.concatenate(high, high) + # How to check if a sequence n * [True] exists in low/high ? + # if n * [True] in low or n * True in high: + # corner_mask[i, j] = True + + corner_x, corner_y = np.where(corner_mask == True) + corners = np.dstack(corner_x, corner_y) + return corners From 6b3751a52f9b580592b03c6874819e565b5728c0 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Tue, 20 Aug 2013 00:57:12 +0530 Subject: [PATCH 144/577] Implemented FAST corner detector --- bento.info | 3 ++ skimage/feature/__init__.py | 1 + skimage/feature/fast.py | 37 ++++++----------- skimage/feature/fast_cy.pyx | 82 +++++++++++++++++++++++++++++++++++++ skimage/feature/setup.py | 3 ++ 5 files changed, 101 insertions(+), 25 deletions(-) create mode 100644 skimage/feature/fast_cy.pyx diff --git a/bento.info b/bento.info index 30367057..ae547267 100644 --- a/bento.info +++ b/bento.info @@ -102,6 +102,9 @@ Library: Extension: skimage.feature.corner_cy Sources: skimage/feature/corner_cy.pyx + Extension: skimage.feature.fast_cy + Sources: + skimage/feature/fast_cy.pyx Extension: skimage.feature._texture Sources: skimage/feature/_texture.pyx diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index c16edb87..c0adb50d 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -10,6 +10,7 @@ from .template import match_template from ._brief import brief, match_keypoints_brief from .util import pairwise_hamming_distance from .censure import keypoints_censure +from .fast import corner_fast __all__ = ['daisy', 'hog', diff --git a/skimage/feature/fast.py b/skimage/feature/fast.py index 6b6ae264..8194093e 100644 --- a/skimage/feature/fast.py +++ b/skimage/feature/fast.py @@ -1,35 +1,22 @@ import numpy as np -from ..util import img_as_float +from scipy.ndimage.filters import maximum_filter + +from fast_cy import _corner_fast -def corner_fast(image, n=9, threshold=0.15): +def corner_fast(image, n=12, threshold=0.15): image = np.squeeze(image) if image.ndim != 2: raise ValueError("Only 2-D gray-scale images supported.") - image = img_as_float(image) - corner_mask = np.zeros(image.shape, dtype=bool) + image = np.ascontiguousarray(image, dtype=np.double) + corner = _corner_fast(image, n, threshold) - test_pixels = np.asarray([[-3, 0], [-3, 1], [-2, 2], [-1, 3], [0, 3], - [1, 3], [2, 2], [3, 1], [3, 0], [3, -1], - [2, -2], [1, -3], [0, -3], [-1, -3], - [-2, -2], [-1, -3]]) + corner_zero_mask = corner != 0 + c, d = np.nonzero(corner) - # TODO : Outsource to Cython - for i in range(3, image.shape[0] - 3): - for j in range(3, image.shape[1] - 3): - test_x = i + test_pixels[:, 0] - test_y = j + test_pixels[:, 1] - intensities = image[test_x, test_y] - low = intensities < image[i, j] - threshold - high = intensities > image[i, j] + threshold - low = np.concatenate(low, low) - high = np.concatenate(high, high) - # How to check if a sequence n * [True] exists in low/high ? - # if n * [True] in low or n * True in high: - # corner_mask[i, j] = True - - corner_x, corner_y = np.where(corner_mask == True) - corners = np.dstack(corner_x, corner_y) - return corners + maximas = (maximum_filter(corner, (3, 3)) == corner) & corner_zero_mask + x, y = np.where(maximas == True) + + return np.squeeze(np.dstack((x, y))) diff --git a/skimage/feature/fast_cy.pyx b/skimage/feature/fast_cy.pyx new file mode 100644 index 00000000..a7af63c2 --- /dev/null +++ b/skimage/feature/fast_cy.pyx @@ -0,0 +1,82 @@ +#cython: cdivision=True +#cython: boundscheck=False +#cython: nonecheck=False +#cython: wraparound=False + +import numpy as np + +from ..util import img_as_float + + +def _corner_fast(double[:, ::1] image, int n, double threshold): + + cdef int[:] rp = (np.round(3 * np.sin(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) + cdef int[:] cp = (np.round(3 * np.cos(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) + + cdef Py_ssize_t rows = image.shape[0] + cdef Py_ssize_t cols = image.shape[1] + + cdef Py_ssize_t i, j, k, l, m + + cdef char[:] bins + cdef int consecutive_count = 0 + cdef double sum_b + cdef double sum_d + cdef double[:, ::1] corner = np.zeros((rows, cols), dtype=np.double) + + cdef double circle_intensity + + for i in range(3, rows - 3): + for j in range(3, cols - 3): + + bins = np.zeros(16, dtype='S1') + sum_b = 0 + sum_d = 0 + + for k in range(16): + circle_intensity = image[i + rp[k], j + cp[k]] + if circle_intensity > image[i, j] + threshold: + bins[k] = 'b' + elif circle_intensity < image[i, j] - threshold: + bins[k] = 'd' + else: + bins[k] = 's' + + consecutive_count = 0 + for l in range(15 + n): + if bins[l % 16] == 'b': + consecutive_count += 1 + if consecutive_count == n: + for m in range(16): + if bins[m] == 'b': + sum_b += image[i + rp[m], j + cp[m]] - image[i, j] - threshold + elif bins[m] == 'd': + sum_d += image[i, j] - image[i + rp[m], j + cp[m]] - threshold + if sum_d > sum_b: + corner[i, j] = sum_d + else: + corner[i, j] = sum_b + break + else: + consecutive_count = 0 + + if corner[i, j] == 0: + consecutive_count = 0 + for l in range(15 + n): + if bins[l % 16] == 'd': + consecutive_count += 1 + if consecutive_count == n: + for m in range(16): + if bins[m] == 'b': + sum_b += image[i + rp[m], j + cp[m]] - image[i, j] - threshold + elif bins[m] == 'd': + sum_d += image[i, j] - image[i + rp[m], j + cp[m]] - threshold + if sum_d > sum_b: + corner[i, j] = sum_d + else: + corner[i, j] = sum_b + break + else: + consecutive_count = 0 + + return np.asarray(corner) diff --git a/skimage/feature/setup.py b/skimage/feature/setup.py index 7df64c32..039d234f 100644 --- a/skimage/feature/setup.py +++ b/skimage/feature/setup.py @@ -14,6 +14,7 @@ def configuration(parent_package='', top_path=None): cython(['corner_cy.pyx'], working_path=base_path) cython(['censure_cy.pyx'], working_path=base_path) + cython(['fast_cy.pyx'], working_path=base_path) cython(['_brief_cy.pyx'], working_path=base_path) cython(['_texture.pyx'], working_path=base_path) cython(['_template.pyx'], working_path=base_path) @@ -22,6 +23,8 @@ def configuration(parent_package='', top_path=None): include_dirs=[get_numpy_include_dirs()]) config.add_extension('censure_cy', sources=['censure_cy.c'], include_dirs=[get_numpy_include_dirs()]) + config.add_extension('fast_cy', sources=['fast_cy.c'], + include_dirs=[get_numpy_include_dirs()]) config.add_extension('_brief_cy', sources=['_brief_cy.c'], include_dirs=[get_numpy_include_dirs()]) config.add_extension('_texture', sources=['_texture.c'], From 94e4a88712bb006eeffc464dbe8501bbce91f4df Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Tue, 20 Aug 2013 01:24:29 +0530 Subject: [PATCH 145/577] Adding docstrings and commenting the code --- skimage/feature/fast.py | 40 +++++++++++++++++++++++++++++++------ skimage/feature/fast_cy.pyx | 21 +++++++++++-------- 2 files changed, 47 insertions(+), 14 deletions(-) diff --git a/skimage/feature/fast.py b/skimage/feature/fast.py index 8194093e..36a4c7e1 100644 --- a/skimage/feature/fast.py +++ b/skimage/feature/fast.py @@ -6,17 +6,45 @@ from fast_cy import _corner_fast def corner_fast(image, n=12, threshold=0.15): + """Extract FAST corners for a given image. + + Parameters + ---------- + image : 2D ndarray + Input image. + n : integer + Number of consecutive pixels out of 16 pixels on the circle that + should be brighter or darker with respect to test pixel above the + `threshold` so as to classify the test pixel as a FAST corner. Also + stands for the n in `FAST-n` corner detector. + threshold : float + Threshold used in deciding whether the pixels on the circle are + brighter, darker or similar to the test pixel. Decrease the threshold + when more corners are desired and vice-versa. + + Returns + ------- + corners : (N, 2) ndarray + Location i.e. (row, col) of extracted FAST corners. + + References + ---------- + .. [1] Edward Rosten and Tom Drummond + "Machine Learning for high-speed corner detection", + http://www.edwardrosten.com/work/rosten_2006_machine.pdf + + """ image = np.squeeze(image) if image.ndim != 2: raise ValueError("Only 2-D gray-scale images supported.") image = np.ascontiguousarray(image, dtype=np.double) - corner = _corner_fast(image, n, threshold) + corner_response = _corner_fast(image, n, threshold) - corner_zero_mask = corner != 0 - c, d = np.nonzero(corner) - - maximas = (maximum_filter(corner, (3, 3)) == corner) & corner_zero_mask + # Non-maximal Suppression + corner_zero_mask = corner_response != 0 + maximas = (maximum_filter(corner_response, (3, 3)) == corner_response) & corner_zero_mask x, y = np.where(maximas == True) - return np.squeeze(np.dstack((x, y))) + corners = np.squeeze(np.dstack((x, y))) + return corners diff --git a/skimage/feature/fast_cy.pyx b/skimage/feature/fast_cy.pyx index a7af63c2..d80aa318 100644 --- a/skimage/feature/fast_cy.pyx +++ b/skimage/feature/fast_cy.pyx @@ -8,7 +8,7 @@ import numpy as np from ..util import img_as_float -def _corner_fast(double[:, ::1] image, int n, double threshold): +def _corner_response_fast(double[:, ::1] image, int n, double threshold): cdef int[:] rp = (np.round(3 * np.sin(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) cdef int[:] cp = (np.round(3 * np.cos(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) @@ -22,7 +22,7 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): cdef int consecutive_count = 0 cdef double sum_b cdef double sum_d - cdef double[:, ::1] corner = np.zeros((rows, cols), dtype=np.double) + cdef double[:, ::1] corner_response = np.zeros((rows, cols), dtype=np.double) cdef double circle_intensity @@ -36,10 +36,13 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): for k in range(16): circle_intensity = image[i + rp[k], j + cp[k]] if circle_intensity > image[i, j] + threshold: + # Brighter pixel bins[k] = 'b' elif circle_intensity < image[i, j] - threshold: + # Darker pixel bins[k] = 'd' else: + # Similar pixel bins[k] = 's' consecutive_count = 0 @@ -52,15 +55,16 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): sum_b += image[i + rp[m], j + cp[m]] - image[i, j] - threshold elif bins[m] == 'd': sum_d += image[i, j] - image[i + rp[m], j + cp[m]] - threshold + # Finding the response of the corner if sum_d > sum_b: - corner[i, j] = sum_d + corner_response[i, j] = sum_d else: - corner[i, j] = sum_b + corner_response[i, j] = sum_b break else: consecutive_count = 0 - if corner[i, j] == 0: + if corner_response[i, j] == 0: consecutive_count = 0 for l in range(15 + n): if bins[l % 16] == 'd': @@ -71,12 +75,13 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): sum_b += image[i + rp[m], j + cp[m]] - image[i, j] - threshold elif bins[m] == 'd': sum_d += image[i, j] - image[i + rp[m], j + cp[m]] - threshold + # Finding the response of the corner if sum_d > sum_b: - corner[i, j] = sum_d + corner_response[i, j] = sum_d else: - corner[i, j] = sum_b + corner_response[i, j] = sum_b break else: consecutive_count = 0 - return np.asarray(corner) + return np.asarray(corner_response) From 462a8f84d56c76406a994b9766c657c52cbdd7d0 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Tue, 20 Aug 2013 02:33:29 +0530 Subject: [PATCH 146/577] Adding high speed test for n>=12 --- skimage/feature/fast_cy.pyx | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/skimage/feature/fast_cy.pyx b/skimage/feature/fast_cy.pyx index d80aa318..43ffee08 100644 --- a/skimage/feature/fast_cy.pyx +++ b/skimage/feature/fast_cy.pyx @@ -8,7 +8,7 @@ import numpy as np from ..util import img_as_float -def _corner_response_fast(double[:, ::1] image, int n, double threshold): +def _corner_fast(double[:, ::1] image, int n, double threshold): cdef int[:] rp = (np.round(3 * np.sin(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) cdef int[:] cp = (np.round(3 * np.cos(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) @@ -19,7 +19,8 @@ def _corner_response_fast(double[:, ::1] image, int n, double threshold): cdef Py_ssize_t i, j, k, l, m cdef char[:] bins - cdef int consecutive_count = 0 + cdef int consecutive_count, speed_sum_b, speed_sum_d + cdef int sp cdef double sum_b cdef double sum_d cdef double[:, ::1] corner_response = np.zeros((rows, cols), dtype=np.double) @@ -30,6 +31,8 @@ def _corner_response_fast(double[:, ::1] image, int n, double threshold): for j in range(3, cols - 3): bins = np.zeros(16, dtype='S1') + speed_sum_b = 0 + speed_sum_d = 0 sum_b = 0 sum_d = 0 @@ -45,6 +48,16 @@ def _corner_response_fast(double[:, ::1] image, int n, double threshold): # Similar pixel bins[k] = 's' + # High speed test for n>=12 + if n >= 12: + for k in range(4): + if bins[4 * k] == 'b': + speed_sum_b += 1 + elif bins[4 * k] == 'd': + speed_sum_d += 1 + if speed_sum_d < 3 and speed_sum_b < 3: + continue + consecutive_count = 0 for l in range(15 + n): if bins[l % 16] == 'b': From 5160c3ca61d1f5987c6b93d3136ab2ad96c0e857 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 21 Aug 2013 01:19:31 +0530 Subject: [PATCH 147/577] Making various minor optimizations --- skimage/feature/fast.py | 6 +++--- skimage/feature/fast_cy.pyx | 28 ++++++++++++---------------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/skimage/feature/fast.py b/skimage/feature/fast.py index 36a4c7e1..4a7b84e6 100644 --- a/skimage/feature/fast.py +++ b/skimage/feature/fast.py @@ -12,15 +12,15 @@ def corner_fast(image, n=12, threshold=0.15): ---------- image : 2D ndarray Input image. - n : integer + n : int Number of consecutive pixels out of 16 pixels on the circle that should be brighter or darker with respect to test pixel above the `threshold` so as to classify the test pixel as a FAST corner. Also stands for the n in `FAST-n` corner detector. threshold : float Threshold used in deciding whether the pixels on the circle are - brighter, darker or similar to the test pixel. Decrease the threshold - when more corners are desired and vice-versa. + brighter, darker or similar w.r.t. the test pixel. Decrease the + threshold when more corners are desired and vice-versa. Returns ------- diff --git a/skimage/feature/fast_cy.pyx b/skimage/feature/fast_cy.pyx index 43ffee08..d2292eac 100644 --- a/skimage/feature/fast_cy.pyx +++ b/skimage/feature/fast_cy.pyx @@ -5,11 +5,8 @@ import numpy as np -from ..util import img_as_float - def _corner_fast(double[:, ::1] image, int n, double threshold): - cdef int[:] rp = (np.round(3 * np.sin(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) cdef int[:] cp = (np.round(3 * np.cos(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) @@ -18,11 +15,10 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): cdef Py_ssize_t i, j, k, l, m - cdef char[:] bins + cdef char[:] bins = np.zeros(16, dtype=np.uint8) cdef int consecutive_count, speed_sum_b, speed_sum_d cdef int sp - cdef double sum_b - cdef double sum_d + cdef double sum_b, sum_d, current_pixel cdef double[:, ::1] corner_response = np.zeros((rows, cols), dtype=np.double) cdef double circle_intensity @@ -30,7 +26,7 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): for i in range(3, rows - 3): for j in range(3, cols - 3): - bins = np.zeros(16, dtype='S1') + current_pixel = image[i, j] speed_sum_b = 0 speed_sum_d = 0 sum_b = 0 @@ -38,10 +34,10 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): for k in range(16): circle_intensity = image[i + rp[k], j + cp[k]] - if circle_intensity > image[i, j] + threshold: + if circle_intensity > current_pixel + threshold: # Brighter pixel bins[k] = 'b' - elif circle_intensity < image[i, j] - threshold: + elif circle_intensity < current_pixel - threshold: # Darker pixel bins[k] = 'd' else: @@ -50,10 +46,10 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): # High speed test for n>=12 if n >= 12: - for k in range(4): - if bins[4 * k] == 'b': + for k in range(0, 16, 4): + if bins[k] == 'b': speed_sum_b += 1 - elif bins[4 * k] == 'd': + elif bins[k] == 'd': speed_sum_d += 1 if speed_sum_d < 3 and speed_sum_b < 3: continue @@ -65,9 +61,9 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): if consecutive_count == n: for m in range(16): if bins[m] == 'b': - sum_b += image[i + rp[m], j + cp[m]] - image[i, j] - threshold + sum_b += image[i + rp[m], j + cp[m]] - current_pixel - threshold elif bins[m] == 'd': - sum_d += image[i, j] - image[i + rp[m], j + cp[m]] - threshold + sum_d += current_pixel - image[i + rp[m], j + cp[m]] - threshold # Finding the response of the corner if sum_d > sum_b: corner_response[i, j] = sum_d @@ -85,9 +81,9 @@ def _corner_fast(double[:, ::1] image, int n, double threshold): if consecutive_count == n: for m in range(16): if bins[m] == 'b': - sum_b += image[i + rp[m], j + cp[m]] - image[i, j] - threshold + sum_b += image[i + rp[m], j + cp[m]] - current_pixel - threshold elif bins[m] == 'd': - sum_d += image[i, j] - image[i + rp[m], j + cp[m]] - threshold + sum_d += current_pixel - image[i + rp[m], j + cp[m]] - threshold # Finding the response of the corner if sum_d > sum_b: corner_response[i, j] = sum_d From b03053a159831635496d17176b6d17ac68782981 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 21 Aug 2013 01:44:04 +0530 Subject: [PATCH 148/577] Transferring all the FAST code to corner.py and corner_cy.pyx --- bento.info | 3 --- skimage/feature/__init__.py | 1 - skimage/feature/setup.py | 3 --- 3 files changed, 7 deletions(-) diff --git a/bento.info b/bento.info index ae547267..30367057 100644 --- a/bento.info +++ b/bento.info @@ -102,9 +102,6 @@ Library: Extension: skimage.feature.corner_cy Sources: skimage/feature/corner_cy.pyx - Extension: skimage.feature.fast_cy - Sources: - skimage/feature/fast_cy.pyx Extension: skimage.feature._texture Sources: skimage/feature/_texture.pyx diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index c0adb50d..c16edb87 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -10,7 +10,6 @@ from .template import match_template from ._brief import brief, match_keypoints_brief from .util import pairwise_hamming_distance from .censure import keypoints_censure -from .fast import corner_fast __all__ = ['daisy', 'hog', diff --git a/skimage/feature/setup.py b/skimage/feature/setup.py index 039d234f..7df64c32 100644 --- a/skimage/feature/setup.py +++ b/skimage/feature/setup.py @@ -14,7 +14,6 @@ def configuration(parent_package='', top_path=None): cython(['corner_cy.pyx'], working_path=base_path) cython(['censure_cy.pyx'], working_path=base_path) - cython(['fast_cy.pyx'], working_path=base_path) cython(['_brief_cy.pyx'], working_path=base_path) cython(['_texture.pyx'], working_path=base_path) cython(['_template.pyx'], working_path=base_path) @@ -23,8 +22,6 @@ def configuration(parent_package='', top_path=None): include_dirs=[get_numpy_include_dirs()]) config.add_extension('censure_cy', sources=['censure_cy.c'], include_dirs=[get_numpy_include_dirs()]) - config.add_extension('fast_cy', sources=['fast_cy.c'], - include_dirs=[get_numpy_include_dirs()]) config.add_extension('_brief_cy', sources=['_brief_cy.c'], include_dirs=[get_numpy_include_dirs()]) config.add_extension('_texture', sources=['_texture.c'], From 0b3414f0575a873b308d721b9d967ab06e20b6d1 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 21 Aug 2013 18:59:17 +0530 Subject: [PATCH 149/577] Using inline function in corner_cy._corner_fast --- skimage/feature/corner_cy.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index e2f2506f..3c4f2f19 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -82,6 +82,7 @@ def corner_moravec(image, Py_ssize_t window_size=1): return np.asarray(out) +<<<<<<< HEAD cdef inline double _corner_fast_response(double curr_pixel, double* circle_intensities, char* bins, char state, char n): @@ -113,7 +114,6 @@ def _corner_fast(double[:, ::1] image, char n, double threshold): cdef double lower_threshold, upper_threshold cdef double[:, ::1] corner_response = np.empty((rows, cols), dtype=np.double) - cdef char *rp = [0, 1, 2, 3, 3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -2, -1] cdef char *cp = [3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -2, -1, 0, 1, 2, 3] cdef char bins[16] From 967524b71e241b97d8ce18c5441b68911b2a061c Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 21 Aug 2013 23:02:41 +0530 Subject: [PATCH 150/577] Deleting FAST files --- skimage/feature/fast.py | 50 ------------------- skimage/feature/fast_cy.pyx | 96 ------------------------------------- 2 files changed, 146 deletions(-) delete mode 100644 skimage/feature/fast.py delete mode 100644 skimage/feature/fast_cy.pyx diff --git a/skimage/feature/fast.py b/skimage/feature/fast.py deleted file mode 100644 index 4a7b84e6..00000000 --- a/skimage/feature/fast.py +++ /dev/null @@ -1,50 +0,0 @@ -import numpy as np -from scipy.ndimage.filters import maximum_filter - -from fast_cy import _corner_fast - - -def corner_fast(image, n=12, threshold=0.15): - - """Extract FAST corners for a given image. - - Parameters - ---------- - image : 2D ndarray - Input image. - n : int - Number of consecutive pixels out of 16 pixels on the circle that - should be brighter or darker with respect to test pixel above the - `threshold` so as to classify the test pixel as a FAST corner. Also - stands for the n in `FAST-n` corner detector. - threshold : float - Threshold used in deciding whether the pixels on the circle are - brighter, darker or similar w.r.t. the test pixel. Decrease the - threshold when more corners are desired and vice-versa. - - Returns - ------- - corners : (N, 2) ndarray - Location i.e. (row, col) of extracted FAST corners. - - References - ---------- - .. [1] Edward Rosten and Tom Drummond - "Machine Learning for high-speed corner detection", - http://www.edwardrosten.com/work/rosten_2006_machine.pdf - - """ - image = np.squeeze(image) - if image.ndim != 2: - raise ValueError("Only 2-D gray-scale images supported.") - - image = np.ascontiguousarray(image, dtype=np.double) - corner_response = _corner_fast(image, n, threshold) - - # Non-maximal Suppression - corner_zero_mask = corner_response != 0 - maximas = (maximum_filter(corner_response, (3, 3)) == corner_response) & corner_zero_mask - x, y = np.where(maximas == True) - - corners = np.squeeze(np.dstack((x, y))) - return corners diff --git a/skimage/feature/fast_cy.pyx b/skimage/feature/fast_cy.pyx deleted file mode 100644 index d2292eac..00000000 --- a/skimage/feature/fast_cy.pyx +++ /dev/null @@ -1,96 +0,0 @@ -#cython: cdivision=True -#cython: boundscheck=False -#cython: nonecheck=False -#cython: wraparound=False - -import numpy as np - - -def _corner_fast(double[:, ::1] image, int n, double threshold): - cdef int[:] rp = (np.round(3 * np.sin(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) - cdef int[:] cp = (np.round(3 * np.cos(2 * np.pi * np.arange(16, dtype=np.double) / 16))).astype(np.int32) - - cdef Py_ssize_t rows = image.shape[0] - cdef Py_ssize_t cols = image.shape[1] - - cdef Py_ssize_t i, j, k, l, m - - cdef char[:] bins = np.zeros(16, dtype=np.uint8) - cdef int consecutive_count, speed_sum_b, speed_sum_d - cdef int sp - cdef double sum_b, sum_d, current_pixel - cdef double[:, ::1] corner_response = np.zeros((rows, cols), dtype=np.double) - - cdef double circle_intensity - - for i in range(3, rows - 3): - for j in range(3, cols - 3): - - current_pixel = image[i, j] - speed_sum_b = 0 - speed_sum_d = 0 - sum_b = 0 - sum_d = 0 - - for k in range(16): - circle_intensity = image[i + rp[k], j + cp[k]] - if circle_intensity > current_pixel + threshold: - # Brighter pixel - bins[k] = 'b' - elif circle_intensity < current_pixel - threshold: - # Darker pixel - bins[k] = 'd' - else: - # Similar pixel - bins[k] = 's' - - # High speed test for n>=12 - if n >= 12: - for k in range(0, 16, 4): - if bins[k] == 'b': - speed_sum_b += 1 - elif bins[k] == 'd': - speed_sum_d += 1 - if speed_sum_d < 3 and speed_sum_b < 3: - continue - - consecutive_count = 0 - for l in range(15 + n): - if bins[l % 16] == 'b': - consecutive_count += 1 - if consecutive_count == n: - for m in range(16): - if bins[m] == 'b': - sum_b += image[i + rp[m], j + cp[m]] - current_pixel - threshold - elif bins[m] == 'd': - sum_d += current_pixel - image[i + rp[m], j + cp[m]] - threshold - # Finding the response of the corner - if sum_d > sum_b: - corner_response[i, j] = sum_d - else: - corner_response[i, j] = sum_b - break - else: - consecutive_count = 0 - - if corner_response[i, j] == 0: - consecutive_count = 0 - for l in range(15 + n): - if bins[l % 16] == 'd': - consecutive_count += 1 - if consecutive_count == n: - for m in range(16): - if bins[m] == 'b': - sum_b += image[i + rp[m], j + cp[m]] - current_pixel - threshold - elif bins[m] == 'd': - sum_d += current_pixel - image[i + rp[m], j + cp[m]] - threshold - # Finding the response of the corner - if sum_d > sum_b: - corner_response[i, j] = sum_d - else: - corner_response[i, j] = sum_b - break - else: - consecutive_count = 0 - - return np.asarray(corner_response) From fc1d02e38af43b69a4db54480f6a7008dfbd1c3d Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 22 Aug 2013 00:01:15 +0530 Subject: [PATCH 151/577] Converting image to float --- skimage/feature/corner.py | 1 + 1 file changed, 1 insertion(+) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 0156dcb4..81db1c29 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -583,4 +583,5 @@ def corner_fast(image, n=12, threshold=0.15): image = img_as_float(image) image = np.ascontiguousarray(image) + return _corner_fast(image, n, threshold) From 2c47860c34eafdd686b3a939c51076cb016493e9 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 22 Aug 2013 00:37:34 +0530 Subject: [PATCH 152/577] Adding additional parameter for setting shape for Non-max suppression --- skimage/feature/corner.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 81db1c29..019b3174 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -547,7 +547,7 @@ def corner_peaks(image, min_distance=10, threshold_abs=0, threshold_rel=0.1, return peaks -def corner_fast(image, n=12, threshold=0.15): +def corner_fast(image, n=12, threshold=0.15, non_max_shape=(3, 3)): """Extract FAST corners for a given image. @@ -564,6 +564,9 @@ def corner_fast(image, n=12, threshold=0.15): Threshold used in deciding whether the pixels on the circle are brighter, darker or similar w.r.t. the test pixel. Decrease the threshold when more corners are desired and vice-versa. + non_max_shape : tuple of two odd int + Represents the area in which Non-maximal suppression is applied. + By default, a 3 x 3 area is used. Returns ------- @@ -583,5 +586,4 @@ def corner_fast(image, n=12, threshold=0.15): image = img_as_float(image) image = np.ascontiguousarray(image) - return _corner_fast(image, n, threshold) From 4f99aafa969056a3f51ff4fad9486b866870102e Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 22 Aug 2013 04:06:56 +0530 Subject: [PATCH 153/577] Wrapping lines; returning corner_response at a pixel --- skimage/feature/corner_cy.pyx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 3c4f2f19..d8c97f25 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -82,7 +82,6 @@ def corner_moravec(image, Py_ssize_t window_size=1): return np.asarray(out) -<<<<<<< HEAD cdef inline double _corner_fast_response(double curr_pixel, double* circle_intensities, char* bins, char state, char n): @@ -112,8 +111,9 @@ def _corner_fast(double[:, ::1] image, char n, double threshold): cdef char speed_sum_b, speed_sum_d cdef double curr_pixel cdef double lower_threshold, upper_threshold - cdef double[:, ::1] corner_response = np.empty((rows, cols), + cdef double[:, ::1] corner_response = np.zeros((rows, cols), dtype=np.double) + cdef char *rp = [0, 1, 2, 3, 3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -2, -1] cdef char *cp = [3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -2, -1, 0, 1, 2, 3] cdef char bins[16] @@ -150,7 +150,6 @@ def _corner_fast(double[:, ::1] image, char n, double threshold): elif bins[k] == 'd': speed_sum_d += 1 if speed_sum_d < 3 and speed_sum_b < 3: - corner_response[i, j] = 0 continue curr_response = \ From 4840dacfcd7e5c1172e6d124b92893c47740ede6 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 22 Aug 2013 17:57:30 +0530 Subject: [PATCH 154/577] Returning the corner response --- skimage/feature/corner.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 019b3174..0156dcb4 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -547,7 +547,7 @@ def corner_peaks(image, min_distance=10, threshold_abs=0, threshold_rel=0.1, return peaks -def corner_fast(image, n=12, threshold=0.15, non_max_shape=(3, 3)): +def corner_fast(image, n=12, threshold=0.15): """Extract FAST corners for a given image. @@ -564,9 +564,6 @@ def corner_fast(image, n=12, threshold=0.15, non_max_shape=(3, 3)): Threshold used in deciding whether the pixels on the circle are brighter, darker or similar w.r.t. the test pixel. Decrease the threshold when more corners are desired and vice-versa. - non_max_shape : tuple of two odd int - Represents the area in which Non-maximal suppression is applied. - By default, a 3 x 3 area is used. Returns ------- From da30925dd506ab4bb5e99d628a84025ad9daa62c Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 22 Aug 2013 20:06:11 +0530 Subject: [PATCH 155/577] More optimizations --- skimage/feature/corner_cy.pyx | 1 + 1 file changed, 1 insertion(+) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index d8c97f25..154c4987 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -116,6 +116,7 @@ def _corner_fast(double[:, ::1] image, char n, double threshold): cdef char *rp = [0, 1, 2, 3, 3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -2, -1] cdef char *cp = [3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -2, -1, 0, 1, 2, 3] + cdef char bins[16] cdef double circle_intensities[16] From c81fd76905f9ba9ebd42fc0c4dc12fdccd0fa216 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 23 Aug 2013 22:39:11 +0200 Subject: [PATCH 156/577] Fix some performance regressions in Cython implementation of FAST --- skimage/feature/corner_cy.pyx | 1 - 1 file changed, 1 deletion(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 154c4987..d8c97f25 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -116,7 +116,6 @@ def _corner_fast(double[:, ::1] image, char n, double threshold): cdef char *rp = [0, 1, 2, 3, 3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -2, -1] cdef char *cp = [3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -2, -1, 0, 1, 2, 3] - cdef char bins[16] cdef double circle_intensities[16] From 6576baae7d44d25a1259caed496d17d8c215eb2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 24 Aug 2013 08:51:09 +0200 Subject: [PATCH 157/577] Fix some performance regressions in Cython implementation of FAST --- skimage/feature/corner_cy.pyx | 1 + 1 file changed, 1 insertion(+) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index d8c97f25..154c4987 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -116,6 +116,7 @@ def _corner_fast(double[:, ::1] image, char n, double threshold): cdef char *rp = [0, 1, 2, 3, 3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -2, -1] cdef char *cp = [3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -2, -1, 0, 1, 2, 3] + cdef char bins[16] cdef double circle_intensities[16] From 985067d4d4f05553bef3042bea2ca34645bb83a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 24 Aug 2013 17:27:28 +0200 Subject: [PATCH 158/577] Fix invalid circle coordinates --- skimage/feature/corner_cy.pyx | 1 - 1 file changed, 1 deletion(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 154c4987..d8c97f25 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -116,7 +116,6 @@ def _corner_fast(double[:, ::1] image, char n, double threshold): cdef char *rp = [0, 1, 2, 3, 3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -2, -1] cdef char *cp = [3, 3, 2, 1, 0, -1, -2, -3, -3, -3, -2, -1, 0, 1, 2, 3] - cdef char bins[16] cdef double circle_intensities[16] From 91a51f909b263c2165ca8986cb7fddfcc67003e7 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Sun, 25 Aug 2013 03:02:24 +0530 Subject: [PATCH 159/577] More clear docs; Wiki reference; removing rebase leftover --- skimage/feature/corner.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 0156dcb4..7add4924 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -556,9 +556,10 @@ def corner_fast(image, n=12, threshold=0.15): image : 2D ndarray Input image. n : int - Number of consecutive pixels out of 16 pixels on the circle that - should be brighter or darker with respect to test pixel above the - `threshold` so as to classify the test pixel as a FAST corner. Also + Minimum number of consecutive pixels out of 16 pixels on the circle + that should all be either brighter or darker w.r.t testpixel. + A point c on the circle is darker w.r.t test pixel p if + `Ic < Ip - threshold` and brighter if `Ic > Ip + threshold`. Also stands for the n in `FAST-n` corner detector. threshold : float Threshold used in deciding whether the pixels on the circle are @@ -575,6 +576,8 @@ def corner_fast(image, n=12, threshold=0.15): .. [1] Edward Rosten and Tom Drummond "Machine Learning for high-speed corner detection", http://www.edwardrosten.com/work/rosten_2006_machine.pdf + .. [2] Wikipedia, "Features from accelerated segment test", + https://en.wikipedia.org/wiki/Features_from_accelerated_segment_test """ image = np.squeeze(image) From 8304824455a7fc5aa9d44c60af2787ee34461779 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Sun, 25 Aug 2013 12:10:30 +0530 Subject: [PATCH 160/577] Implemented corner_fast_orientation function --- skimage/feature/__init__.py | 5 +-- skimage/feature/corner_cy.pyx | 66 +++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index c16edb87..d12049a3 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -5,7 +5,7 @@ from .peak import peak_local_max from .corner import (corner_kitchen_rosenfeld, corner_harris, corner_shi_tomasi, corner_foerstner, corner_subpix, corner_peaks, corner_fast) -from .corner_cy import corner_moravec +from .corner_cy import corner_moravec, corner_fast_orientation from .template import match_template from ._brief import brief, match_keypoints_brief from .util import pairwise_hamming_distance @@ -29,4 +29,5 @@ __all__ = ['daisy', 'pairwise_hamming_distance', 'match_keypoints_brief', 'keypoints_censure', - 'corner_fast'] + 'corner_fast', + 'corner_fast_orientation'] diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index d8c97f25..8c5d1002 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -5,6 +5,7 @@ import numpy as np cimport numpy as cnp from libc.float cimport DBL_MAX +from libc.math cimport atan2 from skimage.color import rgb2grey from skimage.util import img_as_float @@ -164,3 +165,68 @@ def _corner_fast(double[:, ::1] image, char n, double threshold): corner_response[i, j] = curr_response return np.asarray(corner_response) + + +def corner_fast_orientation(image, fast_corners): + """Compute the orientation of FAST corners using the first order central + moment i.e. the center of mass approach. The corner orientation is the + angle of the vector from the keypoint to the intensity centroid calculated + using first order central moment. + + Parameters + ---------- + image : 2D array + Input grayscale image. + fast_corners : (N, 2) array + FAST corners extracted from the corresponding image. + + Returns + ------- + orientation : (N, 1) array + Orientation of the input FAST corners in the range [-pi, pi]. + + References + ---------- + ..[1] Ethan Rublee, Vincent Rabaud, Kurt Konolige and Gary Bradski + "ORB : An efficient alternative to SIFT and SURF" + http://www.vision.cs.chubu.ac.jp/CV-R/pdf/Rublee_iccv2011.pdf + ..[2] Paul L. Rosin, "Measuring Corner Properties" + http://users.cs.cf.ac.uk/Paul.Rosin/corner2.pdf + + """ + + image = np.squeeze(image) + if image.ndim != 2: + raise ValueError("Only 2-D gray-scale images supported.") + + # Essentially skimage.morphology.octagon(3, 2) + circular_mask = np.array([[0, 0, 1, 1, 1, 0, 0], + [0, 1, 1, 1, 1, 1, 0], + [1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1], + [0, 1, 1, 1, 1, 1, 0], + [0, 0, 1, 1, 1, 0, 0]], dtype=np.uint8) + + cdef int[:, ::1] cfast_corners = np.ascontiguousarray(fast_corners, dtype=np.int32) + + cdef Py_ssize_t n_fast_corners = fast_corners.shape[0] + cdef Py_ssize_t i, p, q, r, c, x, y + cdef double[:, ::1] kp_circular_patch, mu + cdef double[:] kp_orientation = np.zeros(fast_corners.shape[0], dtype=np.double) + + for i in range(n_fast_corners): + x = cfast_corners[i, 0] + y = cfast_corners[i, 1] + + kp_circular_patch = image[x - 3:x + 4, y - 3:y + 4] * circular_mask + mu = np.zeros((2, 2), dtype=np.double) + for p in range(2): + for q in range(2): + for r in range(7): + for c in range(7): + mu[p, q] += kp_circular_patch[r, c] * (r - 3) ** q * (c - 3) ** p + + kp_orientation[i] = atan2(mu[1, 0] / mu[0, 0], mu[0, 1] / mu[0, 0]) + + return np.asarray(kp_orientation) From 04e9cef567405c647ff4da5cfa026245e45817d6 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Mon, 26 Aug 2013 16:41:46 +0530 Subject: [PATCH 161/577] Using Py_ssize_t and np.intp for cfast_corners --- skimage/feature/corner_cy.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 8c5d1002..7d760c25 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -208,7 +208,7 @@ def corner_fast_orientation(image, fast_corners): [0, 1, 1, 1, 1, 1, 0], [0, 0, 1, 1, 1, 0, 0]], dtype=np.uint8) - cdef int[:, ::1] cfast_corners = np.ascontiguousarray(fast_corners, dtype=np.int32) + cdef Py_ssize_t[:, :] cfast_corners = np.ascontiguousarray(fast_corners, dtype=np.intp) cdef Py_ssize_t n_fast_corners = fast_corners.shape[0] cdef Py_ssize_t i, p, q, r, c, x, y From 3b76623a684af5b6b1d8d1b80959b74159e5b494 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Mon, 26 Aug 2013 17:28:41 +0530 Subject: [PATCH 162/577] Adding tests for corner_fast and corner_fast_orientation --- skimage/feature/corner.py | 1 - skimage/feature/tests/test_corner.py | 43 ++++++++++++++++++++++++++-- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 7add4924..12c2ea89 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -1,7 +1,6 @@ import numpy as np from scipy import ndimage from scipy import stats -from scipy.ndimage.filters import maximum_filter from skimage.color import rgb2grey from skimage.util import img_as_float, pad from skimage.feature import peak_local_max diff --git a/skimage/feature/tests/test_corner.py b/skimage/feature/tests/test_corner.py index 9c07c006..56985613 100644 --- a/skimage/feature/tests/test_corner.py +++ b/skimage/feature/tests/test_corner.py @@ -3,10 +3,12 @@ from numpy.testing import assert_array_equal, assert_almost_equal from skimage import data from skimage import img_as_float +from skimage.color import rgb2gray from skimage.feature import (corner_moravec, corner_harris, corner_shi_tomasi, corner_subpix, peak_local_max, corner_peaks, - corner_kitchen_rosenfeld, corner_foerstner) + corner_kitchen_rosenfeld, corner_foerstner, + corner_fast, corner_fast_orientation) def test_square_image(): @@ -94,8 +96,8 @@ def test_rotated_lena(): def test_subpix(): img = np.zeros((50, 50)) - img[:25,:25] = 255 - img[25:,25:] = 255 + img[:25, :25] = 255 + img[25:, 25:] = 255 corner = peak_local_max(corner_harris(img), num_peaks=1) subpix = corner_subpix(img, corner) assert_array_equal(subpix[0], (24.5, 24.5)) @@ -156,6 +158,41 @@ def test_blank_image_nans(): assert np.all(np.isfinite(response)) +def test_corner_fast_image_unsupported_error(): + img = np.zeros((20, 20, 3)) + assert_raises(ValueError, corner_fast, img) + + +def test_corner_fast_lena(): + img = rgb2gray(data.lena()) + expected = np.array([[ 67, 157], + [204, 261], + [247, 146], + [269, 111], + [318, 158], + [386, 73], + [413, 70], + [435, 180], + [455, 177], + [461, 160]]) + actual = corner_peaks(corner_fast(img, 12, 0.3)) + assert_array_equal(actual, expected) + + +def test_corner_fast_orientation_image_unsupported_error(): + img = np.zeros((20, 20, 3)) + assert_raises(ValueError, corner_fast_orientation, img, [[7, 7]]) + + +def test_corner_fast_orientation_lena(): + img = rgb2gray(data.lena()) + corners = corner_peaks(corner_fast(img, 11, 0.35)) + expected = np.array([-2.79279928, -1.68079274, 2.63070795, -1.81665159, + -2.09631254, -1.41580527]) + actual = corner_fast_orientation(img, corners) + assert_array_equal(actual, expected) + + if __name__ == '__main__': from numpy import testing testing.run_module_suite() From b2bf0baad8cb4532904094dc97ce42e26452f707 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Mon, 26 Aug 2013 18:51:08 +0530 Subject: [PATCH 163/577] Speeding up corner_fast_orientation --- skimage/feature/corner_cy.pyx | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 7d760c25..3ef290a1 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -200,13 +200,13 @@ def corner_fast_orientation(image, fast_corners): raise ValueError("Only 2-D gray-scale images supported.") # Essentially skimage.morphology.octagon(3, 2) - circular_mask = np.array([[0, 0, 1, 1, 1, 0, 0], - [0, 1, 1, 1, 1, 1, 0], - [1, 1, 1, 1, 1, 1, 1], - [1, 1, 1, 1, 1, 1, 1], - [1, 1, 1, 1, 1, 1, 1], - [0, 1, 1, 1, 1, 1, 0], - [0, 0, 1, 1, 1, 0, 0]], dtype=np.uint8) + cdef char[:, :] circular_mask = np.array([[0, 0, 1, 1, 1, 0, 0], + [0, 1, 1, 1, 1, 1, 0], + [1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1], + [0, 1, 1, 1, 1, 1, 0], + [0, 0, 1, 1, 1, 0, 0]], dtype=np.uint8) cdef Py_ssize_t[:, :] cfast_corners = np.ascontiguousarray(fast_corners, dtype=np.intp) @@ -219,13 +219,14 @@ def corner_fast_orientation(image, fast_corners): x = cfast_corners[i, 0] y = cfast_corners[i, 1] - kp_circular_patch = image[x - 3:x + 4, y - 3:y + 4] * circular_mask + kp_circular_patch = np.ascontiguousarray(image[x - 3:x + 4, y - 3:y + 4]) mu = np.zeros((2, 2), dtype=np.double) - for p in range(2): - for q in range(2): - for r in range(7): - for c in range(7): - mu[p, q] += kp_circular_patch[r, c] * (r - 3) ** q * (c - 3) ** p + for r in range(7): + for c in range(7): + if circular_mask[r, c]: + for p in range(2): + for q in range(2): + mu[p, q] += kp_circular_patch[r, c] * (r - 3) ** q * (c - 3) ** p kp_orientation[i] = atan2(mu[1, 0] / mu[0, 0], mu[0, 1] / mu[0, 0]) From 84317b6a2f95c16522d2f2c64185d9d22a5b9cda Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Mon, 26 Aug 2013 22:29:36 +0530 Subject: [PATCH 164/577] Speeding up corner_fast_implementation : 2 --- skimage/feature/corner_cy.pyx | 49 +++++++++++++++++----------- skimage/feature/tests/test_corner.py | 12 ++++--- 2 files changed, 37 insertions(+), 24 deletions(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 3ef290a1..2f916d4d 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -167,7 +167,7 @@ def _corner_fast(double[:, ::1] image, char n, double threshold): return np.asarray(corner_response) -def corner_fast_orientation(image, fast_corners): +def corner_fast_orientation(image, Py_ssize_t[:, :] fast_corners): """Compute the orientation of FAST corners using the first order central moment i.e. the center of mass approach. The corner orientation is the angle of the vector from the keypoint to the intensity centroid calculated @@ -199,35 +199,46 @@ def corner_fast_orientation(image, fast_corners): if image.ndim != 2: raise ValueError("Only 2-D gray-scale images supported.") + cdef double[:, :] cimage = np.ascontiguousarray(img_as_float(image)) # Essentially skimage.morphology.octagon(3, 2) - cdef char[:, :] circular_mask = np.array([[0, 0, 1, 1, 1, 0, 0], - [0, 1, 1, 1, 1, 1, 0], - [1, 1, 1, 1, 1, 1, 1], - [1, 1, 1, 1, 1, 1, 1], - [1, 1, 1, 1, 1, 1, 1], - [0, 1, 1, 1, 1, 1, 0], - [0, 0, 1, 1, 1, 0, 0]], dtype=np.uint8) - - cdef Py_ssize_t[:, :] cfast_corners = np.ascontiguousarray(fast_corners, dtype=np.intp) + cdef char[:, ::1] circular_mask = np.array([[0, 0, 1, 1, 1, 0, 0], + [0, 1, 1, 1, 1, 1, 0], + [1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1], + [0, 1, 1, 1, 1, 1, 0], + [0, 0, 1, 1, 1, 0, 0]], dtype=np.uint8) cdef Py_ssize_t n_fast_corners = fast_corners.shape[0] - cdef Py_ssize_t i, p, q, r, c, x, y + cdef Py_ssize_t i, r, c, x_top, y_left cdef double[:, ::1] kp_circular_patch, mu cdef double[:] kp_orientation = np.zeros(fast_corners.shape[0], dtype=np.double) + cdef double m00, m01, m10 for i in range(n_fast_corners): - x = cfast_corners[i, 0] - y = cfast_corners[i, 1] + x_top = fast_corners[i, 0] - 3 + y_left = fast_corners[i, 1] - 3 - kp_circular_patch = np.ascontiguousarray(image[x - 3:x + 4, y - 3:y + 4]) - mu = np.zeros((2, 2), dtype=np.double) + m00 = 0 + m01 = 0 + m10 = 0 + #kp_circular_patch = np.ascontiguousarray(image[x - 3:x + 4, y - 3:y + 4]) + #mu = np.zeros((2, 2), dtype=np.double) for r in range(7): for c in range(7): if circular_mask[r, c]: - for p in range(2): - for q in range(2): - mu[p, q] += kp_circular_patch[r, c] * (r - 3) ** q * (c - 3) ** p + m00 += cimage[x_top + r, y_left + c] - kp_orientation[i] = atan2(mu[1, 0] / mu[0, 0], mu[0, 1] / mu[0, 0]) + for r in range(7): + for c in range(7): + if circular_mask[r, c]: + m01 += cimage[x_top + r, y_left + c] * (c - 3) + + for r in range(7): + for c in range(7): + if circular_mask[r, c]: + m10 += cimage[x_top + r, y_left + c] * (r - 3) + + kp_orientation[i] = atan2(m10 / m00, m01 / m00) return np.asarray(kp_orientation) diff --git a/skimage/feature/tests/test_corner.py b/skimage/feature/tests/test_corner.py index 56985613..1a520ceb 100644 --- a/skimage/feature/tests/test_corner.py +++ b/skimage/feature/tests/test_corner.py @@ -1,5 +1,6 @@ import numpy as np -from numpy.testing import assert_array_equal, assert_almost_equal +from numpy.testing import (assert_array_equal, assert_raises, + assert_almost_equal) from skimage import data from skimage import img_as_float @@ -181,16 +182,17 @@ def test_corner_fast_lena(): def test_corner_fast_orientation_image_unsupported_error(): img = np.zeros((20, 20, 3)) - assert_raises(ValueError, corner_fast_orientation, img, [[7, 7]]) + assert_raises(ValueError, corner_fast_orientation, img, + np.asarray([[7, 7]])) def test_corner_fast_orientation_lena(): img = rgb2gray(data.lena()) corners = corner_peaks(corner_fast(img, 11, 0.35)) - expected = np.array([-2.79279928, -1.68079274, 2.63070795, -1.81665159, - -2.09631254, -1.41580527]) + expected = np.array([-1.9195897 , -3.03159624, -1.05991162, -2.89573739, + -2.61607644, 2.98660159]) actual = corner_fast_orientation(img, corners) - assert_array_equal(actual, expected) + assert_almost_equal(actual, expected) if __name__ == '__main__': From 1aef50ca8fc726d63e1b9ae5fd0424698e6b655b Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Tue, 27 Aug 2013 03:14:51 +0530 Subject: [PATCH 165/577] Adding an example; removing redundant stuff and more --- skimage/feature/corner.py | 37 ++++++++++++++++++++++++---- skimage/feature/corner_cy.pyx | 29 ++++++++-------------- skimage/feature/tests/test_corner.py | 2 +- 3 files changed, 43 insertions(+), 25 deletions(-) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 12c2ea89..8a7944e6 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -53,8 +53,9 @@ def _compute_auto_correlation(image, sigma): """ - if image.ndim == 3: - image = img_as_float(rgb2grey(image)) + image = np.squeeze(image) + if image.ndim != 2: + raise ValueError("Only 2-D gray-scale images supported.") imx, imy = _compute_derivatives(image) @@ -567,8 +568,8 @@ def corner_fast(image, n=12, threshold=0.15): Returns ------- - corners : (N, 2) ndarray - Location i.e. (row, col) of extracted FAST corners. + response : ndarray + FAST corner response image. References ---------- @@ -578,6 +579,31 @@ def corner_fast(image, n=12, threshold=0.15): .. [2] Wikipedia, "Features from accelerated segment test", https://en.wikipedia.org/wiki/Features_from_accelerated_segment_test + Examples + -------- + >>> import numpy as np + >>> from skimage.feature import corner_fast, corner_peaks + >>> square = np.zeros((12, 12)) + >>> square[3:9, 3:9] = 1 + >>> square + array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]) + >>> corner_peaks(corner_fast(square, 9), min_distance=1) + array([[3, 3], + [3, 8], + [8, 3], + [8, 8]]) + """ image = np.squeeze(image) if image.ndim != 2: @@ -585,4 +611,5 @@ def corner_fast(image, n=12, threshold=0.15): image = img_as_float(image) image = np.ascontiguousarray(image) - return _corner_fast(image, n, threshold) + response = _corner_fast(image, n, threshold) + return response diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 2f916d4d..66908472 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -168,7 +168,9 @@ def _corner_fast(double[:, ::1] image, char n, double threshold): def corner_fast_orientation(image, Py_ssize_t[:, :] fast_corners): - """Compute the orientation of FAST corners using the first order central + """Compute the orientation of FAST corners. + + The orientation of corners is computed using the first order central moment i.e. the center of mass approach. The corner orientation is the angle of the vector from the keypoint to the intensity centroid calculated using first order central moment. @@ -199,7 +201,7 @@ def corner_fast_orientation(image, Py_ssize_t[:, :] fast_corners): if image.ndim != 2: raise ValueError("Only 2-D gray-scale images supported.") - cdef double[:, :] cimage = np.ascontiguousarray(img_as_float(image)) + cdef double[:, :] cimage = img_as_float(image) # Essentially skimage.morphology.octagon(3, 2) cdef char[:, ::1] circular_mask = np.array([[0, 0, 1, 1, 1, 0, 0], [0, 1, 1, 1, 1, 1, 0], @@ -210,34 +212,23 @@ def corner_fast_orientation(image, Py_ssize_t[:, :] fast_corners): [0, 0, 1, 1, 1, 0, 0]], dtype=np.uint8) cdef Py_ssize_t n_fast_corners = fast_corners.shape[0] - cdef Py_ssize_t i, r, c, x_top, y_left - cdef double[:, ::1] kp_circular_patch, mu + cdef Py_ssize_t i, r, c, y_top, x_left cdef double[:] kp_orientation = np.zeros(fast_corners.shape[0], dtype=np.double) cdef double m00, m01, m10 for i in range(n_fast_corners): - x_top = fast_corners[i, 0] - 3 - y_left = fast_corners[i, 1] - 3 + y_top = fast_corners[i, 0] - 3 + x_left = fast_corners[i, 1] - 3 m00 = 0 m01 = 0 m10 = 0 - #kp_circular_patch = np.ascontiguousarray(image[x - 3:x + 4, y - 3:y + 4]) - #mu = np.zeros((2, 2), dtype=np.double) for r in range(7): for c in range(7): if circular_mask[r, c]: - m00 += cimage[x_top + r, y_left + c] - - for r in range(7): - for c in range(7): - if circular_mask[r, c]: - m01 += cimage[x_top + r, y_left + c] * (c - 3) - - for r in range(7): - for c in range(7): - if circular_mask[r, c]: - m10 += cimage[x_top + r, y_left + c] * (r - 3) + m00 += cimage[y_top + r, x_left + c] + m01 += cimage[y_top + r, x_left + c] * (c - 3) + m10 += cimage[y_top + r, x_left + c] * (r - 3) kp_orientation[i] = atan2(m10 / m00, m01 / m00) diff --git a/skimage/feature/tests/test_corner.py b/skimage/feature/tests/test_corner.py index 1a520ceb..b0abcaed 100644 --- a/skimage/feature/tests/test_corner.py +++ b/skimage/feature/tests/test_corner.py @@ -125,7 +125,7 @@ def test_num_peaks(): peak_local_max returns exactly the right amount of peaks. Test is run on Lena in order to produce a sufficient number of corners""" - lena_corners = corner_harris(data.lena()) + lena_corners = corner_harris(rgb2gray(data.lena())) for i in range(20): n = np.random.random_integers(20) From 07623e1965272edc21ed311831385c04c1b63b53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Tue, 27 Aug 2013 01:18:42 +0200 Subject: [PATCH 166/577] Transform corner_fast_orientations for application to arbitrary corner types --- skimage/feature/__init__.py | 4 +- skimage/feature/corner.py | 1 - skimage/feature/corner_cy.pyx | 101 +++++++++++++++++++++++----------- 3 files changed, 70 insertions(+), 36 deletions(-) diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index d12049a3..d821174f 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -5,7 +5,7 @@ from .peak import peak_local_max from .corner import (corner_kitchen_rosenfeld, corner_harris, corner_shi_tomasi, corner_foerstner, corner_subpix, corner_peaks, corner_fast) -from .corner_cy import corner_moravec, corner_fast_orientation +from .corner_cy import corner_moravec, corner_orientations from .template import match_template from ._brief import brief, match_keypoints_brief from .util import pairwise_hamming_distance @@ -30,4 +30,4 @@ __all__ = ['daisy', 'match_keypoints_brief', 'keypoints_censure', 'corner_fast', - 'corner_fast_orientation'] + 'corner_orientations'] diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 8a7944e6..618bd2d9 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -581,7 +581,6 @@ def corner_fast(image, n=12, threshold=0.15): Examples -------- - >>> import numpy as np >>> from skimage.feature import corner_fast, corner_peaks >>> square = np.zeros((12, 12)) >>> square[3:9, 3:9] = 1 diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 66908472..031d909d 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -167,25 +167,29 @@ def _corner_fast(double[:, ::1] image, char n, double threshold): return np.asarray(corner_response) -def corner_fast_orientation(image, Py_ssize_t[:, :] fast_corners): - """Compute the orientation of FAST corners. +def corner_orientations(image, Py_ssize_t[:, :] corners, mask): + """Compute the orientation of corners. - The orientation of corners is computed using the first order central - moment i.e. the center of mass approach. The corner orientation is the - angle of the vector from the keypoint to the intensity centroid calculated - using first order central moment. + The orientation of corners is computed using the first order central moment + i.e. the center of mass approach. The corner orientation is the angle of + the vector from the corner coordinate to the intensity centroid in the + local neighborhood around the corner calculated using first order central + moment. Parameters ---------- image : 2D array Input grayscale image. - fast_corners : (N, 2) array - FAST corners extracted from the corresponding image. + corners : (N, 2) array + Corner coordinates as ``(row, col)``. + mask : 2D array + Mask defining the local neighborhood of the corner used for the + calculation of the central moment. Returns ------- - orientation : (N, 1) array - Orientation of the input FAST corners in the range [-pi, pi]. + orientations : (N, 1) array + Orientations of corners in the range [-pi, pi]. References ---------- @@ -195,41 +199,72 @@ def corner_fast_orientation(image, Py_ssize_t[:, :] fast_corners): ..[2] Paul L. Rosin, "Measuring Corner Properties" http://users.cs.cf.ac.uk/Paul.Rosin/corner2.pdf + Examples + -------- + >>> from skimage.morphology import octagon + >>> from skimage.feature import corner_fast, corner_peaks, \ + ... corner_orientations + >>> square = np.zeros((12, 12)) + >>> square[3:9, 3:9] = 1 + >>> square + array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]) + >>> corner_peaks(corner_fast(square, 9), min_distance=1) + array([[3, 3], + [3, 8], + [8, 3], + [8, 8]]) + >>> orientations = corner_orientations(square, corners, octagon(3, 2)) + >>> np.rad2deg(orientations) + array([ 45., 135., -45., -135.]) + """ image = np.squeeze(image) if image.ndim != 2: raise ValueError("Only 2-D gray-scale images supported.") - cdef double[:, :] cimage = img_as_float(image) - # Essentially skimage.morphology.octagon(3, 2) - cdef char[:, ::1] circular_mask = np.array([[0, 0, 1, 1, 1, 0, 0], - [0, 1, 1, 1, 1, 1, 0], - [1, 1, 1, 1, 1, 1, 1], - [1, 1, 1, 1, 1, 1, 1], - [1, 1, 1, 1, 1, 1, 1], - [0, 1, 1, 1, 1, 1, 0], - [0, 0, 1, 1, 1, 0, 0]], dtype=np.uint8) + if mask.shape[0] % 2 != 1 or mask.shape[1] % 2 != 1: + raise ValueError("Size of mask must be uneven.") - cdef Py_ssize_t n_fast_corners = fast_corners.shape[0] - cdef Py_ssize_t i, r, c, y_top, x_left - cdef double[:] kp_orientation = np.zeros(fast_corners.shape[0], dtype=np.double) + cdef double[:, :] cimage = img_as_float(image) + cdef char[:, ::1] cmask = np.ascontiguousarray(mask != 0, dtype=np.uint8) + + cdef Py_ssize_t i, r, c, r0, c0 + cdef Py_ssize_t mrows = mask.shape[0] + cdef Py_ssize_t mcols = mask.shape[1] + cdef Py_ssize_t mrows2 = (mrows - 1) / 2 + cdef Py_ssize_t mcols2 = (mcols - 1) / 2 + cdef double[:] orientations = np.zeros(corners.shape[0], dtype=np.double) + cdef double curr_pixel cdef double m00, m01, m10 - for i in range(n_fast_corners): - y_top = fast_corners[i, 0] - 3 - x_left = fast_corners[i, 1] - 3 + for i in range(corners.shape[0]): + r0 = corners[i, 0] - mrows2 + c0 = corners[i, 1] - mcols2 m00 = 0 m01 = 0 m10 = 0 - for r in range(7): - for c in range(7): - if circular_mask[r, c]: - m00 += cimage[y_top + r, x_left + c] - m01 += cimage[y_top + r, x_left + c] * (c - 3) - m10 += cimage[y_top + r, x_left + c] * (r - 3) - kp_orientation[i] = atan2(m10 / m00, m01 / m00) + for r in range(mrows): + for c in range(mcols): + if cmask[r, c]: + curr_pixel = cimage[r0 + r, c0 + c] + m00 += curr_pixel + m01 += curr_pixel * (c - mcols2) + m10 += curr_pixel * (r - mrows2) - return np.asarray(kp_orientation) + orientations[i] = atan2(m10 / m00, m01 / m00) + + return np.asarray(orientations) From a1c1a80d3457f466ba9b84f1957cc0d99d4fd8be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Tue, 27 Aug 2013 01:19:18 +0200 Subject: [PATCH 167/577] Move FAST corner function to other corner functions --- skimage/feature/corner.py | 134 +++++++++++++++++++------------------- 1 file changed, 67 insertions(+), 67 deletions(-) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 618bd2d9..e0133097 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -329,6 +329,73 @@ def corner_foerstner(image, sigma=1): return w, q +def corner_fast(image, n=12, threshold=0.15): + + """Extract FAST corners for a given image. + + Parameters + ---------- + image : 2D ndarray + Input image. + n : int + Minimum number of consecutive pixels out of 16 pixels on the circle + that should all be either brighter or darker w.r.t testpixel. + A point c on the circle is darker w.r.t test pixel p if + `Ic < Ip - threshold` and brighter if `Ic > Ip + threshold`. Also + stands for the n in `FAST-n` corner detector. + threshold : float + Threshold used in deciding whether the pixels on the circle are + brighter, darker or similar w.r.t. the test pixel. Decrease the + threshold when more corners are desired and vice-versa. + + Returns + ------- + response : ndarray + FAST corner response image. + + References + ---------- + .. [1] Edward Rosten and Tom Drummond + "Machine Learning for high-speed corner detection", + http://www.edwardrosten.com/work/rosten_2006_machine.pdf + .. [2] Wikipedia, "Features from accelerated segment test", + https://en.wikipedia.org/wiki/Features_from_accelerated_segment_test + + Examples + -------- + >>> from skimage.feature import corner_fast, corner_peaks + >>> square = np.zeros((12, 12)) + >>> square[3:9, 3:9] = 1 + >>> square + array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]) + >>> corner_peaks(corner_fast(square, 9), min_distance=1) + array([[3, 3], + [3, 8], + [8, 3], + [8, 8]]) + + """ + image = np.squeeze(image) + if image.ndim != 2: + raise ValueError("Only 2-D gray-scale images supported.") + + image = img_as_float(image) + image = np.ascontiguousarray(image) + response = _corner_fast(image, n, threshold) + return response + + def corner_subpix(image, corners, window_size=11, alpha=0.99): """Determine subpixel position of corners. @@ -545,70 +612,3 @@ def corner_peaks(image, min_distance=10, threshold_abs=0, threshold_rel=0.1, return np.transpose(peaks.nonzero()) else: return peaks - - -def corner_fast(image, n=12, threshold=0.15): - - """Extract FAST corners for a given image. - - Parameters - ---------- - image : 2D ndarray - Input image. - n : int - Minimum number of consecutive pixels out of 16 pixels on the circle - that should all be either brighter or darker w.r.t testpixel. - A point c on the circle is darker w.r.t test pixel p if - `Ic < Ip - threshold` and brighter if `Ic > Ip + threshold`. Also - stands for the n in `FAST-n` corner detector. - threshold : float - Threshold used in deciding whether the pixels on the circle are - brighter, darker or similar w.r.t. the test pixel. Decrease the - threshold when more corners are desired and vice-versa. - - Returns - ------- - response : ndarray - FAST corner response image. - - References - ---------- - .. [1] Edward Rosten and Tom Drummond - "Machine Learning for high-speed corner detection", - http://www.edwardrosten.com/work/rosten_2006_machine.pdf - .. [2] Wikipedia, "Features from accelerated segment test", - https://en.wikipedia.org/wiki/Features_from_accelerated_segment_test - - Examples - -------- - >>> from skimage.feature import corner_fast, corner_peaks - >>> square = np.zeros((12, 12)) - >>> square[3:9, 3:9] = 1 - >>> square - array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]) - >>> corner_peaks(corner_fast(square, 9), min_distance=1) - array([[3, 3], - [3, 8], - [8, 3], - [8, 8]]) - - """ - image = np.squeeze(image) - if image.ndim != 2: - raise ValueError("Only 2-D gray-scale images supported.") - - image = img_as_float(image) - image = np.ascontiguousarray(image) - response = _corner_fast(image, n, threshold) - return response From 0e920315f1e66197e18a648d72d28137d2fdb375 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Tue, 27 Aug 2013 08:00:42 +0530 Subject: [PATCH 168/577] Making changes in test_corner --- skimage/feature/tests/test_corner.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/skimage/feature/tests/test_corner.py b/skimage/feature/tests/test_corner.py index b0abcaed..47c6d016 100644 --- a/skimage/feature/tests/test_corner.py +++ b/skimage/feature/tests/test_corner.py @@ -5,11 +5,12 @@ from numpy.testing import (assert_array_equal, assert_raises, from skimage import data from skimage import img_as_float from skimage.color import rgb2gray +from skimage.morphology import octagon from skimage.feature import (corner_moravec, corner_harris, corner_shi_tomasi, corner_subpix, peak_local_max, corner_peaks, corner_kitchen_rosenfeld, corner_foerstner, - corner_fast, corner_fast_orientation) + corner_fast, corner_orientations) def test_square_image(): @@ -180,18 +181,24 @@ def test_corner_fast_lena(): assert_array_equal(actual, expected) -def test_corner_fast_orientation_image_unsupported_error(): +def test_corner_orientations_image_unsupported_error(): img = np.zeros((20, 20, 3)) - assert_raises(ValueError, corner_fast_orientation, img, - np.asarray([[7, 7]])) + assert_raises(ValueError, corner_orientations, img, + np.asarray([[7, 7]]), np.ones((3, 3))) -def test_corner_fast_orientation_lena(): +def test_corner_orientations_even_shape_error(): + img = np.zeros((20, 20)) + assert_raises(ValueError, corner_orientations, img, + np.asarray([[7, 7]]), np.ones((4, 4))) + + +def test_corner_orientations_lena(): img = rgb2gray(data.lena()) corners = corner_peaks(corner_fast(img, 11, 0.35)) expected = np.array([-1.9195897 , -3.03159624, -1.05991162, -2.89573739, -2.61607644, 2.98660159]) - actual = corner_fast_orientation(img, corners) + actual = corner_orientations(img, corners, octagon(3, 2)) assert_almost_equal(actual, expected) From b0814a527f8a0332dbd3ef7e66a8b0b8d3cfd808 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Tue, 27 Aug 2013 15:09:04 +0200 Subject: [PATCH 169/577] Make structure tensor function public and add function to compute hessian matrix --- skimage/feature/__init__.py | 3 +- skimage/feature/censure.py | 4 +- skimage/feature/corner.py | 134 +++++++++++++++++++++++++++++------- 3 files changed, 112 insertions(+), 29 deletions(-) diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index d821174f..ea5ace67 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -4,7 +4,8 @@ from .texture import greycomatrix, greycoprops, local_binary_pattern from .peak import peak_local_max from .corner import (corner_kitchen_rosenfeld, corner_harris, corner_shi_tomasi, corner_foerstner, corner_subpix, - corner_peaks, corner_fast) + corner_peaks, corner_fast, structure_tensor, + hessian_matrix) from .corner_cy import corner_moravec, corner_orientations from .template import match_template from ._brief import brief, match_keypoints_brief diff --git a/skimage/feature/censure.py b/skimage/feature/censure.py index 4bb7fdda..d852d15d 100644 --- a/skimage/feature/censure.py +++ b/skimage/feature/censure.py @@ -2,7 +2,7 @@ import numpy as np from scipy.ndimage.filters import maximum_filter, minimum_filter, convolve from skimage.transform import integral_image -from skimage.feature.corner import _compute_auto_correlation +from skimage.feature import structure_tensor from skimage.util import img_as_float from skimage.morphology import octagon, star from skimage.feature.util import _mask_border_keypoints @@ -104,7 +104,7 @@ def _star_filter_kernel(m, n): def _suppress_lines(feature_mask, image, sigma, line_threshold): - Axx, Axy, Ayy = _compute_auto_correlation(image, sigma) + Axx, Axy, Ayy = structure_tensor(image, sigma) feature_mask[(Axx + Ayy) * (Axx + Ayy) > line_threshold * (Axx * Ayy - Axy * Axy)] = False diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index e0133097..66f9bc21 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -8,13 +8,18 @@ from skimage.feature import peak_local_max from corner_cy import _corner_fast -def _compute_derivatives(image): +def _compute_derivatives(image, mode='constant', cval=0): """Compute derivatives in x and y direction using the Sobel operator. Parameters ---------- image : ndarray Input image. + mode : {'constant', 'reflect', 'wrap', 'nearest', 'mirror'}, optional + How to handle values outside the image borders. + cval : float, optional + Used in conjunction with mode 'constant', the value outside + the image boundaries. Returns ------- @@ -25,14 +30,71 @@ def _compute_derivatives(image): """ - imy = ndimage.sobel(image, axis=0, mode='constant', cval=0) - imx = ndimage.sobel(image, axis=1, mode='constant', cval=0) + imy = ndimage.sobel(image, axis=0, mode=mode, cval=cval) + imx = ndimage.sobel(image, axis=1, mode=mode, cval=cval) return imx, imy -def _compute_auto_correlation(image, sigma): - """Compute auto-correlation matrix using sum of squared differences. +def structure_tensor(image, sigma=1, mode='constant', cval=0): + """Compute structure tensor using sum of squared differences. + + The structure tensor A is defined as:: + + A = [Axx Axy] + [Axy Ayy] + + which is approximated by the weighted sum of squared differences in a local + window around each pixel in the image. + + Parameters + ---------- + image : ndarray + Input image. + sigma : float + Standard deviation used for the Gaussian kernel, which is used as a + weighting function for the local summation of squared differences. + mode : {'constant', 'reflect', 'wrap', 'nearest', 'mirror'}, optional + How to handle values outside the image borders. + cval : float, optional + Used in conjunction with mode 'constant', the value outside + the image boundaries. + + Returns + ------- + Axx : ndarray + Element of the structure tensor for each pixel in the input image. + Axy : ndarray + Element of the structure tensor for each pixel in the input image. + Ayy : ndarray + Element of the structure tensor for each pixel in the input image. + + """ + + image = np.squeeze(image) + if image.ndim != 2: + raise ValueError("Only 2-D gray-scale images supported.") + + imx, imy = _compute_derivatives(image, mode=mode, cval=cval) + + # structure tensore + Axx = ndimage.gaussian_filter(imx * imx, sigma, mode=mode, cval=cval) + Axy = ndimage.gaussian_filter(imx * imy, sigma, mode=mode, cval=cval) + Ayy = ndimage.gaussian_filter(imy * imy, sigma, mode=mode, cval=cval) + + return Axx, Axy, Ayy + + +def hessian_matrix(image, sigma=1, mode='constant', cval=0): + """Compute Hessian matrix. + + The Hessian matrix is defined as:: + + H = [Hxx Hxy] + [Hxy Hyy] + + which is computed by convolving the image with the second derivatives + of the Gaussian kernel in the respective x- and y-directions. Parameters ---------- @@ -41,15 +103,20 @@ def _compute_auto_correlation(image, sigma): sigma : float Standard deviation used for the Gaussian kernel, which is used as weighting function for the auto-correlation matrix. + mode : {'constant', 'reflect', 'wrap', 'nearest', 'mirror'}, optional + How to handle values outside the image borders. + cval : float, optional + Used in conjunction with mode 'constant', the value outside + the image boundaries. Returns ------- - Axx : ndarray - Element of the auto-correlation matrix for each pixel in input image. - Axy : ndarray - Element of the auto-correlation matrix for each pixel in input image. - Ayy : ndarray - Element of the auto-correlation matrix for each pixel in input image. + Hxx : ndarray + Element of the Hessian matrix for each pixel in the input image. + Hxy : ndarray + Element of the Hessian matrix for each pixel in the input image. + Hyy : ndarray + Element of the Hessian matrix for each pixel in the input image. """ @@ -57,17 +124,28 @@ def _compute_auto_correlation(image, sigma): if image.ndim != 2: raise ValueError("Only 2-D gray-scale images supported.") - imx, imy = _compute_derivatives(image) + # window extent to the left and right, which covers > 99% of the normal + # distribution + window_ext = np.ceil(3 * sigma) - # structure tensore - Axx = ndimage.gaussian_filter(imx * imx, sigma, mode='constant', cval=0) - Axy = ndimage.gaussian_filter(imx * imy, sigma, mode='constant', cval=0) - Ayy = ndimage.gaussian_filter(imy * imy, sigma, mode='constant', cval=0) + ky, kx = np.mgrid[-window_ext:window_ext + 1, -window_ext:window_ext + 1] - return Axx, Axy, Ayy + # second derivative Gaussian kernels + gaussian_exp = np.exp(-(kx ** 2 + ky ** 2) / (2 * sigma ** 2)) + kernel_xx = 1 / (2 * np.pi * sigma ** 4) * (kx ** 2 / sigma ** 2 - 1) + kernel_xx *= gaussian_exp + kernel_xy = 1 / (2 * np.pi * sigma ** 6) * (kx * ky) + kernel_xy *= gaussian_exp + kernel_yy = kernel_xx.transpose() + + Hxx = ndimage.convolve(image, kernel_xx, mode=mode, cval=cval) + Hxy = ndimage.convolve(image, kernel_xy, mode=mode, cval=cval) + Hyy = ndimage.convolve(image, kernel_yy, mode=mode, cval=cval) + + return Hxx, Hxy, Hyy -def corner_kitchen_rosenfeld(image): +def corner_kitchen_rosenfeld(image, mode='constant', cval=0): """Compute Kitchen and Rosenfeld corner measure response image. The corner measure is calculated as follows:: @@ -82,6 +160,11 @@ def corner_kitchen_rosenfeld(image): ---------- image : ndarray Input image. + mode : {'constant', 'reflect', 'wrap', 'nearest', 'mirror'}, optional + How to handle values outside the image borders. + cval : float, optional + Used in conjunction with mode 'constant', the value outside + the image boundaries. Returns ------- @@ -90,9 +173,9 @@ def corner_kitchen_rosenfeld(image): """ - imx, imy = _compute_derivatives(image) - imxx, imxy = _compute_derivatives(imx) - imyx, imyy = _compute_derivatives(imy) + imx, imy = _compute_derivatives(image, mode=mode, cval=cval) + imxx, imxy = _compute_derivatives(imx, mode=mode, cval=cval) + imyx, imyy = _compute_derivatives(imy, mode=mode, cval=cval) numerator = (imxx * imy**2 + imyy * imx**2 - 2 * imxy * imx * imy) denominator = (imx**2 + imy**2) @@ -171,7 +254,7 @@ def corner_harris(image, method='k', k=0.05, eps=1e-6, sigma=1): """ - Axx, Axy, Ayy = _compute_auto_correlation(image, sigma) + Axx, Axy, Ayy = structure_tensor(image, sigma) # determinant detA = Axx * Ayy - Axy**2 @@ -241,7 +324,7 @@ def corner_shi_tomasi(image, sigma=1): """ - Axx, Axy, Ayy = _compute_auto_correlation(image, sigma) + Axx, Axy, Ayy = structure_tensor(image, sigma) # minimum eigenvalue of A response = ((Axx + Ayy) - np.sqrt((Axx - Ayy)**2 + 4 * Axy**2)) / 2 @@ -311,7 +394,7 @@ def corner_foerstner(image, sigma=1): """ - Axx, Axy, Ayy = _compute_auto_correlation(image, sigma) + Axx, Axy, Ayy = structure_tensor(image, sigma) # determinant detA = Axx * Ayy - Axy**2 @@ -330,7 +413,6 @@ def corner_foerstner(image, sigma=1): def corner_fast(image, n=12, threshold=0.15): - """Extract FAST corners for a given image. Parameters @@ -478,7 +560,7 @@ def corner_subpix(image, corners, window_size=11, alpha=0.99): maxx = x0 + wext + 2 window = image[miny:maxy, minx:maxx] - winx, winy = _compute_derivatives(window) + winx, winy = _compute_derivatives(window, mode='constant', cval=0) # compute gradient suares and remove border winx_winx = (winx * winx)[1:-1, 1:-1] From 02e81acec8805c66f157827054fb89f3026ea3af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Tue, 27 Aug 2013 15:10:48 +0200 Subject: [PATCH 170/577] Add missing imports --- skimage/feature/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index ea5ace67..c534fb12 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -31,4 +31,6 @@ __all__ = ['daisy', 'match_keypoints_brief', 'keypoints_censure', 'corner_fast', - 'corner_orientations'] + 'corner_orientations', + 'structure_tensor', + 'hessian_matrix'] From 3e2ca1493e15dba21f5632d44e2caa065280dce0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Tue, 27 Aug 2013 15:37:58 +0200 Subject: [PATCH 171/577] Add test cases for structure tensor and hessian matrix functions --- skimage/feature/corner.py | 4 ++- skimage/feature/tests/test_corner.py | 45 +++++++++++++++++++++++++++- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 66f9bc21..3d665946 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -126,7 +126,7 @@ def hessian_matrix(image, sigma=1, mode='constant', cval=0): # window extent to the left and right, which covers > 99% of the normal # distribution - window_ext = np.ceil(3 * sigma) + window_ext = max(1, np.ceil(3 * sigma)) ky, kx = np.mgrid[-window_ext:window_ext + 1, -window_ext:window_ext + 1] @@ -134,8 +134,10 @@ def hessian_matrix(image, sigma=1, mode='constant', cval=0): gaussian_exp = np.exp(-(kx ** 2 + ky ** 2) / (2 * sigma ** 2)) kernel_xx = 1 / (2 * np.pi * sigma ** 4) * (kx ** 2 / sigma ** 2 - 1) kernel_xx *= gaussian_exp + kernel_xx /= kernel_xx.sum() kernel_xy = 1 / (2 * np.pi * sigma ** 6) * (kx * ky) kernel_xy *= gaussian_exp + kernel_xy /= kernel_xx.sum() kernel_yy = kernel_xx.transpose() Hxx = ndimage.convolve(image, kernel_xx, mode=mode, cval=cval) diff --git a/skimage/feature/tests/test_corner.py b/skimage/feature/tests/test_corner.py index 47c6d016..48833f92 100644 --- a/skimage/feature/tests/test_corner.py +++ b/skimage/feature/tests/test_corner.py @@ -10,7 +10,50 @@ from skimage.morphology import octagon from skimage.feature import (corner_moravec, corner_harris, corner_shi_tomasi, corner_subpix, peak_local_max, corner_peaks, corner_kitchen_rosenfeld, corner_foerstner, - corner_fast, corner_orientations) + corner_fast, corner_orientations, + structure_tensor, hessian_matrix) + + +def test_structure_tensor(): + square = np.zeros((5, 5)) + square[2, 2] = 1 + Axx, Axy, Ayy = structure_tensor(square, sigma=0.1) + assert_array_equal(Axx, np.array([[ 0, 0, 0, 0, 0], + [ 0, 1, 0, 1, 0], + [ 0, 4, 0, 4, 0], + [ 0, 1, 0, 1, 0], + [ 0, 0, 0, 0, 0]])) + assert_array_equal(Axy, np.array([[ 0, 0, 0, 0, 0], + [ 0, 1, 0, -1, 0], + [ 0, 0, 0, -0, 0], + [ 0, -1, -0, 1, 0], + [ 0, 0, 0, 0, 0]])) + assert_array_equal(Ayy, np.array([[ 0, 0, 0, 0, 0], + [ 0, 1, 4, 1, 0], + [ 0, 0, 0, 0, 0], + [ 0, 1, 4, 1, 0], + [ 0, 0, 0, 0, 0]])) + + +def test_structure_tensor(): + square = np.zeros((5, 5)) + square[2, 2] = 1 + Hxx, Hxy, Hyy = hessian_matrix(square, sigma=0.1) + assert_array_equal(Hxx, np.array([[ 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0], + [ 0, 0, 1, 0, 0], + [ 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0]])) + assert_array_equal(Hxy, np.array([[ 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0]])) + assert_array_equal(Hyy, np.array([[ 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0], + [ 0, 0, 1, 0, 0], + [ 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0]])) def test_square_image(): From aee31e91a7b620b2d9cdfd0ace2410aeaf86994c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Tue, 27 Aug 2013 15:57:10 +0200 Subject: [PATCH 172/577] Add functions to compute eigen values of structure tensor and hessian matrix --- skimage/feature/__init__.py | 7 +++- skimage/feature/corner.py | 80 +++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 2 deletions(-) diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index c534fb12..1f7c960b 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -5,7 +5,8 @@ from .peak import peak_local_max from .corner import (corner_kitchen_rosenfeld, corner_harris, corner_shi_tomasi, corner_foerstner, corner_subpix, corner_peaks, corner_fast, structure_tensor, - hessian_matrix) + structure_tensor_eigvals, hessian_matrix, + hessian_matrix_eigvals) from .corner_cy import corner_moravec, corner_orientations from .template import match_template from ._brief import brief, match_keypoints_brief @@ -33,4 +34,6 @@ __all__ = ['daisy', 'corner_fast', 'corner_orientations', 'structure_tensor', - 'hessian_matrix'] + 'structure_tensor_eigvals', + 'hessian_matrix', + 'hessian_matrix_eigvals'] diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 3d665946..887de425 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -147,6 +147,86 @@ def hessian_matrix(image, sigma=1, mode='constant', cval=0): return Hxx, Hxy, Hyy +def _image_orthogonal_matrix22_eigvals(M00, M01, M11): + l1 = (M00 + M11) / 2 + np.sqrt(4 * M01 ** 2 + (M00 - M11) ** 2) / 2 + l2 = (M00 + M11) / 2 - np.sqrt(4 * M01 ** 2 + (M00 - M11) ** 2) / 2 + return l1, l2 + + +def structure_tensor_eigvals(Axx, Axy, Ayy): + """Compute Eigen values of structure tensor. + + Parameters + ---------- + Axx : ndarray + Element of the structure tensor for each pixel in the input image. + Axy : ndarray + Element of the structure tensor for each pixel in the input image. + Ayy : ndarray + Element of the structure tensor for each pixel in the input image. + + Returns + ------- + l1 : ndarray + Larger eigen value for each input matrix. + l2 : ndarray + Smaller eigen value for each input matrix. + + Examples + -------- + >>> from skimage.feature import structure_tensor, structure_tensor_eigvals + >>> square = np.zeros((5, 5)) + >>> square[2, 2] = 1 + >>> Axx, Axy, Ayy = structure_tensor(square, sigma=0.1) + >>> structure_tensor_eigvals(Axx, Axy, Ayy)[0] + array([[ 0., 0., 0., 0., 0.], + [ 0., 2., 4., 2., 0.], + [ 0., 4., 0., 4., 0.], + [ 0., 2., 4., 2., 0.], + [ 0., 0., 0., 0., 0.]]) + + """ + + return _image_orthogonal_matrix22_eigvals(Axx, Axy, Ayy) + + +def hessian_matrix_eigvals(Hxx, Hxy, Hyy): + """Compute Eigen values of Hessian matrix. + + Parameters + ---------- + Hxx : ndarray + Element of the Hessian matrix for each pixel in the input image. + Hxy : ndarray + Element of the Hessian matrix for each pixel in the input image. + Hyy : ndarray + Element of the Hessian matrix for each pixel in the input image. + + Returns + ------- + l1 : ndarray + Larger eigen value for each input matrix. + l2 : ndarray + Smaller eigen value for each input matrix. + + Examples + -------- + >>> from skimage.feature import hessian_matrix, hessian_matrix_eigvals + >>> square = np.zeros((5, 5)) + >>> square[2, 2] = 1 + >>> Hxx, Hxy, Hyy = hessian_matrix(square, sigma=0.1) + >>> hessian_matrix_eigvals(Hxx, Hxy, Hyy)[0] + array([[ 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0.], + [ 0., 0., 1., 0., 0.], + [ 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0.]]) + + """ + + return _image_orthogonal_matrix22_eigvals(Hyy, Hxy, Hyy) + + def corner_kitchen_rosenfeld(image, mode='constant', cval=0): """Compute Kitchen and Rosenfeld corner measure response image. From 53a339e4f4fcc0fba56d5898f5f6c934575c1301 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Tue, 27 Aug 2013 16:09:13 +0200 Subject: [PATCH 173/577] Add examples for structure tensor and hessian matrix functions --- skimage/feature/corner.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 887de425..5628972d 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -69,6 +69,19 @@ def structure_tensor(image, sigma=1, mode='constant', cval=0): Ayy : ndarray Element of the structure tensor for each pixel in the input image. + Examples + -------- + >>> from skimage.feature import structure_tensor + >>> square = np.zeros((5, 5)) + >>> square[2, 2] = 1 + >>> Axx, Axy, Ayy = structure_tensor(square, sigma=0.1) + >>> Axx + array([[ 0., 0., 0., 0., 0.], + [ 0., 1., 0., 1., 0.], + [ 0., 4., 0., 4., 0.], + [ 0., 1., 0., 1., 0.], + [ 0., 0., 0., 0., 0.]]) + """ image = np.squeeze(image) @@ -118,6 +131,19 @@ def hessian_matrix(image, sigma=1, mode='constant', cval=0): Hyy : ndarray Element of the Hessian matrix for each pixel in the input image. + Examples + -------- + >>> from skimage.feature import hessian_matrix, hessian_matrix_eigvals + >>> square = np.zeros((5, 5)) + >>> square[2, 2] = 1 + >>> Hxx, Hxy, Hyy = hessian_matrix(square, sigma=0.1) + >>> Hxx + array([[ 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0.], + [ 0., 0., 1., 0., 0.], + [ 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0.]]) + """ image = np.squeeze(image) From 186e447c25adb9ae9a6f89875a73cf670bef8127 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Tue, 27 Aug 2013 16:15:15 +0200 Subject: [PATCH 174/577] Add test cases for eigen value functions of structure tensor and hessian matrix --- skimage/feature/tests/test_corner.py | 67 +++++++++++++++++++++------- 1 file changed, 51 insertions(+), 16 deletions(-) diff --git a/skimage/feature/tests/test_corner.py b/skimage/feature/tests/test_corner.py index 48833f92..16566589 100644 --- a/skimage/feature/tests/test_corner.py +++ b/skimage/feature/tests/test_corner.py @@ -11,7 +11,8 @@ from skimage.feature import (corner_moravec, corner_harris, corner_shi_tomasi, corner_subpix, peak_local_max, corner_peaks, corner_kitchen_rosenfeld, corner_foerstner, corner_fast, corner_orientations, - structure_tensor, hessian_matrix) + structure_tensor, structure_tensor_eigvals, + hessian_matrix, hessian_matrix_eigvals) def test_structure_tensor(): @@ -39,21 +40,55 @@ def test_structure_tensor(): square = np.zeros((5, 5)) square[2, 2] = 1 Hxx, Hxy, Hyy = hessian_matrix(square, sigma=0.1) - assert_array_equal(Hxx, np.array([[ 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0], - [ 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0]])) - assert_array_equal(Hxy, np.array([[ 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0]])) - assert_array_equal(Hyy, np.array([[ 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0], - [ 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0]])) + assert_array_equal(Hxx, np.array([[0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 1, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0]])) + assert_array_equal(Hxy, np.array([[0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0]])) + assert_array_equal(Hyy, np.array([[0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 1, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0]])) + + +def test_structure_tensor_eigvals(): + square = np.zeros((5, 5)) + square[2, 2] = 1 + Axx, Axy, Ayy = structure_tensor(square, sigma=0.1) + l1, l2 = structure_tensor_eigvals(Axx, Axy, Ayy) + assert_array_equal(l1, np.array([[0, 0, 0, 0, 0], + [0, 2, 4, 2, 0], + [0, 4, 0, 4, 0], + [0, 2, 4, 2, 0], + [0, 0, 0, 0, 0]])) + assert_array_equal(l2, np.array([[0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0]])) + + +def test_structure_tensor_eigvals(): + square = np.zeros((5, 5)) + square[2, 2] = 1 + Hxx, Hxy, Hyy = hessian_matrix(square, sigma=0.1) + l1, l2 = hessian_matrix_eigvals(Hxx, Hxy, Hyy) + assert_array_equal(l1, np.array([[0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 1, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0]])) + assert_array_equal(l2, np.array([[0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 1, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0]])) def test_square_image(): From 3e1b6c2899590332ed8c1a47f104820d9f321333 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 28 Aug 2013 10:04:02 +0530 Subject: [PATCH 175/577] Making the example more explicit --- skimage/feature/corner.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 5628972d..a2ab0a18 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -569,7 +569,8 @@ def corner_fast(image, n=12, threshold=0.15): [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]) - >>> corner_peaks(corner_fast(square, 9), min_distance=1) + >>> corners = corner_peaks(corner_fast(square, 9), min_distance=1) + >>> corners array([[3, 3], [3, 8], [8, 3], From f9b6e1ba8fe6ca5ca3325e886ef241699d147624 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 28 Aug 2013 10:20:15 +0530 Subject: [PATCH 176/577] Inserting corners in the corner_orientaions example --- skimage/feature/corner.py | 3 +-- skimage/feature/corner_cy.pyx | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index a2ab0a18..5628972d 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -569,8 +569,7 @@ def corner_fast(image, n=12, threshold=0.15): [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]) - >>> corners = corner_peaks(corner_fast(square, 9), min_distance=1) - >>> corners + >>> corner_peaks(corner_fast(square, 9), min_distance=1) array([[3, 3], [3, 8], [8, 3], diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 031d909d..c0046a08 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -219,7 +219,8 @@ def corner_orientations(image, Py_ssize_t[:, :] corners, mask): [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]) - >>> corner_peaks(corner_fast(square, 9), min_distance=1) + >>> corners = corner_peaks(corner_fast(square, 9), min_distance=1) + >>> corners array([[3, 3], [3, 8], [8, 3], From 7d8c59135f944a02d016d2c455b4e62a1a59205d Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Sun, 1 Sep 2013 09:03:09 +0530 Subject: [PATCH 177/577] Implementing keypoints_orb without using Harris response --- skimage/feature/__init__.py | 5 ++++- skimage/feature/orb.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index 1f7c960b..8b33d6c7 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -12,6 +12,7 @@ from .template import match_template from ._brief import brief, match_keypoints_brief from .util import pairwise_hamming_distance from .censure import keypoints_censure +from .orb import keypoints_orb, descriptor_orb __all__ = ['daisy', 'hog', @@ -36,4 +37,6 @@ __all__ = ['daisy', 'structure_tensor', 'structure_tensor_eigvals', 'hessian_matrix', - 'hessian_matrix_eigvals'] + 'hessian_matrix_eigvals', + 'keypoints_orb', + 'descriptor_orb'] diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 009d1276..f6b4e01c 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -3,6 +3,39 @@ import numpy as np from ..util import img_as_float from .util import _mask_border_keypoints +from skimage.feature import corner_fast, corner_orientations, corner_peaks +from skimage.transform import pyramid_gaussian + + +def keypoints_orb(image, n=9, threshold=0.20, downscale_factor=1.414, + n_scales=5): + + image = np.squeeze(image) + if image.ndim != 2: + raise ValueError("Only 2-D gray-scale images supported.") + + pyramid = list(pyramid_gaussian(image, n_scales - 1, downscale_factor)) + + ofast_mask = np.array([[0, 0, 1, 1, 1, 0, 0], + [0, 1, 1, 1, 1, 1, 0], + [1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1], + [0, 1, 1, 1, 1, 1, 0], + [0, 0, 1, 1, 1, 0, 0]], dtype=np.uint8) + + keypoints = np.empty((0, 2), dtype=np.intp) + orientations = np.empty((0), dtype=np.double) + scales = np.empty((0), dtype=np.intp) + + for i in range(n_scales): + corners = corner_peaks(corner_fast(pyramid[i], n, threshold), min_distance=1) + keypoints = np.vstack((keypoints, corners)) + orientations = np.hstack((orientations, corner_orientations(pyramid[i], corners, ofast_mask))) + scales = np.hstack((scales, i * np.ones((corners.shape[0]), dtype=np.intp))) + + return keypoints, orientations, scales + def descriptor_orb(image, keypoints, keypoints_angle): From f94bf8628c96a1307c0d307fc28a96fef781094d Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 4 Sep 2013 04:02:43 +0530 Subject: [PATCH 178/577] Returning best_keypoints --- skimage/feature/orb.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index f6b4e01c..74859d30 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -3,12 +3,13 @@ import numpy as np from ..util import img_as_float from .util import _mask_border_keypoints -from skimage.feature import corner_fast, corner_orientations, corner_peaks +from skimage.feature import (corner_fast, corner_orientations, corner_peaks, + corner_harris) from skimage.transform import pyramid_gaussian -def keypoints_orb(image, n=9, threshold=0.20, downscale_factor=1.414, - n_scales=5): +def keypoints_orb(image, fast_n=9, fast_threshold=0.20, n_keypoints=200, + harris_k=0.05, downscale_factor=1.414, n_scales=5): image = np.squeeze(image) if image.ndim != 2: @@ -27,14 +28,21 @@ def keypoints_orb(image, n=9, threshold=0.20, downscale_factor=1.414, keypoints = np.empty((0, 2), dtype=np.intp) orientations = np.empty((0), dtype=np.double) scales = np.empty((0), dtype=np.intp) + harris_measure = np.empty((0), dtype=np.double) for i in range(n_scales): - corners = corner_peaks(corner_fast(pyramid[i], n, threshold), min_distance=1) + harris_response = corner_harris(pyramid[i], method='k', k=harris_k) + corners = corner_peaks(corner_fast(pyramid[i], fast_n, fast_threshold), min_distance=1) keypoints = np.vstack((keypoints, corners)) orientations = np.hstack((orientations, corner_orientations(pyramid[i], corners, ofast_mask))) scales = np.hstack((scales, i * np.ones((corners.shape[0]), dtype=np.intp))) + harris_measure = np.hstack((harris_measure, harris_response[corners[:, 0], corners[:, 1]])) - return keypoints, orientations, scales + if keypoints.shape[0] < n_keypoints: + return keypoints, orientations, scales + else: + best_indices = harris_measure.argsort()[::-1][:n_keypoints] + return keypoints[best_indices], orientations[best_indices], scales[best_indices] def descriptor_orb(image, keypoints, keypoints_angle): From 3110916d868902fd9ec33f691be833e3f556cdbd Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 4 Sep 2013 18:29:51 +0530 Subject: [PATCH 179/577] Docstrings; Stacking lists; removing redundancy in corner_orientations --- skimage/feature/corner_cy.pyx | 6 +-- skimage/feature/orb.py | 74 ++++++++++++++++++++++++++++++----- 2 files changed, 66 insertions(+), 14 deletions(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index c0046a08..929e3d4f 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -248,13 +248,12 @@ def corner_orientations(image, Py_ssize_t[:, :] corners, mask): cdef Py_ssize_t mcols2 = (mcols - 1) / 2 cdef double[:] orientations = np.zeros(corners.shape[0], dtype=np.double) cdef double curr_pixel - cdef double m00, m01, m10 + cdef double m01, m10 for i in range(corners.shape[0]): r0 = corners[i, 0] - mrows2 c0 = corners[i, 1] - mcols2 - m00 = 0 m01 = 0 m10 = 0 @@ -262,10 +261,9 @@ def corner_orientations(image, Py_ssize_t[:, :] corners, mask): for c in range(mcols): if cmask[r, c]: curr_pixel = cimage[r0 + r, c0 + c] - m00 += curr_pixel m01 += curr_pixel * (c - mcols2) m10 += curr_pixel * (r - mrows2) - orientations[i] = atan2(m10 / m00, m01 / m00) + orientations[i] = atan2(m10, m01) return np.asarray(orientations) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 74859d30..6f094295 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -8,9 +8,58 @@ from skimage.feature import (corner_fast, corner_orientations, corner_peaks, from skimage.transform import pyramid_gaussian -def keypoints_orb(image, fast_n=9, fast_threshold=0.20, n_keypoints=200, - harris_k=0.05, downscale_factor=1.414, n_scales=5): +def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, + harris_k=0.05, downscale_factor=np.sqrt(2), n_scales=5): + """Compute Oriented Fast keypoints. + + Parameters + ---------- + image : 2D ndarray + Input grayscale image. + n_keypoints : int + Number of keypoints to be returned from this function. The function + will return best `n_keypoints` if more than n_keypoints are detected + based on the values of other parameters. If not, then all the detected + keypoints are returned. + fast_n : int + The `n` parameter in `feature.corner_fast`. Minimum number of + consecutive pixels out of 16 pixels on the circle that should all be + either brighter or darker w.r.t testpixel. A point c on the circle is + darker w.r.t test pixel p if `Ic < Ip - threshold` and brighter if + `Ic > Ip + threshold`. Also stands for the n in `FAST-n` corner + detector. + fast_threshold : float + The `threshold` parameter in `feature.corner_fast`. Threshold used to + decide whether the pixels on the circle are brighter, darker or + similar w.r.t. the test pixel. Decrease the threshold when more + corners are desired and vice-versa. + harris_k : float + The `k` parameter in `feature.corner_harris`. Sensitivity factor to + separate corners from edges, typically in range `[0, 0.2]`. Small + values of k result in detection of sharp corners. + downscale_factor : float + Downscale factor for the image pyramid. + n_scales : int + Number of scales from the bottom of the image pyramid to extract + the features from. + + Returns + ------- + keypoints : (N, 2) ndarray + The oFAST keypoints. + orientations : (N,) ndarray + The orientations of the N extracted keypoints. + scales : (N,) ndarray + The scales of the N extracted keypoints. + + References + ---------- + ..[1] Ethan Rublee, Vincent Rabaud, Kurt Konolige and Gary Bradski + "ORB : An efficient alternative to SIFT and SURF" + http://www.vision.cs.chubu.ac.jp/CV-R/pdf/Rublee_iccv2011.pdf + + """ image = np.squeeze(image) if image.ndim != 2: raise ValueError("Only 2-D gray-scale images supported.") @@ -25,18 +74,23 @@ def keypoints_orb(image, fast_n=9, fast_threshold=0.20, n_keypoints=200, [0, 1, 1, 1, 1, 1, 0], [0, 0, 1, 1, 1, 0, 0]], dtype=np.uint8) - keypoints = np.empty((0, 2), dtype=np.intp) - orientations = np.empty((0), dtype=np.double) - scales = np.empty((0), dtype=np.intp) - harris_measure = np.empty((0), dtype=np.double) + keypoints_list = [] + orientations_list = [] + scales_list = [] + harris_measure_list = [] for i in range(n_scales): harris_response = corner_harris(pyramid[i], method='k', k=harris_k) corners = corner_peaks(corner_fast(pyramid[i], fast_n, fast_threshold), min_distance=1) - keypoints = np.vstack((keypoints, corners)) - orientations = np.hstack((orientations, corner_orientations(pyramid[i], corners, ofast_mask))) - scales = np.hstack((scales, i * np.ones((corners.shape[0]), dtype=np.intp))) - harris_measure = np.hstack((harris_measure, harris_response[corners[:, 0], corners[:, 1]])) + keypoints_list.append(corners) + orientations_list.append(corner_orientations(pyramid[i], corners, ofast_mask)) + scales_list.append(i * np.ones((corners.shape[0]), dtype=np.intp)) + harris_measure_list.append(harris_response[corners[:, 0], corners[:, 1]]) + + keypoints = np.vstack(keypoints_list) + orientations = np.hstack(orientations_list) + scales = np.hstack(scales_list) + harris_measure = np.hstack(harris_measure_list) if keypoints.shape[0] < n_keypoints: return keypoints, orientations, scales From e8eb2de6e993f7925ca5cc19370b508ee3fcd203 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 4 Sep 2013 19:08:57 +0530 Subject: [PATCH 180/577] Adding explicit test for corner_orientations --- skimage/feature/tests/test_corner.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/skimage/feature/tests/test_corner.py b/skimage/feature/tests/test_corner.py index 16566589..200c9e2a 100644 --- a/skimage/feature/tests/test_corner.py +++ b/skimage/feature/tests/test_corner.py @@ -280,6 +280,17 @@ def test_corner_orientations_lena(): assert_almost_equal(actual, expected) +def test_corner_orientations_square(): + square = np.zeros((12, 12)) + square[3:9, 3:9] = 1 + corners = corner_peaks(corner_fast(square, 9), min_distance=1) + actual_orientations = corner_orientations(square, corners, octagon(3, 2)) + actual_orientations_degrees = np.rad2deg(actual_orientations) + expected_orientations_degree = np.array([ 45., 135., -45., -135.]) + assert_array_equal(actual_orientations_degrees, + expected_orientations_degree) + + if __name__ == '__main__': from numpy import testing testing.run_module_suite() From 07fdfdb5fec90ea8148a7a6c0d64e6b499eac1c6 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 5 Sep 2013 17:45:02 +0530 Subject: [PATCH 181/577] Implementing descriptor_orb; for loop in Cython --- bento.info | 3 +++ skimage/feature/orb.py | 39 +++++++++++++++++++++++++++++--------- skimage/feature/orb_cy.pyx | 33 ++++++++++++++++++++++++++++++++ skimage/feature/setup.py | 3 +++ 4 files changed, 69 insertions(+), 9 deletions(-) create mode 100644 skimage/feature/orb_cy.pyx diff --git a/bento.info b/bento.info index 30367057..725d1c06 100644 --- a/bento.info +++ b/bento.info @@ -96,6 +96,9 @@ Library: Extension: skimage.feature.censure_cy Sources: skimage/feature/censure_cy.pyx + Extension: skimage.feature.orb_cy + Sources: + skimage/feature/orb_cy.pyx Extension: skimage.feature._brief_cy Sources: skimage/feature/_brief_cy.pyx diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 6f094295..83d779cd 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -7,6 +7,7 @@ from skimage.feature import (corner_fast, corner_orientations, corner_peaks, corner_harris) from skimage.transform import pyramid_gaussian +from .orb_cy import _orb_loop def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, harris_k=0.05, downscale_factor=np.sqrt(2), n_scales=5): @@ -42,7 +43,7 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, Downscale factor for the image pyramid. n_scales : int Number of scales from the bottom of the image pyramid to extract - the features from. + the features from. Returns ------- @@ -59,7 +60,7 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, "ORB : An efficient alternative to SIFT and SURF" http://www.vision.cs.chubu.ac.jp/CV-R/pdf/Rublee_iccv2011.pdf - """ + """ image = np.squeeze(image) if image.ndim != 2: raise ValueError("Only 2-D gray-scale images supported.") @@ -99,7 +100,8 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, return keypoints[best_indices], orientations[best_indices], scales[best_indices] -def descriptor_orb(image, keypoints, keypoints_angle): +def descriptor_orb(image, keypoints, keypoints_orientations, + keypoints_scales, downscale_factor=np.sqrt(2), n_scales=5): image = np.squeeze(image) if image.ndim != 2: @@ -107,14 +109,33 @@ def descriptor_orb(image, keypoints, keypoints_angle): image = img_as_float(image) - mask = _mask_border_keypoints(image, keypoints, 13) - keypoints = keypoints[mask] - keypoints_angle = keypoints_angle[mask] + pyramid = list(pyramid_gaussian(image, n_scales - 1, downscale_factor)) - pos1 = binary_tests[:, :2] - pos2 = binary_tests[:, 2:] + pos0 = binary_tests[:, :2].astype(np.int32) + pos1 = binary_tests[:, 2:].astype(np.int32) - descriptors = np.zeros((keypoints.shape[0], 256), dtype=bool) + pos0 = np.ascontiguousarray(pos0) + pos1 = np.ascontiguousarray(pos1) + + descriptors = np.empty((0, 256), dtype=np.bool) + + for k in range(n_scales): + curr_image = np.ascontiguousarray(pyramid[k]) + + curr_scale_mask = keypoints_scales == k + curr_scale_kpts = keypoints[curr_scale_mask] + curr_scale_kpts_orientation = keypoints_orientations[curr_scale_mask] + + border_mask = _mask_border_keypoints(curr_image, curr_scale_kpts, 13) + curr_scale_kpts = curr_scale_kpts[border_mask] + curr_scale_kpts_orientation = curr_scale_kpts_orientation[border_mask] + + curr_scale_descriptors = np.zeros((curr_scale_kpts.shape[0], 256), dtype=np.bool, order='C') + curr_scale_kpts = np.ascontiguousarray(curr_scale_kpts) + curr_scale_kpts_orientation = np.ascontiguousarray(curr_scale_kpts_orientation) + _orb_loop(curr_image, curr_scale_descriptors.view(np.uint8), curr_scale_kpts, curr_scale_kpts_orientation, pos0, pos1) + + descriptors = np.vstack((descriptors, curr_scale_descriptors)) for i in range(keypoints.shape[0]): angle = keypoints_angle[i] diff --git a/skimage/feature/orb_cy.pyx b/skimage/feature/orb_cy.pyx new file mode 100644 index 00000000..15805bd7 --- /dev/null +++ b/skimage/feature/orb_cy.pyx @@ -0,0 +1,33 @@ +#cython: cdivision=True +#cython: boundscheck=False +#cython: nonecheck=False +#cython: wraparound=False + +cimport numpy as cnp + +import numpy as np + + +def _orb_loop(double[:, ::1] image, char[:, ::1] descriptors, Py_ssize_t[:, ::1] keypoints, + double[:] orientations, int[:, ::1] pos0, int[:, ::1] pos1): + + cdef Py_ssize_t i, d, kr, kc, pr0, pr1, pc0, pc1 + cdef int[:, ::1] steered_pos0, steered_pos1 + + for i in range(keypoints.shape[0]): + angle = orientations[i] + a = np.sin(angle * np.pi / 180.) + b = np.cos(angle * np.pi / 180.) + rotation_matrix = np.asarray([[b, a], [-a, b]]) + steered_pos0 = np.dot(pos0, rotation_matrix).astype(np.int32) + steered_pos1 = np.dot(pos1, rotation_matrix).astype(np.int32) + kr = keypoints[i, 0] + kc = keypoints[i, 1] + for j in range(256): + pr0 = steered_pos0[j][0] + pc0 = steered_pos0[j][1] + pr1 = steered_pos1[j][0] + pc1 = steered_pos1[j][1] + + if image[kr + pr0, kc + pc0] < image[kr + pr1, kc + pc1]: + descriptors[i, j] = True diff --git a/skimage/feature/setup.py b/skimage/feature/setup.py index 7df64c32..4f54faeb 100644 --- a/skimage/feature/setup.py +++ b/skimage/feature/setup.py @@ -14,6 +14,7 @@ def configuration(parent_package='', top_path=None): cython(['corner_cy.pyx'], working_path=base_path) cython(['censure_cy.pyx'], working_path=base_path) + cython(['orb_cy.pyx'], working_path=base_path) cython(['_brief_cy.pyx'], working_path=base_path) cython(['_texture.pyx'], working_path=base_path) cython(['_template.pyx'], working_path=base_path) @@ -22,6 +23,8 @@ def configuration(parent_package='', top_path=None): include_dirs=[get_numpy_include_dirs()]) config.add_extension('censure_cy', sources=['censure_cy.c'], include_dirs=[get_numpy_include_dirs()]) + config.add_extension('orb_cy', sources=['orb_cy.c'], + include_dirs=[get_numpy_include_dirs()]) config.add_extension('_brief_cy', sources=['_brief_cy.c'], include_dirs=[get_numpy_include_dirs()]) config.add_extension('_texture', sources=['_texture.c'], From deb1f70610a4e1a8f65ae0bfc8c003de86e71867 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 5 Sep 2013 18:03:26 +0530 Subject: [PATCH 182/577] Returning keypoints; Adding docstrings --- skimage/feature/orb.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 83d779cd..c6085e88 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -9,6 +9,7 @@ from skimage.transform import pyramid_gaussian from .orb_cy import _orb_loop + def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, harris_k=0.05, downscale_factor=np.sqrt(2), n_scales=5): @@ -102,7 +103,42 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, def descriptor_orb(image, keypoints, keypoints_orientations, keypoints_scales, downscale_factor=np.sqrt(2), n_scales=5): + """Compute Oriented Fast keypoints. + Parameters + ---------- + image : 2D ndarray + Input grayscale image. + keypoints : (N, 2) ndarray + Array of N keypoint locations in the format (row, col). + keypoints_orientations : (N,) ndarray + The orientations of the corresponding N keypoints. + keypoints_scales : (N,) ndarray + The scales of the corresponding N keypoints. + downscale_factor : float + Downscale factor for the image pyramid. Should be the same as that + used in `keypoints_orb`. + n_scales : int + Number of scales from the bottom of the image pyramid to extract + the features from. + + Returns + ------- + descriptors : (P, 256) bool ndarray + 2darray of type bool describing the P keypoints obtained after + filtering out those near the image border. Size of each descriptor + is 32 bytes or 256 bits. + filtered_keypoints : (P, 2) ndarray + Location i.e. (row, col) of P keypoints after removing out those that + are near border. + + References + ---------- + ..[1] Ethan Rublee, Vincent Rabaud, Kurt Konolige and Gary Bradski + "ORB : An efficient alternative to SIFT and SURF" + http://www.vision.cs.chubu.ac.jp/CV-R/pdf/Rublee_iccv2011.pdf + + """ image = np.squeeze(image) if image.ndim != 2: raise ValueError("Only 2-D gray-scale images supported.") @@ -136,6 +172,7 @@ def descriptor_orb(image, keypoints, keypoints_orientations, _orb_loop(curr_image, curr_scale_descriptors.view(np.uint8), curr_scale_kpts, curr_scale_kpts_orientation, pos0, pos1) descriptors = np.vstack((descriptors, curr_scale_descriptors)) + filtered_keypoints = np.vstack((filtered_keypoints, curr_scale_kpts)) for i in range(keypoints.shape[0]): angle = keypoints_angle[i] From 4ef1221cfd6f9b3936ce705331197a38e5cf7860 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 5 Sep 2013 18:04:57 +0530 Subject: [PATCH 183/577] Minor doc change --- skimage/feature/orb.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index c6085e88..d2cc5022 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -103,14 +103,14 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, def descriptor_orb(image, keypoints, keypoints_orientations, keypoints_scales, downscale_factor=np.sqrt(2), n_scales=5): - """Compute Oriented Fast keypoints. + """Compute rBRIEF descriptors of input keypoints. Parameters ---------- image : 2D ndarray Input grayscale image. keypoints : (N, 2) ndarray - Array of N keypoint locations in the format (row, col). + Array of N input keypoint locations in the format (row, col). keypoints_orientations : (N,) ndarray The orientations of the corresponding N keypoints. keypoints_scales : (N,) ndarray From 914ab05fb64592454b3a932644c02fe1f67dea75 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 5 Sep 2013 19:06:09 +0530 Subject: [PATCH 184/577] Better naming of arguments --- skimage/feature/orb.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index d2cc5022..a92c0b2b 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -11,7 +11,7 @@ from .orb_cy import _orb_loop def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, - harris_k=0.05, downscale_factor=np.sqrt(2), n_scales=5): + harris_k=0.05, downscale=np.sqrt(2), n_scales=5): """Compute Oriented Fast keypoints. @@ -40,7 +40,7 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, The `k` parameter in `feature.corner_harris`. Sensitivity factor to separate corners from edges, typically in range `[0, 0.2]`. Small values of k result in detection of sharp corners. - downscale_factor : float + downscale : float Downscale factor for the image pyramid. n_scales : int Number of scales from the bottom of the image pyramid to extract @@ -66,7 +66,7 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, if image.ndim != 2: raise ValueError("Only 2-D gray-scale images supported.") - pyramid = list(pyramid_gaussian(image, n_scales - 1, downscale_factor)) + pyramid = list(pyramid_gaussian(image, n_scales - 1, downscale)) ofast_mask = np.array([[0, 0, 1, 1, 1, 0, 0], [0, 1, 1, 1, 1, 1, 0], @@ -101,8 +101,8 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, return keypoints[best_indices], orientations[best_indices], scales[best_indices] -def descriptor_orb(image, keypoints, keypoints_orientations, - keypoints_scales, downscale_factor=np.sqrt(2), n_scales=5): +def descriptor_orb(image, keypoints, orientations, scales, + downscale=np.sqrt(2), n_scales=5): """Compute rBRIEF descriptors of input keypoints. Parameters @@ -111,11 +111,11 @@ def descriptor_orb(image, keypoints, keypoints_orientations, Input grayscale image. keypoints : (N, 2) ndarray Array of N input keypoint locations in the format (row, col). - keypoints_orientations : (N,) ndarray + orientations : (N,) ndarray The orientations of the corresponding N keypoints. - keypoints_scales : (N,) ndarray + scales : (N,) ndarray The scales of the corresponding N keypoints. - downscale_factor : float + downscale : float Downscale factor for the image pyramid. Should be the same as that used in `keypoints_orb`. n_scales : int @@ -145,7 +145,7 @@ def descriptor_orb(image, keypoints, keypoints_orientations, image = img_as_float(image) - pyramid = list(pyramid_gaussian(image, n_scales - 1, downscale_factor)) + pyramid = list(pyramid_gaussian(image, n_scales - 1, downscale)) pos0 = binary_tests[:, :2].astype(np.int32) pos1 = binary_tests[:, 2:].astype(np.int32) @@ -158,11 +158,11 @@ def descriptor_orb(image, keypoints, keypoints_orientations, for k in range(n_scales): curr_image = np.ascontiguousarray(pyramid[k]) - curr_scale_mask = keypoints_scales == k + curr_scale_mask = scales == k curr_scale_kpts = keypoints[curr_scale_mask] - curr_scale_kpts_orientation = keypoints_orientations[curr_scale_mask] + curr_scale_kpts_orientation = orientations[curr_scale_mask] - border_mask = _mask_border_keypoints(curr_image, curr_scale_kpts, 13) + border_mask = _mask_border_keypoints(curr_image, curr_scale_kpts, dist=13) curr_scale_kpts = curr_scale_kpts[border_mask] curr_scale_kpts_orientation = curr_scale_kpts_orientation[border_mask] From 0bbc1d79338a33f56f7e1a4d4c1c1a2466f31719 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Fri, 6 Sep 2013 01:26:50 +0530 Subject: [PATCH 185/577] Writing better Cython code --- skimage/feature/corner_cy.pyx | 6 +- skimage/feature/orb.py | 10 +- skimage/feature/orb_cy.pyx | 295 ++++++++++++++++++++++++++++++++-- 3 files changed, 286 insertions(+), 25 deletions(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 929e3d4f..f4507b64 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -261,9 +261,9 @@ def corner_orientations(image, Py_ssize_t[:, :] corners, mask): for c in range(mcols): if cmask[r, c]: curr_pixel = cimage[r0 + r, c0 + c] - m01 += curr_pixel * (c - mcols2) - m10 += curr_pixel * (r - mrows2) + m10 += curr_pixel * (c - mcols2) + m01 += curr_pixel * (r - mrows2) - orientations[i] = atan2(m10, m01) + orientations[i] = atan2(m01, m10) return np.asarray(orientations) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index a92c0b2b..8713822b 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -147,12 +147,6 @@ def descriptor_orb(image, keypoints, orientations, scales, pyramid = list(pyramid_gaussian(image, n_scales - 1, downscale)) - pos0 = binary_tests[:, :2].astype(np.int32) - pos1 = binary_tests[:, 2:].astype(np.int32) - - pos0 = np.ascontiguousarray(pos0) - pos1 = np.ascontiguousarray(pos1) - descriptors = np.empty((0, 256), dtype=np.bool) for k in range(n_scales): @@ -166,10 +160,10 @@ def descriptor_orb(image, keypoints, orientations, scales, curr_scale_kpts = curr_scale_kpts[border_mask] curr_scale_kpts_orientation = curr_scale_kpts_orientation[border_mask] - curr_scale_descriptors = np.zeros((curr_scale_kpts.shape[0], 256), dtype=np.bool, order='C') + curr_scale_descriptors = np.zeros((curr_scale_kpts.shape[0], 256), dtype=np.bool) curr_scale_kpts = np.ascontiguousarray(curr_scale_kpts) curr_scale_kpts_orientation = np.ascontiguousarray(curr_scale_kpts_orientation) - _orb_loop(curr_image, curr_scale_descriptors.view(np.uint8), curr_scale_kpts, curr_scale_kpts_orientation, pos0, pos1) + _orb_loop(curr_image, curr_scale_descriptors.view(np.uint8), curr_scale_kpts, curr_scale_kpts_orientation) descriptors = np.vstack((descriptors, curr_scale_descriptors)) filtered_keypoints = np.vstack((filtered_keypoints, curr_scale_kpts)) diff --git a/skimage/feature/orb_cy.pyx b/skimage/feature/orb_cy.pyx index 15805bd7..0a7f3044 100644 --- a/skimage/feature/orb_cy.pyx +++ b/skimage/feature/orb_cy.pyx @@ -4,30 +4,297 @@ #cython: wraparound=False cimport numpy as cnp - import numpy as np +from libc.math cimport sin, cos, M_PI, round + def _orb_loop(double[:, ::1] image, char[:, ::1] descriptors, Py_ssize_t[:, ::1] keypoints, - double[:] orientations, int[:, ::1] pos0, int[:, ::1] pos1): + double[:] orientations): - cdef Py_ssize_t i, d, kr, kc, pr0, pr1, pc0, pc1 + cdef Py_ssize_t i, d, kr, kc, pr0, pr1, pc0, pc1, spr0, spc0, spr1, spc1 + cdef char[:, ::1] pos0 = binary_tests[:, :2] + cdef char[:, ::1] pos1 = binary_tests[:, 2:] cdef int[:, ::1] steered_pos0, steered_pos1 + cdef double angle for i in range(keypoints.shape[0]): angle = orientations[i] - a = np.sin(angle * np.pi / 180.) - b = np.cos(angle * np.pi / 180.) - rotation_matrix = np.asarray([[b, a], [-a, b]]) - steered_pos0 = np.dot(pos0, rotation_matrix).astype(np.int32) - steered_pos1 = np.dot(pos1, rotation_matrix).astype(np.int32) + sin_a = sin(angle * M_PI / 180.) + cos_a = cos(angle * M_PI / 180.) + kr = keypoints[i, 0] kc = keypoints[i, 1] - for j in range(256): - pr0 = steered_pos0[j][0] - pc0 = steered_pos0[j][1] - pr1 = steered_pos1[j][0] - pc1 = steered_pos1[j][1] - if image[kr + pr0, kc + pc0] < image[kr + pr1, kc + pc1]: + for j in range(256): + pr0 = pos0[j][0] + pc0 = pos0[j][1] + pr1 = pos1[j][0] + pc1 = pos1[j][1] + + spr0 = round(sin_a * pr0 + cos_a * pc0) + spc0 = round(cos_a * pr0 - sin_a * pc0) + spr1 = round(sin_a * pr1 + cos_a * pc1) + spc1 = round(cos_a * pr1 - sin_a * pc1) + + if image[kr + spr0, kc + spc0] < image[kr + spr1, kc + spc1]: descriptors[i, j] = True + + +# Learned 256 decision pairs for binary tests in rBRIEF. Taken from OpenCV. +cdef char[:, ::1] binary_tests = np.ascontiguousarray(np.asarray([[8,-3, 9,5], + [4,2, 7,-12], + [-11,9, -8,2], + [7,-12, 12,-13], + [2,-13, 2,12], + [1,-7, 1,6], + [-2,-10, -2,-4], + [-13,-13, -11,-8], + [-13,-3, -12,-9], + [10,4, 11,9], + [-13,-8, -8,-9], + [-11,7, -9,12], + [7,7, 12,6], + [-4,-5, -3,0], + [-13,2, -12,-3], + [-9,0, -7,5], + [12,-6, 12,-1], + [-3,6, -2,12], + [-6,-13, -4,-8], + [11,-13, 12,-8], + [4,7, 5,1], + [5,-3, 10,-3], + [3,-7, 6,12], + [-8,-7, -6,-2], + [-2,11, -1,-10], + [-13,12, -8,10], + [-7,3, -5,-3], + [-4,2, -3,7], + [-10,-12, -6,11], + [5,-12, 6,-7], + [5,-6, 7,-1], + [1,0, 4,-5], + [9,11, 11,-13], + [4,7, 4,12], + [2,-1, 4,4], + [-4,-12, -2,7], + [-8,-5, -7,-10], + [4,11, 9,12], + [0,-8, 1,-13], + [-13,-2, -8,2], + [-3,-2, -2,3], + [-6,9, -4,-9], + [8,12, 10,7], + [0,9, 1,3], + [7,-5, 11,-10], + [-13,-6, -11,0], + [10,7, 12,1], + [-6,-3, -6,12], + [10,-9, 12,-4], + [-13,8, -8,-12], + [-13,0, -8,-4], + [3,3, 7,8], + [5,7, 10,-7], + [-1,7, 1,-12], + [3,-10, 5,6], + [2,-4, 3,-10], + [-13,0, -13,5], + [-13,-7, -12,12], + [-13,3, -11,8], + [-7,12, -4,7], + [6,-10, 12,8], + [-9,-1, -7,-6], + [-2,-5, 0,12], + [-12,5, -7,5], + [3,-10, 8,-13], + [-7,-7, -4,5], + [-3,-2, -1,-7], + [2,9, 5,-11], + [-11,-13, -5,-13], + [-1,6, 0,-1], + [5,-3, 5,2], + [-4,-13, -4,12], + [-9,-6, -9,6], + [-12,-10, -8,-4], + [10,2, 12,-3], + [7,12, 12,12], + [-7,-13, -6,5], + [-4,9, -3,4], + [7,-1, 12,2], + [-7,6, -5,1], + [-13,11, -12,5], + [-3,7, -2,-6], + [7,-8, 12,-7], + [-13,-7, -11,-12], + [1,-3, 12,12], + [2,-6, 3,0], + [-4,3, -2,-13], + [-1,-13, 1,9], + [7,1, 8,-6], + [1,-1, 3,12], + [9,1, 12,6], + [-1,-9, -1,3], + [-13,-13, -10,5], + [7,7, 10,12], + [12,-5, 12,9], + [6,3, 7,11], + [5,-13, 6,10], + [2,-12, 2,3], + [3,8, 4,-6], + [2,6, 12,-13], + [9,-12, 10,3], + [-8,4, -7,9], + [-11,12, -4,-6], + [1,12, 2,-8], + [6,-9, 7,-4], + [2,3, 3,-2], + [6,3, 11,0], + [3,-3, 8,-8], + [7,8, 9,3], + [-11,-5, -6,-4], + [-10,11, -5,10], + [-5,-8, -3,12], + [-10,5, -9,0], + [8,-1, 12,-6], + [4,-6, 6,-11], + [-10,12, -8,7], + [4,-2, 6,7], + [-2,0, -2,12], + [-5,-8, -5,2], + [7,-6, 10,12], + [-9,-13, -8,-8], + [-5,-13, -5,-2], + [8,-8, 9,-13], + [-9,-11, -9,0], + [1,-8, 1,-2], + [7,-4, 9,1], + [-2,1, -1,-4], + [11,-6, 12,-11], + [-12,-9, -6,4], + [3,7, 7,12], + [5,5, 10,8], + [0,-4, 2,8], + [-9,12, -5,-13], + [0,7, 2,12], + [-1,2, 1,7], + [5,11, 7,-9], + [3,5, 6,-8], + [-13,-4, -8,9], + [-5,9, -3,-3], + [-4,-7, -3,-12], + [6,5, 8,0], + [-7,6, -6,12], + [-13,6, -5,-2], + [1,-10, 3,10], + [4,1, 8,-4], + [-2,-2, 2,-13], + [2,-12, 12,12], + [-2,-13, 0,-6], + [4,1, 9,3], + [-6,-10, -3,-5], + [-3,-13, -1,1], + [7,5, 12,-11], + [4,-2, 5,-7], + [-13,9, -9,-5], + [7,1, 8,6], + [7,-8, 7,6], + [-7,-4, -7,1], + [-8,11, -7,-8], + [-13,6, -12,-8], + [2,4, 3,9], + [10,-5, 12,3], + [-6,-5, -6,7], + [8,-3, 9,-8], + [2,-12, 2,8], + [-11,-2, -10,3], + [-12,-13, -7,-9], + [-11,0, -10,-5], + [5,-3, 11,8], + [-2,-13, -1,12], + [-1,-8, 0,9], + [-13,-11, -12,-5], + [-10,-2, -10,11], + [-3,9, -2,-13], + [2,-3, 3,2], + [-9,-13, -4,0], + [-4,6, -3,-10], + [-4,12, -2,-7], + [-6,-11, -4,9], + [6,-3, 6,11], + [-13,11, -5,5], + [11,11, 12,6], + [7,-5, 12,-2], + [-1,12, 0,7], + [-4,-8, -3,-2], + [-7,1, -6,7], + [-13,-12, -8,-13], + [-7,-2, -6,-8], + [-8,5, -6,-9], + [-5,-1, -4,5], + [-13,7, -8,10], + [1,5, 5,-13], + [1,0, 10,-13], + [9,12, 10,-1], + [5,-8, 10,-9], + [-1,11, 1,-13], + [-9,-3, -6,2], + [-1,-10, 1,12], + [-13,1, -8,-10], + [8,-11, 10,-6], + [2,-13, 3,-6], + [7,-13, 12,-9], + [-10,-10, -5,-7], + [-10,-8, -8,-13], + [4,-6, 8,5], + [3,12, 8,-13], + [-4,2, -3,-3], + [5,-13, 10,-12], + [4,-13, 5,-1], + [-9,9, -4,3], + [0,3, 3,-9], + [-12,1, -6,1], + [3,2, 4,-8], + [-10,-10, -10,9], + [8,-13, 12,12], + [-8,-12, -6,-5], + [2,2, 3,7], + [10,6, 11,-8], + [6,8, 8,-12], + [-7,10, -6,5], + [-3,-9, -3,9], + [-1,-13, -1,5], + [-3,-7, -3,4], + [-8,-2, -8,3], + [4,2, 12,12], + [2,-5, 3,11], + [6,-9, 11,-13], + [3,-1, 7,12], + [11,-1, 12,4], + [-3,0, -3,6], + [4,-11, 4,12], + [2,-4, 2,1], + [-10,-6, -8,1], + [-13,7, -11,1], + [-13,12, -11,-13], + [6,0, 11,-13], + [0,-1, 1,4], + [-13,3, -9,-2], + [-9,8, -6,-3], + [-13,-6, -8,-2], + [5,-9, 8,10], + [2,7, 3,-9], + [-1,-6, -1,-1], + [9,5, 11,-2], + [11,-3, 12,-8], + [3,0, 3,5], + [-1,4, 0,10], + [3,-6, 4,5], + [-13,0, -10,5], + [5,8, 12,11], + [8,9, 9,-6], + [7,-4, 8,-12], + [-10,4, -10,9], + [7,3, 12,4], + [9,-7, 10,-2], + [7,0, 12,-2], + [-1,-6, 0,-11]], dtype=np.int8)) From c060df20f48471d5b5deb5f1ae63b5bf33e7ef73 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Fri, 6 Sep 2013 02:45:32 +0530 Subject: [PATCH 186/577] Stacking lists in descriptos_orb --- skimage/feature/orb.py | 286 ++----------------------------------- skimage/feature/orb_cy.pyx | 5 +- 2 files changed, 12 insertions(+), 279 deletions(-) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 8713822b..81bf4867 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -147,6 +147,8 @@ def descriptor_orb(image, keypoints, orientations, scales, pyramid = list(pyramid_gaussian(image, n_scales - 1, downscale)) + descriptors_list = [] + filtered_keypoints_list = [] descriptors = np.empty((0, 256), dtype=np.bool) for k in range(n_scales): @@ -160,285 +162,13 @@ def descriptor_orb(image, keypoints, orientations, scales, curr_scale_kpts = curr_scale_kpts[border_mask] curr_scale_kpts_orientation = curr_scale_kpts_orientation[border_mask] - curr_scale_descriptors = np.zeros((curr_scale_kpts.shape[0], 256), dtype=np.bool) curr_scale_kpts = np.ascontiguousarray(curr_scale_kpts) curr_scale_kpts_orientation = np.ascontiguousarray(curr_scale_kpts_orientation) - _orb_loop(curr_image, curr_scale_descriptors.view(np.uint8), curr_scale_kpts, curr_scale_kpts_orientation) + curr_scale_descriptors = _orb_loop(curr_image, curr_scale_kpts, curr_scale_kpts_orientation) - descriptors = np.vstack((descriptors, curr_scale_descriptors)) - filtered_keypoints = np.vstack((filtered_keypoints, curr_scale_kpts)) + descriptors_list.append(curr_scale_descriptors) + filtered_keypoints_list.append(curr_scale_kpts) - for i in range(keypoints.shape[0]): - angle = keypoints_angle[i] - a = np.sin(angle * np.pi / 180.) - b = np.cos(angle * np.pi / 180.) - rotation_matrix = [[b, a], [-a, b]] - steered_pos1 = pos1 * rotation_matrix - steered_pos2 = pos2 * rotation_matrix - for j in range(256): - pr1 = steered_pos1[j][0] - pc1 = steered_pos1[j][1] - pr2 = steered_pos2[j][0] - pc2 = steered_pos2[j][1] - descriptors[i, j] = (image[pr1, pc1] < image[pr2, pc2]) - - return descriptors - - -# Learned 256 decision pairs for binary tests in rBRIEF. Taken from OpenCV. -binary_tests = np.asarray([[8,-3, 9,5], - [4,2, 7,-12], - [-11,9, -8,2], - [7,-12, 12,-13], - [2,-13, 2,12], - [1,-7, 1,6], - [-2,-10, -2,-4], - [-13,-13, -11,-8], - [-13,-3, -12,-9], - [10,4, 11,9], - [-13,-8, -8,-9], - [-11,7, -9,12], - [7,7, 12,6], - [-4,-5, -3,0], - [-13,2, -12,-3], - [-9,0, -7,5], - [12,-6, 12,-1], - [-3,6, -2,12], - [-6,-13, -4,-8], - [11,-13, 12,-8], - [4,7, 5,1], - [5,-3, 10,-3], - [3,-7, 6,12], - [-8,-7, -6,-2], - [-2,11, -1,-10], - [-13,12, -8,10], - [-7,3, -5,-3], - [-4,2, -3,7], - [-10,-12, -6,11], - [5,-12, 6,-7], - [5,-6, 7,-1], - [1,0, 4,-5], - [9,11, 11,-13], - [4,7, 4,12], - [2,-1, 4,4], - [-4,-12, -2,7], - [-8,-5, -7,-10], - [4,11, 9,12], - [0,-8, 1,-13], - [-13,-2, -8,2], - [-3,-2, -2,3], - [-6,9, -4,-9], - [8,12, 10,7], - [0,9, 1,3], - [7,-5, 11,-10], - [-13,-6, -11,0], - [10,7, 12,1], - [-6,-3, -6,12], - [10,-9, 12,-4], - [-13,8, -8,-12], - [-13,0, -8,-4], - [3,3, 7,8], - [5,7, 10,-7], - [-1,7, 1,-12], - [3,-10, 5,6], - [2,-4, 3,-10], - [-13,0, -13,5], - [-13,-7, -12,12], - [-13,3, -11,8], - [-7,12, -4,7], - [6,-10, 12,8], - [-9,-1, -7,-6], - [-2,-5, 0,12], - [-12,5, -7,5], - [3,-10, 8,-13], - [-7,-7, -4,5], - [-3,-2, -1,-7], - [2,9, 5,-11], - [-11,-13, -5,-13], - [-1,6, 0,-1], - [5,-3, 5,2], - [-4,-13, -4,12], - [-9,-6, -9,6], - [-12,-10, -8,-4], - [10,2, 12,-3], - [7,12, 12,12], - [-7,-13, -6,5], - [-4,9, -3,4], - [7,-1, 12,2], - [-7,6, -5,1], - [-13,11, -12,5], - [-3,7, -2,-6], - [7,-8, 12,-7], - [-13,-7, -11,-12], - [1,-3, 12,12], - [2,-6, 3,0], - [-4,3, -2,-13], - [-1,-13, 1,9], - [7,1, 8,-6], - [1,-1, 3,12], - [9,1, 12,6], - [-1,-9, -1,3], - [-13,-13, -10,5], - [7,7, 10,12], - [12,-5, 12,9], - [6,3, 7,11], - [5,-13, 6,10], - [2,-12, 2,3], - [3,8, 4,-6], - [2,6, 12,-13], - [9,-12, 10,3], - [-8,4, -7,9], - [-11,12, -4,-6], - [1,12, 2,-8], - [6,-9, 7,-4], - [2,3, 3,-2], - [6,3, 11,0], - [3,-3, 8,-8], - [7,8, 9,3], - [-11,-5, -6,-4], - [-10,11, -5,10], - [-5,-8, -3,12], - [-10,5, -9,0], - [8,-1, 12,-6], - [4,-6, 6,-11], - [-10,12, -8,7], - [4,-2, 6,7], - [-2,0, -2,12], - [-5,-8, -5,2], - [7,-6, 10,12], - [-9,-13, -8,-8], - [-5,-13, -5,-2], - [8,-8, 9,-13], - [-9,-11, -9,0], - [1,-8, 1,-2], - [7,-4, 9,1], - [-2,1, -1,-4], - [11,-6, 12,-11], - [-12,-9, -6,4], - [3,7, 7,12], - [5,5, 10,8], - [0,-4, 2,8], - [-9,12, -5,-13], - [0,7, 2,12], - [-1,2, 1,7], - [5,11, 7,-9], - [3,5, 6,-8], - [-13,-4, -8,9], - [-5,9, -3,-3], - [-4,-7, -3,-12], - [6,5, 8,0], - [-7,6, -6,12], - [-13,6, -5,-2], - [1,-10, 3,10], - [4,1, 8,-4], - [-2,-2, 2,-13], - [2,-12, 12,12], - [-2,-13, 0,-6], - [4,1, 9,3], - [-6,-10, -3,-5], - [-3,-13, -1,1], - [7,5, 12,-11], - [4,-2, 5,-7], - [-13,9, -9,-5], - [7,1, 8,6], - [7,-8, 7,6], - [-7,-4, -7,1], - [-8,11, -7,-8], - [-13,6, -12,-8], - [2,4, 3,9], - [10,-5, 12,3], - [-6,-5, -6,7], - [8,-3, 9,-8], - [2,-12, 2,8], - [-11,-2, -10,3], - [-12,-13, -7,-9], - [-11,0, -10,-5], - [5,-3, 11,8], - [-2,-13, -1,12], - [-1,-8, 0,9], - [-13,-11, -12,-5], - [-10,-2, -10,11], - [-3,9, -2,-13], - [2,-3, 3,2], - [-9,-13, -4,0], - [-4,6, -3,-10], - [-4,12, -2,-7], - [-6,-11, -4,9], - [6,-3, 6,11], - [-13,11, -5,5], - [11,11, 12,6], - [7,-5, 12,-2], - [-1,12, 0,7], - [-4,-8, -3,-2], - [-7,1, -6,7], - [-13,-12, -8,-13], - [-7,-2, -6,-8], - [-8,5, -6,-9], - [-5,-1, -4,5], - [-13,7, -8,10], - [1,5, 5,-13], - [1,0, 10,-13], - [9,12, 10,-1], - [5,-8, 10,-9], - [-1,11, 1,-13], - [-9,-3, -6,2], - [-1,-10, 1,12], - [-13,1, -8,-10], - [8,-11, 10,-6], - [2,-13, 3,-6], - [7,-13, 12,-9], - [-10,-10, -5,-7], - [-10,-8, -8,-13], - [4,-6, 8,5], - [3,12, 8,-13], - [-4,2, -3,-3], - [5,-13, 10,-12], - [4,-13, 5,-1], - [-9,9, -4,3], - [0,3, 3,-9], - [-12,1, -6,1], - [3,2, 4,-8], - [-10,-10, -10,9], - [8,-13, 12,12], - [-8,-12, -6,-5], - [2,2, 3,7], - [10,6, 11,-8], - [6,8, 8,-12], - [-7,10, -6,5], - [-3,-9, -3,9], - [-1,-13, -1,5], - [-3,-7, -3,4], - [-8,-2, -8,3], - [4,2, 12,12], - [2,-5, 3,11], - [6,-9, 11,-13], - [3,-1, 7,12], - [11,-1, 12,4], - [-3,0, -3,6], - [4,-11, 4,12], - [2,-4, 2,1], - [-10,-6, -8,1], - [-13,7, -11,1], - [-13,12, -11,-13], - [6,0, 11,-13], - [0,-1, 1,4], - [-13,3, -9,-2], - [-9,8, -6,-3], - [-13,-6, -8,-2], - [5,-9, 8,10], - [2,7, 3,-9], - [-1,-6, -1,-1], - [9,5, 11,-2], - [11,-3, 12,-8], - [3,0, 3,5], - [-1,4, 0,10], - [3,-6, 4,5], - [-13,0, -10,5], - [5,8, 12,11], - [8,9, 9,-6], - [7,-4, 8,-12], - [-10,4, -10,9], - [7,3, 12,4], - [9,-7, 10,-2], - [7,0, 12,-2], - [-1,-6, 0,-11]]) + descriptors = np.vstack(descriptors_list) + filtered_keypoints = np.vstack(filtered_keypoints_list) + return descriptors, filtered_keypoints diff --git a/skimage/feature/orb_cy.pyx b/skimage/feature/orb_cy.pyx index 0a7f3044..48c5d963 100644 --- a/skimage/feature/orb_cy.pyx +++ b/skimage/feature/orb_cy.pyx @@ -9,7 +9,7 @@ import numpy as np from libc.math cimport sin, cos, M_PI, round -def _orb_loop(double[:, ::1] image, char[:, ::1] descriptors, Py_ssize_t[:, ::1] keypoints, +def _orb_loop(double[:, ::1] image, Py_ssize_t[:, ::1] keypoints, double[:] orientations): cdef Py_ssize_t i, d, kr, kc, pr0, pr1, pc0, pc1, spr0, spc0, spr1, spc1 @@ -17,6 +17,7 @@ def _orb_loop(double[:, ::1] image, char[:, ::1] descriptors, Py_ssize_t[:, ::1] cdef char[:, ::1] pos1 = binary_tests[:, 2:] cdef int[:, ::1] steered_pos0, steered_pos1 cdef double angle + cdef char[:, ::1] descriptors = np.zeros((keypoints.shape[0], 256), dtype=np.uint8) for i in range(keypoints.shape[0]): angle = orientations[i] @@ -40,6 +41,8 @@ def _orb_loop(double[:, ::1] image, char[:, ::1] descriptors, Py_ssize_t[:, ::1] if image[kr + spr0, kc + spc0] < image[kr + spr1, kc + spc1]: descriptors[i, j] = True + return np.asarray(descriptors) + # Learned 256 decision pairs for binary tests in rBRIEF. Taken from OpenCV. cdef char[:, ::1] binary_tests = np.ascontiguousarray(np.asarray([[8,-3, 9,5], From fe2e214385146ef93621698bf6475d8be6e0f51a Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Fri, 6 Sep 2013 02:49:37 +0530 Subject: [PATCH 187/577] Adding example in descriptor_orb --- skimage/feature/orb.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 81bf4867..09ed18ab 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -138,6 +138,21 @@ def descriptor_orb(image, keypoints, orientations, scales, "ORB : An efficient alternative to SIFT and SURF" http://www.vision.cs.chubu.ac.jp/CV-R/pdf/Rublee_iccv2011.pdf + Examples + -------- + >>> from skimage.data import lena + >>> from skimage.color import rgb2gray + >>> from skimage.feature import keypoints_orb, descriptor_orb + >>> img = rgb2gray(lena()) + >>> keypoints, orientations, scales = keypoints_orb(img, n_keypoints=250) + >>> keypoints.shape + (250, 2) + >>> descriptors, filtered_keypoints = descriptor_orb(img, keypoints, orientations, scales) + >>> filtered_keypoints.shape + (246, 2) + >>> descriptors.shape + (246, 256) + """ image = np.squeeze(image) if image.ndim != 2: From 9e8979fe4d8e1c38c21298214f5ea75df65904de Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Fri, 6 Sep 2013 02:55:48 +0530 Subject: [PATCH 188/577] Converting descriptors dtype to bool --- skimage/feature/orb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 09ed18ab..736f7739 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -184,6 +184,6 @@ def descriptor_orb(image, keypoints, orientations, scales, descriptors_list.append(curr_scale_descriptors) filtered_keypoints_list.append(curr_scale_kpts) - descriptors = np.vstack(descriptors_list) + descriptors = np.vstack(descriptors_list).astype(np.bool) filtered_keypoints = np.vstack(filtered_keypoints_list) return descriptors, filtered_keypoints From 607d90cedfb322004955920f12bcaa6f0a510234 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Sat, 7 Sep 2013 01:43:54 +0530 Subject: [PATCH 189/577] Minor optimizations; Renaming variables; Docstring corrections --- skimage/feature/corner_cy.pyx | 8 ++++---- skimage/feature/orb.py | 34 ++++++++++++++++++++-------------- skimage/feature/orb_cy.pyx | 11 ++++++----- 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index f4507b64..770b7e28 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -31,8 +31,8 @@ def corner_moravec(image, Py_ssize_t window_size=1): References ---------- - ..[1] http://kiwi.cs.dal.ca/~dparks/CornerDetection/moravec.htm - ..[2] http://en.wikipedia.org/wiki/Corner_detection + .. [1] http://kiwi.cs.dal.ca/~dparks/CornerDetection/moravec.htm + .. [2] http://en.wikipedia.org/wiki/Corner_detection Examples -------- @@ -193,10 +193,10 @@ def corner_orientations(image, Py_ssize_t[:, :] corners, mask): References ---------- - ..[1] Ethan Rublee, Vincent Rabaud, Kurt Konolige and Gary Bradski + .. [1] Ethan Rublee, Vincent Rabaud, Kurt Konolige and Gary Bradski "ORB : An efficient alternative to SIFT and SURF" http://www.vision.cs.chubu.ac.jp/CV-R/pdf/Rublee_iccv2011.pdf - ..[2] Paul L. Rosin, "Measuring Corner Properties" + .. [2] Paul L. Rosin, "Measuring Corner Properties" http://users.cs.cf.ac.uk/Paul.Rosin/corner2.pdf Examples diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 736f7739..b5a6e706 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -13,7 +13,7 @@ from .orb_cy import _orb_loop def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, harris_k=0.05, downscale=np.sqrt(2), n_scales=5): - """Compute Oriented Fast keypoints. + """Detect Oriented Fast keypoints. Parameters ---------- @@ -57,7 +57,7 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, References ---------- - ..[1] Ethan Rublee, Vincent Rabaud, Kurt Konolige and Gary Bradski + .. [1] Ethan Rublee, Vincent Rabaud, Kurt Konolige and Gary Bradski "ORB : An efficient alternative to SIFT and SURF" http://www.vision.cs.chubu.ac.jp/CV-R/pdf/Rublee_iccv2011.pdf @@ -83,11 +83,14 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, for i in range(n_scales): harris_response = corner_harris(pyramid[i], method='k', k=harris_k) - corners = corner_peaks(corner_fast(pyramid[i], fast_n, fast_threshold), min_distance=1) + corners = corner_peaks(corner_fast(pyramid[i], fast_n, fast_threshold), + min_distance=1) keypoints_list.append(corners) - orientations_list.append(corner_orientations(pyramid[i], corners, ofast_mask)) - scales_list.append(i * np.ones((corners.shape[0]), dtype=np.intp)) - harris_measure_list.append(harris_response[corners[:, 0], corners[:, 1]]) + orientations_list.append(corner_orientations(pyramid[i], corners, + ofast_mask)) + scales_list.append(i * np.ones(corners.shape[0], dtype=np.intp)) + harris_measure_list.append(harris_response[corners[:, 0], + corners[:, 1]]) keypoints = np.vstack(keypoints_list) orientations = np.hstack(orientations_list) @@ -98,7 +101,8 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, return keypoints, orientations, scales else: best_indices = harris_measure.argsort()[::-1][:n_keypoints] - return keypoints[best_indices], orientations[best_indices], scales[best_indices] + return keypoints[best_indices], orientations[best_indices], \ + scales[best_indices] def descriptor_orb(image, keypoints, orientations, scales, @@ -134,7 +138,7 @@ def descriptor_orb(image, keypoints, orientations, scales, References ---------- - ..[1] Ethan Rublee, Vincent Rabaud, Kurt Konolige and Gary Bradski + .. [1] Ethan Rublee, Vincent Rabaud, Kurt Konolige and Gary Bradski "ORB : An efficient alternative to SIFT and SURF" http://www.vision.cs.chubu.ac.jp/CV-R/pdf/Rublee_iccv2011.pdf @@ -171,19 +175,21 @@ def descriptor_orb(image, keypoints, orientations, scales, curr_scale_mask = scales == k curr_scale_kpts = keypoints[curr_scale_mask] - curr_scale_kpts_orientation = orientations[curr_scale_mask] + curr_scale_orientation = orientations[curr_scale_mask] - border_mask = _mask_border_keypoints(curr_image, curr_scale_kpts, dist=13) + border_mask = _mask_border_keypoints(curr_image, curr_scale_kpts, + dist=13) curr_scale_kpts = curr_scale_kpts[border_mask] - curr_scale_kpts_orientation = curr_scale_kpts_orientation[border_mask] + curr_scale_orientation = curr_scale_orientation[border_mask] curr_scale_kpts = np.ascontiguousarray(curr_scale_kpts) - curr_scale_kpts_orientation = np.ascontiguousarray(curr_scale_kpts_orientation) - curr_scale_descriptors = _orb_loop(curr_image, curr_scale_kpts, curr_scale_kpts_orientation) + curr_scale_orientation = np.ascontiguousarray(curr_scale_orientation) + curr_scale_descriptors = _orb_loop(curr_image, curr_scale_kpts, + curr_scale_orientation) descriptors_list.append(curr_scale_descriptors) filtered_keypoints_list.append(curr_scale_kpts) - descriptors = np.vstack(descriptors_list).astype(np.bool) + descriptors = np.vstack(descriptors_list).view(np.bool) filtered_keypoints = np.vstack(filtered_keypoints_list) return descriptors, filtered_keypoints diff --git a/skimage/feature/orb_cy.pyx b/skimage/feature/orb_cy.pyx index 48c5d963..2a2018d8 100644 --- a/skimage/feature/orb_cy.pyx +++ b/skimage/feature/orb_cy.pyx @@ -17,7 +17,8 @@ def _orb_loop(double[:, ::1] image, Py_ssize_t[:, ::1] keypoints, cdef char[:, ::1] pos1 = binary_tests[:, 2:] cdef int[:, ::1] steered_pos0, steered_pos1 cdef double angle - cdef char[:, ::1] descriptors = np.zeros((keypoints.shape[0], 256), dtype=np.uint8) + cdef char[:, ::1] descriptors = np.zeros((keypoints.shape[0], 256), + dtype=np.uint8) for i in range(keypoints.shape[0]): angle = orientations[i] @@ -28,10 +29,10 @@ def _orb_loop(double[:, ::1] image, Py_ssize_t[:, ::1] keypoints, kc = keypoints[i, 1] for j in range(256): - pr0 = pos0[j][0] - pc0 = pos0[j][1] - pr1 = pos1[j][0] - pc1 = pos1[j][1] + pr0 = pos0[j, 0] + pc0 = pos0[j, 1] + pr1 = pos1[j, 0] + pc1 = pos1[j, 1] spr0 = round(sin_a * pr0 + cos_a * pc0) spc0 = round(cos_a * pr0 - sin_a * pc0) From 43d90d0e9d020644769c47c01526094c01573fae Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Sat, 7 Sep 2013 02:45:17 +0530 Subject: [PATCH 190/577] Adding square examples in keypoints_orb, descriptor_orb --- skimage/feature/orb.py | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index b5a6e706..8ca9e57e 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -61,6 +61,29 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, "ORB : An efficient alternative to SIFT and SURF" http://www.vision.cs.chubu.ac.jp/CV-R/pdf/Rublee_iccv2011.pdf + Examples + -------- + >>> from skimage.feature import keypoints_orb, descriptor_orb + >>> square = np.zeros((50, 50)) + >>> square[20:30, 20:30] = 1 + >>> keypoints, orientations, scales = keypoints_orb(square, n_keypoints=8, n_scales=2) + >>> keypoints.shape + (8, 2) + >>> keypoints + array([[29, 29], + [29, 20], + [20, 29], + [20, 20], + [15, 15], + [15, 20], + [20, 15], + [20, 20]]) + >>> orientations + array([-2.35619449, -0.78539816, 2.35619449, 0.78539816, 0.78539816, + 2.35619449, -0.78539816, -2.35619449]) + >>> scales + array([0, 0, 0, 0, 1, 1, 1, 1]) + """ image = np.squeeze(image) if image.ndim != 2: @@ -144,18 +167,21 @@ def descriptor_orb(image, keypoints, orientations, scales, Examples -------- - >>> from skimage.data import lena - >>> from skimage.color import rgb2gray + >>> import numpy as np >>> from skimage.feature import keypoints_orb, descriptor_orb - >>> img = rgb2gray(lena()) - >>> keypoints, orientations, scales = keypoints_orb(img, n_keypoints=250) + >>> square = np.zeros((50, 50)) + >>> square[20:30, 20:30] = 1 + >>> keypoints, orientations, scales = keypoints_orb(square, n_keypoints=8, \ + n_scales=2) >>> keypoints.shape - (250, 2) - >>> descriptors, filtered_keypoints = descriptor_orb(img, keypoints, orientations, scales) + (8, 2) + >>> descriptors, filtered_keypoints = descriptor_orb(square, keypoints, \ + orientations, scales, \ + n_scales=2) >>> filtered_keypoints.shape - (246, 2) + (8, 2) >>> descriptors.shape - (246, 256) + (8, 256) """ image = np.squeeze(image) From fe9f1e75b8d3846cb6cd9392b4656fae9770d99a Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Sat, 7 Sep 2013 03:24:46 +0530 Subject: [PATCH 191/577] Introducing the _prepare_grayscale_input_2D function in feature.util --- skimage/feature/_brief.py | 10 +++------- skimage/feature/censure.py | 8 +++----- skimage/feature/corner.py | 15 +++++---------- skimage/feature/corner_cy.pyx | 9 ++++----- skimage/feature/orb.py | 11 +++-------- skimage/feature/util.py | 11 +++++++++++ 6 files changed, 29 insertions(+), 35 deletions(-) diff --git a/skimage/feature/_brief.py b/skimage/feature/_brief.py index 8a8d78db..9e0475d3 100644 --- a/skimage/feature/_brief.py +++ b/skimage/feature/_brief.py @@ -1,8 +1,8 @@ import numpy as np from scipy.ndimage.filters import gaussian_filter -from ..util import img_as_float -from .util import _mask_border_keypoints, pairwise_hamming_distance +from .util import (_mask_border_keypoints, pairwise_hamming_distance, + _prepare_grayscale_input_2D) from ._brief_cy import _brief_loop @@ -129,11 +129,7 @@ def brief(image, keypoints, descriptor_size=256, mode='normal', patch_size=49, np.random.seed(sample_seed) - image = np.squeeze(image) - if image.ndim != 2: - raise ValueError("Only 2-D gray-scale images supported.") - - image = img_as_float(image) + image = _prepare_grayscale_input_2D(image) # Gaussian Low pass filtering to alleviate noise # sensitivity diff --git a/skimage/feature/censure.py b/skimage/feature/censure.py index d852d15d..cf3d543a 100644 --- a/skimage/feature/censure.py +++ b/skimage/feature/censure.py @@ -1,9 +1,10 @@ import numpy as np from scipy.ndimage.filters import maximum_filter, minimum_filter, convolve +from .util import _prepare_grayscale_input_2D + from skimage.transform import integral_image from skimage.feature import structure_tensor -from skimage.util import img_as_float from skimage.morphology import octagon, star from skimage.feature.util import _mask_border_keypoints @@ -175,9 +176,7 @@ def keypoints_censure(image, min_scale=1, max_scale=7, mode='DoB', # (4) Finally, we remove the border keypoints and return the keypoints # along with its corresponding scale. - image = np.squeeze(image) - if image.ndim != 2: - raise ValueError("Only 2-D gray-scale images supported.") + image = _prepare_grayscale_input_2D(image) mode = mode.lower() if mode not in ('dob', 'octagon', 'star'): @@ -187,7 +186,6 @@ def keypoints_censure(image, min_scale=1, max_scale=7, mode='DoB', raise ValueError('The scales must be >= 1 and the number of scales ' 'should be >= 3.') - image = img_as_float(image) image = np.ascontiguousarray(image) # Generating all the scales diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 5628972d..90aac771 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -5,6 +5,8 @@ from skimage.color import rgb2grey from skimage.util import img_as_float, pad from skimage.feature import peak_local_max +from .util import _prepare_grayscale_input_2D + from corner_cy import _corner_fast @@ -84,9 +86,7 @@ def structure_tensor(image, sigma=1, mode='constant', cval=0): """ - image = np.squeeze(image) - if image.ndim != 2: - raise ValueError("Only 2-D gray-scale images supported.") + image = _prepare_grayscale_input_2D(image) imx, imy = _compute_derivatives(image, mode=mode, cval=cval) @@ -146,9 +146,7 @@ def hessian_matrix(image, sigma=1, mode='constant', cval=0): """ - image = np.squeeze(image) - if image.ndim != 2: - raise ValueError("Only 2-D gray-scale images supported.") + image = _prepare_grayscale_input_2D(image) # window extent to the left and right, which covers > 99% of the normal # distribution @@ -576,11 +574,8 @@ def corner_fast(image, n=12, threshold=0.15): [8, 8]]) """ - image = np.squeeze(image) - if image.ndim != 2: - raise ValueError("Only 2-D gray-scale images supported.") + image = _prepare_grayscale_input_2D(image) - image = img_as_float(image) image = np.ascontiguousarray(image) response = _corner_fast(image, n, threshold) return response diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 770b7e28..c810150b 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -8,7 +8,8 @@ from libc.float cimport DBL_MAX from libc.math cimport atan2 from skimage.color import rgb2grey -from skimage.util import img_as_float + +from .util import _prepare_grayscale_input_2D def corner_moravec(image, Py_ssize_t window_size=1): @@ -231,14 +232,12 @@ def corner_orientations(image, Py_ssize_t[:, :] corners, mask): """ - image = np.squeeze(image) - if image.ndim != 2: - raise ValueError("Only 2-D gray-scale images supported.") + image = _prepare_grayscale_input_2D(image) if mask.shape[0] % 2 != 1 or mask.shape[1] % 2 != 1: raise ValueError("Size of mask must be uneven.") - cdef double[:, :] cimage = img_as_float(image) + cdef double[:, :] cimage = image cdef char[:, ::1] cmask = np.ascontiguousarray(mask != 0, dtype=np.uint8) cdef Py_ssize_t i, r, c, r0, c0 diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 8ca9e57e..e2f3752e 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -1,7 +1,6 @@ import numpy as np -from ..util import img_as_float -from .util import _mask_border_keypoints +from .util import _mask_border_keypoints, _prepare_grayscale_input_2D from skimage.feature import (corner_fast, corner_orientations, corner_peaks, corner_harris) @@ -85,9 +84,7 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, array([0, 0, 0, 0, 1, 1, 1, 1]) """ - image = np.squeeze(image) - if image.ndim != 2: - raise ValueError("Only 2-D gray-scale images supported.") + image = _prepare_grayscale_input_2D(image) pyramid = list(pyramid_gaussian(image, n_scales - 1, downscale)) @@ -184,9 +181,7 @@ def descriptor_orb(image, keypoints, orientations, scales, (8, 256) """ - image = np.squeeze(image) - if image.ndim != 2: - raise ValueError("Only 2-D gray-scale images supported.") + image = _prepare_grayscale_input_2D(image) image = img_as_float(image) diff --git a/skimage/feature/util.py b/skimage/feature/util.py index a5267d44..178eab66 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -1,3 +1,14 @@ +import numpy as np + +from ..util import img_as_float + + +def _prepare_grayscale_input_2D(image): + image = np.squeeze(image) + if image.ndim != 2: + raise ValueError("Only 2-D gray-scale images supported.") + + return img_as_float(image) def _mask_border_keypoints(image, keypoints, dist): From b996776e415a8e10b1322ec31e922b8cc52718a5 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Sat, 7 Sep 2013 18:34:28 +0530 Subject: [PATCH 192/577] Making pos0 and pos1 as global variables --- skimage/feature/orb.py | 2 - skimage/feature/orb_cy.pyx | 774 ++++++++++++++++++++++++------------- 2 files changed, 515 insertions(+), 261 deletions(-) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index e2f3752e..6f053aba 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -183,8 +183,6 @@ def descriptor_orb(image, keypoints, orientations, scales, """ image = _prepare_grayscale_input_2D(image) - image = img_as_float(image) - pyramid = list(pyramid_gaussian(image, n_scales - 1, downscale)) descriptors_list = [] diff --git a/skimage/feature/orb_cy.pyx b/skimage/feature/orb_cy.pyx index 2a2018d8..7e157a41 100644 --- a/skimage/feature/orb_cy.pyx +++ b/skimage/feature/orb_cy.pyx @@ -13,13 +13,12 @@ def _orb_loop(double[:, ::1] image, Py_ssize_t[:, ::1] keypoints, double[:] orientations): cdef Py_ssize_t i, d, kr, kc, pr0, pr1, pc0, pc1, spr0, spc0, spr1, spc1 - cdef char[:, ::1] pos0 = binary_tests[:, :2] - cdef char[:, ::1] pos1 = binary_tests[:, 2:] cdef int[:, ::1] steered_pos0, steered_pos1 cdef double angle cdef char[:, ::1] descriptors = np.zeros((keypoints.shape[0], 256), dtype=np.uint8) + for i in range(keypoints.shape[0]): angle = orientations[i] sin_a = sin(angle * M_PI / 180.) @@ -45,260 +44,517 @@ def _orb_loop(double[:, ::1] image, Py_ssize_t[:, ::1] keypoints, return np.asarray(descriptors) -# Learned 256 decision pairs for binary tests in rBRIEF. Taken from OpenCV. -cdef char[:, ::1] binary_tests = np.ascontiguousarray(np.asarray([[8,-3, 9,5], - [4,2, 7,-12], - [-11,9, -8,2], - [7,-12, 12,-13], - [2,-13, 2,12], - [1,-7, 1,6], - [-2,-10, -2,-4], - [-13,-13, -11,-8], - [-13,-3, -12,-9], - [10,4, 11,9], - [-13,-8, -8,-9], - [-11,7, -9,12], - [7,7, 12,6], - [-4,-5, -3,0], - [-13,2, -12,-3], - [-9,0, -7,5], - [12,-6, 12,-1], - [-3,6, -2,12], - [-6,-13, -4,-8], - [11,-13, 12,-8], - [4,7, 5,1], - [5,-3, 10,-3], - [3,-7, 6,12], - [-8,-7, -6,-2], - [-2,11, -1,-10], - [-13,12, -8,10], - [-7,3, -5,-3], - [-4,2, -3,7], - [-10,-12, -6,11], - [5,-12, 6,-7], - [5,-6, 7,-1], - [1,0, 4,-5], - [9,11, 11,-13], - [4,7, 4,12], - [2,-1, 4,4], - [-4,-12, -2,7], - [-8,-5, -7,-10], - [4,11, 9,12], - [0,-8, 1,-13], - [-13,-2, -8,2], - [-3,-2, -2,3], - [-6,9, -4,-9], - [8,12, 10,7], - [0,9, 1,3], - [7,-5, 11,-10], - [-13,-6, -11,0], - [10,7, 12,1], - [-6,-3, -6,12], - [10,-9, 12,-4], - [-13,8, -8,-12], - [-13,0, -8,-4], - [3,3, 7,8], - [5,7, 10,-7], - [-1,7, 1,-12], - [3,-10, 5,6], - [2,-4, 3,-10], - [-13,0, -13,5], - [-13,-7, -12,12], - [-13,3, -11,8], - [-7,12, -4,7], - [6,-10, 12,8], - [-9,-1, -7,-6], - [-2,-5, 0,12], - [-12,5, -7,5], - [3,-10, 8,-13], - [-7,-7, -4,5], - [-3,-2, -1,-7], - [2,9, 5,-11], - [-11,-13, -5,-13], - [-1,6, 0,-1], - [5,-3, 5,2], - [-4,-13, -4,12], - [-9,-6, -9,6], - [-12,-10, -8,-4], - [10,2, 12,-3], - [7,12, 12,12], - [-7,-13, -6,5], - [-4,9, -3,4], - [7,-1, 12,2], - [-7,6, -5,1], - [-13,11, -12,5], - [-3,7, -2,-6], - [7,-8, 12,-7], - [-13,-7, -11,-12], - [1,-3, 12,12], - [2,-6, 3,0], - [-4,3, -2,-13], - [-1,-13, 1,9], - [7,1, 8,-6], - [1,-1, 3,12], - [9,1, 12,6], - [-1,-9, -1,3], - [-13,-13, -10,5], - [7,7, 10,12], - [12,-5, 12,9], - [6,3, 7,11], - [5,-13, 6,10], - [2,-12, 2,3], - [3,8, 4,-6], - [2,6, 12,-13], - [9,-12, 10,3], - [-8,4, -7,9], - [-11,12, -4,-6], - [1,12, 2,-8], - [6,-9, 7,-4], - [2,3, 3,-2], - [6,3, 11,0], - [3,-3, 8,-8], - [7,8, 9,3], - [-11,-5, -6,-4], - [-10,11, -5,10], - [-5,-8, -3,12], - [-10,5, -9,0], - [8,-1, 12,-6], - [4,-6, 6,-11], - [-10,12, -8,7], - [4,-2, 6,7], - [-2,0, -2,12], - [-5,-8, -5,2], - [7,-6, 10,12], - [-9,-13, -8,-8], - [-5,-13, -5,-2], - [8,-8, 9,-13], - [-9,-11, -9,0], - [1,-8, 1,-2], - [7,-4, 9,1], - [-2,1, -1,-4], - [11,-6, 12,-11], - [-12,-9, -6,4], - [3,7, 7,12], - [5,5, 10,8], - [0,-4, 2,8], - [-9,12, -5,-13], - [0,7, 2,12], - [-1,2, 1,7], - [5,11, 7,-9], - [3,5, 6,-8], - [-13,-4, -8,9], - [-5,9, -3,-3], - [-4,-7, -3,-12], - [6,5, 8,0], - [-7,6, -6,12], - [-13,6, -5,-2], - [1,-10, 3,10], - [4,1, 8,-4], - [-2,-2, 2,-13], - [2,-12, 12,12], - [-2,-13, 0,-6], - [4,1, 9,3], - [-6,-10, -3,-5], - [-3,-13, -1,1], - [7,5, 12,-11], - [4,-2, 5,-7], - [-13,9, -9,-5], - [7,1, 8,6], - [7,-8, 7,6], - [-7,-4, -7,1], - [-8,11, -7,-8], - [-13,6, -12,-8], - [2,4, 3,9], - [10,-5, 12,3], - [-6,-5, -6,7], - [8,-3, 9,-8], - [2,-12, 2,8], - [-11,-2, -10,3], - [-12,-13, -7,-9], - [-11,0, -10,-5], - [5,-3, 11,8], - [-2,-13, -1,12], - [-1,-8, 0,9], - [-13,-11, -12,-5], - [-10,-2, -10,11], - [-3,9, -2,-13], - [2,-3, 3,2], - [-9,-13, -4,0], - [-4,6, -3,-10], - [-4,12, -2,-7], - [-6,-11, -4,9], - [6,-3, 6,11], - [-13,11, -5,5], - [11,11, 12,6], - [7,-5, 12,-2], - [-1,12, 0,7], - [-4,-8, -3,-2], - [-7,1, -6,7], - [-13,-12, -8,-13], - [-7,-2, -6,-8], - [-8,5, -6,-9], - [-5,-1, -4,5], - [-13,7, -8,10], - [1,5, 5,-13], - [1,0, 10,-13], - [9,12, 10,-1], - [5,-8, 10,-9], - [-1,11, 1,-13], - [-9,-3, -6,2], - [-1,-10, 1,12], - [-13,1, -8,-10], - [8,-11, 10,-6], - [2,-13, 3,-6], - [7,-13, 12,-9], - [-10,-10, -5,-7], - [-10,-8, -8,-13], - [4,-6, 8,5], - [3,12, 8,-13], - [-4,2, -3,-3], - [5,-13, 10,-12], - [4,-13, 5,-1], - [-9,9, -4,3], - [0,3, 3,-9], - [-12,1, -6,1], - [3,2, 4,-8], - [-10,-10, -10,9], - [8,-13, 12,12], - [-8,-12, -6,-5], - [2,2, 3,7], - [10,6, 11,-8], - [6,8, 8,-12], - [-7,10, -6,5], - [-3,-9, -3,9], - [-1,-13, -1,5], - [-3,-7, -3,4], - [-8,-2, -8,3], - [4,2, 12,12], - [2,-5, 3,11], - [6,-9, 11,-13], - [3,-1, 7,12], - [11,-1, 12,4], - [-3,0, -3,6], - [4,-11, 4,12], - [2,-4, 2,1], - [-10,-6, -8,1], - [-13,7, -11,1], - [-13,12, -11,-13], - [6,0, 11,-13], - [0,-1, 1,4], - [-13,3, -9,-2], - [-9,8, -6,-3], - [-13,-6, -8,-2], - [5,-9, 8,10], - [2,7, 3,-9], - [-1,-6, -1,-1], - [9,5, 11,-2], - [11,-3, 12,-8], - [3,0, 3,5], - [-1,4, 0,10], - [3,-6, 4,5], - [-13,0, -10,5], - [5,8, 12,11], - [8,9, 9,-6], - [7,-4, 8,-12], - [-10,4, -10,9], - [7,3, 12,4], - [9,-7, 10,-2], - [7,0, 12,-2], - [-1,-6, 0,-11]], dtype=np.int8)) +cdef char[:, ::1] pos0 = np.array([[ 8, -3], + [ 4, 2], + [-11, 9], + [ 7, -12], + [ 2, -13], + [ 1, -7], + [ -2, -10], + [-13, -13], + [-13, -3], + [ 10, 4], + [-13, -8], + [-11, 7], + [ 7, 7], + [ -4, -5], + [-13, 2], + [ -9, 0], + [ 12, -6], + [ -3, 6], + [ -6, -13], + [ 11, -13], + [ 4, 7], + [ 5, -3], + [ 3, -7], + [ -8, -7], + [ -2, 11], + [-13, 12], + [ -7, 3], + [ -4, 2], + [-10, -12], + [ 5, -12], + [ 5, -6], + [ 1, 0], + [ 9, 11], + [ 4, 7], + [ 2, -1], + [ -4, -12], + [ -8, -5], + [ 4, 11], + [ 0, -8], + [-13, -2], + [ -3, -2], + [ -6, 9], + [ 8, 12], + [ 0, 9], + [ 7, -5], + [-13, -6], + [ 10, 7], + [ -6, -3], + [ 10, -9], + [-13, 8], + [-13, 0], + [ 3, 3], + [ 5, 7], + [ -1, 7], + [ 3, -10], + [ 2, -4], + [-13, 0], + [-13, -7], + [-13, 3], + [ -7, 12], + [ 6, -10], + [ -9, -1], + [ -2, -5], + [-12, 5], + [ 3, -10], + [ -7, -7], + [ -3, -2], + [ 2, 9], + [-11, -13], + [ -1, 6], + [ 5, -3], + [ -4, -13], + [ -9, -6], + [-12, -10], + [ 10, 2], + [ 7, 12], + [ -7, -13], + [ -4, 9], + [ 7, -1], + [ -7, 6], + [-13, 11], + [ -3, 7], + [ 7, -8], + [-13, -7], + [ 1, -3], + [ 2, -6], + [ -4, 3], + [ -1, -13], + [ 7, 1], + [ 1, -1], + [ 9, 1], + [ -1, -9], + [-13, -13], + [ 7, 7], + [ 12, -5], + [ 6, 3], + [ 5, -13], + [ 2, -12], + [ 3, 8], + [ 2, 6], + [ 9, -12], + [ -8, 4], + [-11, 12], + [ 1, 12], + [ 6, -9], + [ 2, 3], + [ 6, 3], + [ 3, -3], + [ 7, 8], + [-11, -5], + [-10, 11], + [ -5, -8], + [-10, 5], + [ 8, -1], + [ 4, -6], + [-10, 12], + [ 4, -2], + [ -2, 0], + [ -5, -8], + [ 7, -6], + [ -9, -13], + [ -5, -13], + [ 8, -8], + [ -9, -11], + [ 1, -8], + [ 7, -4], + [ -2, 1], + [ 11, -6], + [-12, -9], + [ 3, 7], + [ 5, 5], + [ 0, -4], + [ -9, 12], + [ 0, 7], + [ -1, 2], + [ 5, 11], + [ 3, 5], + [-13, -4], + [ -5, 9], + [ -4, -7], + [ 6, 5], + [ -7, 6], + [-13, 6], + [ 1, -10], + [ 4, 1], + [ -2, -2], + [ 2, -12], + [ -2, -13], + [ 4, 1], + [ -6, -10], + [ -3, -13], + [ 7, 5], + [ 4, -2], + [-13, 9], + [ 7, 1], + [ 7, -8], + [ -7, -4], + [ -8, 11], + [-13, 6], + [ 2, 4], + [ 10, -5], + [ -6, -5], + [ 8, -3], + [ 2, -12], + [-11, -2], + [-12, -13], + [-11, 0], + [ 5, -3], + [ -2, -13], + [ -1, -8], + [-13, -11], + [-10, -2], + [ -3, 9], + [ 2, -3], + [ -9, -13], + [ -4, 6], + [ -4, 12], + [ -6, -11], + [ 6, -3], + [-13, 11], + [ 11, 11], + [ 7, -5], + [ -1, 12], + [ -4, -8], + [ -7, 1], + [-13, -12], + [ -7, -2], + [ -8, 5], + [ -5, -1], + [-13, 7], + [ 1, 5], + [ 1, 0], + [ 9, 12], + [ 5, -8], + [ -1, 11], + [ -9, -3], + [ -1, -10], + [-13, 1], + [ 8, -11], + [ 2, -13], + [ 7, -13], + [-10, -10], + [-10, -8], + [ 4, -6], + [ 3, 12], + [ -4, 2], + [ 5, -13], + [ 4, -13], + [ -9, 9], + [ 0, 3], + [-12, 1], + [ 3, 2], + [-10, -10], + [ 8, -13], + [ -8, -12], + [ 2, 2], + [ 10, 6], + [ 6, 8], + [ -7, 10], + [ -3, -9], + [ -1, -13], + [ -3, -7], + [ -8, -2], + [ 4, 2], + [ 2, -5], + [ 6, -9], + [ 3, -1], + [ 11, -1], + [ -3, 0], + [ 4, -11], + [ 2, -4], + [-10, -6], + [-13, 7], + [-13, 12], + [ 6, 0], + [ 0, -1], + [-13, 3], + [ -9, 8], + [-13, -6], + [ 5, -9], + [ 2, 7], + [ -1, -6], + [ 9, 5], + [ 11, -3], + [ 3, 0], + [ -1, 4], + [ 3, -6], + [-13, 0], + [ 5, 8], + [ 8, 9], + [ 7, -4], + [-10, 4], + [ 7, 3], + [ 9, -7], + [ 7, 0], + [ -1, -6]], dtype=np.int8) + + +cdef char[:, ::1] pos1 = np.array([[ 9, 5], + [ 7, -12], + [ -8, 2], + [ 12, -13], + [ 2, 12], + [ 1, 6], + [ -2, -4], + [-11, -8], + [-12, -9], + [ 11, 9], + [ -8, -9], + [ -9, 12], + [ 12, 6], + [ -3, 0], + [-12, -3], + [ -7, 5], + [ 12, -1], + [ -2, 12], + [ -4, -8], + [ 12, -8], + [ 5, 1], + [ 10, -3], + [ 6, 12], + [ -6, -2], + [ -1, -10], + [ -8, 10], + [ -5, -3], + [ -3, 7], + [ -6, 11], + [ 6, -7], + [ 7, -1], + [ 4, -5], + [ 11, -13], + [ 4, 12], + [ 4, 4], + [ -2, 7], + [ -7, -10], + [ 9, 12], + [ 1, -13], + [ -8, 2], + [ -2, 3], + [ -4, -9], + [ 10, 7], + [ 1, 3], + [ 11, -10], + [-11, 0], + [ 12, 1], + [ -6, 12], + [ 12, -4], + [ -8, -12], + [ -8, -4], + [ 7, 8], + [ 10, -7], + [ 1, -12], + [ 5, 6], + [ 3, -10], + [-13, 5], + [-12, 12], + [-11, 8], + [ -4, 7], + [ 12, 8], + [ -7, -6], + [ 0, 12], + [ -7, 5], + [ 8, -13], + [ -4, 5], + [ -1, -7], + [ 5, -11], + [ -5, -13], + [ 0, -1], + [ 5, 2], + [ -4, 12], + [ -9, 6], + [ -8, -4], + [ 12, -3], + [ 12, 12], + [ -6, 5], + [ -3, 4], + [ 12, 2], + [ -5, 1], + [-12, 5], + [ -2, -6], + [ 12, -7], + [-11, -12], + [ 12, 12], + [ 3, 0], + [ -2, -13], + [ 1, 9], + [ 8, -6], + [ 3, 12], + [ 12, 6], + [ -1, 3], + [-10, 5], + [ 10, 12], + [ 12, 9], + [ 7, 11], + [ 6, 10], + [ 2, 3], + [ 4, -6], + [ 12, -13], + [ 10, 3], + [ -7, 9], + [ -4, -6], + [ 2, -8], + [ 7, -4], + [ 3, -2], + [ 11, 0], + [ 8, -8], + [ 9, 3], + [ -6, -4], + [ -5, 10], + [ -3, 12], + [ -9, 0], + [ 12, -6], + [ 6, -11], + [ -8, 7], + [ 6, 7], + [ -2, 12], + [ -5, 2], + [ 10, 12], + [ -8, -8], + [ -5, -2], + [ 9, -13], + [ -9, 0], + [ 1, -2], + [ 9, 1], + [ -1, -4], + [ 12, -11], + [ -6, 4], + [ 7, 12], + [ 10, 8], + [ 2, 8], + [ -5, -13], + [ 2, 12], + [ 1, 7], + [ 7, -9], + [ 6, -8], + [ -8, 9], + [ -3, -3], + [ -3, -12], + [ 8, 0], + [ -6, 12], + [ -5, -2], + [ 3, 10], + [ 8, -4], + [ 2, -13], + [ 12, 12], + [ 0, -6], + [ 9, 3], + [ -3, -5], + [ -1, 1], + [ 12, -11], + [ 5, -7], + [ -9, -5], + [ 8, 6], + [ 7, 6], + [ -7, 1], + [ -7, -8], + [-12, -8], + [ 3, 9], + [ 12, 3], + [ -6, 7], + [ 9, -8], + [ 2, 8], + [-10, 3], + [ -7, -9], + [-10, -5], + [ 11, 8], + [ -1, 12], + [ 0, 9], + [-12, -5], + [-10, 11], + [ -2, -13], + [ 3, 2], + [ -4, 0], + [ -3, -10], + [ -2, -7], + [ -4, 9], + [ 6, 11], + [ -5, 5], + [ 12, 6], + [ 12, -2], + [ 0, 7], + [ -3, -2], + [ -6, 7], + [ -8, -13], + [ -6, -8], + [ -6, -9], + [ -4, 5], + [ -8, 10], + [ 5, -13], + [ 10, -13], + [ 10, -1], + [ 10, -9], + [ 1, -13], + [ -6, 2], + [ 1, 12], + [ -8, -10], + [ 10, -6], + [ 3, -6], + [ 12, -9], + [ -5, -7], + [ -8, -13], + [ 8, 5], + [ 8, -13], + [ -3, -3], + [ 10, -12], + [ 5, -1], + [ -4, 3], + [ 3, -9], + [ -6, 1], + [ 4, -8], + [-10, 9], + [ 12, 12], + [ -6, -5], + [ 3, 7], + [ 11, -8], + [ 8, -12], + [ -6, 5], + [ -3, 9], + [ -1, 5], + [ -3, 4], + [ -8, 3], + [ 12, 12], + [ 3, 11], + [ 11, -13], + [ 7, 12], + [ 12, 4], + [ -3, 6], + [ 4, 12], + [ 2, 1], + [ -8, 1], + [-11, 1], + [-11, -13], + [ 11, -13], + [ 1, 4], + [ -9, -2], + [ -6, -3], + [ -8, -2], + [ 8, 10], + [ 3, -9], + [ -1, -1], + [ 11, -2], + [ 12, -8], + [ 3, 5], + [ 0, 10], + [ 4, 5], + [-10, 5], + [ 12, 11], + [ 9, -6], + [ 8, -12], + [-10, 9], + [ 12, 4], + [ 10, -2], + [ 12, -2], + [ 0, -11]], dtype=np.int8) From 260753974a6c97ae8af2331e2b9804271e3c32a8 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 18 Sep 2013 23:05:51 +0530 Subject: [PATCH 193/577] Fixing the import issue --- skimage/feature/corner_cy.pyx | 1 + 1 file changed, 1 insertion(+) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index c810150b..2b010693 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -7,6 +7,7 @@ cimport numpy as cnp from libc.float cimport DBL_MAX from libc.math cimport atan2 +from skimage.util import img_as_float from skimage.color import rgb2grey from .util import _prepare_grayscale_input_2D From 1fac3091254e7ca449fdd89f74d3f9d30bc43846 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 19 Sep 2013 19:31:11 +0530 Subject: [PATCH 194/577] Better wrapping of lines; making ofast_mask a global constant --- skimage/feature/orb.py | 52 +++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 6f053aba..98b3cffc 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -9,8 +9,17 @@ from skimage.transform import pyramid_gaussian from .orb_cy import _orb_loop +OFAST_MASK = np.array([[0, 0, 1, 1, 1, 0, 0], + [0, 1, 1, 1, 1, 1, 0], + [1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1], + [0, 1, 1, 1, 1, 1, 0], + [0, 0, 1, 1, 1, 0, 0]], dtype=np.uint8) + + def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, - harris_k=0.05, downscale=np.sqrt(2), n_scales=5): + harris_k=0.05, downscale=np.sqrt(2), n_scales=3): """Detect Oriented Fast keypoints. @@ -20,24 +29,24 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, Input grayscale image. n_keypoints : int Number of keypoints to be returned from this function. The function - will return best `n_keypoints` if more than n_keypoints are detected + will return best ``n_keypoints`` if more than n_keypoints are detected based on the values of other parameters. If not, then all the detected keypoints are returned. fast_n : int - The `n` parameter in `feature.corner_fast`. Minimum number of + The ``n`` parameter in ``feature.corner_fast``. Minimum number of consecutive pixels out of 16 pixels on the circle that should all be either brighter or darker w.r.t testpixel. A point c on the circle is - darker w.r.t test pixel p if `Ic < Ip - threshold` and brighter if - `Ic > Ip + threshold`. Also stands for the n in `FAST-n` corner + darker w.r.t test pixel p if ``Ic < Ip - threshold`` and brighter if + ``Ic > Ip + threshold``. Also stands for the n in ``FAST-n`` corner detector. fast_threshold : float - The `threshold` parameter in `feature.corner_fast`. Threshold used to + The ``threshold`` parameter in ``feature.corner_fast``. Threshold used to decide whether the pixels on the circle are brighter, darker or similar w.r.t. the test pixel. Decrease the threshold when more corners are desired and vice-versa. harris_k : float - The `k` parameter in `feature.corner_harris`. Sensitivity factor to - separate corners from edges, typically in range `[0, 0.2]`. Small + The ``k`` parameter in ``feature.corner_harris``. Sensitivity factor to + separate corners from edges, typically in range ``[0, 0.2]``. Small values of k result in detection of sharp corners. downscale : float Downscale factor for the image pyramid. @@ -80,22 +89,17 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, >>> orientations array([-2.35619449, -0.78539816, 2.35619449, 0.78539816, 0.78539816, 2.35619449, -0.78539816, -2.35619449]) + >>> np.rad2deg(orientations) + array([-135., -45., 135., 45., 45., 135., -45., -135.]) >>> scales array([0, 0, 0, 0, 1, 1, 1, 1]) """ + image = _prepare_grayscale_input_2D(image) pyramid = list(pyramid_gaussian(image, n_scales - 1, downscale)) - ofast_mask = np.array([[0, 0, 1, 1, 1, 0, 0], - [0, 1, 1, 1, 1, 1, 0], - [1, 1, 1, 1, 1, 1, 1], - [1, 1, 1, 1, 1, 1, 1], - [1, 1, 1, 1, 1, 1, 1], - [0, 1, 1, 1, 1, 1, 0], - [0, 0, 1, 1, 1, 0, 0]], dtype=np.uint8) - keypoints_list = [] orientations_list = [] scales_list = [] @@ -121,8 +125,8 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, return keypoints, orientations, scales else: best_indices = harris_measure.argsort()[::-1][:n_keypoints] - return keypoints[best_indices], orientations[best_indices], \ - scales[best_indices] + return (keypoints[best_indices], orientations[best_indices], + scales[best_indices]) def descriptor_orb(image, keypoints, orientations, scales, @@ -141,7 +145,7 @@ def descriptor_orb(image, keypoints, orientations, scales, The scales of the corresponding N keypoints. downscale : float Downscale factor for the image pyramid. Should be the same as that - used in `keypoints_orb`. + used in ``keypoints_orb``. n_scales : int Number of scales from the bottom of the image pyramid to extract the features from. @@ -168,13 +172,13 @@ def descriptor_orb(image, keypoints, orientations, scales, >>> from skimage.feature import keypoints_orb, descriptor_orb >>> square = np.zeros((50, 50)) >>> square[20:30, 20:30] = 1 - >>> keypoints, orientations, scales = keypoints_orb(square, n_keypoints=8, \ - n_scales=2) + >>> keypoints, orientations, scales = keypoints_orb(square, n_keypoints=8, + ... n_scales=2) >>> keypoints.shape (8, 2) - >>> descriptors, filtered_keypoints = descriptor_orb(square, keypoints, \ - orientations, scales, \ - n_scales=2) + >>> descriptors, filtered_keypoints = descriptor_orb(square, keypoints, + ... orientations, scales, + ... n_scales=2) >>> filtered_keypoints.shape (8, 2) >>> descriptors.shape From 3ec1d35065c979ebc6ef4b64e08400d8c0924c06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Thu, 19 Sep 2013 23:45:10 +0200 Subject: [PATCH 195/577] Miscellaneous fixes and improvements --- skimage/feature/orb.py | 44 +- skimage/feature/orb_cy.pyx | 539 +------------------ skimage/feature/orb_descriptor_positions.txt | 256 +++++++++ 3 files changed, 296 insertions(+), 543 deletions(-) create mode 100644 skimage/feature/orb_descriptor_positions.txt diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 98b3cffc..3de427e2 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -103,30 +103,34 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, keypoints_list = [] orientations_list = [] scales_list = [] - harris_measure_list = [] + harris_response_list = [] - for i in range(n_scales): - harris_response = corner_harris(pyramid[i], method='k', k=harris_k) - corners = corner_peaks(corner_fast(pyramid[i], fast_n, fast_threshold), - min_distance=1) - keypoints_list.append(corners) - orientations_list.append(corner_orientations(pyramid[i], corners, - ofast_mask)) - scales_list.append(i * np.ones(corners.shape[0], dtype=np.intp)) - harris_measure_list.append(harris_response[corners[:, 0], - corners[:, 1]]) + for scale in range(n_scales): - keypoints = np.vstack(keypoints_list) + corners = corner_peaks(corner_fast(pyramid[scale], fast_n, + fast_threshold), min_distance=1) + keypoints_list.append(corners * downscale ** scale) + + orientations_list.append(corner_orientations(pyramid[scale], corners, + OFAST_MASK)) + + scales_list.append(scale * np.ones(corners.shape[0], dtype=np.intp)) + + harris_response = corner_harris(pyramid[scale], method='k', k=harris_k) + harris_response_list.append(harris_response[corners[:, 0], + corners[:, 1]]) + + keypoints = np.round(np.vstack(keypoints_list)).astype(np.intp) orientations = np.hstack(orientations_list) scales = np.hstack(scales_list) - harris_measure = np.hstack(harris_measure_list) + harris_measure = np.hstack(harris_response_list) if keypoints.shape[0] < n_keypoints: return keypoints, orientations, scales else: best_indices = harris_measure.argsort()[::-1][:n_keypoints] return (keypoints[best_indices], orientations[best_indices], - scales[best_indices]) + scales[best_indices]) def descriptor_orb(image, keypoints, orientations, scales, @@ -193,11 +197,12 @@ def descriptor_orb(image, keypoints, orientations, scales, filtered_keypoints_list = [] descriptors = np.empty((0, 256), dtype=np.bool) - for k in range(n_scales): - curr_image = np.ascontiguousarray(pyramid[k]) + for scale in range(n_scales): + curr_image = np.ascontiguousarray(pyramid[scale]) - curr_scale_mask = scales == k - curr_scale_kpts = keypoints[curr_scale_mask] + curr_scale_mask = scales == scale + curr_scale_kpts = keypoints[curr_scale_mask] / (downscale ** scale) + curr_scale_kpts = np.round(curr_scale_kpts).astype(np.intp) curr_scale_orientation = orientations[curr_scale_mask] border_mask = _mask_border_keypoints(curr_image, curr_scale_kpts, @@ -211,8 +216,9 @@ def descriptor_orb(image, keypoints, orientations, scales, curr_scale_orientation) descriptors_list.append(curr_scale_descriptors) - filtered_keypoints_list.append(curr_scale_kpts) + filtered_keypoints_list.append(curr_scale_kpts * downscale ** scale) descriptors = np.vstack(descriptors_list).view(np.bool) filtered_keypoints = np.vstack(filtered_keypoints_list) + filtered_keypoints = np.round(filtered_keypoints).astype(np.intp) return descriptors, filtered_keypoints diff --git a/skimage/feature/orb_cy.pyx b/skimage/feature/orb_cy.pyx index 7e157a41..bb317c7f 100644 --- a/skimage/feature/orb_cy.pyx +++ b/skimage/feature/orb_cy.pyx @@ -9,17 +9,24 @@ import numpy as np from libc.math cimport sin, cos, M_PI, round +pos = np.loadtxt('orb_descriptor_positions.txt', dtype=np.int8) +pos0 = np.ascontiguousarray(pos[:, :2]) +pos1 = np.ascontiguousarray(pos[:, 2:]) + + def _orb_loop(double[:, ::1] image, Py_ssize_t[:, ::1] keypoints, double[:] orientations): cdef Py_ssize_t i, d, kr, kc, pr0, pr1, pc0, pc1, spr0, spc0, spr1, spc1 cdef int[:, ::1] steered_pos0, steered_pos1 cdef double angle - cdef char[:, ::1] descriptors = np.zeros((keypoints.shape[0], 256), - dtype=np.uint8) + cdef char[:, ::1] descriptors = np.zeros((keypoints.shape[0], + pos.shape[0]), dtype=np.uint8) + cdef char[:, ::1] cpos0 = pos0 + cdef char[:, ::1] cpos1 = pos1 - for i in range(keypoints.shape[0]): + for i in range(descriptors.shape[0]): angle = orientations[i] sin_a = sin(angle * M_PI / 180.) cos_a = cos(angle * M_PI / 180.) @@ -27,11 +34,11 @@ def _orb_loop(double[:, ::1] image, Py_ssize_t[:, ::1] keypoints, kr = keypoints[i, 0] kc = keypoints[i, 1] - for j in range(256): - pr0 = pos0[j, 0] - pc0 = pos0[j, 1] - pr1 = pos1[j, 0] - pc1 = pos1[j, 1] + for j in range(descriptors.shape[1]): + pr0 = cpos0[j, 0] + pc0 = cpos0[j, 1] + pr1 = cpos1[j, 0] + pc1 = cpos1[j, 1] spr0 = round(sin_a * pr0 + cos_a * pc0) spc0 = round(cos_a * pr0 - sin_a * pc0) @@ -42,519 +49,3 @@ def _orb_loop(double[:, ::1] image, Py_ssize_t[:, ::1] keypoints, descriptors[i, j] = True return np.asarray(descriptors) - - -cdef char[:, ::1] pos0 = np.array([[ 8, -3], - [ 4, 2], - [-11, 9], - [ 7, -12], - [ 2, -13], - [ 1, -7], - [ -2, -10], - [-13, -13], - [-13, -3], - [ 10, 4], - [-13, -8], - [-11, 7], - [ 7, 7], - [ -4, -5], - [-13, 2], - [ -9, 0], - [ 12, -6], - [ -3, 6], - [ -6, -13], - [ 11, -13], - [ 4, 7], - [ 5, -3], - [ 3, -7], - [ -8, -7], - [ -2, 11], - [-13, 12], - [ -7, 3], - [ -4, 2], - [-10, -12], - [ 5, -12], - [ 5, -6], - [ 1, 0], - [ 9, 11], - [ 4, 7], - [ 2, -1], - [ -4, -12], - [ -8, -5], - [ 4, 11], - [ 0, -8], - [-13, -2], - [ -3, -2], - [ -6, 9], - [ 8, 12], - [ 0, 9], - [ 7, -5], - [-13, -6], - [ 10, 7], - [ -6, -3], - [ 10, -9], - [-13, 8], - [-13, 0], - [ 3, 3], - [ 5, 7], - [ -1, 7], - [ 3, -10], - [ 2, -4], - [-13, 0], - [-13, -7], - [-13, 3], - [ -7, 12], - [ 6, -10], - [ -9, -1], - [ -2, -5], - [-12, 5], - [ 3, -10], - [ -7, -7], - [ -3, -2], - [ 2, 9], - [-11, -13], - [ -1, 6], - [ 5, -3], - [ -4, -13], - [ -9, -6], - [-12, -10], - [ 10, 2], - [ 7, 12], - [ -7, -13], - [ -4, 9], - [ 7, -1], - [ -7, 6], - [-13, 11], - [ -3, 7], - [ 7, -8], - [-13, -7], - [ 1, -3], - [ 2, -6], - [ -4, 3], - [ -1, -13], - [ 7, 1], - [ 1, -1], - [ 9, 1], - [ -1, -9], - [-13, -13], - [ 7, 7], - [ 12, -5], - [ 6, 3], - [ 5, -13], - [ 2, -12], - [ 3, 8], - [ 2, 6], - [ 9, -12], - [ -8, 4], - [-11, 12], - [ 1, 12], - [ 6, -9], - [ 2, 3], - [ 6, 3], - [ 3, -3], - [ 7, 8], - [-11, -5], - [-10, 11], - [ -5, -8], - [-10, 5], - [ 8, -1], - [ 4, -6], - [-10, 12], - [ 4, -2], - [ -2, 0], - [ -5, -8], - [ 7, -6], - [ -9, -13], - [ -5, -13], - [ 8, -8], - [ -9, -11], - [ 1, -8], - [ 7, -4], - [ -2, 1], - [ 11, -6], - [-12, -9], - [ 3, 7], - [ 5, 5], - [ 0, -4], - [ -9, 12], - [ 0, 7], - [ -1, 2], - [ 5, 11], - [ 3, 5], - [-13, -4], - [ -5, 9], - [ -4, -7], - [ 6, 5], - [ -7, 6], - [-13, 6], - [ 1, -10], - [ 4, 1], - [ -2, -2], - [ 2, -12], - [ -2, -13], - [ 4, 1], - [ -6, -10], - [ -3, -13], - [ 7, 5], - [ 4, -2], - [-13, 9], - [ 7, 1], - [ 7, -8], - [ -7, -4], - [ -8, 11], - [-13, 6], - [ 2, 4], - [ 10, -5], - [ -6, -5], - [ 8, -3], - [ 2, -12], - [-11, -2], - [-12, -13], - [-11, 0], - [ 5, -3], - [ -2, -13], - [ -1, -8], - [-13, -11], - [-10, -2], - [ -3, 9], - [ 2, -3], - [ -9, -13], - [ -4, 6], - [ -4, 12], - [ -6, -11], - [ 6, -3], - [-13, 11], - [ 11, 11], - [ 7, -5], - [ -1, 12], - [ -4, -8], - [ -7, 1], - [-13, -12], - [ -7, -2], - [ -8, 5], - [ -5, -1], - [-13, 7], - [ 1, 5], - [ 1, 0], - [ 9, 12], - [ 5, -8], - [ -1, 11], - [ -9, -3], - [ -1, -10], - [-13, 1], - [ 8, -11], - [ 2, -13], - [ 7, -13], - [-10, -10], - [-10, -8], - [ 4, -6], - [ 3, 12], - [ -4, 2], - [ 5, -13], - [ 4, -13], - [ -9, 9], - [ 0, 3], - [-12, 1], - [ 3, 2], - [-10, -10], - [ 8, -13], - [ -8, -12], - [ 2, 2], - [ 10, 6], - [ 6, 8], - [ -7, 10], - [ -3, -9], - [ -1, -13], - [ -3, -7], - [ -8, -2], - [ 4, 2], - [ 2, -5], - [ 6, -9], - [ 3, -1], - [ 11, -1], - [ -3, 0], - [ 4, -11], - [ 2, -4], - [-10, -6], - [-13, 7], - [-13, 12], - [ 6, 0], - [ 0, -1], - [-13, 3], - [ -9, 8], - [-13, -6], - [ 5, -9], - [ 2, 7], - [ -1, -6], - [ 9, 5], - [ 11, -3], - [ 3, 0], - [ -1, 4], - [ 3, -6], - [-13, 0], - [ 5, 8], - [ 8, 9], - [ 7, -4], - [-10, 4], - [ 7, 3], - [ 9, -7], - [ 7, 0], - [ -1, -6]], dtype=np.int8) - - -cdef char[:, ::1] pos1 = np.array([[ 9, 5], - [ 7, -12], - [ -8, 2], - [ 12, -13], - [ 2, 12], - [ 1, 6], - [ -2, -4], - [-11, -8], - [-12, -9], - [ 11, 9], - [ -8, -9], - [ -9, 12], - [ 12, 6], - [ -3, 0], - [-12, -3], - [ -7, 5], - [ 12, -1], - [ -2, 12], - [ -4, -8], - [ 12, -8], - [ 5, 1], - [ 10, -3], - [ 6, 12], - [ -6, -2], - [ -1, -10], - [ -8, 10], - [ -5, -3], - [ -3, 7], - [ -6, 11], - [ 6, -7], - [ 7, -1], - [ 4, -5], - [ 11, -13], - [ 4, 12], - [ 4, 4], - [ -2, 7], - [ -7, -10], - [ 9, 12], - [ 1, -13], - [ -8, 2], - [ -2, 3], - [ -4, -9], - [ 10, 7], - [ 1, 3], - [ 11, -10], - [-11, 0], - [ 12, 1], - [ -6, 12], - [ 12, -4], - [ -8, -12], - [ -8, -4], - [ 7, 8], - [ 10, -7], - [ 1, -12], - [ 5, 6], - [ 3, -10], - [-13, 5], - [-12, 12], - [-11, 8], - [ -4, 7], - [ 12, 8], - [ -7, -6], - [ 0, 12], - [ -7, 5], - [ 8, -13], - [ -4, 5], - [ -1, -7], - [ 5, -11], - [ -5, -13], - [ 0, -1], - [ 5, 2], - [ -4, 12], - [ -9, 6], - [ -8, -4], - [ 12, -3], - [ 12, 12], - [ -6, 5], - [ -3, 4], - [ 12, 2], - [ -5, 1], - [-12, 5], - [ -2, -6], - [ 12, -7], - [-11, -12], - [ 12, 12], - [ 3, 0], - [ -2, -13], - [ 1, 9], - [ 8, -6], - [ 3, 12], - [ 12, 6], - [ -1, 3], - [-10, 5], - [ 10, 12], - [ 12, 9], - [ 7, 11], - [ 6, 10], - [ 2, 3], - [ 4, -6], - [ 12, -13], - [ 10, 3], - [ -7, 9], - [ -4, -6], - [ 2, -8], - [ 7, -4], - [ 3, -2], - [ 11, 0], - [ 8, -8], - [ 9, 3], - [ -6, -4], - [ -5, 10], - [ -3, 12], - [ -9, 0], - [ 12, -6], - [ 6, -11], - [ -8, 7], - [ 6, 7], - [ -2, 12], - [ -5, 2], - [ 10, 12], - [ -8, -8], - [ -5, -2], - [ 9, -13], - [ -9, 0], - [ 1, -2], - [ 9, 1], - [ -1, -4], - [ 12, -11], - [ -6, 4], - [ 7, 12], - [ 10, 8], - [ 2, 8], - [ -5, -13], - [ 2, 12], - [ 1, 7], - [ 7, -9], - [ 6, -8], - [ -8, 9], - [ -3, -3], - [ -3, -12], - [ 8, 0], - [ -6, 12], - [ -5, -2], - [ 3, 10], - [ 8, -4], - [ 2, -13], - [ 12, 12], - [ 0, -6], - [ 9, 3], - [ -3, -5], - [ -1, 1], - [ 12, -11], - [ 5, -7], - [ -9, -5], - [ 8, 6], - [ 7, 6], - [ -7, 1], - [ -7, -8], - [-12, -8], - [ 3, 9], - [ 12, 3], - [ -6, 7], - [ 9, -8], - [ 2, 8], - [-10, 3], - [ -7, -9], - [-10, -5], - [ 11, 8], - [ -1, 12], - [ 0, 9], - [-12, -5], - [-10, 11], - [ -2, -13], - [ 3, 2], - [ -4, 0], - [ -3, -10], - [ -2, -7], - [ -4, 9], - [ 6, 11], - [ -5, 5], - [ 12, 6], - [ 12, -2], - [ 0, 7], - [ -3, -2], - [ -6, 7], - [ -8, -13], - [ -6, -8], - [ -6, -9], - [ -4, 5], - [ -8, 10], - [ 5, -13], - [ 10, -13], - [ 10, -1], - [ 10, -9], - [ 1, -13], - [ -6, 2], - [ 1, 12], - [ -8, -10], - [ 10, -6], - [ 3, -6], - [ 12, -9], - [ -5, -7], - [ -8, -13], - [ 8, 5], - [ 8, -13], - [ -3, -3], - [ 10, -12], - [ 5, -1], - [ -4, 3], - [ 3, -9], - [ -6, 1], - [ 4, -8], - [-10, 9], - [ 12, 12], - [ -6, -5], - [ 3, 7], - [ 11, -8], - [ 8, -12], - [ -6, 5], - [ -3, 9], - [ -1, 5], - [ -3, 4], - [ -8, 3], - [ 12, 12], - [ 3, 11], - [ 11, -13], - [ 7, 12], - [ 12, 4], - [ -3, 6], - [ 4, 12], - [ 2, 1], - [ -8, 1], - [-11, 1], - [-11, -13], - [ 11, -13], - [ 1, 4], - [ -9, -2], - [ -6, -3], - [ -8, -2], - [ 8, 10], - [ 3, -9], - [ -1, -1], - [ 11, -2], - [ 12, -8], - [ 3, 5], - [ 0, 10], - [ 4, 5], - [-10, 5], - [ 12, 11], - [ 9, -6], - [ 8, -12], - [-10, 9], - [ 12, 4], - [ 10, -2], - [ 12, -2], - [ 0, -11]], dtype=np.int8) diff --git a/skimage/feature/orb_descriptor_positions.txt b/skimage/feature/orb_descriptor_positions.txt new file mode 100644 index 00000000..541f972f --- /dev/null +++ b/skimage/feature/orb_descriptor_positions.txt @@ -0,0 +1,256 @@ +8.000000000000000000e+00 -3.000000000000000000e+00 9.000000000000000000e+00 5.000000000000000000e+00 +4.000000000000000000e+00 2.000000000000000000e+00 7.000000000000000000e+00 -1.200000000000000000e+01 +-1.100000000000000000e+01 9.000000000000000000e+00 -8.000000000000000000e+00 2.000000000000000000e+00 +7.000000000000000000e+00 -1.200000000000000000e+01 1.200000000000000000e+01 -1.300000000000000000e+01 +2.000000000000000000e+00 -1.300000000000000000e+01 2.000000000000000000e+00 1.200000000000000000e+01 +1.000000000000000000e+00 -7.000000000000000000e+00 1.000000000000000000e+00 6.000000000000000000e+00 +-2.000000000000000000e+00 -1.000000000000000000e+01 -2.000000000000000000e+00 -4.000000000000000000e+00 +-1.300000000000000000e+01 -1.300000000000000000e+01 -1.100000000000000000e+01 -8.000000000000000000e+00 +-1.300000000000000000e+01 -3.000000000000000000e+00 -1.200000000000000000e+01 -9.000000000000000000e+00 +1.000000000000000000e+01 4.000000000000000000e+00 1.100000000000000000e+01 9.000000000000000000e+00 +-1.300000000000000000e+01 -8.000000000000000000e+00 -8.000000000000000000e+00 -9.000000000000000000e+00 +-1.100000000000000000e+01 7.000000000000000000e+00 -9.000000000000000000e+00 1.200000000000000000e+01 +7.000000000000000000e+00 7.000000000000000000e+00 1.200000000000000000e+01 6.000000000000000000e+00 +-4.000000000000000000e+00 -5.000000000000000000e+00 -3.000000000000000000e+00 0.000000000000000000e+00 +-1.300000000000000000e+01 2.000000000000000000e+00 -1.200000000000000000e+01 -3.000000000000000000e+00 +-9.000000000000000000e+00 0.000000000000000000e+00 -7.000000000000000000e+00 5.000000000000000000e+00 +1.200000000000000000e+01 -6.000000000000000000e+00 1.200000000000000000e+01 -1.000000000000000000e+00 +-3.000000000000000000e+00 6.000000000000000000e+00 -2.000000000000000000e+00 1.200000000000000000e+01 +-6.000000000000000000e+00 -1.300000000000000000e+01 -4.000000000000000000e+00 -8.000000000000000000e+00 +1.100000000000000000e+01 -1.300000000000000000e+01 1.200000000000000000e+01 -8.000000000000000000e+00 +4.000000000000000000e+00 7.000000000000000000e+00 5.000000000000000000e+00 1.000000000000000000e+00 +5.000000000000000000e+00 -3.000000000000000000e+00 1.000000000000000000e+01 -3.000000000000000000e+00 +3.000000000000000000e+00 -7.000000000000000000e+00 6.000000000000000000e+00 1.200000000000000000e+01 +-8.000000000000000000e+00 -7.000000000000000000e+00 -6.000000000000000000e+00 -2.000000000000000000e+00 +-2.000000000000000000e+00 1.100000000000000000e+01 -1.000000000000000000e+00 -1.000000000000000000e+01 +-1.300000000000000000e+01 1.200000000000000000e+01 -8.000000000000000000e+00 1.000000000000000000e+01 +-7.000000000000000000e+00 3.000000000000000000e+00 -5.000000000000000000e+00 -3.000000000000000000e+00 +-4.000000000000000000e+00 2.000000000000000000e+00 -3.000000000000000000e+00 7.000000000000000000e+00 +-1.000000000000000000e+01 -1.200000000000000000e+01 -6.000000000000000000e+00 1.100000000000000000e+01 +5.000000000000000000e+00 -1.200000000000000000e+01 6.000000000000000000e+00 -7.000000000000000000e+00 +5.000000000000000000e+00 -6.000000000000000000e+00 7.000000000000000000e+00 -1.000000000000000000e+00 +1.000000000000000000e+00 0.000000000000000000e+00 4.000000000000000000e+00 -5.000000000000000000e+00 +9.000000000000000000e+00 1.100000000000000000e+01 1.100000000000000000e+01 -1.300000000000000000e+01 +4.000000000000000000e+00 7.000000000000000000e+00 4.000000000000000000e+00 1.200000000000000000e+01 +2.000000000000000000e+00 -1.000000000000000000e+00 4.000000000000000000e+00 4.000000000000000000e+00 +-4.000000000000000000e+00 -1.200000000000000000e+01 -2.000000000000000000e+00 7.000000000000000000e+00 +-8.000000000000000000e+00 -5.000000000000000000e+00 -7.000000000000000000e+00 -1.000000000000000000e+01 +4.000000000000000000e+00 1.100000000000000000e+01 9.000000000000000000e+00 1.200000000000000000e+01 +0.000000000000000000e+00 -8.000000000000000000e+00 1.000000000000000000e+00 -1.300000000000000000e+01 +-1.300000000000000000e+01 -2.000000000000000000e+00 -8.000000000000000000e+00 2.000000000000000000e+00 +-3.000000000000000000e+00 -2.000000000000000000e+00 -2.000000000000000000e+00 3.000000000000000000e+00 +-6.000000000000000000e+00 9.000000000000000000e+00 -4.000000000000000000e+00 -9.000000000000000000e+00 +8.000000000000000000e+00 1.200000000000000000e+01 1.000000000000000000e+01 7.000000000000000000e+00 +0.000000000000000000e+00 9.000000000000000000e+00 1.000000000000000000e+00 3.000000000000000000e+00 +7.000000000000000000e+00 -5.000000000000000000e+00 1.100000000000000000e+01 -1.000000000000000000e+01 +-1.300000000000000000e+01 -6.000000000000000000e+00 -1.100000000000000000e+01 0.000000000000000000e+00 +1.000000000000000000e+01 7.000000000000000000e+00 1.200000000000000000e+01 1.000000000000000000e+00 +-6.000000000000000000e+00 -3.000000000000000000e+00 -6.000000000000000000e+00 1.200000000000000000e+01 +1.000000000000000000e+01 -9.000000000000000000e+00 1.200000000000000000e+01 -4.000000000000000000e+00 +-1.300000000000000000e+01 8.000000000000000000e+00 -8.000000000000000000e+00 -1.200000000000000000e+01 +-1.300000000000000000e+01 0.000000000000000000e+00 -8.000000000000000000e+00 -4.000000000000000000e+00 +3.000000000000000000e+00 3.000000000000000000e+00 7.000000000000000000e+00 8.000000000000000000e+00 +5.000000000000000000e+00 7.000000000000000000e+00 1.000000000000000000e+01 -7.000000000000000000e+00 +-1.000000000000000000e+00 7.000000000000000000e+00 1.000000000000000000e+00 -1.200000000000000000e+01 +3.000000000000000000e+00 -1.000000000000000000e+01 5.000000000000000000e+00 6.000000000000000000e+00 +2.000000000000000000e+00 -4.000000000000000000e+00 3.000000000000000000e+00 -1.000000000000000000e+01 +-1.300000000000000000e+01 0.000000000000000000e+00 -1.300000000000000000e+01 5.000000000000000000e+00 +-1.300000000000000000e+01 -7.000000000000000000e+00 -1.200000000000000000e+01 1.200000000000000000e+01 +-1.300000000000000000e+01 3.000000000000000000e+00 -1.100000000000000000e+01 8.000000000000000000e+00 +-7.000000000000000000e+00 1.200000000000000000e+01 -4.000000000000000000e+00 7.000000000000000000e+00 +6.000000000000000000e+00 -1.000000000000000000e+01 1.200000000000000000e+01 8.000000000000000000e+00 +-9.000000000000000000e+00 -1.000000000000000000e+00 -7.000000000000000000e+00 -6.000000000000000000e+00 +-2.000000000000000000e+00 -5.000000000000000000e+00 0.000000000000000000e+00 1.200000000000000000e+01 +-1.200000000000000000e+01 5.000000000000000000e+00 -7.000000000000000000e+00 5.000000000000000000e+00 +3.000000000000000000e+00 -1.000000000000000000e+01 8.000000000000000000e+00 -1.300000000000000000e+01 +-7.000000000000000000e+00 -7.000000000000000000e+00 -4.000000000000000000e+00 5.000000000000000000e+00 +-3.000000000000000000e+00 -2.000000000000000000e+00 -1.000000000000000000e+00 -7.000000000000000000e+00 +2.000000000000000000e+00 9.000000000000000000e+00 5.000000000000000000e+00 -1.100000000000000000e+01 +-1.100000000000000000e+01 -1.300000000000000000e+01 -5.000000000000000000e+00 -1.300000000000000000e+01 +-1.000000000000000000e+00 6.000000000000000000e+00 0.000000000000000000e+00 -1.000000000000000000e+00 +5.000000000000000000e+00 -3.000000000000000000e+00 5.000000000000000000e+00 2.000000000000000000e+00 +-4.000000000000000000e+00 -1.300000000000000000e+01 -4.000000000000000000e+00 1.200000000000000000e+01 +-9.000000000000000000e+00 -6.000000000000000000e+00 -9.000000000000000000e+00 6.000000000000000000e+00 +-1.200000000000000000e+01 -1.000000000000000000e+01 -8.000000000000000000e+00 -4.000000000000000000e+00 +1.000000000000000000e+01 2.000000000000000000e+00 1.200000000000000000e+01 -3.000000000000000000e+00 +7.000000000000000000e+00 1.200000000000000000e+01 1.200000000000000000e+01 1.200000000000000000e+01 +-7.000000000000000000e+00 -1.300000000000000000e+01 -6.000000000000000000e+00 5.000000000000000000e+00 +-4.000000000000000000e+00 9.000000000000000000e+00 -3.000000000000000000e+00 4.000000000000000000e+00 +7.000000000000000000e+00 -1.000000000000000000e+00 1.200000000000000000e+01 2.000000000000000000e+00 +-7.000000000000000000e+00 6.000000000000000000e+00 -5.000000000000000000e+00 1.000000000000000000e+00 +-1.300000000000000000e+01 1.100000000000000000e+01 -1.200000000000000000e+01 5.000000000000000000e+00 +-3.000000000000000000e+00 7.000000000000000000e+00 -2.000000000000000000e+00 -6.000000000000000000e+00 +7.000000000000000000e+00 -8.000000000000000000e+00 1.200000000000000000e+01 -7.000000000000000000e+00 +-1.300000000000000000e+01 -7.000000000000000000e+00 -1.100000000000000000e+01 -1.200000000000000000e+01 +1.000000000000000000e+00 -3.000000000000000000e+00 1.200000000000000000e+01 1.200000000000000000e+01 +2.000000000000000000e+00 -6.000000000000000000e+00 3.000000000000000000e+00 0.000000000000000000e+00 +-4.000000000000000000e+00 3.000000000000000000e+00 -2.000000000000000000e+00 -1.300000000000000000e+01 +-1.000000000000000000e+00 -1.300000000000000000e+01 1.000000000000000000e+00 9.000000000000000000e+00 +7.000000000000000000e+00 1.000000000000000000e+00 8.000000000000000000e+00 -6.000000000000000000e+00 +1.000000000000000000e+00 -1.000000000000000000e+00 3.000000000000000000e+00 1.200000000000000000e+01 +9.000000000000000000e+00 1.000000000000000000e+00 1.200000000000000000e+01 6.000000000000000000e+00 +-1.000000000000000000e+00 -9.000000000000000000e+00 -1.000000000000000000e+00 3.000000000000000000e+00 +-1.300000000000000000e+01 -1.300000000000000000e+01 -1.000000000000000000e+01 5.000000000000000000e+00 +7.000000000000000000e+00 7.000000000000000000e+00 1.000000000000000000e+01 1.200000000000000000e+01 +1.200000000000000000e+01 -5.000000000000000000e+00 1.200000000000000000e+01 9.000000000000000000e+00 +6.000000000000000000e+00 3.000000000000000000e+00 7.000000000000000000e+00 1.100000000000000000e+01 +5.000000000000000000e+00 -1.300000000000000000e+01 6.000000000000000000e+00 1.000000000000000000e+01 +2.000000000000000000e+00 -1.200000000000000000e+01 2.000000000000000000e+00 3.000000000000000000e+00 +3.000000000000000000e+00 8.000000000000000000e+00 4.000000000000000000e+00 -6.000000000000000000e+00 +2.000000000000000000e+00 6.000000000000000000e+00 1.200000000000000000e+01 -1.300000000000000000e+01 +9.000000000000000000e+00 -1.200000000000000000e+01 1.000000000000000000e+01 3.000000000000000000e+00 +-8.000000000000000000e+00 4.000000000000000000e+00 -7.000000000000000000e+00 9.000000000000000000e+00 +-1.100000000000000000e+01 1.200000000000000000e+01 -4.000000000000000000e+00 -6.000000000000000000e+00 +1.000000000000000000e+00 1.200000000000000000e+01 2.000000000000000000e+00 -8.000000000000000000e+00 +6.000000000000000000e+00 -9.000000000000000000e+00 7.000000000000000000e+00 -4.000000000000000000e+00 +2.000000000000000000e+00 3.000000000000000000e+00 3.000000000000000000e+00 -2.000000000000000000e+00 +6.000000000000000000e+00 3.000000000000000000e+00 1.100000000000000000e+01 0.000000000000000000e+00 +3.000000000000000000e+00 -3.000000000000000000e+00 8.000000000000000000e+00 -8.000000000000000000e+00 +7.000000000000000000e+00 8.000000000000000000e+00 9.000000000000000000e+00 3.000000000000000000e+00 +-1.100000000000000000e+01 -5.000000000000000000e+00 -6.000000000000000000e+00 -4.000000000000000000e+00 +-1.000000000000000000e+01 1.100000000000000000e+01 -5.000000000000000000e+00 1.000000000000000000e+01 +-5.000000000000000000e+00 -8.000000000000000000e+00 -3.000000000000000000e+00 1.200000000000000000e+01 +-1.000000000000000000e+01 5.000000000000000000e+00 -9.000000000000000000e+00 0.000000000000000000e+00 +8.000000000000000000e+00 -1.000000000000000000e+00 1.200000000000000000e+01 -6.000000000000000000e+00 +4.000000000000000000e+00 -6.000000000000000000e+00 6.000000000000000000e+00 -1.100000000000000000e+01 +-1.000000000000000000e+01 1.200000000000000000e+01 -8.000000000000000000e+00 7.000000000000000000e+00 +4.000000000000000000e+00 -2.000000000000000000e+00 6.000000000000000000e+00 7.000000000000000000e+00 +-2.000000000000000000e+00 0.000000000000000000e+00 -2.000000000000000000e+00 1.200000000000000000e+01 +-5.000000000000000000e+00 -8.000000000000000000e+00 -5.000000000000000000e+00 2.000000000000000000e+00 +7.000000000000000000e+00 -6.000000000000000000e+00 1.000000000000000000e+01 1.200000000000000000e+01 +-9.000000000000000000e+00 -1.300000000000000000e+01 -8.000000000000000000e+00 -8.000000000000000000e+00 +-5.000000000000000000e+00 -1.300000000000000000e+01 -5.000000000000000000e+00 -2.000000000000000000e+00 +8.000000000000000000e+00 -8.000000000000000000e+00 9.000000000000000000e+00 -1.300000000000000000e+01 +-9.000000000000000000e+00 -1.100000000000000000e+01 -9.000000000000000000e+00 0.000000000000000000e+00 +1.000000000000000000e+00 -8.000000000000000000e+00 1.000000000000000000e+00 -2.000000000000000000e+00 +7.000000000000000000e+00 -4.000000000000000000e+00 9.000000000000000000e+00 1.000000000000000000e+00 +-2.000000000000000000e+00 1.000000000000000000e+00 -1.000000000000000000e+00 -4.000000000000000000e+00 +1.100000000000000000e+01 -6.000000000000000000e+00 1.200000000000000000e+01 -1.100000000000000000e+01 +-1.200000000000000000e+01 -9.000000000000000000e+00 -6.000000000000000000e+00 4.000000000000000000e+00 +3.000000000000000000e+00 7.000000000000000000e+00 7.000000000000000000e+00 1.200000000000000000e+01 +5.000000000000000000e+00 5.000000000000000000e+00 1.000000000000000000e+01 8.000000000000000000e+00 +0.000000000000000000e+00 -4.000000000000000000e+00 2.000000000000000000e+00 8.000000000000000000e+00 +-9.000000000000000000e+00 1.200000000000000000e+01 -5.000000000000000000e+00 -1.300000000000000000e+01 +0.000000000000000000e+00 7.000000000000000000e+00 2.000000000000000000e+00 1.200000000000000000e+01 +-1.000000000000000000e+00 2.000000000000000000e+00 1.000000000000000000e+00 7.000000000000000000e+00 +5.000000000000000000e+00 1.100000000000000000e+01 7.000000000000000000e+00 -9.000000000000000000e+00 +3.000000000000000000e+00 5.000000000000000000e+00 6.000000000000000000e+00 -8.000000000000000000e+00 +-1.300000000000000000e+01 -4.000000000000000000e+00 -8.000000000000000000e+00 9.000000000000000000e+00 +-5.000000000000000000e+00 9.000000000000000000e+00 -3.000000000000000000e+00 -3.000000000000000000e+00 +-4.000000000000000000e+00 -7.000000000000000000e+00 -3.000000000000000000e+00 -1.200000000000000000e+01 +6.000000000000000000e+00 5.000000000000000000e+00 8.000000000000000000e+00 0.000000000000000000e+00 +-7.000000000000000000e+00 6.000000000000000000e+00 -6.000000000000000000e+00 1.200000000000000000e+01 +-1.300000000000000000e+01 6.000000000000000000e+00 -5.000000000000000000e+00 -2.000000000000000000e+00 +1.000000000000000000e+00 -1.000000000000000000e+01 3.000000000000000000e+00 1.000000000000000000e+01 +4.000000000000000000e+00 1.000000000000000000e+00 8.000000000000000000e+00 -4.000000000000000000e+00 +-2.000000000000000000e+00 -2.000000000000000000e+00 2.000000000000000000e+00 -1.300000000000000000e+01 +2.000000000000000000e+00 -1.200000000000000000e+01 1.200000000000000000e+01 1.200000000000000000e+01 +-2.000000000000000000e+00 -1.300000000000000000e+01 0.000000000000000000e+00 -6.000000000000000000e+00 +4.000000000000000000e+00 1.000000000000000000e+00 9.000000000000000000e+00 3.000000000000000000e+00 +-6.000000000000000000e+00 -1.000000000000000000e+01 -3.000000000000000000e+00 -5.000000000000000000e+00 +-3.000000000000000000e+00 -1.300000000000000000e+01 -1.000000000000000000e+00 1.000000000000000000e+00 +7.000000000000000000e+00 5.000000000000000000e+00 1.200000000000000000e+01 -1.100000000000000000e+01 +4.000000000000000000e+00 -2.000000000000000000e+00 5.000000000000000000e+00 -7.000000000000000000e+00 +-1.300000000000000000e+01 9.000000000000000000e+00 -9.000000000000000000e+00 -5.000000000000000000e+00 +7.000000000000000000e+00 1.000000000000000000e+00 8.000000000000000000e+00 6.000000000000000000e+00 +7.000000000000000000e+00 -8.000000000000000000e+00 7.000000000000000000e+00 6.000000000000000000e+00 +-7.000000000000000000e+00 -4.000000000000000000e+00 -7.000000000000000000e+00 1.000000000000000000e+00 +-8.000000000000000000e+00 1.100000000000000000e+01 -7.000000000000000000e+00 -8.000000000000000000e+00 +-1.300000000000000000e+01 6.000000000000000000e+00 -1.200000000000000000e+01 -8.000000000000000000e+00 +2.000000000000000000e+00 4.000000000000000000e+00 3.000000000000000000e+00 9.000000000000000000e+00 +1.000000000000000000e+01 -5.000000000000000000e+00 1.200000000000000000e+01 3.000000000000000000e+00 +-6.000000000000000000e+00 -5.000000000000000000e+00 -6.000000000000000000e+00 7.000000000000000000e+00 +8.000000000000000000e+00 -3.000000000000000000e+00 9.000000000000000000e+00 -8.000000000000000000e+00 +2.000000000000000000e+00 -1.200000000000000000e+01 2.000000000000000000e+00 8.000000000000000000e+00 +-1.100000000000000000e+01 -2.000000000000000000e+00 -1.000000000000000000e+01 3.000000000000000000e+00 +-1.200000000000000000e+01 -1.300000000000000000e+01 -7.000000000000000000e+00 -9.000000000000000000e+00 +-1.100000000000000000e+01 0.000000000000000000e+00 -1.000000000000000000e+01 -5.000000000000000000e+00 +5.000000000000000000e+00 -3.000000000000000000e+00 1.100000000000000000e+01 8.000000000000000000e+00 +-2.000000000000000000e+00 -1.300000000000000000e+01 -1.000000000000000000e+00 1.200000000000000000e+01 +-1.000000000000000000e+00 -8.000000000000000000e+00 0.000000000000000000e+00 9.000000000000000000e+00 +-1.300000000000000000e+01 -1.100000000000000000e+01 -1.200000000000000000e+01 -5.000000000000000000e+00 +-1.000000000000000000e+01 -2.000000000000000000e+00 -1.000000000000000000e+01 1.100000000000000000e+01 +-3.000000000000000000e+00 9.000000000000000000e+00 -2.000000000000000000e+00 -1.300000000000000000e+01 +2.000000000000000000e+00 -3.000000000000000000e+00 3.000000000000000000e+00 2.000000000000000000e+00 +-9.000000000000000000e+00 -1.300000000000000000e+01 -4.000000000000000000e+00 0.000000000000000000e+00 +-4.000000000000000000e+00 6.000000000000000000e+00 -3.000000000000000000e+00 -1.000000000000000000e+01 +-4.000000000000000000e+00 1.200000000000000000e+01 -2.000000000000000000e+00 -7.000000000000000000e+00 +-6.000000000000000000e+00 -1.100000000000000000e+01 -4.000000000000000000e+00 9.000000000000000000e+00 +6.000000000000000000e+00 -3.000000000000000000e+00 6.000000000000000000e+00 1.100000000000000000e+01 +-1.300000000000000000e+01 1.100000000000000000e+01 -5.000000000000000000e+00 5.000000000000000000e+00 +1.100000000000000000e+01 1.100000000000000000e+01 1.200000000000000000e+01 6.000000000000000000e+00 +7.000000000000000000e+00 -5.000000000000000000e+00 1.200000000000000000e+01 -2.000000000000000000e+00 +-1.000000000000000000e+00 1.200000000000000000e+01 0.000000000000000000e+00 7.000000000000000000e+00 +-4.000000000000000000e+00 -8.000000000000000000e+00 -3.000000000000000000e+00 -2.000000000000000000e+00 +-7.000000000000000000e+00 1.000000000000000000e+00 -6.000000000000000000e+00 7.000000000000000000e+00 +-1.300000000000000000e+01 -1.200000000000000000e+01 -8.000000000000000000e+00 -1.300000000000000000e+01 +-7.000000000000000000e+00 -2.000000000000000000e+00 -6.000000000000000000e+00 -8.000000000000000000e+00 +-8.000000000000000000e+00 5.000000000000000000e+00 -6.000000000000000000e+00 -9.000000000000000000e+00 +-5.000000000000000000e+00 -1.000000000000000000e+00 -4.000000000000000000e+00 5.000000000000000000e+00 +-1.300000000000000000e+01 7.000000000000000000e+00 -8.000000000000000000e+00 1.000000000000000000e+01 +1.000000000000000000e+00 5.000000000000000000e+00 5.000000000000000000e+00 -1.300000000000000000e+01 +1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+01 -1.300000000000000000e+01 +9.000000000000000000e+00 1.200000000000000000e+01 1.000000000000000000e+01 -1.000000000000000000e+00 +5.000000000000000000e+00 -8.000000000000000000e+00 1.000000000000000000e+01 -9.000000000000000000e+00 +-1.000000000000000000e+00 1.100000000000000000e+01 1.000000000000000000e+00 -1.300000000000000000e+01 +-9.000000000000000000e+00 -3.000000000000000000e+00 -6.000000000000000000e+00 2.000000000000000000e+00 +-1.000000000000000000e+00 -1.000000000000000000e+01 1.000000000000000000e+00 1.200000000000000000e+01 +-1.300000000000000000e+01 1.000000000000000000e+00 -8.000000000000000000e+00 -1.000000000000000000e+01 +8.000000000000000000e+00 -1.100000000000000000e+01 1.000000000000000000e+01 -6.000000000000000000e+00 +2.000000000000000000e+00 -1.300000000000000000e+01 3.000000000000000000e+00 -6.000000000000000000e+00 +7.000000000000000000e+00 -1.300000000000000000e+01 1.200000000000000000e+01 -9.000000000000000000e+00 +-1.000000000000000000e+01 -1.000000000000000000e+01 -5.000000000000000000e+00 -7.000000000000000000e+00 +-1.000000000000000000e+01 -8.000000000000000000e+00 -8.000000000000000000e+00 -1.300000000000000000e+01 +4.000000000000000000e+00 -6.000000000000000000e+00 8.000000000000000000e+00 5.000000000000000000e+00 +3.000000000000000000e+00 1.200000000000000000e+01 8.000000000000000000e+00 -1.300000000000000000e+01 +-4.000000000000000000e+00 2.000000000000000000e+00 -3.000000000000000000e+00 -3.000000000000000000e+00 +5.000000000000000000e+00 -1.300000000000000000e+01 1.000000000000000000e+01 -1.200000000000000000e+01 +4.000000000000000000e+00 -1.300000000000000000e+01 5.000000000000000000e+00 -1.000000000000000000e+00 +-9.000000000000000000e+00 9.000000000000000000e+00 -4.000000000000000000e+00 3.000000000000000000e+00 +0.000000000000000000e+00 3.000000000000000000e+00 3.000000000000000000e+00 -9.000000000000000000e+00 +-1.200000000000000000e+01 1.000000000000000000e+00 -6.000000000000000000e+00 1.000000000000000000e+00 +3.000000000000000000e+00 2.000000000000000000e+00 4.000000000000000000e+00 -8.000000000000000000e+00 +-1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 9.000000000000000000e+00 +8.000000000000000000e+00 -1.300000000000000000e+01 1.200000000000000000e+01 1.200000000000000000e+01 +-8.000000000000000000e+00 -1.200000000000000000e+01 -6.000000000000000000e+00 -5.000000000000000000e+00 +2.000000000000000000e+00 2.000000000000000000e+00 3.000000000000000000e+00 7.000000000000000000e+00 +1.000000000000000000e+01 6.000000000000000000e+00 1.100000000000000000e+01 -8.000000000000000000e+00 +6.000000000000000000e+00 8.000000000000000000e+00 8.000000000000000000e+00 -1.200000000000000000e+01 +-7.000000000000000000e+00 1.000000000000000000e+01 -6.000000000000000000e+00 5.000000000000000000e+00 +-3.000000000000000000e+00 -9.000000000000000000e+00 -3.000000000000000000e+00 9.000000000000000000e+00 +-1.000000000000000000e+00 -1.300000000000000000e+01 -1.000000000000000000e+00 5.000000000000000000e+00 +-3.000000000000000000e+00 -7.000000000000000000e+00 -3.000000000000000000e+00 4.000000000000000000e+00 +-8.000000000000000000e+00 -2.000000000000000000e+00 -8.000000000000000000e+00 3.000000000000000000e+00 +4.000000000000000000e+00 2.000000000000000000e+00 1.200000000000000000e+01 1.200000000000000000e+01 +2.000000000000000000e+00 -5.000000000000000000e+00 3.000000000000000000e+00 1.100000000000000000e+01 +6.000000000000000000e+00 -9.000000000000000000e+00 1.100000000000000000e+01 -1.300000000000000000e+01 +3.000000000000000000e+00 -1.000000000000000000e+00 7.000000000000000000e+00 1.200000000000000000e+01 +1.100000000000000000e+01 -1.000000000000000000e+00 1.200000000000000000e+01 4.000000000000000000e+00 +-3.000000000000000000e+00 0.000000000000000000e+00 -3.000000000000000000e+00 6.000000000000000000e+00 +4.000000000000000000e+00 -1.100000000000000000e+01 4.000000000000000000e+00 1.200000000000000000e+01 +2.000000000000000000e+00 -4.000000000000000000e+00 2.000000000000000000e+00 1.000000000000000000e+00 +-1.000000000000000000e+01 -6.000000000000000000e+00 -8.000000000000000000e+00 1.000000000000000000e+00 +-1.300000000000000000e+01 7.000000000000000000e+00 -1.100000000000000000e+01 1.000000000000000000e+00 +-1.300000000000000000e+01 1.200000000000000000e+01 -1.100000000000000000e+01 -1.300000000000000000e+01 +6.000000000000000000e+00 0.000000000000000000e+00 1.100000000000000000e+01 -1.300000000000000000e+01 +0.000000000000000000e+00 -1.000000000000000000e+00 1.000000000000000000e+00 4.000000000000000000e+00 +-1.300000000000000000e+01 3.000000000000000000e+00 -9.000000000000000000e+00 -2.000000000000000000e+00 +-9.000000000000000000e+00 8.000000000000000000e+00 -6.000000000000000000e+00 -3.000000000000000000e+00 +-1.300000000000000000e+01 -6.000000000000000000e+00 -8.000000000000000000e+00 -2.000000000000000000e+00 +5.000000000000000000e+00 -9.000000000000000000e+00 8.000000000000000000e+00 1.000000000000000000e+01 +2.000000000000000000e+00 7.000000000000000000e+00 3.000000000000000000e+00 -9.000000000000000000e+00 +-1.000000000000000000e+00 -6.000000000000000000e+00 -1.000000000000000000e+00 -1.000000000000000000e+00 +9.000000000000000000e+00 5.000000000000000000e+00 1.100000000000000000e+01 -2.000000000000000000e+00 +1.100000000000000000e+01 -3.000000000000000000e+00 1.200000000000000000e+01 -8.000000000000000000e+00 +3.000000000000000000e+00 0.000000000000000000e+00 3.000000000000000000e+00 5.000000000000000000e+00 +-1.000000000000000000e+00 4.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+01 +3.000000000000000000e+00 -6.000000000000000000e+00 4.000000000000000000e+00 5.000000000000000000e+00 +-1.300000000000000000e+01 0.000000000000000000e+00 -1.000000000000000000e+01 5.000000000000000000e+00 +5.000000000000000000e+00 8.000000000000000000e+00 1.200000000000000000e+01 1.100000000000000000e+01 +8.000000000000000000e+00 9.000000000000000000e+00 9.000000000000000000e+00 -6.000000000000000000e+00 +7.000000000000000000e+00 -4.000000000000000000e+00 8.000000000000000000e+00 -1.200000000000000000e+01 +-1.000000000000000000e+01 4.000000000000000000e+00 -1.000000000000000000e+01 9.000000000000000000e+00 +7.000000000000000000e+00 3.000000000000000000e+00 1.200000000000000000e+01 4.000000000000000000e+00 +9.000000000000000000e+00 -7.000000000000000000e+00 1.000000000000000000e+01 -2.000000000000000000e+00 +7.000000000000000000e+00 0.000000000000000000e+00 1.200000000000000000e+01 -2.000000000000000000e+00 +-1.000000000000000000e+00 -6.000000000000000000e+00 0.000000000000000000e+00 -1.100000000000000000e+01 From a53d93e0f7ae3b2dd628843efbad8f790d075fa7 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Sat, 21 Sep 2013 03:13:30 +0530 Subject: [PATCH 196/577] Improved match_binary_descriptors function --- bento.info | 3 ++ skimage/feature/_brief.py | 50 -------------------- skimage/feature/match.py | 88 ++++++++++++++++++++++++++++++++++++ skimage/feature/match_cy.pyx | 21 +++++++++ skimage/feature/orb_cy.pyx | 2 +- skimage/feature/setup.py | 3 ++ 6 files changed, 116 insertions(+), 51 deletions(-) create mode 100644 skimage/feature/match.py create mode 100644 skimage/feature/match_cy.pyx diff --git a/bento.info b/bento.info index 725d1c06..f819d7c0 100644 --- a/bento.info +++ b/bento.info @@ -96,6 +96,9 @@ Library: Extension: skimage.feature.censure_cy Sources: skimage/feature/censure_cy.pyx + Extension: skimage.feature.match_cy + Sources: + skimage/feature/match_cy.pyx Extension: skimage.feature.orb_cy Sources: skimage/feature/orb_cy.pyx diff --git a/skimage/feature/_brief.py b/skimage/feature/_brief.py index 9e0475d3..be7e4ac9 100644 --- a/skimage/feature/_brief.py +++ b/skimage/feature/_brief.py @@ -173,53 +173,3 @@ def brief(image, keypoints, descriptor_size=256, mode='normal', patch_size=49, _brief_loop(image, descriptors.view(np.uint8), keypoints, pos1, pos2) return descriptors, keypoints - - -def match_keypoints_brief(keypoints1, descriptors1, keypoints2, - descriptors2, threshold=0.15): - """**Experimental function**. - - Match keypoints described using BRIEF descriptors in one image to - those in second image. - - Parameters - ---------- - keypoints1 : (M, 2) ndarray - M Keypoints from the first image described using skimage.feature.brief - descriptors1 : (M, P) ndarray - BRIEF descriptors of size P about M keypoints in the first image. - keypoints2 : (N, 2) ndarray - N Keypoints from the second image described using skimage.feature.brief - descriptors2 : (N, P) ndarray - BRIEF descriptors of size P about N keypoints in the second image. - threshold : float in range [0, 1] - Maximum allowable hamming distance between descriptors of two keypoints - in separate images to be regarded as a match. Default is 0.15. - - Returns - ------- - match_keypoints_brief : (Q, 2, 2) ndarray - Location of Q matched keypoint pairs from two images. - - """ - if (keypoints1.shape[0] != descriptors1.shape[0] - or keypoints2.shape[0] != descriptors2.shape[0]): - raise ValueError("The number of keypoints and number of described " - "keypoints do not match. Make the optional parameter " - "return_keypoints True to get described keypoints.") - - if descriptors1.shape[1] != descriptors2.shape[1]: - raise ValueError("Descriptor sizes for matching keypoints in both " - "the images should be equal.") - - # Get hamming distances between keeypoints1 and keypoints2 - distance = pairwise_hamming_distance(descriptors1, descriptors2) - - temp = distance > threshold - row_check = np.any(~temp, axis=1) - matched_keypoints2 = keypoints2[np.argmin(distance, axis=1)] - matched_keypoint_pairs = np.zeros((np.sum(row_check), 2, 2), dtype=np.intp) - matched_keypoint_pairs[:, 0, :] = keypoints1[row_check] - matched_keypoint_pairs[:, 1, :] = matched_keypoints2[row_check] - - return matched_keypoint_pairs diff --git a/skimage/feature/match.py b/skimage/feature/match.py new file mode 100644 index 00000000..d9f95c90 --- /dev/null +++ b/skimage/feature/match.py @@ -0,0 +1,88 @@ +import numpy as np + +from .util import pairwise_hamming_distance +from .match_cy import _binary_cross_check_loop + + +def match_binary_descriptors(keypoints1, descriptors1, keypoints2, + descriptors2, threshold=0.40, cross_check=True, + return_mask=True): + """Match keypoints described using binary descriptors in one image to + those in second image. + + Parameters + ---------- + keypoints1 : (M, 2) ndarray + M Keypoints from the first image described using skimage.feature.brief + descriptors1 : (M, P) ndarray + BRIEF descriptors of size P about M keypoints in the first image. + keypoints2 : (N, 2) ndarray + N Keypoints from the second image described using skimage.feature.brief + descriptors2 : (N, P) ndarray + BRIEF descriptors of size P about N keypoints in the second image. + threshold : float in range [0, 1] + Maximum allowable hamming distance between descriptors of two keypoints + in separate images to be regarded as a match. + cross_check : bool + Cross check if True. + return_mask : bool + Return index masks mask1 and mask2 for matched keypoints from + keypoints1 and keypoints2 respectively. + + Returns + ------- + match_keypoints_pairs : (Q, 2, 2) ndarray + Location of Q matched keypoint pairs from two images. + mask1 : (Q,) ndarray + Indices of keypoints in keypoints1 that have been matched. Returned + only when return_mask is True. + mask2 : (Q,) ndarray + Indices of keypoints in keypoints2 that have been matched. Returned + only when return_mask is True. + + """ + if (keypoints1.shape[0] != descriptors1.shape[0] + or keypoints2.shape[0] != descriptors2.shape[0]): + raise ValueError("The number of keypoints and number of described " + "keypoints do not match.") + + if descriptors1.shape[1] != descriptors2.shape[1]: + raise ValueError("Descriptor sizes for matching keypoints in both " + "the images should be equal.") + + # Get hamming distances between keypoints1 and keypoints2 + distance = pairwise_hamming_distance(descriptors1, descriptors2) + + if cross_check: + matched_keypoints1_index = np.argmin(distance, axis=1) + matched_keypoints2_index = np.argmin(distance, axis=0) + + matched_index = _binary_cross_check_loop(matched_keypoints1_index, + matched_keypoints2_index, + distance, threshold) + + matched_keypoint_pairs = np.zeros((matched_index.shape[0], 2, 2), + dtype=np.intp) + mask1 = matched_index[:, 0] + mask2 = matched_index[:, 1] + matched_keypoint_pairs[:, 0, :] = keypoints1[mask1] + matched_keypoint_pairs[:, 1, :] = keypoints2[mask2] + if return_mask: + return (matched_keypoint_pairs, mask1, mask2) + else: + return matched_keypoint_pairs + + else: + temp = distance > threshold + row_check = np.any(~temp, axis=1) + matched_keypoints2 = keypoints2[np.argmin(distance, axis=1)] + matched_keypoint_pairs = np.zeros((np.sum(row_check), 2, 2), + dtype=np.intp) + matched_keypoint_pairs[:, 0, :] = keypoints1[row_check] + matched_keypoint_pairs[:, 1, :] = matched_keypoints2[row_check] + mask1 = np.where(row_check == True) + mask2 = np.argmin(distance, axis=1)[row_check] + if return_mask: + return (matched_keypoint_pairs, mask1, mask2) + else: + return matched_keypoint_pairs diff --git a/skimage/feature/match_cy.pyx b/skimage/feature/match_cy.pyx new file mode 100644 index 00000000..8a1bb461 --- /dev/null +++ b/skimage/feature/match_cy.pyx @@ -0,0 +1,21 @@ +import numpy as np + + +def _binary_cross_check_loop(Py_ssize_t[:] matched_keypoints1_index, + Py_ssize_t[:] matched_keypoints2_index, + double[:, ::1] distance, double threshold): + cdef Py_ssize_t i + #matched_index = [] + + cdef Py_ssize_t count = 0 + cdef Py_ssize_t[:, ::1] matched_index = np.zeros((len(matched_keypoints1_index), 2), dtype=np.intp) + + for i in range(len(matched_keypoints1_index)): + if (matched_keypoints2_index[matched_keypoints1_index[i]] == i and + distance[i, matched_keypoints1_index[i]] < threshold): + #matched_index.append([i, matched_keypoints1_index[i]]) + matched_index[count, 0] = i + matched_index[count, 1] = matched_keypoints1_index[i] + count += 1 + + return np.asarray(matched_index[:count, :]) diff --git a/skimage/feature/orb_cy.pyx b/skimage/feature/orb_cy.pyx index bb317c7f..e7197797 100644 --- a/skimage/feature/orb_cy.pyx +++ b/skimage/feature/orb_cy.pyx @@ -9,7 +9,7 @@ import numpy as np from libc.math cimport sin, cos, M_PI, round -pos = np.loadtxt('orb_descriptor_positions.txt', dtype=np.int8) +pos = np.loadtxt("orb_descriptor_positions.txt", dtype=np.int8) pos0 = np.ascontiguousarray(pos[:, :2]) pos1 = np.ascontiguousarray(pos[:, 2:]) diff --git a/skimage/feature/setup.py b/skimage/feature/setup.py index 4f54faeb..9bd72ca3 100644 --- a/skimage/feature/setup.py +++ b/skimage/feature/setup.py @@ -16,6 +16,7 @@ def configuration(parent_package='', top_path=None): cython(['censure_cy.pyx'], working_path=base_path) cython(['orb_cy.pyx'], working_path=base_path) cython(['_brief_cy.pyx'], working_path=base_path) + cython(['match_cy.pyx'], working_path=base_path) cython(['_texture.pyx'], working_path=base_path) cython(['_template.pyx'], working_path=base_path) @@ -27,6 +28,8 @@ def configuration(parent_package='', top_path=None): include_dirs=[get_numpy_include_dirs()]) config.add_extension('_brief_cy', sources=['_brief_cy.c'], include_dirs=[get_numpy_include_dirs()]) + config.add_extension('match_cy', sources=['match_cy.c'], + include_dirs=[get_numpy_include_dirs()]) config.add_extension('_texture', sources=['_texture.c'], include_dirs=[get_numpy_include_dirs(), '../_shared']) config.add_extension('_template', sources=['_template.c'], From ba92c47497f04d8435120c0bc558587b3f7e65e3 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Sat, 21 Sep 2013 20:15:58 +0530 Subject: [PATCH 197/577] ORB matching example --- doc/examples/plot_orb_matching.py | 60 +++++++++++++++++++++++++++++++ skimage/feature/__init__.py | 5 +-- skimage/feature/orb.py | 6 ++-- skimage/feature/orb_cy.pyx | 2 +- 4 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 doc/examples/plot_orb_matching.py diff --git a/doc/examples/plot_orb_matching.py b/doc/examples/plot_orb_matching.py new file mode 100644 index 00000000..7d1119ab --- /dev/null +++ b/doc/examples/plot_orb_matching.py @@ -0,0 +1,60 @@ +import numpy as np +from skimage import data +from skimage import transform as tf +from skimage.feature import pairwise_hamming_distance, brief, match_binary_descriptors, corner_harris, corner_peaks, keypoints_orb, descriptor_orb +from skimage.color import rgb2gray +from skimage import img_as_float +import matplotlib.pyplot as plt + +rotate = 0.5 +translate = (-100, -200) +scaling = (1.5, 1.5) +match_threshold = 0.40 +match_cross_check = True + +img_color = data.lena() +tform = tf.AffineTransform(scale = scaling, rotation=rotate, translation=translate) +transformed_img_color = tf.warp(img_color, tform) +img = rgb2gray(img_color) +transformed_img = rgb2gray(transformed_img_color) + +keypoints1, orientations1, scales1 = keypoints_orb(img, n_keypoints=250) +keypoints1.shape +descriptors1, keypoints1 = descriptor_orb(img, keypoints1, orientations1, scales1) +keypoints1.shape +descriptors1.shape + +keypoints2, orientations2, scales2 = keypoints_orb(transformed_img, n_keypoints=250) +keypoints2.shape +descriptors2, keypoints2 = descriptor_orb(transformed_img, keypoints2, orientations2, scales2) +keypoints2.shape +descriptors2.shape + +pairwise_hamming_distance(descriptors1, descriptors2) +matched_keypoints, mask1, mask2 = match_binary_descriptors(keypoints1, descriptors1, keypoints2, descriptors2, cross_check=match_cross_check, threshold=match_threshold) + +matched_keypoints.shape + +# Plotting the matched correspondences in both the images using matplotlib +src = matched_keypoints[:, 0, :] +dst = matched_keypoints[:, 1, :] +src_scale = 10 * (scales1[mask1] + 1) ** 2 +dst_scale = 10 * (scales2[mask2] + 1) ** 2 + +img_combined = np.concatenate((img_as_float(img_color), img_as_float(transformed_img_color)), axis=1) +offset = img.shape + +fig, ax = plt.subplots(nrows=1, ncols=1) +plt.gray() + +ax.imshow(img_combined, interpolation='nearest') +ax.axis('off') +ax.axis((0, 2 * offset[1], offset[0], 0)) +ax.set_title('Matched correspondences : Rotation = %f; Scale = %s; Translation = %s; threshold = %f; cross_check = %r' % (rotate, scaling, translate, match_threshold, match_cross_check)) + +for m in range(len(src)): + ax.plot((src[m, 1], dst[m, 1] + offset[1]), (src[m, 0], dst[m, 0]), '-', color='g') + ax.scatter(src[m, 1], src[m, 0], src_scale[m], facecolors='none', edgecolors='b') + ax.scatter(dst[m, 1] + offset[1], dst[m, 0], dst_scale[m], facecolors='none', edgecolors='b') + +plt.show() diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index 8b33d6c7..89370fd7 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -9,7 +9,8 @@ from .corner import (corner_kitchen_rosenfeld, corner_harris, hessian_matrix_eigvals) from .corner_cy import corner_moravec, corner_orientations from .template import match_template -from ._brief import brief, match_keypoints_brief +from ._brief import brief +from .match import match_binary_descriptors from .util import pairwise_hamming_distance from .censure import keypoints_censure from .orb import keypoints_orb, descriptor_orb @@ -30,7 +31,7 @@ __all__ = ['daisy', 'match_template', 'brief', 'pairwise_hamming_distance', - 'match_keypoints_brief', + 'match_binary_descriptors', 'keypoints_censure', 'corner_fast', 'corner_orientations', diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 3de427e2..577ce9cc 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -19,7 +19,7 @@ OFAST_MASK = np.array([[0, 0, 1, 1, 1, 0, 0], def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, - harris_k=0.05, downscale=np.sqrt(2), n_scales=3): + harris_k=0.05, downscale=np.sqrt(2), n_scales=4): """Detect Oriented Fast keypoints. @@ -134,7 +134,7 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, def descriptor_orb(image, keypoints, orientations, scales, - downscale=np.sqrt(2), n_scales=5): + downscale=np.sqrt(2), n_scales=4): """Compute rBRIEF descriptors of input keypoints. Parameters @@ -206,7 +206,7 @@ def descriptor_orb(image, keypoints, orientations, scales, curr_scale_orientation = orientations[curr_scale_mask] border_mask = _mask_border_keypoints(curr_image, curr_scale_kpts, - dist=13) + dist=14) curr_scale_kpts = curr_scale_kpts[border_mask] curr_scale_orientation = curr_scale_orientation[border_mask] diff --git a/skimage/feature/orb_cy.pyx b/skimage/feature/orb_cy.pyx index e7197797..e312f95b 100644 --- a/skimage/feature/orb_cy.pyx +++ b/skimage/feature/orb_cy.pyx @@ -9,7 +9,7 @@ import numpy as np from libc.math cimport sin, cos, M_PI, round -pos = np.loadtxt("orb_descriptor_positions.txt", dtype=np.int8) +pos = np.loadtxt("skimage/feature/orb_descriptor_positions.txt", dtype=np.int8) pos0 = np.ascontiguousarray(pos[:, :2]) pos1 = np.ascontiguousarray(pos[:, 2:]) From f0fea633508231e3daea3f32bb53bda1915169b1 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Sat, 21 Sep 2013 22:20:21 +0530 Subject: [PATCH 198/577] Minor code changes; Explicit docs --- skimage/feature/match.py | 45 +++++++++++++++--------------------- skimage/feature/match_cy.pyx | 3 --- skimage/feature/orb_cy.pyx | 2 +- 3 files changed, 19 insertions(+), 31 deletions(-) diff --git a/skimage/feature/match.py b/skimage/feature/match.py index d9f95c90..4093c6b6 100644 --- a/skimage/feature/match.py +++ b/skimage/feature/match.py @@ -5,8 +5,7 @@ from .match_cy import _binary_cross_check_loop def match_binary_descriptors(keypoints1, descriptors1, keypoints2, - descriptors2, threshold=0.40, cross_check=True, - return_mask=True): + descriptors2, threshold=0.40, cross_check=True): """Match keypoints described using binary descriptors in one image to those in second image. @@ -15,30 +14,28 @@ def match_binary_descriptors(keypoints1, descriptors1, keypoints2, keypoints1 : (M, 2) ndarray M Keypoints from the first image described using skimage.feature.brief descriptors1 : (M, P) ndarray - BRIEF descriptors of size P about M keypoints in the first image. + Binary descriptors of size P about M keypoints in the first image. keypoints2 : (N, 2) ndarray N Keypoints from the second image described using skimage.feature.brief descriptors2 : (N, P) ndarray - BRIEF descriptors of size P about N keypoints in the second image. + Binary descriptors of size P about N keypoints in the second image. threshold : float in range [0, 1] Maximum allowable hamming distance between descriptors of two keypoints in separate images to be regarded as a match. cross_check : bool - Cross check if True. - return_mask : bool - Return index masks mask1 and mask2 for matched keypoints from - keypoints1 and keypoints2 respectively. + If True, the matched keypoints are returned after cross checking i.e. a + matched pair (keypoint1, keypoint2) is returned iff keypoint2 is the best + match for keypoint1 in second image and keypoint1 is the best match for + keypoint2 in first image. Returns ------- - match_keypoints_pairs : (Q, 2, 2) ndarray + matches : (Q, 2, 2) ndarray Location of Q matched keypoint pairs from two images. mask1 : (Q,) ndarray - Indices of keypoints in keypoints1 that have been matched. Returned - only when return_mask is True. + Indices of keypoints in keypoints1 that have been matched. mask2 : (Q,) ndarray - Indices of keypoints in keypoints2 that have been matched. Returned - only when return_mask is True. + Indices of keypoints in keypoints2 that have been matched. """ if (keypoints1.shape[0] != descriptors1.shape[0] @@ -61,28 +58,22 @@ def match_binary_descriptors(keypoints1, descriptors1, keypoints2, matched_keypoints2_index, distance, threshold) - matched_keypoint_pairs = np.zeros((matched_index.shape[0], 2, 2), + matches = np.zeros((matched_index.shape[0], 2, 2), dtype=np.intp) mask1 = matched_index[:, 0] mask2 = matched_index[:, 1] - matched_keypoint_pairs[:, 0, :] = keypoints1[mask1] - matched_keypoint_pairs[:, 1, :] = keypoints2[mask2] - if return_mask: - return (matched_keypoint_pairs, mask1, mask2) - else: - return matched_keypoint_pairs + matches[:, 0, :] = keypoints1[mask1] + matches[:, 1, :] = keypoints2[mask2] else: temp = distance > threshold row_check = np.any(~temp, axis=1) matched_keypoints2 = keypoints2[np.argmin(distance, axis=1)] - matched_keypoint_pairs = np.zeros((np.sum(row_check), 2, 2), + matches = np.zeros((np.sum(row_check), 2, 2), dtype=np.intp) - matched_keypoint_pairs[:, 0, :] = keypoints1[row_check] - matched_keypoint_pairs[:, 1, :] = matched_keypoints2[row_check] + matches[:, 0, :] = keypoints1[row_check] + matches[:, 1, :] = matched_keypoints2[row_check] mask1 = np.where(row_check == True) mask2 = np.argmin(distance, axis=1)[row_check] - if return_mask: - return (matched_keypoint_pairs, mask1, mask2) - else: - return matched_keypoint_pairs + + return matches, mask1, mask2 diff --git a/skimage/feature/match_cy.pyx b/skimage/feature/match_cy.pyx index 8a1bb461..6574d573 100644 --- a/skimage/feature/match_cy.pyx +++ b/skimage/feature/match_cy.pyx @@ -5,15 +5,12 @@ def _binary_cross_check_loop(Py_ssize_t[:] matched_keypoints1_index, Py_ssize_t[:] matched_keypoints2_index, double[:, ::1] distance, double threshold): cdef Py_ssize_t i - #matched_index = [] - cdef Py_ssize_t count = 0 cdef Py_ssize_t[:, ::1] matched_index = np.zeros((len(matched_keypoints1_index), 2), dtype=np.intp) for i in range(len(matched_keypoints1_index)): if (matched_keypoints2_index[matched_keypoints1_index[i]] == i and distance[i, matched_keypoints1_index[i]] < threshold): - #matched_index.append([i, matched_keypoints1_index[i]]) matched_index[count, 0] = i matched_index[count, 1] = matched_keypoints1_index[i] count += 1 diff --git a/skimage/feature/orb_cy.pyx b/skimage/feature/orb_cy.pyx index e312f95b..e7197797 100644 --- a/skimage/feature/orb_cy.pyx +++ b/skimage/feature/orb_cy.pyx @@ -9,7 +9,7 @@ import numpy as np from libc.math cimport sin, cos, M_PI, round -pos = np.loadtxt("skimage/feature/orb_descriptor_positions.txt", dtype=np.int8) +pos = np.loadtxt("orb_descriptor_positions.txt", dtype=np.int8) pos0 = np.ascontiguousarray(pos[:, :2]) pos1 = np.ascontiguousarray(pos[:, 2:]) From a10fc660f8e574aee359500c4b0d5b37ed35f52c Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 26 Sep 2013 08:46:20 +0530 Subject: [PATCH 199/577] Changing values of default parameters and OFAST_MASK --- skimage/feature/orb.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 577ce9cc..7498f7e3 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -9,17 +9,15 @@ from skimage.transform import pyramid_gaussian from .orb_cy import _orb_loop -OFAST_MASK = np.array([[0, 0, 1, 1, 1, 0, 0], - [0, 1, 1, 1, 1, 1, 0], - [1, 1, 1, 1, 1, 1, 1], - [1, 1, 1, 1, 1, 1, 1], - [1, 1, 1, 1, 1, 1, 1], - [0, 1, 1, 1, 1, 1, 0], - [0, 0, 1, 1, 1, 0, 0]], dtype=np.uint8) +OFAST_MASK = np.zeros((31, 31)) +umax = [15, 15, 15, 15, 14, 14, 14, 13, 13, 12, 11, 10, 9, 8, 6, 3] +for i in range(-15, 16): + for j in range(-umax[np.abs(i)], umax[np.abs(i)] + 1): + OFAST_MASK[15 + j, 15 + i] = 1 -def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, - harris_k=0.05, downscale=np.sqrt(2), n_scales=4): +def keypoints_orb(image, n_keypoints=500, fast_n=9, fast_threshold=0.08, + harris_k=0.04, downscale=1.2, n_scales=8): """Detect Oriented Fast keypoints. @@ -134,7 +132,7 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20, def descriptor_orb(image, keypoints, orientations, scales, - downscale=np.sqrt(2), n_scales=4): + downscale=1.2, n_scales=8): """Compute rBRIEF descriptors of input keypoints. Parameters @@ -206,7 +204,7 @@ def descriptor_orb(image, keypoints, orientations, scales, curr_scale_orientation = orientations[curr_scale_mask] border_mask = _mask_border_keypoints(curr_image, curr_scale_kpts, - dist=14) + dist=16) curr_scale_kpts = curr_scale_kpts[border_mask] curr_scale_orientation = curr_scale_orientation[border_mask] From a93fe9dbb984a24dfb212b3994ef615b82d3e36f Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 26 Sep 2013 17:57:12 +0530 Subject: [PATCH 200/577] Correcting the orientation bug --- skimage/feature/orb_cy.pyx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/skimage/feature/orb_cy.pyx b/skimage/feature/orb_cy.pyx index e7197797..21126fbd 100644 --- a/skimage/feature/orb_cy.pyx +++ b/skimage/feature/orb_cy.pyx @@ -6,7 +6,7 @@ cimport numpy as cnp import numpy as np -from libc.math cimport sin, cos, M_PI, round +from libc.math cimport sin, cos, round pos = np.loadtxt("orb_descriptor_positions.txt", dtype=np.int8) @@ -28,8 +28,8 @@ def _orb_loop(double[:, ::1] image, Py_ssize_t[:, ::1] keypoints, for i in range(descriptors.shape[0]): angle = orientations[i] - sin_a = sin(angle * M_PI / 180.) - cos_a = cos(angle * M_PI / 180.) + sin_a = sin(angle) + cos_a = cos(angle) kr = keypoints[i, 0] kc = keypoints[i, 1] From 11403f9ce30eee3769147edfb53a446c93668e54 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 26 Sep 2013 17:58:37 +0530 Subject: [PATCH 201/577] Making matching graphics more clear --- doc/examples/plot_orb_matching.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/doc/examples/plot_orb_matching.py b/doc/examples/plot_orb_matching.py index 7d1119ab..78409dd1 100644 --- a/doc/examples/plot_orb_matching.py +++ b/doc/examples/plot_orb_matching.py @@ -9,7 +9,7 @@ import matplotlib.pyplot as plt rotate = 0.5 translate = (-100, -200) scaling = (1.5, 1.5) -match_threshold = 0.40 +match_threshold = 0.25 match_cross_check = True img_color = data.lena() @@ -18,13 +18,13 @@ transformed_img_color = tf.warp(img_color, tform) img = rgb2gray(img_color) transformed_img = rgb2gray(transformed_img_color) -keypoints1, orientations1, scales1 = keypoints_orb(img, n_keypoints=250) +keypoints1, orientations1, scales1 = keypoints_orb(img, n_keypoints=500) keypoints1.shape descriptors1, keypoints1 = descriptor_orb(img, keypoints1, orientations1, scales1) keypoints1.shape descriptors1.shape -keypoints2, orientations2, scales2 = keypoints_orb(transformed_img, n_keypoints=250) +keypoints2, orientations2, scales2 = keypoints_orb(transformed_img, n_keypoints=500) keypoints2.shape descriptors2, keypoints2 = descriptor_orb(transformed_img, keypoints2, orientations2, scales2) keypoints2.shape @@ -38,8 +38,8 @@ matched_keypoints.shape # Plotting the matched correspondences in both the images using matplotlib src = matched_keypoints[:, 0, :] dst = matched_keypoints[:, 1, :] -src_scale = 10 * (scales1[mask1] + 1) ** 2 -dst_scale = 10 * (scales2[mask2] + 1) ** 2 +src_scale = 10 * (scales1[mask1] + 1) ** 1.5 +dst_scale = 10 * (scales2[mask2] + 1) ** 1.5 img_combined = np.concatenate((img_as_float(img_color), img_as_float(transformed_img_color)), axis=1) offset = img.shape @@ -53,8 +53,10 @@ ax.axis((0, 2 * offset[1], offset[0], 0)) ax.set_title('Matched correspondences : Rotation = %f; Scale = %s; Translation = %s; threshold = %f; cross_check = %r' % (rotate, scaling, translate, match_threshold, match_cross_check)) for m in range(len(src)): - ax.plot((src[m, 1], dst[m, 1] + offset[1]), (src[m, 0], dst[m, 0]), '-', color='g') - ax.scatter(src[m, 1], src[m, 0], src_scale[m], facecolors='none', edgecolors='b') - ax.scatter(dst[m, 1] + offset[1], dst[m, 0], dst_scale[m], facecolors='none', edgecolors='b') + c = np.random.rand(3,1) + ax.plot((src[m, 1], dst[m, 1] + offset[1]), (src[m, 0], dst[m, 0]), '-', color=c) + ax.scatter(src[m, 1], src[m, 0], src_scale[m], facecolors='none', edgecolors=c) + ax.scatter(dst[m, 1] + offset[1], dst[m, 0], dst_scale[m], facecolors='none', edgecolors=c) plt.show() + From 73afae9d7253cf5f36e08c080f6d4fcaefcd6464 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 26 Sep 2013 19:33:28 +0530 Subject: [PATCH 202/577] Documenting the example code --- doc/examples/plot_orb_matching.py | 36 +++++++++++++++++++++++-------- skimage/feature/orb.py | 3 ++- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/doc/examples/plot_orb_matching.py b/doc/examples/plot_orb_matching.py index 78409dd1..660aadae 100644 --- a/doc/examples/plot_orb_matching.py +++ b/doc/examples/plot_orb_matching.py @@ -1,37 +1,54 @@ import numpy as np from skimage import data from skimage import transform as tf -from skimage.feature import pairwise_hamming_distance, brief, match_binary_descriptors, corner_harris, corner_peaks, keypoints_orb, descriptor_orb +from skimage.feature import (pairwise_hamming_distance, + match_binary_descriptors, corner_harris, + corner_peaks, keypoints_orb, descriptor_orb) from skimage.color import rgb2gray from skimage import img_as_float import matplotlib.pyplot as plt +# Initializing parameters for transformation rotate = 0.5 translate = (-100, -200) scaling = (1.5, 1.5) -match_threshold = 0.25 -match_cross_check = True +# Creating a transformed image from the original Lena image by scaling and +# rotating it img_color = data.lena() -tform = tf.AffineTransform(scale = scaling, rotation=rotate, translation=translate) +tform = tf.AffineTransform(scale = scaling, rotation=rotate, + translation=translate) transformed_img_color = tf.warp(img_color, tform) img = rgb2gray(img_color) transformed_img = rgb2gray(transformed_img_color) +# Extracting oFAST keypoints and computing their rBRIEF descriptors keypoints1, orientations1, scales1 = keypoints_orb(img, n_keypoints=500) keypoints1.shape -descriptors1, keypoints1 = descriptor_orb(img, keypoints1, orientations1, scales1) +descriptors1, keypoints1 = descriptor_orb(img, keypoints1, orientations1, + scales1) keypoints1.shape descriptors1.shape -keypoints2, orientations2, scales2 = keypoints_orb(transformed_img, n_keypoints=500) +keypoints2, orientations2, scales2 = keypoints_orb(transformed_img, + n_keypoints=500) keypoints2.shape -descriptors2, keypoints2 = descriptor_orb(transformed_img, keypoints2, orientations2, scales2) +descriptors2, keypoints2 = descriptor_orb(transformed_img, keypoints2, + orientations2, scales2) keypoints2.shape descriptors2.shape +#Initializing parameters for Descriptor matching +match_threshold = 0.25 +match_cross_check = True + pairwise_hamming_distance(descriptors1, descriptors2) -matched_keypoints, mask1, mask2 = match_binary_descriptors(keypoints1, descriptors1, keypoints2, descriptors2, cross_check=match_cross_check, threshold=match_threshold) +matched_keypoints, mask1, mask2 = match_binary_descriptors(keypoints1, + descriptors1, + keypoints2, + descriptors2, + cross_check=match_cross_check, + threshold=match_threshold) matched_keypoints.shape @@ -41,7 +58,8 @@ dst = matched_keypoints[:, 1, :] src_scale = 10 * (scales1[mask1] + 1) ** 1.5 dst_scale = 10 * (scales2[mask2] + 1) ** 1.5 -img_combined = np.concatenate((img_as_float(img_color), img_as_float(transformed_img_color)), axis=1) +img_combined = np.concatenate((img_as_float(img_color), + img_as_float(transformed_img_color)), axis=1) offset = img.shape fig, ax = plt.subplots(nrows=1, ncols=1) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 7498f7e3..fb4a77ff 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -1,6 +1,7 @@ import numpy as np -from .util import _mask_border_keypoints, _prepare_grayscale_input_2D +from skimage.feature.util import (_mask_border_keypoints, + _prepare_grayscale_input_2D) from skimage.feature import (corner_fast, corner_orientations, corner_peaks, corner_harris) From 6e566e831f7774323a32f93bdaa77f638340c6e6 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Sat, 28 Sep 2013 23:22:40 +0530 Subject: [PATCH 203/577] Minor doc change --- skimage/feature/orb.py | 3 ++- skimage/feature/util.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index fb4a77ff..c45e0789 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -48,7 +48,8 @@ def keypoints_orb(image, n_keypoints=500, fast_n=9, fast_threshold=0.08, separate corners from edges, typically in range ``[0, 0.2]``. Small values of k result in detection of sharp corners. downscale : float - Downscale factor for the image pyramid. + Downscale factor for the image pyramid. Default value 1.2 is chosen so + that we have more scales per octave i.e. log1.2(2) in this case. n_scales : int Number of scales from the bottom of the image pyramid to extract the features from. diff --git a/skimage/feature/util.py b/skimage/feature/util.py index 178eab66..9bbbaef5 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -1,6 +1,6 @@ import numpy as np -from ..util import img_as_float +from skimage.util import img_as_float def _prepare_grayscale_input_2D(image): From ed738b301718a869f7ac0ff8f450d0005dd92e9d Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Tue, 1 Oct 2013 09:38:02 +0530 Subject: [PATCH 204/577] Minor doc changes --- skimage/feature/censure.py | 4 +++- skimage/feature/orb.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/skimage/feature/censure.py b/skimage/feature/censure.py index cf3d543a..dbe8daf5 100644 --- a/skimage/feature/censure.py +++ b/skimage/feature/censure.py @@ -126,7 +126,9 @@ def keypoints_censure(image, min_scale=1, max_scale=7, mode='DoB', max_scale : int Maximum scale to extract keypoints from. The keypoints will be extracted from all the scales except the first and the last i.e. - from the scales in the range [min_scale + 1, max_scale - 1]. + from the scales in the range [min_scale + 1, max_scale - 1]. The filter + sizes for different scales is such that the two adjacent scales + comprise of an octave. mode : {'DoB', 'Octagon', 'STAR'} Type of bi-level filter used to get the scales of the input image. Possible values are 'DoB', 'Octagon' and 'STAR'. The three modes diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index c45e0789..63586ff6 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -49,7 +49,7 @@ def keypoints_orb(image, n_keypoints=500, fast_n=9, fast_threshold=0.08, values of k result in detection of sharp corners. downscale : float Downscale factor for the image pyramid. Default value 1.2 is chosen so - that we have more scales per octave i.e. log1.2(2) in this case. + that we have more dense scales that enable robust scale invariance. n_scales : int Number of scales from the bottom of the image pyramid to extract the features from. From e9762f2673d553ac2102ca58f55414848afb7a9f Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Tue, 1 Oct 2013 10:22:01 +0530 Subject: [PATCH 205/577] Incorporating mat_binary_descriptors changes in test_brief --- skimage/feature/tests/_test_brief.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/skimage/feature/tests/_test_brief.py b/skimage/feature/tests/_test_brief.py index 1d26cbbd..c7e3a134 100644 --- a/skimage/feature/tests/_test_brief.py +++ b/skimage/feature/tests/_test_brief.py @@ -3,7 +3,7 @@ from numpy.testing import assert_array_equal, assert_raises from skimage import data from skimage import transform as tf from skimage.color import rgb2gray -from skimage.feature import (brief, match_keypoints_brief, corner_peaks, +from skimage.feature import (brief, match_binary_descriptors, corner_peaks, corner_harris) @@ -14,7 +14,7 @@ def test_brief_color_image_unsupported_error(): assert_raises(ValueError, brief, img, keypoints) -def test_match_keypoints_brief_lena_translation(): +def test_matching_brief_descriptors_lena_translation(): """Test matched keypoints between lena image and its translated version.""" img = data.lena() img = rgb2gray(img) @@ -29,15 +29,17 @@ def test_match_keypoints_brief_lena_translation(): descriptors2, keypoints2 = brief(translated_img, keypoints2, descriptor_size=512) - matched_keypoints = match_keypoints_brief(keypoints1, descriptors1, - keypoints2, descriptors2, - threshold=0.10) + matched_keypoints, m1, m2 = match_binary_descriptors(keypoints1, + descriptors1, + keypoints2, + descriptors2, + threshold=0.10) assert_array_equal(matched_keypoints[:, 0, :], matched_keypoints[:, 1, :] + [20, 15]) -def test_match_keypoints_brief_lena_rotation(): +def test_matching_brief_descriptors_lena_rotation(): """Verify matched keypoints result between lena image and its rotated version with the expected keypoint pairs.""" img = data.lena() @@ -53,9 +55,11 @@ def test_match_keypoints_brief_lena_rotation(): descriptors2, keypoints2 = brief(rotated_img, keypoints2, descriptor_size=512) - matched_keypoints = match_keypoints_brief(keypoints1, descriptors1, - keypoints2, descriptors2, - threshold=0.07) + matched_keypoints, m1, m2 = match_binary_descriptors(keypoints1, + descriptors1, + keypoints2, + descriptors2, + threshold=0.07) expected = np.array([[[263, 272], [234, 298]], @@ -75,6 +79,7 @@ def test_match_keypoints_brief_lena_rotation(): [[454, 176], [435, 221]]]) + print matched_keypoints assert_array_equal(matched_keypoints, expected) From ffd144ef3680514f6ca36b9d845d3f9ef9dd4fdb Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 2 Oct 2013 01:49:51 +0530 Subject: [PATCH 206/577] tests for match_binary_descriptors; many corrections and changes --- skimage/feature/__init__.py | 4 +- skimage/feature/_brief.py | 23 ++-- skimage/feature/match.py | 2 +- skimage/feature/tests/_test_brief.py | 92 +++++--------- skimage/feature/tests/test_match.py | 173 +++++++++++++++++++++++++++ skimage/feature/util.py | 6 + 6 files changed, 228 insertions(+), 72 deletions(-) create mode 100644 skimage/feature/tests/test_match.py diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index 89370fd7..0487f7b6 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -9,7 +9,7 @@ from .corner import (corner_kitchen_rosenfeld, corner_harris, hessian_matrix_eigvals) from .corner_cy import corner_moravec, corner_orientations from .template import match_template -from ._brief import brief +from ._brief import descriptor_brief from .match import match_binary_descriptors from .util import pairwise_hamming_distance from .censure import keypoints_censure @@ -29,7 +29,7 @@ __all__ = ['daisy', 'corner_peaks', 'corner_moravec', 'match_template', - 'brief', + 'descriptor_brief', 'pairwise_hamming_distance', 'match_binary_descriptors', 'keypoints_censure', diff --git a/skimage/feature/_brief.py b/skimage/feature/_brief.py index be7e4ac9..94c92f04 100644 --- a/skimage/feature/_brief.py +++ b/skimage/feature/_brief.py @@ -2,13 +2,13 @@ import numpy as np from scipy.ndimage.filters import gaussian_filter from .util import (_mask_border_keypoints, pairwise_hamming_distance, - _prepare_grayscale_input_2D) + _prepare_grayscale_input_2D) from ._brief_cy import _brief_loop -def brief(image, keypoints, descriptor_size=256, mode='normal', patch_size=49, - sample_seed=1, variance=2): +def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', + patch_size=49, sample_seed=1, variance=2): """**Experimental function**. Extract BRIEF Descriptor about given keypoints for a given image. @@ -57,8 +57,9 @@ def brief(image, keypoints, descriptor_size=256, mode='normal', patch_size=49, Examples -------- - >> from skimage.feature import corner_peaks, corner_harris, \\ - .. pairwise_hamming_distance, brief, match_keypoints_brief + >> import numpy as np + >> from skimage.feature.corner import corner_peaks, corner_harris + >> from skimage.feature import pairwise_hamming_distance, descriptor_brief, match_binary_descriptors >> square1 = np.zeros([8, 8], dtype=np.int32) >> square1[2:6, 2:6] = 1 >> square1 @@ -76,7 +77,7 @@ def brief(image, keypoints, descriptor_size=256, mode='normal', patch_size=49, [2, 5], [5, 2], [5, 5]]) - >> descriptors1, keypoints1 = brief(square1, keypoints1, patch_size=5) + >> descriptors1, keypoints1 = descriptor_brief(square1, keypoints1, patch_size=5) >> keypoints1 array([[2, 2], [2, 5], @@ -100,7 +101,7 @@ def brief(image, keypoints, descriptor_size=256, mode='normal', patch_size=49, [2, 6], [6, 2], [6, 6]]) - >> descriptors2, keypoints2 = brief(square2, keypoints2, patch_size=5) + >> descriptors2, keypoints2 = descriptor_brief(square2, keypoints2, patch_size=5) >> keypoints2 array([[2, 2], [2, 6], @@ -111,8 +112,11 @@ def brief(image, keypoints, descriptor_size=256, mode='normal', patch_size=49, [ 0.3203125, 0.03125 , 0.640625 , 0.375 ], [ 0.375 , 0.6328125, 0.0390625, 0.328125 ], [ 0.625 , 0.3671875, 0.34375 , 0.0234375]]) - >> match_keypoints_brief(keypoints1, descriptors1, - .. keypoints2, descriptors2) + >> matched_kpts, mask1, mask2 = match_binary_descriptors(keypoints1, + descriptors1, + keypoints2, + descriptors2) + >> matched_kpts array([[[ 2, 2], [ 2, 2]], @@ -165,6 +169,7 @@ def brief(image, keypoints, descriptor_size=256, mode='normal', patch_size=49, samples = np.random.randint(-(patch_size - 2) // 2, (patch_size // 2) + 1, (descriptor_size * 2, 2)) + samples = np.array(samples, dtype=np.int32) pos1, pos2 = np.split(samples, 2) pos1 = np.ascontiguousarray(pos1) diff --git a/skimage/feature/match.py b/skimage/feature/match.py index 4093c6b6..d9ae886a 100644 --- a/skimage/feature/match.py +++ b/skimage/feature/match.py @@ -73,7 +73,7 @@ def match_binary_descriptors(keypoints1, descriptors1, keypoints2, dtype=np.intp) matches[:, 0, :] = keypoints1[row_check] matches[:, 1, :] = matched_keypoints2[row_check] - mask1 = np.where(row_check == True) + mask1 = np.where(row_check == True)[0] mask2 = np.argmin(distance, axis=1)[row_check] return matches, mask1, mask2 diff --git a/skimage/feature/tests/_test_brief.py b/skimage/feature/tests/_test_brief.py index c7e3a134..7983b023 100644 --- a/skimage/feature/tests/_test_brief.py +++ b/skimage/feature/tests/_test_brief.py @@ -3,84 +3,56 @@ from numpy.testing import assert_array_equal, assert_raises from skimage import data from skimage import transform as tf from skimage.color import rgb2gray -from skimage.feature import (brief, match_binary_descriptors, corner_peaks, +from skimage.feature import (descriptor_brief, match_binary_descriptors, corner_peaks, corner_harris) -def test_brief_color_image_unsupported_error(): +def test_descriptor_brief_color_image_unsupported_error(): """Brief descriptors can be evaluated on gray-scale images only.""" img = np.zeros((20, 20, 3)) keypoints = [[7, 5], [11, 13]] - assert_raises(ValueError, brief, img, keypoints) + assert_raises(ValueError, descriptor_brief, img, keypoints) -def test_matching_brief_descriptors_lena_translation(): - """Test matched keypoints between lena image and its translated version.""" +def test_descriptor_brief_normal_mode(): + """Verify the computed BRIEF descriptors with expected for normal mode.""" img = data.lena() img = rgb2gray(img) - img.shape - tform = tf.SimilarityTransform(scale=1, rotation=0, translation=(15, 20)) - translated_img = tf.warp(img, tform) + keypoints = corner_peaks(corner_harris(img), min_distance=5) + descriptors, keypoints = descriptor_brief(img, keypoints[:8], + descriptor_size=8) - keypoints1 = corner_peaks(corner_harris(img), min_distance=5) - descriptors1, keypoints1 = brief(img, keypoints1, descriptor_size=512) + expected = np.array([[ True, False, True, False, True, True, False, False], + [False, False, False, False, True, False, False, False], + [ True, True, True, True, True, True, True, True], + [ True, False, True, True, False, True, False, True], + [False, True, True, True, True, True, True, True], + [ True, False, False, False, False, True, False, True], + [False, True, True, True, False, False, True, False], + [False, False, False, False, True, False, False, False]], dtype=bool) - keypoints2 = corner_peaks(corner_harris(translated_img), min_distance=5) - descriptors2, keypoints2 = brief(translated_img, keypoints2, - descriptor_size=512) - - matched_keypoints, m1, m2 = match_binary_descriptors(keypoints1, - descriptors1, - keypoints2, - descriptors2, - threshold=0.10) - - assert_array_equal(matched_keypoints[:, 0, :], matched_keypoints[:, 1, :] + - [20, 15]) + assert_array_equal(descriptors, expected) -def test_matching_brief_descriptors_lena_rotation(): - """Verify matched keypoints result between lena image and its rotated - version with the expected keypoint pairs.""" +def test_descriptor_brief_uniform_mode(): + """Verify the computed BRIEF descriptors with expected for uniform mode.""" img = data.lena() img = rgb2gray(img) - img.shape - tform = tf.SimilarityTransform(scale=1, rotation=0.10, translation=(0, 0)) - rotated_img = tf.warp(img, tform) + keypoints = corner_peaks(corner_harris(img), min_distance=5) + descriptors, keypoints = descriptor_brief(img, keypoints[:8], + descriptor_size=8, + mode='uniform') - keypoints1 = corner_peaks(corner_harris(img), min_distance=5) - descriptors1, keypoints1 = brief(img, keypoints1, descriptor_size=512) + expected = np.array([[ True, False, True, False, False, True, False, False], + [False, True, False, False, True, True, True, True], + [ True, False, False, False, False, False, False, False], + [False, True, True, False, False, False, True, False], + [False, False, False, False, False, False, True, False], + [False, True, False, False, True, False, False, False], + [False, False, True, True, False, False, True, True], + [ True, True, False, False, False, False, False, False]], dtype=bool) - keypoints2 = corner_peaks(corner_harris(rotated_img), min_distance=5) - descriptors2, keypoints2 = brief(rotated_img, keypoints2, - descriptor_size=512) - - matched_keypoints, m1, m2 = match_binary_descriptors(keypoints1, - descriptors1, - keypoints2, - descriptors2, - threshold=0.07) - - expected = np.array([[[263, 272], - [234, 298]], - - [[271, 120], - [258, 146]], - - [[323, 164], - [305, 195]], - - [[414, 70], - [405, 111]], - - [[435, 181], - [415, 223]], - - [[454, 176], - [435, 221]]]) - - print matched_keypoints - assert_array_equal(matched_keypoints, expected) + assert_array_equal(descriptors, expected) if __name__ == '__main__': diff --git a/skimage/feature/tests/test_match.py b/skimage/feature/tests/test_match.py new file mode 100644 index 00000000..1e1435e3 --- /dev/null +++ b/skimage/feature/tests/test_match.py @@ -0,0 +1,173 @@ +import numpy as np +from numpy.testing import assert_array_equal, assert_raises +from skimage import data +from skimage import transform as tf +from skimage.color import rgb2gray +from skimage.feature import (descriptor_brief, match_binary_descriptors, + corner_peaks, corner_harris) + + +def test_match_binary_descriptors_unequal_descriptor_keypoints_error(): + """Number of descriptors should be equal to the number of keypoints.""" + kp1 = np.array([[40, 50], + [60, 40], + [30, 70]]) + des1 = np.array([[True, True, False, True], + [False, True, False, True]]) + kp2 = np.array([[60, 50], + [50, 80]]) + des2 = np.array([[True, False, False, True], + [False, True, True, True]]) + assert_raises(ValueError, match_binary_descriptors, kp1, des1, kp2, des2) + + +def test_match_binary_descriptors_unequal_descriptor_sizes_error(): + """Sizes of descriptors of keypoints to be matched should be equal.""" + kp1 = np.array([[40, 50], + [60, 40]]) + des1 = np.array([[True, True, False, True], + [False, True, False, True]]) + kp2 = np.array([[60, 50], + [50, 80]]) + des2 = np.array([[True, False, False, True, False], + [False, True, True, True, False]]) + assert_raises(ValueError, match_binary_descriptors, kp1, des1, kp2, des2) + + +def test_match_binary_descriptors_lena_rotation_crosscheck_false(): + """Verify matched keypoints and their corresponding masks results between + lena image and its rotated version with the expected keypoint pairs with + cross_check disabled.""" + img = data.lena() + img = rgb2gray(img) + tform = tf.SimilarityTransform(scale=1, rotation=0.15, translation=(0, 0)) + rotated_img = tf.warp(img, tform) + + keypoints1 = corner_peaks(corner_harris(img), min_distance=5) + descriptors1, keypoints1 = descriptor_brief(img, keypoints1, descriptor_size=512) + + keypoints2 = corner_peaks(corner_harris(rotated_img), min_distance=5) + descriptors2, keypoints2 = descriptor_brief(rotated_img, keypoints2, + descriptor_size=512) + + matched_keypoints, m1, m2 = match_binary_descriptors(keypoints1, + descriptors1, + keypoints2, + descriptors2, + threshold=0.13, + cross_check=False) + + expected_mask1 = np.array([11, 12, 16, 20, 24, 26, 27, 29, 35, 39, 40, 42, 45]) + expected_mask2 = np.array([ 1, 3, 0, 4, 6, 7, 8, 9, 10, 10, 11, 12, 13]) + expected = np.array([[[245, 141], + [221, 176]], + + [[247, 130], + [225, 165]], + + [[263, 272], + [219, 309]], + + [[271, 120], + [250, 159]], + + [[311, 174], + [282, 218]], + + [[323, 164], + [294, 210]], + + [[327, 147], + [301, 195]], + + [[377, 157], + [349, 211]], + + [[414, 70], + [399, 131]], + + [[425, 67], + [399, 131]], + + [[435, 181], + [403, 244]], + + [[454, 176], + [423, 242]], + + [[467, 166], + [437, 234]]]) + + assert_array_equal(matched_keypoints, expected) + assert_array_equal(m1, expected_mask1) + assert_array_equal(m2, expected_mask2) + + +def test_match_binary_descriptors_lena_rotation_crosscheck_true(): + """Verify matched keypoints and their corresponding masks results between + lena image and its rotated version with the expected keypoint pairs with + cross_check enabled.""" + img = data.lena() + img = rgb2gray(img) + tform = tf.SimilarityTransform(scale=1, rotation=0.15, translation=(0, 0)) + rotated_img = tf.warp(img, tform) + + keypoints1 = corner_peaks(corner_harris(img), min_distance=5) + descriptors1, keypoints1 = descriptor_brief(img, keypoints1, descriptor_size=512) + + keypoints2 = corner_peaks(corner_harris(rotated_img), min_distance=5) + descriptors2, keypoints2 = descriptor_brief(rotated_img, keypoints2, + descriptor_size=512) + + matched_keypoints, m1, m2 = match_binary_descriptors(keypoints1, + descriptors1, + keypoints2, + descriptors2, + threshold=0.13) + + expected = np.array([[[245, 141], + [221, 176]], + + [[247, 130], + [225, 165]], + + [[263, 272], + [219, 309]], + + [[271, 120], + [250, 159]], + + [[311, 174], + [282, 218]], + + [[323, 164], + [294, 210]], + + [[327, 147], + [301, 195]], + + [[377, 157], + [349, 211]], + + [[414, 70], + [399, 131]], + + [[435, 181], + [403, 244]], + + [[454, 176], + [423, 242]], + + [[467, 166], + [437, 234]]]) + + expected_mask1 = np.array([11, 12, 16, 20, 24, 26, 27, 29, 35, 40, 42, 45]) + expected_mask2 = np.array([ 1, 3, 0, 4, 6, 7, 8, 9, 10, 11, 12, 13]) + assert_array_equal(matched_keypoints, expected) + assert_array_equal(m1, expected_mask1) + assert_array_equal(m2, expected_mask2) + + +if __name__ == '__main__': + from numpy import testing + testing.run_module_suite() diff --git a/skimage/feature/util.py b/skimage/feature/util.py index 9bbbaef5..29b36475 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -47,3 +47,9 @@ def pairwise_hamming_distance(array1, array2): """ distance = (array1[:, None] != array2[None]).mean(axis=2) return distance + + +def _create_keypoint_recarray(row, col, octave=None, orientation=None, + response=None): + kpt_recarray = np.recarray() + From 58515ad14e6222dca82125cab3fa96c59a90e172 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 2 Oct 2013 01:58:09 +0530 Subject: [PATCH 207/577] Cleaning util.py --- skimage/feature/util.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/skimage/feature/util.py b/skimage/feature/util.py index 29b36475..9bbbaef5 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -47,9 +47,3 @@ def pairwise_hamming_distance(array1, array2): """ distance = (array1[:, None] != array2[None]).mean(axis=2) return distance - - -def _create_keypoint_recarray(row, col, octave=None, orientation=None, - response=None): - kpt_recarray = np.recarray() - From 142ad4e7741ab960a06e3ed57ceae57de13194a7 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Wed, 2 Oct 2013 20:15:22 +0530 Subject: [PATCH 208/577] Adding tests for orb; fixing some bugs --- skimage/feature/orb.py | 30 +++++----- skimage/feature/orb_cy.pyx | 3 +- skimage/feature/tests/test_orb.py | 93 +++++++++++++++++++++++++++++++ 3 files changed, 111 insertions(+), 15 deletions(-) create mode 100644 skimage/feature/tests/test_orb.py diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 63586ff6..8f659394 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -18,7 +18,7 @@ for i in range(-15, 16): def keypoints_orb(image, n_keypoints=500, fast_n=9, fast_threshold=0.08, - harris_k=0.04, downscale=1.2, n_scales=8): + harris_k=0.04, downscale=1.2, n_scales=8): """Detect Oriented Fast keypoints. @@ -201,22 +201,24 @@ def descriptor_orb(image, keypoints, orientations, scales, curr_image = np.ascontiguousarray(pyramid[scale]) curr_scale_mask = scales == scale - curr_scale_kpts = keypoints[curr_scale_mask] / (downscale ** scale) - curr_scale_kpts = np.round(curr_scale_kpts).astype(np.intp) - curr_scale_orientation = orientations[curr_scale_mask] + if np.sum(curr_scale_mask) > 0: + curr_scale_kpts = keypoints[curr_scale_mask] / (downscale ** scale) + curr_scale_kpts = np.round(curr_scale_kpts).astype(np.intp) + curr_scale_orientation = orientations[curr_scale_mask] - border_mask = _mask_border_keypoints(curr_image, curr_scale_kpts, - dist=16) - curr_scale_kpts = curr_scale_kpts[border_mask] - curr_scale_orientation = curr_scale_orientation[border_mask] + border_mask = _mask_border_keypoints(curr_image, curr_scale_kpts, + dist=16) - curr_scale_kpts = np.ascontiguousarray(curr_scale_kpts) - curr_scale_orientation = np.ascontiguousarray(curr_scale_orientation) - curr_scale_descriptors = _orb_loop(curr_image, curr_scale_kpts, - curr_scale_orientation) + curr_scale_kpts = curr_scale_kpts[border_mask] + curr_scale_orientation = curr_scale_orientation[border_mask] - descriptors_list.append(curr_scale_descriptors) - filtered_keypoints_list.append(curr_scale_kpts * downscale ** scale) + curr_scale_kpts = np.ascontiguousarray(curr_scale_kpts) + curr_scale_orientation = np.ascontiguousarray(curr_scale_orientation) + curr_scale_descriptors = _orb_loop(curr_image, curr_scale_kpts, + curr_scale_orientation) + + descriptors_list.append(curr_scale_descriptors) + filtered_keypoints_list.append(curr_scale_kpts * downscale ** scale) descriptors = np.vstack(descriptors_list).view(np.bool) filtered_keypoints = np.vstack(filtered_keypoints_list) diff --git a/skimage/feature/orb_cy.pyx b/skimage/feature/orb_cy.pyx index 21126fbd..b1af3af2 100644 --- a/skimage/feature/orb_cy.pyx +++ b/skimage/feature/orb_cy.pyx @@ -9,7 +9,8 @@ import numpy as np from libc.math cimport sin, cos, round -pos = np.loadtxt("orb_descriptor_positions.txt", dtype=np.int8) +pos = np.loadtxt(os.path.join(os.path.dirname(__file__), + "orb_descriptor_positions.txt"), dtype=np.int8) pos0 = np.ascontiguousarray(pos[:, :2]) pos1 = np.ascontiguousarray(pos[:, 2:]) diff --git a/skimage/feature/tests/test_orb.py b/skimage/feature/tests/test_orb.py new file mode 100644 index 00000000..a577cf22 --- /dev/null +++ b/skimage/feature/tests/test_orb.py @@ -0,0 +1,93 @@ +import numpy as np +from numpy.testing import assert_array_equal, assert_almost_equal +from skimage.feature import keypoints_orb, descriptor_orb +from skimage.data import lena +from skimage.color import rgb2gray + + +def test_keypoints_orb_desired_no_of_keypoints(): + img = rgb2gray(lena()) + keypoints, orientations, scales = keypoints_orb(img, n_keypoints=10, + fast_n=12, + fast_threshold=0.20) + exp_keypoints = np.array([[435, 180], + [436, 180], + [376, 156], + [455, 176], + [435, 180], + [269, 111], + [376, 156], + [311, 173], + [413, 70], + [311, 173]]) + exp_scales = np.array([0, 1, 0, 0, 2, 0, 1, 1, 0, 3]) + exp_orientations = np.array([-175.64733392, -167.94842949, -148.98350192, + -142.03599837, -176.08535837, -53.08162354, + -150.89208271, 97.7693776 , -173.4479964 , + 38.66312042]) + assert_array_equal(exp_keypoints, keypoints) + assert_array_equal(exp_scales, scales) + assert_almost_equal(exp_orientations, np.rad2deg(orientations)) + + +def test_keypoints_orb_less_than_desired_no_of_keypoints(): + img = rgb2gray(lena()) + keypoints, orientations, scales = keypoints_orb(img, n_keypoints=15, + fast_n=12, + fast_threshold=0.33, + downscale=2, n_scales=2) + exp_keypoints = np.array([[ 67, 157], + [247, 146], + [269, 111], + [413, 70], + [435, 180], + [230, 136], + [264, 336], + [330, 148], + [372, 156]]) + exp_scales = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1]) + exp_orientations = np.array([-105.76503839, -96.28973044, -53.08162354, + -173.4479964 , -175.64733392, -106.07927215, + -163.40016243, 75.80865813, -154.73195911]) + assert_array_equal(exp_keypoints, keypoints) + assert_array_equal(exp_scales, scales) + assert_almost_equal(exp_orientations, np.rad2deg(orientations)) + + +def test_descriptor_orb(): + img = rgb2gray(lena()) + keypoints, orientations, scales = keypoints_orb(img, n_keypoints=10, + fast_n=12, + fast_threshold=0.20) + descriptors, filtered_keypoints = descriptor_orb(img, keypoints, orientations, scales) + + exp_filtered_keypoints = np.array([[435, 180], + [376, 156], + [455, 176], + [269, 111], + [413, 70], + [436, 180], + [376, 156], + [311, 173], + [435, 180], + [311, 173]]) + + descriptors_120_129 = np.array([[ True, False, False, True, False, False, False, False, False, False], + [ True, True, False, False, True, False, False, True, False, True], + [False, True, True, False, True, False, True, True, True, True], + [False, False, False, True, True, False, True, False, True, False], + [False, True, True, True, True, False, True, True, True, False], + [ True, False, True, True, True, False, False, False, True, False], + [ True, False, True, False, True, False, True, True, False, True], + [ True, True, True, True, True, True, False, True, True, True], + [ True, True, True, False, True, False, True, True, True, False], + [ True, True, False, True, True, True, False, True, False, True]], + dtype=bool) + + assert_array_equal(exp_filtered_keypoints, filtered_keypoints) + assert_array_equal(descriptors_120_129, descriptors[:, 120:130]) + + +if __name__ == '__main__': + from numpy import testing + testing.run_module_suite() From 3a0cebed9f69ea819d77426211e53d2c127c6762 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Sat, 12 Oct 2013 20:35:28 +0530 Subject: [PATCH 209/577] Fix missing import --- skimage/feature/orb_cy.pyx | 1 + 1 file changed, 1 insertion(+) diff --git a/skimage/feature/orb_cy.pyx b/skimage/feature/orb_cy.pyx index b1af3af2..82c6e6ad 100644 --- a/skimage/feature/orb_cy.pyx +++ b/skimage/feature/orb_cy.pyx @@ -5,6 +5,7 @@ cimport numpy as cnp import numpy as np +import os from libc.math cimport sin, cos, round From 94d90667008426872cb721490c3a79363a5183af Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Sat, 12 Oct 2013 21:15:26 +0530 Subject: [PATCH 210/577] Absolute path fix --- skimage/feature/orb_cy.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/feature/orb_cy.pyx b/skimage/feature/orb_cy.pyx index 82c6e6ad..939471c9 100644 --- a/skimage/feature/orb_cy.pyx +++ b/skimage/feature/orb_cy.pyx @@ -10,7 +10,7 @@ import os from libc.math cimport sin, cos, round -pos = np.loadtxt(os.path.join(os.path.dirname(__file__), +pos = np.loadtxt(os.path.join(os.path.dirname(os.path.abspath(__file__)), "orb_descriptor_positions.txt"), dtype=np.int8) pos0 = np.ascontiguousarray(pos[:, :2]) pos1 = np.ascontiguousarray(pos[:, 2:]) From 5611da485f8a131201339b6983f9ab62b513c54d Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Tue, 29 Oct 2013 02:49:29 +0530 Subject: [PATCH 211/577] Introducing recarray for storing keypoint variables --- skimage/feature/orb.py | 56 +++++++++++++++++++---------------------- skimage/feature/util.py | 14 +++++++++++ 2 files changed, 40 insertions(+), 30 deletions(-) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 8f659394..9b394dd9 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -1,7 +1,8 @@ import numpy as np from skimage.feature.util import (_mask_border_keypoints, - _prepare_grayscale_input_2D) + _prepare_grayscale_input_2D, + _create_keypoint_recarray) from skimage.feature import (corner_fast, corner_orientations, corner_peaks, corner_harris) @@ -120,33 +121,30 @@ def keypoints_orb(image, n_keypoints=500, fast_n=9, fast_threshold=0.08, harris_response_list.append(harris_response[corners[:, 0], corners[:, 1]]) - keypoints = np.round(np.vstack(keypoints_list)).astype(np.intp) + keypoints = np.vstack(keypoints_list) orientations = np.hstack(orientations_list) - scales = np.hstack(scales_list) + octaves = downscale ** np.hstack(scales_list) harris_measure = np.hstack(harris_response_list) + kpts_recarray = _create_keypoint_recarray(keypoints[:, 0], keypoints[:, 1], + octaves, orientations, + harris_measure) - if keypoints.shape[0] < n_keypoints: - return keypoints, orientations, scales + if kpts_recarray.shape[0] < n_keypoints: + return kpts_recarray else: best_indices = harris_measure.argsort()[::-1][:n_keypoints] - return (keypoints[best_indices], orientations[best_indices], - scales[best_indices]) + return kpts_recarray[best_indices] -def descriptor_orb(image, keypoints, orientations, scales, - downscale=1.2, n_scales=8): +def descriptor_orb(image, kpts_recarray, downscale=1.2, n_scales=8): """Compute rBRIEF descriptors of input keypoints. Parameters ---------- image : 2D ndarray Input grayscale image. - keypoints : (N, 2) ndarray + kpts_recarray : (N, 2) ndarray Array of N input keypoint locations in the format (row, col). - orientations : (N,) ndarray - The orientations of the corresponding N keypoints. - scales : (N,) ndarray - The scales of the corresponding N keypoints. downscale : float Downscale factor for the image pyramid. Should be the same as that used in ``keypoints_orb``. @@ -194,33 +192,31 @@ def descriptor_orb(image, keypoints, orientations, scales, pyramid = list(pyramid_gaussian(image, n_scales - 1, downscale)) descriptors_list = [] - filtered_keypoints_list = [] - descriptors = np.empty((0, 256), dtype=np.bool) + kpts_recarray_list = [] for scale in range(n_scales): curr_image = np.ascontiguousarray(pyramid[scale]) - curr_scale_mask = scales == scale + curr_scale_mask = (np.log(kpts_recarray.octave) / + np.log(downscale)).astype(np.intp) == scale if np.sum(curr_scale_mask) > 0: - curr_scale_kpts = keypoints[curr_scale_mask] / (downscale ** scale) - curr_scale_kpts = np.round(curr_scale_kpts).astype(np.intp) - curr_scale_orientation = orientations[curr_scale_mask] - - border_mask = _mask_border_keypoints(curr_image, curr_scale_kpts, + curr_kpts_recarray = kpts_recarray[curr_scale_mask] + curr_scale_kpts = np.squeeze(np.dstack((curr_kpts_recarray.row / curr_kpts_recarray.octave, + curr_kpts_recarray.col / curr_kpts_recarray.octave))) + border_mask = _mask_border_keypoints(curr_image, + curr_scale_kpts, dist=16) - curr_scale_kpts = curr_scale_kpts[border_mask] - curr_scale_orientation = curr_scale_orientation[border_mask] + curr_kpts_recarray = curr_kpts_recarray[border_mask] - curr_scale_kpts = np.ascontiguousarray(curr_scale_kpts) - curr_scale_orientation = np.ascontiguousarray(curr_scale_orientation) + curr_scale_kpts = np.ascontiguousarray(curr_scale_kpts[border_mask].astype(np.intp)) + curr_scale_orientation = np.ascontiguousarray(curr_kpts_recarray.orientation) curr_scale_descriptors = _orb_loop(curr_image, curr_scale_kpts, curr_scale_orientation) descriptors_list.append(curr_scale_descriptors) - filtered_keypoints_list.append(curr_scale_kpts * downscale ** scale) + kpts_recarray_list.append(curr_kpts_recarray) descriptors = np.vstack(descriptors_list).view(np.bool) - filtered_keypoints = np.vstack(filtered_keypoints_list) - filtered_keypoints = np.round(filtered_keypoints).astype(np.intp) - return descriptors, filtered_keypoints + filtered_kpts_recarray = np.hstack(kpts_recarray_list) + return descriptors, filtered_kpts_recarray diff --git a/skimage/feature/util.py b/skimage/feature/util.py index 9bbbaef5..18325cc8 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -3,6 +3,20 @@ import numpy as np from skimage.util import img_as_float +def _create_keypoint_recarray(row, col, octave=None, orientation=None, + response=None): + keypoints = np.zeros(row.shape[0], + dtype=[('row', np.double), ('col', np.double), + ('octave', np.double), ('orientation', np.double), + ('response', np.double)]) + keypoints['row'] = row + keypoints['col'] = col + keypoints['octave'] = octave + keypoints['orientation'] = orientation + keypoints['response'] = response + return keypoints.view(np.recarray) + + def _prepare_grayscale_input_2D(image): image = np.squeeze(image) if image.ndim != 2: From 38bdd3e52377fc38a2e879c030a984397dba954a Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Fri, 1 Nov 2013 01:14:55 +0530 Subject: [PATCH 212/577] Made recarray changes in docstrings and tests --- skimage/feature/orb.py | 96 ++++++++++++++----------------- skimage/feature/tests/test_orb.py | 91 ++++++++++++++--------------- 2 files changed, 85 insertions(+), 102 deletions(-) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 9b394dd9..55058a8e 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -57,12 +57,8 @@ def keypoints_orb(image, n_keypoints=500, fast_n=9, fast_threshold=0.08, Returns ------- - keypoints : (N, 2) ndarray - The oFAST keypoints. - orientations : (N,) ndarray - The orientations of the N extracted keypoints. - scales : (N,) ndarray - The scales of the N extracted keypoints. + keypoints : record array + Record array with fields row, col, octave, orientation, response. References ---------- @@ -75,25 +71,20 @@ def keypoints_orb(image, n_keypoints=500, fast_n=9, fast_threshold=0.08, >>> from skimage.feature import keypoints_orb, descriptor_orb >>> square = np.zeros((50, 50)) >>> square[20:30, 20:30] = 1 - >>> keypoints, orientations, scales = keypoints_orb(square, n_keypoints=8, n_scales=2) + >>> keypoints = keypoints_orb(square, n_keypoints=8, n_scales=2) >>> keypoints.shape - (8, 2) - >>> keypoints - array([[29, 29], - [29, 20], - [20, 29], - [20, 20], - [15, 15], - [15, 20], - [20, 15], - [20, 20]]) - >>> orientations - array([-2.35619449, -0.78539816, 2.35619449, 0.78539816, 0.78539816, - 2.35619449, -0.78539816, -2.35619449]) - >>> np.rad2deg(orientations) - array([-135., -45., 135., 45., 45., 135., -45., -135.]) - >>> scales - array([0, 0, 0, 0, 1, 1, 1, 1]) + (8,) + >>> keypoints.row + array([ 29. , 29. , 20. , 20. , 20.4, 20.4, 28.8, 28.8]) + >>> keypoints.col + array([ 29. , 20. , 29. , 20. , 28.8, 20.4, 28.8, 20.4]) + >>> keypoints.octave + array([ 1. , 1. , 1. , 1. , 1.2, 1.2, 1.2, 1.2]) + >>> np.rad2deg(keypoints.orientation) + array([-135., -45., 135., 45., 135., 45., -135., -45.]) + >>> keypoints.response + array([ 21.4776577 , 21.4776577 , 21.4776577 , 21.4776577 , + 14.03845308, 14.03845308, 14.03845308, 14.03845308]) """ @@ -121,30 +112,31 @@ def keypoints_orb(image, n_keypoints=500, fast_n=9, fast_threshold=0.08, harris_response_list.append(harris_response[corners[:, 0], corners[:, 1]]) - keypoints = np.vstack(keypoints_list) + keypoints_array = np.vstack(keypoints_list) orientations = np.hstack(orientations_list) octaves = downscale ** np.hstack(scales_list) harris_measure = np.hstack(harris_response_list) - kpts_recarray = _create_keypoint_recarray(keypoints[:, 0], keypoints[:, 1], - octaves, orientations, - harris_measure) + keypoints = _create_keypoint_recarray(keypoints_array[:, 0], + keypoints_array[:, 1], + octaves, orientations, + harris_measure) - if kpts_recarray.shape[0] < n_keypoints: - return kpts_recarray + if keypoints.shape[0] < n_keypoints: + return keypoints else: best_indices = harris_measure.argsort()[::-1][:n_keypoints] - return kpts_recarray[best_indices] + return keypoints[best_indices] -def descriptor_orb(image, kpts_recarray, downscale=1.2, n_scales=8): +def descriptor_orb(image, keypoints, downscale=1.2, n_scales=8): """Compute rBRIEF descriptors of input keypoints. Parameters ---------- image : 2D ndarray Input grayscale image. - kpts_recarray : (N, 2) ndarray - Array of N input keypoint locations in the format (row, col). + keypoints : record array + Record array with fields row, col, octave, orientation, response. downscale : float Downscale factor for the image pyramid. Should be the same as that used in ``keypoints_orb``. @@ -159,8 +151,9 @@ def descriptor_orb(image, kpts_recarray, downscale=1.2, n_scales=8): filtering out those near the image border. Size of each descriptor is 32 bytes or 256 bits. filtered_keypoints : (P, 2) ndarray - Location i.e. (row, col) of P keypoints after removing out those that - are near border. + Record array with fields row, col, octave, orientation, response for + P keypoints obtained after removing out those that are near the + border. References ---------- @@ -174,15 +167,12 @@ def descriptor_orb(image, kpts_recarray, downscale=1.2, n_scales=8): >>> from skimage.feature import keypoints_orb, descriptor_orb >>> square = np.zeros((50, 50)) >>> square[20:30, 20:30] = 1 - >>> keypoints, orientations, scales = keypoints_orb(square, n_keypoints=8, - ... n_scales=2) + >>> keypoints = keypoints_orb(square, n_keypoints=8, n_scales=2) >>> keypoints.shape - (8, 2) - >>> descriptors, filtered_keypoints = descriptor_orb(square, keypoints, - ... orientations, scales, - ... n_scales=2) + (8,) + >>> descriptors, filtered_keypoints = descriptor_orb(square, keypoints, n_scales=2) >>> filtered_keypoints.shape - (8, 2) + (8,) >>> descriptors.shape (8, 256) @@ -192,31 +182,31 @@ def descriptor_orb(image, kpts_recarray, downscale=1.2, n_scales=8): pyramid = list(pyramid_gaussian(image, n_scales - 1, downscale)) descriptors_list = [] - kpts_recarray_list = [] + keypoints_list = [] for scale in range(n_scales): curr_image = np.ascontiguousarray(pyramid[scale]) - curr_scale_mask = (np.log(kpts_recarray.octave) / + curr_scale_mask = (np.log(keypoints.octave) / np.log(downscale)).astype(np.intp) == scale if np.sum(curr_scale_mask) > 0: - curr_kpts_recarray = kpts_recarray[curr_scale_mask] - curr_scale_kpts = np.squeeze(np.dstack((curr_kpts_recarray.row / curr_kpts_recarray.octave, - curr_kpts_recarray.col / curr_kpts_recarray.octave))) + curr_keypoints = keypoints[curr_scale_mask] + curr_scale_kpts = np.squeeze(np.dstack((curr_keypoints.row / curr_keypoints.octave, + curr_keypoints.col / curr_keypoints.octave))) border_mask = _mask_border_keypoints(curr_image, curr_scale_kpts, dist=16) - curr_kpts_recarray = curr_kpts_recarray[border_mask] + curr_keypoints = curr_keypoints[border_mask] curr_scale_kpts = np.ascontiguousarray(curr_scale_kpts[border_mask].astype(np.intp)) - curr_scale_orientation = np.ascontiguousarray(curr_kpts_recarray.orientation) + curr_scale_orientation = np.ascontiguousarray(curr_keypoints.orientation) curr_scale_descriptors = _orb_loop(curr_image, curr_scale_kpts, curr_scale_orientation) descriptors_list.append(curr_scale_descriptors) - kpts_recarray_list.append(curr_kpts_recarray) + keypoints_list.append(curr_keypoints) descriptors = np.vstack(descriptors_list).view(np.bool) - filtered_kpts_recarray = np.hstack(kpts_recarray_list) - return descriptors, filtered_kpts_recarray + filtered_keypoints = np.hstack(keypoints_list) + return descriptors, filtered_keypoints.view(np.recarray) diff --git a/skimage/feature/tests/test_orb.py b/skimage/feature/tests/test_orb.py index a577cf22..1333b6b1 100644 --- a/skimage/feature/tests/test_orb.py +++ b/skimage/feature/tests/test_orb.py @@ -7,73 +7,66 @@ from skimage.color import rgb2gray def test_keypoints_orb_desired_no_of_keypoints(): img = rgb2gray(lena()) - keypoints, orientations, scales = keypoints_orb(img, n_keypoints=10, - fast_n=12, - fast_threshold=0.20) - exp_keypoints = np.array([[435, 180], - [436, 180], - [376, 156], - [455, 176], - [435, 180], - [269, 111], - [376, 156], - [311, 173], - [413, 70], - [311, 173]]) - exp_scales = np.array([0, 1, 0, 0, 2, 0, 1, 1, 0, 3]) + keypoints = keypoints_orb(img, n_keypoints=10, fast_n=12, + fast_threshold=0.20) + exp_row = np.array([ 435. , 435.6 , 376. , 455. , 434.88, 269. , + 375.6 , 310.8 , 413. , 311.04]) + exp_col = np.array([ 180. , 180. , 156. , 176. , 180. , 111. , + 156. , 172.8, 70. , 172.8]) + + exp_octaves = np.array([ 1. , 1.2 , 1. , 1. , 1.44 , 1. , + 1.2 , 1.2 , 1. , 1.728]) + exp_orientations = np.array([-175.64733392, -167.94842949, -148.98350192, -142.03599837, -176.08535837, -53.08162354, -150.89208271, 97.7693776 , -173.4479964 , 38.66312042]) - assert_array_equal(exp_keypoints, keypoints) - assert_array_equal(exp_scales, scales) - assert_almost_equal(exp_orientations, np.rad2deg(orientations)) + exp_response = np.array([ 0.96770745, 0.81027306, 0.72376257, + 0.5626413 , 0.5097993 , 0.44351774, + 0.39154173, 0.39084861, 0.39063076, + 0.37602487]) + assert_almost_equal(exp_row, keypoints.row) + assert_almost_equal(exp_col, keypoints.col) + assert_almost_equal(exp_octaves, keypoints.octave) + assert_almost_equal(exp_response, keypoints.response) + assert_almost_equal(exp_orientations, np.rad2deg(keypoints.orientation)) def test_keypoints_orb_less_than_desired_no_of_keypoints(): img = rgb2gray(lena()) - keypoints, orientations, scales = keypoints_orb(img, n_keypoints=15, + keypoints = keypoints_orb(img, n_keypoints=15, fast_n=12, fast_threshold=0.33, downscale=2, n_scales=2) - exp_keypoints = np.array([[ 67, 157], - [247, 146], - [269, 111], - [413, 70], - [435, 180], - [230, 136], - [264, 336], - [330, 148], - [372, 156]]) - exp_scales = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1]) + exp_row = np.array([ 67., 247., 269., 413., 435., 230., 264., + 330., 372.]) + exp_col = np.array([ 157., 146., 111., 70., 180., 136., 336., + 148., 156.]) + + exp_octaves = np.array([ 1., 1., 1., 1., 1., 2., 2., 2., 2.]) + exp_orientations = np.array([-105.76503839, -96.28973044, -53.08162354, -173.4479964 , -175.64733392, -106.07927215, -163.40016243, 75.80865813, -154.73195911]) - assert_array_equal(exp_keypoints, keypoints) - assert_array_equal(exp_scales, scales) - assert_almost_equal(exp_orientations, np.rad2deg(orientations)) + exp_response = np.array([ 0.13197835, 0.24931321, 0.44351774, + 0.39063076, 0.96770745, 0.04935129, + 0.21431068, 0.15826555, 0.42403573]) + + assert_almost_equal(exp_row, keypoints.row) + assert_almost_equal(exp_col, keypoints.col) + assert_almost_equal(exp_octaves, keypoints.octave) + assert_almost_equal(exp_response, keypoints.response) + assert_almost_equal(exp_orientations, np.rad2deg(keypoints.orientation)) def test_descriptor_orb(): img = rgb2gray(lena()) - keypoints, orientations, scales = keypoints_orb(img, n_keypoints=10, - fast_n=12, - fast_threshold=0.20) - descriptors, filtered_keypoints = descriptor_orb(img, keypoints, orientations, scales) - - exp_filtered_keypoints = np.array([[435, 180], - [376, 156], - [455, 176], - [269, 111], - [413, 70], - [436, 180], - [376, 156], - [311, 173], - [435, 180], - [311, 173]]) + keypoints = keypoints_orb(img, n_keypoints=10, fast_n=12, + fast_threshold=0.20) + descriptors, filtered_keypoints = descriptor_orb(img, keypoints) descriptors_120_129 = np.array([[ True, False, False, True, False, False, False, False, False, False], - [ True, True, False, False, True, False, False, True, False, True], + [ True, True, False, False, True, False, False, True, False, True], [False, True, True, False, True, False, True, True, True, True], [False, False, False, True, True, False, True, False, True, False], [False, True, True, True, True, False, True, True, True, False], @@ -81,10 +74,10 @@ def test_descriptor_orb(): [ True, False, True, False, True, False, True, True, False, True], [ True, True, True, True, True, True, False, True, True, True], [ True, True, True, False, True, False, True, True, True, False], - [ True, True, False, True, True, True, False, True, False, True]], + [ True, False, False, False, False, False, True, True, True, False]], dtype=bool) - assert_array_equal(exp_filtered_keypoints, filtered_keypoints) + assert_array_equal(descriptors_120_129, descriptors[:, 120:130]) From 1a2efa7e377dea8adc3773670aaec50db22b63e3 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Sun, 3 Nov 2013 22:41:58 +0530 Subject: [PATCH 213/577] Extending recarray changes to BRIEF --- skimage/feature/__init__.py | 3 ++- skimage/feature/_brief.py | 20 ++++++++++++-------- skimage/feature/orb.py | 10 +++++----- skimage/feature/tests/_test_brief.py | 18 +++++++++++++----- skimage/feature/util.py | 2 +- 5 files changed, 33 insertions(+), 20 deletions(-) diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index 0487f7b6..50217f53 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -11,7 +11,7 @@ from .corner_cy import corner_moravec, corner_orientations from .template import match_template from ._brief import descriptor_brief from .match import match_binary_descriptors -from .util import pairwise_hamming_distance +from .util import pairwise_hamming_distance, create_keypoint_recarray from .censure import keypoints_censure from .orb import keypoints_orb, descriptor_orb @@ -31,6 +31,7 @@ __all__ = ['daisy', 'match_template', 'descriptor_brief', 'pairwise_hamming_distance', + 'create_keypoint_recarray', 'match_binary_descriptors', 'keypoints_censure', 'corner_fast', diff --git a/skimage/feature/_brief.py b/skimage/feature/_brief.py index 94c92f04..b7ecfb5e 100644 --- a/skimage/feature/_brief.py +++ b/skimage/feature/_brief.py @@ -17,8 +17,9 @@ def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', ---------- image : 2D ndarray Input image. - keypoints : (P, 2) ndarray - Array of keypoint locations in the format (row, col). + keypoints : record array with P rows + Record array with fields row, col, octave, orientation, response. + Octave, orientation and response can be None. descriptor_size : int Size of BRIEF descriptor about each keypoint. Sizes 128, 256 and 512 preferred by the authors. Default is 256. @@ -141,15 +142,18 @@ def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', image = np.ascontiguousarray(image) - keypoints = np.array(keypoints + 0.5, dtype=np.intp, order='C') + keypoints_loc = np.array(np.squeeze(np.dstack((keypoints.row, keypoints.col))) + + 0.5, dtype=np.intp, order='C') # Removing keypoints that are within (patch_size / 2) distance from the # image border - keypoints = keypoints[_mask_border_keypoints(image, keypoints, patch_size // 2)] - keypoints = np.ascontiguousarray(keypoints) + border_mask = _mask_border_keypoints(image, keypoints_loc, patch_size // 2) + keypoints = keypoints[border_mask] + keypoints_loc = keypoints_loc[border_mask] + keypoints_loc = np.ascontiguousarray(keypoints_loc) - descriptors = np.zeros((keypoints.shape[0], descriptor_size), dtype=bool, - order='C') + descriptors = np.zeros((keypoints_loc.shape[0], descriptor_size), + dtype=bool, order='C') # Sampling pairs of decision pixels in patch_size x patch_size window if mode == 'normal': @@ -175,6 +179,6 @@ def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', pos1 = np.ascontiguousarray(pos1) pos2 = np.ascontiguousarray(pos2) - _brief_loop(image, descriptors.view(np.uint8), keypoints, pos1, pos2) + _brief_loop(image, descriptors.view(np.uint8), keypoints_loc, pos1, pos2) return descriptors, keypoints diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 55058a8e..fcfe4d7d 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -2,7 +2,7 @@ import numpy as np from skimage.feature.util import (_mask_border_keypoints, _prepare_grayscale_input_2D, - _create_keypoint_recarray) + create_keypoint_recarray) from skimage.feature import (corner_fast, corner_orientations, corner_peaks, corner_harris) @@ -116,10 +116,10 @@ def keypoints_orb(image, n_keypoints=500, fast_n=9, fast_threshold=0.08, orientations = np.hstack(orientations_list) octaves = downscale ** np.hstack(scales_list) harris_measure = np.hstack(harris_response_list) - keypoints = _create_keypoint_recarray(keypoints_array[:, 0], - keypoints_array[:, 1], - octaves, orientations, - harris_measure) + keypoints = create_keypoint_recarray(keypoints_array[:, 0], + keypoints_array[:, 1], + octaves, orientations, + harris_measure) if keypoints.shape[0] < n_keypoints: return keypoints diff --git a/skimage/feature/tests/_test_brief.py b/skimage/feature/tests/_test_brief.py index 7983b023..40a0ac38 100644 --- a/skimage/feature/tests/_test_brief.py +++ b/skimage/feature/tests/_test_brief.py @@ -3,14 +3,17 @@ from numpy.testing import assert_array_equal, assert_raises from skimage import data from skimage import transform as tf from skimage.color import rgb2gray -from skimage.feature import (descriptor_brief, match_binary_descriptors, corner_peaks, - corner_harris) +from skimage.feature import (descriptor_brief, match_binary_descriptors, + corner_peaks, corner_harris, + create_keypoint_recarray) def test_descriptor_brief_color_image_unsupported_error(): """Brief descriptors can be evaluated on gray-scale images only.""" img = np.zeros((20, 20, 3)) - keypoints = [[7, 5], [11, 13]] + keypoints_loc = np.asarray([[7, 5], [11, 13]]) + keypoints = create_keypoint_recarray(keypoints_loc[:, 0], + keypoints_loc[:, 1]) assert_raises(ValueError, descriptor_brief, img, keypoints) @@ -18,7 +21,10 @@ def test_descriptor_brief_normal_mode(): """Verify the computed BRIEF descriptors with expected for normal mode.""" img = data.lena() img = rgb2gray(img) - keypoints = corner_peaks(corner_harris(img), min_distance=5) + keypoints_loc = corner_peaks(corner_harris(img), min_distance=5) + keypoints = create_keypoint_recarray(keypoints_loc[:, 0], + keypoints_loc[:, 1]) + descriptors, keypoints = descriptor_brief(img, keypoints[:8], descriptor_size=8) @@ -38,7 +44,9 @@ def test_descriptor_brief_uniform_mode(): """Verify the computed BRIEF descriptors with expected for uniform mode.""" img = data.lena() img = rgb2gray(img) - keypoints = corner_peaks(corner_harris(img), min_distance=5) + keypoints_loc = corner_peaks(corner_harris(img), min_distance=5) + keypoints = create_keypoint_recarray(keypoints_loc[:, 0], + keypoints_loc[:, 1]) descriptors, keypoints = descriptor_brief(img, keypoints[:8], descriptor_size=8, mode='uniform') diff --git a/skimage/feature/util.py b/skimage/feature/util.py index 18325cc8..a0942d79 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -3,7 +3,7 @@ import numpy as np from skimage.util import img_as_float -def _create_keypoint_recarray(row, col, octave=None, orientation=None, +def create_keypoint_recarray(row, col, octave=None, orientation=None, response=None): keypoints = np.zeros(row.shape[0], dtype=[('row', np.double), ('col', np.double), From 0d79b3963e0ddeb09be7e11754d8459c7121bd68 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Tue, 12 Nov 2013 03:08:09 +0530 Subject: [PATCH 214/577] Incorporating recarray changes to match.py --- skimage/feature/match.py | 20 ++++++++++-------- skimage/feature/tests/test_match.py | 32 ++++++++++++++++++++--------- 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/skimage/feature/match.py b/skimage/feature/match.py index d9ae886a..405fb86b 100644 --- a/skimage/feature/match.py +++ b/skimage/feature/match.py @@ -11,12 +11,14 @@ def match_binary_descriptors(keypoints1, descriptors1, keypoints2, Parameters ---------- - keypoints1 : (M, 2) ndarray - M Keypoints from the first image described using skimage.feature.brief + keypoints1 : record array with M rows + Record array with fields row, col, octave, orientation, response. + Octave, orientation and response can be None. descriptors1 : (M, P) ndarray Binary descriptors of size P about M keypoints in the first image. - keypoints2 : (N, 2) ndarray - N Keypoints from the second image described using skimage.feature.brief + keypoints2 : record array with N rows + Record array with fields row, col, octave, orientation, response. + Octave, orientation and response can be None. descriptors2 : (N, P) ndarray Binary descriptors of size P about N keypoints in the second image. threshold : float in range [0, 1] @@ -49,6 +51,8 @@ def match_binary_descriptors(keypoints1, descriptors1, keypoints2, # Get hamming distances between keypoints1 and keypoints2 distance = pairwise_hamming_distance(descriptors1, descriptors2) + kp1 = np.squeeze(np.dstack((keypoints1.row, keypoints1.col))) + kp2 = np.squeeze(np.dstack((keypoints2.row, keypoints2.col))) if cross_check: matched_keypoints1_index = np.argmin(distance, axis=1) @@ -62,16 +66,16 @@ def match_binary_descriptors(keypoints1, descriptors1, keypoints2, dtype=np.intp) mask1 = matched_index[:, 0] mask2 = matched_index[:, 1] - matches[:, 0, :] = keypoints1[mask1] - matches[:, 1, :] = keypoints2[mask2] + matches[:, 0, :] = kp1[mask1] + matches[:, 1, :] = kp2[mask2] else: temp = distance > threshold row_check = np.any(~temp, axis=1) - matched_keypoints2 = keypoints2[np.argmin(distance, axis=1)] + matched_keypoints2 = kp2[np.argmin(distance, axis=1)] matches = np.zeros((np.sum(row_check), 2, 2), dtype=np.intp) - matches[:, 0, :] = keypoints1[row_check] + matches[:, 0, :] = kp1[row_check] matches[:, 1, :] = matched_keypoints2[row_check] mask1 = np.where(row_check == True)[0] mask2 = np.argmin(distance, axis=1)[row_check] diff --git a/skimage/feature/tests/test_match.py b/skimage/feature/tests/test_match.py index 1e1435e3..9bb2c958 100644 --- a/skimage/feature/tests/test_match.py +++ b/skimage/feature/tests/test_match.py @@ -4,7 +4,8 @@ from skimage import data from skimage import transform as tf from skimage.color import rgb2gray from skimage.feature import (descriptor_brief, match_binary_descriptors, - corner_peaks, corner_harris) + corner_peaks, corner_harris, + create_keypoint_recarray) def test_match_binary_descriptors_unequal_descriptor_keypoints_error(): @@ -12,26 +13,30 @@ def test_match_binary_descriptors_unequal_descriptor_keypoints_error(): kp1 = np.array([[40, 50], [60, 40], [30, 70]]) + keypoints1 = create_keypoint_recarray(kp1[:, 0], kp1[:, 1]) des1 = np.array([[True, True, False, True], [False, True, False, True]]) kp2 = np.array([[60, 50], [50, 80]]) + keypoints2 = create_keypoint_recarray(kp2[:, 0], kp2[:, 1]) des2 = np.array([[True, False, False, True], [False, True, True, True]]) - assert_raises(ValueError, match_binary_descriptors, kp1, des1, kp2, des2) + assert_raises(ValueError, match_binary_descriptors, keypoints1, des1, keypoints2, des2) def test_match_binary_descriptors_unequal_descriptor_sizes_error(): """Sizes of descriptors of keypoints to be matched should be equal.""" kp1 = np.array([[40, 50], [60, 40]]) + keypoints1 = create_keypoint_recarray(kp1[:, 0], kp1[:, 1]) des1 = np.array([[True, True, False, True], [False, True, False, True]]) kp2 = np.array([[60, 50], [50, 80]]) + keypoints2 = create_keypoint_recarray(kp2[:, 0], kp2[:, 1]) des2 = np.array([[True, False, False, True, False], [False, True, True, True, False]]) - assert_raises(ValueError, match_binary_descriptors, kp1, des1, kp2, des2) + assert_raises(ValueError, match_binary_descriptors, keypoints1, des1, keypoints2, des2) def test_match_binary_descriptors_lena_rotation_crosscheck_false(): @@ -43,10 +48,13 @@ def test_match_binary_descriptors_lena_rotation_crosscheck_false(): tform = tf.SimilarityTransform(scale=1, rotation=0.15, translation=(0, 0)) rotated_img = tf.warp(img, tform) - keypoints1 = corner_peaks(corner_harris(img), min_distance=5) - descriptors1, keypoints1 = descriptor_brief(img, keypoints1, descriptor_size=512) + kp1 = corner_peaks(corner_harris(img), min_distance=5) + keypoints1 = create_keypoint_recarray(kp1[:, 0], kp1[:, 1]) + descriptors1, keypoints1 = descriptor_brief(img, keypoints1, + descriptor_size=512) - keypoints2 = corner_peaks(corner_harris(rotated_img), min_distance=5) + kp2 = corner_peaks(corner_harris(rotated_img), min_distance=5) + keypoints2 = create_keypoint_recarray(kp2[:, 0], kp2[:, 1]) descriptors2, keypoints2 = descriptor_brief(rotated_img, keypoints2, descriptor_size=512) @@ -57,8 +65,10 @@ def test_match_binary_descriptors_lena_rotation_crosscheck_false(): threshold=0.13, cross_check=False) - expected_mask1 = np.array([11, 12, 16, 20, 24, 26, 27, 29, 35, 39, 40, 42, 45]) - expected_mask2 = np.array([ 1, 3, 0, 4, 6, 7, 8, 9, 10, 10, 11, 12, 13]) + expected_mask1 = np.array([11, 12, 16, 20, 24, 26, 27, 29, 35, 39, 40, + 42, 45]) + expected_mask2 = np.array([ 1, 3, 0, 4, 6, 7, 8, 9, 10, 10, 11, + 12, 13]) expected = np.array([[[245, 141], [221, 176]], @@ -112,10 +122,12 @@ def test_match_binary_descriptors_lena_rotation_crosscheck_true(): tform = tf.SimilarityTransform(scale=1, rotation=0.15, translation=(0, 0)) rotated_img = tf.warp(img, tform) - keypoints1 = corner_peaks(corner_harris(img), min_distance=5) + kp1 = corner_peaks(corner_harris(img), min_distance=5) + keypoints1 = create_keypoint_recarray(kp1[:, 0], kp1[:, 1]) descriptors1, keypoints1 = descriptor_brief(img, keypoints1, descriptor_size=512) - keypoints2 = corner_peaks(corner_harris(rotated_img), min_distance=5) + kp2 = corner_peaks(corner_harris(rotated_img), min_distance=5) + keypoints2 = create_keypoint_recarray(kp2[:, 0], kp2[:, 1]) descriptors2, keypoints2 = descriptor_brief(rotated_img, keypoints2, descriptor_size=512) From 172c5ae1ec63e15016c8ce1cdf9be35cff4a7fd4 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Thu, 14 Nov 2013 22:48:22 +0530 Subject: [PATCH 215/577] Made recarray changes in the brief docstring --- skimage/feature/_brief.py | 61 +++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 34 deletions(-) diff --git a/skimage/feature/_brief.py b/skimage/feature/_brief.py index b7ecfb5e..286a5357 100644 --- a/skimage/feature/_brief.py +++ b/skimage/feature/_brief.py @@ -46,9 +46,9 @@ def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', keypoints after filtering out border keypoints with value at an index (i, j) either being True or False representing the outcome of Intensity comparison about ith keypoint on jth decision pixel-pair. - keypoints : (Q, 2) ndarray - Location i.e. (row, col) of keypoints after removing out those that - are near border. + keypoints : record array with Q rows + Record array with fields row, col, octave, orientation, response. + Octave, orientation and response can be None. References ---------- @@ -58,9 +58,10 @@ def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', Examples -------- - >> import numpy as np >> from skimage.feature.corner import corner_peaks, corner_harris - >> from skimage.feature import pairwise_hamming_distance, descriptor_brief, match_binary_descriptors + >> from skimage.feature import (pairwise_hamming_distance, descriptor_brief, + ... match_binary_descriptors, + ... create_keypoint_recarray) >> square1 = np.zeros([8, 8], dtype=np.int32) >> square1[2:6, 2:6] = 1 >> square1 @@ -73,17 +74,13 @@ def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0]], dtype=int32) >> keypoints1 = corner_peaks(corner_harris(square1), min_distance=1) - >> keypoints1 - array([[2, 2], - [2, 5], - [5, 2], - [5, 5]]) + >> keypoints1 = create_keypoint_recarray(keypoints1[:, 0], keypoints1[:, 1]) >> descriptors1, keypoints1 = descriptor_brief(square1, keypoints1, patch_size=5) >> keypoints1 - array([[2, 2], - [2, 5], - [5, 2], - [5, 5]]) + rec.array([(2.0, 2.0, nan, nan, nan), (2.0, 5.0, nan, nan, nan), + (5.0, 2.0, nan, nan, nan), (5.0, 5.0, nan, nan, nan)], + dtype=[('row', '> square2 = np.zeros([9, 9], dtype=np.int32) >> square2[2:7, 2:7] = 1 >> square2 @@ -97,38 +94,34 @@ def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]], dtype=int32) >> keypoints2 = corner_peaks(corner_harris(square2), min_distance=1) + >> keypoints2 = create_keypoint_recarray(keypoints2[:, 0], keypoints2[:, 1]) >> keypoints2 - array([[2, 2], - [2, 6], - [6, 2], - [6, 6]]) + rec.array([(2.0, 2.0, nan, nan, nan), (2.0, 6.0, nan, nan, nan), + (6.0, 2.0, nan, nan, nan), (6.0, 6.0, nan, nan, nan)], + dtype=[('row', '> descriptors2, keypoints2 = descriptor_brief(square2, keypoints2, patch_size=5) - >> keypoints2 - array([[2, 2], - [2, 6], - [6, 2], - [6, 6]]) >> pairwise_hamming_distance(descriptors1, descriptors2) array([[ 0.03125 , 0.3203125, 0.3671875, 0.6171875], [ 0.3203125, 0.03125 , 0.640625 , 0.375 ], [ 0.375 , 0.6328125, 0.0390625, 0.328125 ], [ 0.625 , 0.3671875, 0.34375 , 0.0234375]]) >> matched_kpts, mask1, mask2 = match_binary_descriptors(keypoints1, - descriptors1, - keypoints2, - descriptors2) + ... descriptors1, + ... keypoints2, + ... descriptors2) >> matched_kpts - array([[[ 2, 2], - [ 2, 2]], + array([[[2, 2], + [2, 2]], - [[ 2, 5], - [ 2, 6]], + [[2, 5], + [2, 6]], - [[ 5, 2], - [ 6, 2]], + [[5, 2], + [6, 2]], - [[ 5, 5], - [ 6, 6]]]) + [[5, 5], + [6, 6]]]) """ From a9106ab9d379212e32d6d416003fa9ff3d230043 Mon Sep 17 00:00:00 2001 From: Ankit Agrawal Date: Fri, 15 Nov 2013 12:42:15 +0530 Subject: [PATCH 216/577] Recarray changes made in example --- doc/examples/plot_orb_matching.py | 18 ++++++++---------- skimage/feature/orb.py | 2 +- skimage/feature/tests/test_orb.py | 10 +++++----- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/doc/examples/plot_orb_matching.py b/doc/examples/plot_orb_matching.py index 660aadae..0818b76c 100644 --- a/doc/examples/plot_orb_matching.py +++ b/doc/examples/plot_orb_matching.py @@ -23,23 +23,21 @@ img = rgb2gray(img_color) transformed_img = rgb2gray(transformed_img_color) # Extracting oFAST keypoints and computing their rBRIEF descriptors -keypoints1, orientations1, scales1 = keypoints_orb(img, n_keypoints=500) +keypoints1 = keypoints_orb(img, n_keypoints=500) keypoints1.shape -descriptors1, keypoints1 = descriptor_orb(img, keypoints1, orientations1, - scales1) +descriptors1, keypoints1 = descriptor_orb(img, keypoints1) keypoints1.shape descriptors1.shape -keypoints2, orientations2, scales2 = keypoints_orb(transformed_img, +keypoints2 = keypoints_orb(transformed_img, n_keypoints=500) keypoints2.shape -descriptors2, keypoints2 = descriptor_orb(transformed_img, keypoints2, - orientations2, scales2) +descriptors2, keypoints2 = descriptor_orb(transformed_img, keypoints2) keypoints2.shape descriptors2.shape #Initializing parameters for Descriptor matching -match_threshold = 0.25 +match_threshold = 0.3 match_cross_check = True pairwise_hamming_distance(descriptors1, descriptors2) @@ -55,8 +53,8 @@ matched_keypoints.shape # Plotting the matched correspondences in both the images using matplotlib src = matched_keypoints[:, 0, :] dst = matched_keypoints[:, 1, :] -src_scale = 10 * (scales1[mask1] + 1) ** 1.5 -dst_scale = 10 * (scales2[mask2] + 1) ** 1.5 +src_scale = 10 * (keypoints1.octave[mask1] + 1) ** 1.5 +dst_scale = 10 * (keypoints2.octave[mask2] + 1) ** 1.5 img_combined = np.concatenate((img_as_float(img_color), img_as_float(transformed_img_color)), axis=1) @@ -71,7 +69,7 @@ ax.axis((0, 2 * offset[1], offset[0], 0)) ax.set_title('Matched correspondences : Rotation = %f; Scale = %s; Translation = %s; threshold = %f; cross_check = %r' % (rotate, scaling, translate, match_threshold, match_cross_check)) for m in range(len(src)): - c = np.random.rand(3,1) + c = np.random.rand(3,1) ax.plot((src[m, 1], dst[m, 1] + offset[1]), (src[m, 0], dst[m, 0]), '-', color=c) ax.scatter(src[m, 1], src[m, 0], src_scale[m], facecolors='none', edgecolors=c) ax.scatter(dst[m, 1] + offset[1], dst[m, 0], dst_scale[m], facecolors='none', edgecolors=c) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index fcfe4d7d..1c712521 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -199,7 +199,7 @@ def descriptor_orb(image, keypoints, downscale=1.2, n_scales=8): curr_keypoints = curr_keypoints[border_mask] - curr_scale_kpts = np.ascontiguousarray(curr_scale_kpts[border_mask].astype(np.intp)) + curr_scale_kpts = np.ascontiguousarray(np.round(curr_scale_kpts[border_mask]).astype(np.intp)) curr_scale_orientation = np.ascontiguousarray(curr_keypoints.orientation) curr_scale_descriptors = _orb_loop(curr_image, curr_scale_kpts, curr_scale_orientation) diff --git a/skimage/feature/tests/test_orb.py b/skimage/feature/tests/test_orb.py index 1333b6b1..956ff4b4 100644 --- a/skimage/feature/tests/test_orb.py +++ b/skimage/feature/tests/test_orb.py @@ -34,10 +34,9 @@ def test_keypoints_orb_desired_no_of_keypoints(): def test_keypoints_orb_less_than_desired_no_of_keypoints(): img = rgb2gray(lena()) - keypoints = keypoints_orb(img, n_keypoints=15, - fast_n=12, - fast_threshold=0.33, - downscale=2, n_scales=2) + keypoints = keypoints_orb(img, n_keypoints=15, fast_n=12, + fast_threshold=0.33, downscale=2, n_scales=2) + exp_row = np.array([ 67., 247., 269., 413., 435., 230., 264., 330., 372.]) exp_col = np.array([ 157., 146., 111., 70., 180., 136., 336., @@ -48,6 +47,7 @@ def test_keypoints_orb_less_than_desired_no_of_keypoints(): exp_orientations = np.array([-105.76503839, -96.28973044, -53.08162354, -173.4479964 , -175.64733392, -106.07927215, -163.40016243, 75.80865813, -154.73195911]) + exp_response = np.array([ 0.13197835, 0.24931321, 0.44351774, 0.39063076, 0.96770745, 0.04935129, 0.21431068, 0.15826555, 0.42403573]) @@ -66,7 +66,7 @@ def test_descriptor_orb(): descriptors, filtered_keypoints = descriptor_orb(img, keypoints) descriptors_120_129 = np.array([[ True, False, False, True, False, False, False, False, False, False], - [ True, True, False, False, True, False, False, True, False, True], + [ True, True, False, False, True, False, False, True, False, True], [False, True, True, False, True, False, True, True, True, True], [False, False, False, True, True, False, True, False, True, False], [False, True, True, True, True, False, True, True, True, False], From 87c566c6bce75cbb31eba25f76a6686500e016fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 29 Nov 2013 20:22:47 +0100 Subject: [PATCH 217/577] Finish create_keypoint_recarray helper function --- skimage/feature/util.py | 47 +++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/skimage/feature/util.py b/skimage/feature/util.py index a0942d79..26b988ef 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -3,17 +3,42 @@ import numpy as np from skimage.util import img_as_float -def create_keypoint_recarray(row, col, octave=None, orientation=None, - response=None): - keypoints = np.zeros(row.shape[0], - dtype=[('row', np.double), ('col', np.double), - ('octave', np.double), ('orientation', np.double), - ('response', np.double)]) - keypoints['row'] = row - keypoints['col'] = col - keypoints['octave'] = octave - keypoints['orientation'] = orientation - keypoints['response'] = response +def create_keypoint_recarray(rows, cols, scales=None, orientations=None, + responses=None): + """Create keypoint array that allows field access through attributes. + + Parameters + ---------- + rows : (N, ) array + Row coordinates of keypoints. + cols : (N, ) array + Column coordinates of keypoints. + scales : (N, ) array + Scales in which the keypoints have been detected. + orientations : (N, ) array + Orientations of the keypoints. + responses : (N, ) array + Detector response (strength) of the keypoints. + + Returns + ------- + recarray : (N, 5) recarray + Array with the fields: `row`, `col`, `scale`, `orientation` and + `response`. + + """ + + dtype = [('row', np.double), + ('col', np.double), + ('scale', np.double), + ('orientation', np.double), + ('response', np.double)] + keypoints = np.zeros(row.shape[0], dtype=dtype) + keypoints['row'] = rows + keypoints['col'] = cols + keypoints['scale'] = scales + keypoints['orientation'] = orientations + keypoints['response'] = responses return keypoints.view(np.recarray) From ea1ae457f179f4599a58426f223dfdb3990b1ee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 29 Nov 2013 21:46:04 +0100 Subject: [PATCH 218/577] Improve BRIEF and various tweaks --- .../orb_descriptor_positions.txt | 0 skimage/feature/_brief.py | 96 ++++++++++--------- skimage/feature/_brief_cy.pyx | 10 +- skimage/feature/orb.py | 3 +- skimage/feature/orb_cy.pyx | 19 ++-- skimage/feature/util.py | 42 +++++--- 6 files changed, 98 insertions(+), 72 deletions(-) rename skimage/{feature => data}/orb_descriptor_positions.txt (100%) diff --git a/skimage/feature/orb_descriptor_positions.txt b/skimage/data/orb_descriptor_positions.txt similarity index 100% rename from skimage/feature/orb_descriptor_positions.txt rename to skimage/data/orb_descriptor_positions.txt diff --git a/skimage/feature/_brief.py b/skimage/feature/_brief.py index 286a5357..6f90c39e 100644 --- a/skimage/feature/_brief.py +++ b/skimage/feature/_brief.py @@ -9,51 +9,62 @@ from ._brief_cy import _brief_loop def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', patch_size=49, sample_seed=1, variance=2): - """**Experimental function**. + """Extract BRIEF binary descriptors for given keypoints in an image. - Extract BRIEF Descriptor about given keypoints for a given image. + BRIEF (Binary Robust Independent Elementary Features) is an efficient + feature point descriptor. It it is highly discriminative even when using + relatively few bits and can be computed using simple intensity difference + tests. + + For each keypoint intensity comparisons are carried out for a specifically + distributed number N of pixel-pairs resulting in a binary descriptor of + length N. The descriptor similarity can thus be computed using the Hamming + distance which leads to very good matching performance in contrast to the + L2 norm. Parameters ---------- image : 2D ndarray Input image. - keypoints : record array with P rows - Record array with fields row, col, octave, orientation, response. - Octave, orientation and response can be None. + keypoints : (P, ...) recarray + Record array as returned by `skimage.feature.create_keypoint_recarray` + with the fields: `row`, `col`, `scale`, `orientation` and `response`. descriptor_size : int - Size of BRIEF descriptor about each keypoint. Sizes 128, 256 and 512 - preferred by the authors. Default is 256. - mode : string + Size of BRIEF descriptor for each keypoint. Sizes 128, 256 and 512 + recommended by the authors. Default is 256. + mode : {'normal', 'uniform'} Probability distribution for sampling location of decision pixel-pairs - around keypoints. Default is 'normal' otherwise uniform. + around keypoints. patch_size : int Length of the two dimensional square patch sampling region around the keypoints. Default is 49. sample_seed : int - Seed for sampling the decision pixel-pairs. From a square window with - length patch_size, pixel pairs are sampled using the `mode` parameter - to build the descriptors using intensity comparison. The value of - `sample_seed` should be the same for the images to be matched while - building the descriptors. Default is 1. + Seed for the random sampling of the decision pixel-pairs. From a square + window with length patch_size, pixel pairs are sampled using the `mode` + parameter to build the descriptors using intensity comparison. The + value of `sample_seed` must be the same for the images to be matched + while building the descriptors. variance : float - Variance of the Gaussian Low Pass filter applied on the image to - alleviate noise sensitivity. Default is 2. + Variance of the Gaussian low pass filter applied to the image to + alleviate noise sensitivity, which is strongly recommended to obtain + discriminative and good descriptors. Returns ------- descriptors : (Q, `descriptor_size`) ndarray of dtype bool - 2D ndarray of binary descriptors of size `descriptor_size` about Q + 2D ndarray of binary descriptors of size `descriptor_size` for Q keypoints after filtering out border keypoints with value at an index - (i, j) either being True or False representing the outcome - of Intensity comparison about ith keypoint on jth decision pixel-pair. - keypoints : record array with Q rows - Record array with fields row, col, octave, orientation, response. - Octave, orientation and response can be None. + ``(i, j)`` either being `True` or `False` representing the outcome + of the intensity comparison for i-th keypoint on j-th decision + pixel-pair. + keypoints : (Q, ...) recarray + Record array as returned by `skimage.feature.create_keypoint_recarray` + with the fields: `row`, `col`, `scale`, `orientation` and `response`. References ---------- .. [1] Michael Calonder, Vincent Lepetit, Christoph Strecha and Pascal Fua - "BRIEF : Binary robust independent elementary features", + "BRIEF : Binary robust independent elementary features", 2010 http://cvlabwww.epfl.ch/~lepetit/papers/calonder_eccv10.pdf Examples @@ -125,32 +136,19 @@ def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', """ + if mode not in ('normal', 'uniform'): + raise ValueError("`mode` must be one of 'normal' or 'uniform'.") + np.random.seed(sample_seed) image = _prepare_grayscale_input_2D(image) - # Gaussian Low pass filtering to alleviate noise - # sensitivity + # Gaussian Low pass filtering to alleviate noise sensitivity image = gaussian_filter(image, variance) - image = np.ascontiguousarray(image) - keypoints_loc = np.array(np.squeeze(np.dstack((keypoints.row, keypoints.col))) - + 0.5, dtype=np.intp, order='C') - - # Removing keypoints that are within (patch_size / 2) distance from the - # image border - border_mask = _mask_border_keypoints(image, keypoints_loc, patch_size // 2) - keypoints = keypoints[border_mask] - keypoints_loc = keypoints_loc[border_mask] - keypoints_loc = np.ascontiguousarray(keypoints_loc) - - descriptors = np.zeros((keypoints_loc.shape[0], descriptor_size), - dtype=bool, order='C') - # Sampling pairs of decision pixels in patch_size x patch_size window if mode == 'normal': - samples = (patch_size / 5.0) * np.random.randn(descriptor_size * 8) samples = np.array(samples, dtype=np.int32) samples = samples[(samples < (patch_size // 2)) @@ -160,9 +158,7 @@ def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', pos1 = pos1.reshape(descriptor_size, 2) pos2 = samples[descriptor_size * 2:descriptor_size * 4] pos2 = pos2.reshape(descriptor_size, 2) - - else: - + elif mode == 'uniform': samples = np.random.randint(-(patch_size - 2) // 2, (patch_size // 2) + 1, (descriptor_size * 2, 2)) @@ -172,6 +168,18 @@ def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', pos1 = np.ascontiguousarray(pos1) pos2 = np.ascontiguousarray(pos2) - _brief_loop(image, descriptors.view(np.uint8), keypoints_loc, pos1, pos2) + # Removing keypoints that are within (patch_size / 2) distance from the + # image border + border_mask = _mask_border_keypoints(image.shape, keypoints.row, + keypoints.col, patch_size // 2) + + keypoints_row = keypoints.row[border_mask].astype(np.intp) + keypoints_col = keypoints.col[border_mask].astype(np.intp) + + descriptors = np.zeros((keypoints_row.shape[0], descriptor_size), + dtype=bool, order='C') + + _brief_loop(image, descriptors.view(np.uint8), + keypoints_row, keypoints_col, pos1, pos2) return descriptors, keypoints diff --git a/skimage/feature/_brief_cy.pyx b/skimage/feature/_brief_cy.pyx index c53d85fc..5c027c57 100644 --- a/skimage/feature/_brief_cy.pyx +++ b/skimage/feature/_brief_cy.pyx @@ -6,8 +6,8 @@ cimport numpy as cnp -def _brief_loop(double[:, ::1] image, char[:, ::1] descriptors, - Py_ssize_t[:, ::1] keypoints, +def _brief_loop(double[:, ::1] image, unsigned char[:, ::1] descriptors, + Py_ssize_t[::1] keypoints_row, Py_ssize_t[::1] keypoints_col, int[:, ::1] pos0, int[:, ::1] pos1): cdef Py_ssize_t k, d, kr, kc, pr0, pr1, pc0, pc1 @@ -17,8 +17,8 @@ def _brief_loop(double[:, ::1] image, char[:, ::1] descriptors, pc0 = pos0[p, 1] pr1 = pos1[p, 0] pc1 = pos1[p, 1] - for k in range(keypoints.shape[0]): - kr = keypoints[k, 0] - kc = keypoints[k, 1] + for k in range(keypoints_row.shape[0]): + kr = keypoints_row[k] + kc = keypoints_col[k] if image[kr + pr0, kc + pc0] < image[kr + pr1, kc + pc1]: descriptors[k, p] = True diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 1c712521..fb52e40e 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -201,8 +201,7 @@ def descriptor_orb(image, keypoints, downscale=1.2, n_scales=8): curr_scale_kpts = np.ascontiguousarray(np.round(curr_scale_kpts[border_mask]).astype(np.intp)) curr_scale_orientation = np.ascontiguousarray(curr_keypoints.orientation) - curr_scale_descriptors = _orb_loop(curr_image, curr_scale_kpts, - curr_scale_orientation) + curr_scale_descriptors = _orb_loop(curr_image, curr_scale) descriptors_list.append(curr_scale_descriptors) keypoints_list.append(curr_keypoints) diff --git a/skimage/feature/orb_cy.pyx b/skimage/feature/orb_cy.pyx index 939471c9..68911bb9 100644 --- a/skimage/feature/orb_cy.pyx +++ b/skimage/feature/orb_cy.pyx @@ -3,29 +3,28 @@ #cython: nonecheck=False #cython: wraparound=False -cimport numpy as cnp -import numpy as np import os +import numpy as np +from skimage import data_dir + +cimport numpy as cnp from libc.math cimport sin, cos, round - -pos = np.loadtxt(os.path.join(os.path.dirname(os.path.abspath(__file__)), - "orb_descriptor_positions.txt"), dtype=np.int8) -pos0 = np.ascontiguousarray(pos[:, :2]) -pos1 = np.ascontiguousarray(pos[:, 2:]) +POS = np.loadtxt(os.path.join(data_dir, "orb_descriptor_positions.txt"), + dtype=np.int8) def _orb_loop(double[:, ::1] image, Py_ssize_t[:, ::1] keypoints, - double[:] orientations): + double[:] orientations, pos): cdef Py_ssize_t i, d, kr, kc, pr0, pr1, pc0, pc1, spr0, spc0, spr1, spc1 cdef int[:, ::1] steered_pos0, steered_pos1 cdef double angle cdef char[:, ::1] descriptors = np.zeros((keypoints.shape[0], pos.shape[0]), dtype=np.uint8) - cdef char[:, ::1] cpos0 = pos0 - cdef char[:, ::1] cpos1 = pos1 + cdef char[:, ::1] cpos0 = pos[:, :2] + cdef char[:, ::1] cpos1 = pos[:, 2:] for i in range(descriptors.shape[0]): diff --git a/skimage/feature/util.py b/skimage/feature/util.py index 26b988ef..b2ddcb7e 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -22,7 +22,7 @@ def create_keypoint_recarray(rows, cols, scales=None, orientations=None, Returns ------- - recarray : (N, 5) recarray + recarray : (N, ...) recarray Array with the fields: `row`, `col`, `scale`, `orientation` and `response`. @@ -33,7 +33,7 @@ def create_keypoint_recarray(rows, cols, scales=None, orientations=None, ('scale', np.double), ('orientation', np.double), ('response', np.double)] - keypoints = np.zeros(row.shape[0], dtype=dtype) + keypoints = np.zeros(rows.shape[0], dtype=dtype) keypoints['row'] = rows keypoints['col'] = cols keypoints['scale'] = scales @@ -50,17 +50,37 @@ def _prepare_grayscale_input_2D(image): return img_as_float(image) -def _mask_border_keypoints(image, keypoints, dist): - """Removes keypoints that are within dist pixels from the image border.""" - width = image.shape[0] - height = image.shape[1] +def _mask_border_keypoints(shape, rr, cc, distance): + """Mask coordinates that are within certain distance from the image border. - keypoints_filtering_mask = ((dist - 1 < keypoints[:, 0]) & - (keypoints[:, 0] < width - dist + 1) & - (dist - 1 < keypoints[:, 1]) & - (keypoints[:, 1] < height - dist + 1)) + Parameters + ---------- + shape : (2, ) array_like + Shape of the image as ``(rows, cols)``. + rr : (N, ) array + Row coordinates. + cc : (N, ) array + Column coordinates. + distance : int + Image border distance. - return keypoints_filtering_mask + Returns + ------- + mask : (N, ) bool array + Mask indicating if pixels are within the image (``True``) or in the + border region of the image (``False``). + + """ + + rows = shape[0] + cols = shape[1] + + mask = (((distance - 1) < rr) + & (rr < (rows - distance + 1)) + & ((distance - 1) < cc) + & (cc < (cols - distance + 1))) + + return mask def pairwise_hamming_distance(array1, array2): From d4bc4cf859e9b5208f8d48b7f508cae26205b750 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 29 Nov 2013 21:48:13 +0100 Subject: [PATCH 219/577] Improve FAST example output --- skimage/feature/corner.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 90aac771..33f9b39a 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -554,19 +554,19 @@ def corner_fast(image, n=12, threshold=0.15): >>> from skimage.feature import corner_fast, corner_peaks >>> square = np.zeros((12, 12)) >>> square[3:9, 3:9] = 1 - >>> square - array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]) + >>> square.astype(int) + array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]) >>> corner_peaks(corner_fast(square, 9), min_distance=1) array([[3, 3], [3, 8], From cf68bfd67105be758bd29bf27acf0adfd172c705 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 29 Nov 2013 21:50:02 +0100 Subject: [PATCH 220/577] Add comments to FAST implementation --- skimage/feature/corner_cy.pyx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 2b010693..688063c8 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -143,7 +143,7 @@ def _corner_fast(double[:, ::1] image, char n, double threshold): # Similar pixel bins[k] = 's' - # High speed test for n>=12 + # High speed test for n >= 12 if n >= 12: speed_sum_b = 0 speed_sum_d = 0 @@ -155,10 +155,12 @@ def _corner_fast(double[:, ::1] image, char n, double threshold): if speed_sum_d < 3 and speed_sum_b < 3: continue + # Test for bright pixels curr_response = \ _corner_fast_response(curr_pixel, circle_intensities, bins, 'b', n) + # Test for dark pixels if curr_response == 0: curr_response = \ _corner_fast_response(curr_pixel, circle_intensities, From 2f11f2277bb1ed9afcf30be8b4eb55745d507637 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 29 Nov 2013 21:55:21 +0100 Subject: [PATCH 221/577] Improve corner_orientations example output --- skimage/feature/corner_cy.pyx | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 688063c8..7249fde6 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -176,7 +176,7 @@ def corner_orientations(image, Py_ssize_t[:, :] corners, mask): The orientation of corners is computed using the first order central moment i.e. the center of mass approach. The corner orientation is the angle of - the vector from the corner coordinate to the intensity centroid in the + the vector from the corner coordinate to the intensity centroid in the local neighborhood around the corner calculated using first order central moment. @@ -206,23 +206,23 @@ def corner_orientations(image, Py_ssize_t[:, :] corners, mask): Examples -------- >>> from skimage.morphology import octagon - >>> from skimage.feature import corner_fast, corner_peaks, \ - ... corner_orientations + >>> from skimage.feature import (corner_fast, corner_peaks, + ... corner_orientations) >>> square = np.zeros((12, 12)) >>> square[3:9, 3:9] = 1 - >>> square - array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 1., 1., 1., 1., 1., 1., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]) + >>> square.astype(int) + array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]) >>> corners = corner_peaks(corner_fast(square, 9), min_distance=1) >>> corners array([[3, 3], From 845448a152171d38660f618b93d086c3ab34c9a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 29 Nov 2013 22:59:13 +0100 Subject: [PATCH 222/577] Implement object oriented interface for BRIEF --- skimage/feature/__init__.py | 7 +- skimage/feature/_brief.py | 202 +++++++++++++-------------- skimage/feature/_brief_cy.pyx | 8 +- skimage/feature/match.py | 26 ++-- skimage/feature/tests/_test_brief.py | 39 +++--- skimage/feature/util.py | 85 ++++++----- 6 files changed, 173 insertions(+), 194 deletions(-) diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index 50217f53..c7a5a42f 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -9,9 +9,9 @@ from .corner import (corner_kitchen_rosenfeld, corner_harris, hessian_matrix_eigvals) from .corner_cy import corner_moravec, corner_orientations from .template import match_template -from ._brief import descriptor_brief +from ._brief import BRIEF from .match import match_binary_descriptors -from .util import pairwise_hamming_distance, create_keypoint_recarray +from .util import pairwise_hamming_distance from .censure import keypoints_censure from .orb import keypoints_orb, descriptor_orb @@ -29,9 +29,8 @@ __all__ = ['daisy', 'corner_peaks', 'corner_moravec', 'match_template', - 'descriptor_brief', + 'BRIEF', 'pairwise_hamming_distance', - 'create_keypoint_recarray', 'match_binary_descriptors', 'keypoints_censure', 'corner_fast', diff --git a/skimage/feature/_brief.py b/skimage/feature/_brief.py index 6f90c39e..048cd7bb 100644 --- a/skimage/feature/_brief.py +++ b/skimage/feature/_brief.py @@ -1,15 +1,15 @@ import numpy as np from scipy.ndimage.filters import gaussian_filter -from .util import (_mask_border_keypoints, pairwise_hamming_distance, +from .util import (DescriptorExtractor, _mask_border_keypoints, _prepare_grayscale_input_2D) from ._brief_cy import _brief_loop -def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', - patch_size=49, sample_seed=1, variance=2): - """Extract BRIEF binary descriptors for given keypoints in an image. +class BRIEF(DescriptorExtractor): + + """BRIEF binary descriptor extractor. BRIEF (Binary Robust Independent Elementary Features) is an efficient feature point descriptor. It it is highly discriminative even when using @@ -24,58 +24,34 @@ def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', Parameters ---------- - image : 2D ndarray - Input image. - keypoints : (P, ...) recarray - Record array as returned by `skimage.feature.create_keypoint_recarray` - with the fields: `row`, `col`, `scale`, `orientation` and `response`. descriptor_size : int Size of BRIEF descriptor for each keypoint. Sizes 128, 256 and 512 recommended by the authors. Default is 256. - mode : {'normal', 'uniform'} - Probability distribution for sampling location of decision pixel-pairs - around keypoints. patch_size : int Length of the two dimensional square patch sampling region around the keypoints. Default is 49. + mode : {'normal', 'uniform'} + Probability distribution for sampling location of decision pixel-pairs + around keypoints. sample_seed : int Seed for the random sampling of the decision pixel-pairs. From a square window with length patch_size, pixel pairs are sampled using the `mode` parameter to build the descriptors using intensity comparison. The value of `sample_seed` must be the same for the images to be matched while building the descriptors. - variance : float - Variance of the Gaussian low pass filter applied to the image to - alleviate noise sensitivity, which is strongly recommended to obtain + sigma : float + Standard deviation of the Gaussian low pass filter applied to the image + to alleviate noise sensitivity, which is strongly recommended to obtain discriminative and good descriptors. - Returns - ------- - descriptors : (Q, `descriptor_size`) ndarray of dtype bool - 2D ndarray of binary descriptors of size `descriptor_size` for Q - keypoints after filtering out border keypoints with value at an index - ``(i, j)`` either being `True` or `False` representing the outcome - of the intensity comparison for i-th keypoint on j-th decision - pixel-pair. - keypoints : (Q, ...) recarray - Record array as returned by `skimage.feature.create_keypoint_recarray` - with the fields: `row`, `col`, `scale`, `orientation` and `response`. - - References - ---------- - .. [1] Michael Calonder, Vincent Lepetit, Christoph Strecha and Pascal Fua - "BRIEF : Binary robust independent elementary features", 2010 - http://cvlabwww.epfl.ch/~lepetit/papers/calonder_eccv10.pdf - Examples -------- - >> from skimage.feature.corner import corner_peaks, corner_harris - >> from skimage.feature import (pairwise_hamming_distance, descriptor_brief, - ... match_binary_descriptors, - ... create_keypoint_recarray) - >> square1 = np.zeros([8, 8], dtype=np.int32) - >> square1[2:6, 2:6] = 1 - >> square1 + >>> from skimage.feature import (corner_harris, corner_peaks, BRIEF, + ... match_binary_descriptors) + >>> import numpy as np + >>> square1 = np.zeros((8, 8), dtype=np.int32) + >>> square1[2:6, 2:6] = 1 + >>> square1 array([[0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 1, 1, 0, 0], @@ -84,17 +60,9 @@ def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', [0, 0, 1, 1, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0]], dtype=int32) - >> keypoints1 = corner_peaks(corner_harris(square1), min_distance=1) - >> keypoints1 = create_keypoint_recarray(keypoints1[:, 0], keypoints1[:, 1]) - >> descriptors1, keypoints1 = descriptor_brief(square1, keypoints1, patch_size=5) - >> keypoints1 - rec.array([(2.0, 2.0, nan, nan, nan), (2.0, 5.0, nan, nan, nan), - (5.0, 2.0, nan, nan, nan), (5.0, 5.0, nan, nan, nan)], - dtype=[('row', '> square2 = np.zeros([9, 9], dtype=np.int32) - >> square2[2:7, 2:7] = 1 - >> square2 + >>> square2 = np.zeros((9, 9), dtype=np.int32) + >>> square2[2:7, 2:7] = 1 + >>> square2 array([[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 1, 1, 1, 0, 0], @@ -104,24 +72,14 @@ def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', [0, 0, 1, 1, 1, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]], dtype=int32) - >> keypoints2 = corner_peaks(corner_harris(square2), min_distance=1) - >> keypoints2 = create_keypoint_recarray(keypoints2[:, 0], keypoints2[:, 1]) - >> keypoints2 - rec.array([(2.0, 2.0, nan, nan, nan), (2.0, 6.0, nan, nan, nan), - (6.0, 2.0, nan, nan, nan), (6.0, 6.0, nan, nan, nan)], - dtype=[('row', '> descriptors2, keypoints2 = descriptor_brief(square2, keypoints2, patch_size=5) - >> pairwise_hamming_distance(descriptors1, descriptors2) - array([[ 0.03125 , 0.3203125, 0.3671875, 0.6171875], - [ 0.3203125, 0.03125 , 0.640625 , 0.375 ], - [ 0.375 , 0.6328125, 0.0390625, 0.328125 ], - [ 0.625 , 0.3671875, 0.34375 , 0.0234375]]) - >> matched_kpts, mask1, mask2 = match_binary_descriptors(keypoints1, - ... descriptors1, - ... keypoints2, - ... descriptors2) - >> matched_kpts + >>> keypoints1 = corner_peaks(corner_harris(square1), min_distance=1) + >>> keypoints2 = corner_peaks(corner_harris(square2), min_distance=1) + >>> extractor = BRIEF(patch_size=5) + >>> descs1, _ = extractor.extract(square1, keypoints1) + >>> descs2, _ = extractor.extract(square2, keypoints2) + >>> matches, idxs1, idxs2 = match_binary_descriptors(keypoints1, descs1, + ... keypoints2, descs2) + >>> matches array([[[2, 2], [2, 2]], @@ -133,53 +91,87 @@ def descriptor_brief(image, keypoints, descriptor_size=256, mode='normal', [[5, 5], [6, 6]]]) + >>> mask1 + array([0, 1, 2, 3]) + >>> mask2 + array([0, 1, 2, 3]) """ - if mode not in ('normal', 'uniform'): - raise ValueError("`mode` must be one of 'normal' or 'uniform'.") + def __init__(self, descriptor_size=256, patch_size=49, + mode='normal', sigma=1, sample_seed=1): - np.random.seed(sample_seed) + if mode not in ('normal', 'uniform'): + raise ValueError("`mode` must be 'normal' or 'uniform'.") - image = _prepare_grayscale_input_2D(image) + self.descriptor_size = descriptor_size + self.patch_size = patch_size + self.mode = mode + self.sigma = sigma + self.sample_seed = sample_seed - # Gaussian Low pass filtering to alleviate noise sensitivity - image = gaussian_filter(image, variance) - image = np.ascontiguousarray(image) + def extract(self, image, keypoints): + """Extract BRIEF binary descriptors for given keypoints in image. - # Sampling pairs of decision pixels in patch_size x patch_size window - if mode == 'normal': - samples = (patch_size / 5.0) * np.random.randn(descriptor_size * 8) - samples = np.array(samples, dtype=np.int32) - samples = samples[(samples < (patch_size // 2)) - & (samples > - (patch_size - 2) // 2)] + Parameters + ---------- + image : 2D array + Input image. + keypoints : (N, 2) array + Keypoint coordinates as ``(row, col)``. - pos1 = samples[:descriptor_size * 2] - pos1 = pos1.reshape(descriptor_size, 2) - pos2 = samples[descriptor_size * 2:descriptor_size * 4] - pos2 = pos2.reshape(descriptor_size, 2) - elif mode == 'uniform': - samples = np.random.randint(-(patch_size - 2) // 2, - (patch_size // 2) + 1, - (descriptor_size * 2, 2)) - samples = np.array(samples, dtype=np.int32) - pos1, pos2 = np.split(samples, 2) + Returns + ------- + descriptors : (Q, `descriptor_size`) array of dtype bool + 2D ndarray of binary descriptors of size `descriptor_size` for Q + keypoints after filtering out border keypoints with value at an + index ``(i, j)`` either being ``True`` or ``False`` representing + the outcome of the intensity comparison for i-th keypoint on j-th + decision pixel-pair. It is ``Q == np.sum(mask)``. + mask : (N, ) array of dtype bool + Mask indicating whether a keypoint has been filtered out + (``False``) or is described in the `descriptors` array (``True``). - pos1 = np.ascontiguousarray(pos1) - pos2 = np.ascontiguousarray(pos2) + """ - # Removing keypoints that are within (patch_size / 2) distance from the - # image border - border_mask = _mask_border_keypoints(image.shape, keypoints.row, - keypoints.col, patch_size // 2) + np.random.seed(self.sample_seed) - keypoints_row = keypoints.row[border_mask].astype(np.intp) - keypoints_col = keypoints.col[border_mask].astype(np.intp) + image = _prepare_grayscale_input_2D(image) - descriptors = np.zeros((keypoints_row.shape[0], descriptor_size), - dtype=bool, order='C') + # Gaussian Low pass filtering to alleviate noise sensitivity + image = np.ascontiguousarray(gaussian_filter(image, self.sigma)) - _brief_loop(image, descriptors.view(np.uint8), - keypoints_row, keypoints_col, pos1, pos2) + # Sampling pairs of decision pixels in patch_size x patch_size window + desc_size = self.descriptor_size + patch_size = self.patch_size + if self.mode == 'normal': + samples = (patch_size / 5.0) * np.random.randn(desc_size * 8) + samples = np.array(samples, dtype=np.int32) + samples = samples[(samples < (patch_size // 2)) + & (samples > - (patch_size - 2) // 2)] - return descriptors, keypoints + pos1 = samples[:desc_size * 2].reshape(desc_size, 2) + pos2 = samples[desc_size * 2:desc_size * 4].reshape(desc_size, 2) + elif self.mode == 'uniform': + samples = np.random.randint(-(patch_size - 2) // 2, + (patch_size // 2) + 1, + (desc_size * 2, 2)) + samples = np.array(samples, dtype=np.int32) + pos1, pos2 = np.split(samples, 2) + + pos1 = np.ascontiguousarray(pos1) + pos2 = np.ascontiguousarray(pos2) + + # Removing keypoints that are within (patch_size / 2) distance from the + # image border + mask = _mask_border_keypoints(image.shape, keypoints, patch_size // 2) + + keypoints = np.array(keypoints[mask, :], dtype=np.intp, order='C', + copy=False) + + descriptors = np.zeros((keypoints.shape[0], desc_size), + dtype=bool, order='C') + + _brief_loop(image, descriptors.view(np.uint8), keypoints, pos1, pos2) + + return descriptors, mask diff --git a/skimage/feature/_brief_cy.pyx b/skimage/feature/_brief_cy.pyx index 5c027c57..8cd1afa7 100644 --- a/skimage/feature/_brief_cy.pyx +++ b/skimage/feature/_brief_cy.pyx @@ -7,7 +7,7 @@ cimport numpy as cnp def _brief_loop(double[:, ::1] image, unsigned char[:, ::1] descriptors, - Py_ssize_t[::1] keypoints_row, Py_ssize_t[::1] keypoints_col, + Py_ssize_t[:, ::1] keypoints, int[:, ::1] pos0, int[:, ::1] pos1): cdef Py_ssize_t k, d, kr, kc, pr0, pr1, pc0, pc1 @@ -17,8 +17,8 @@ def _brief_loop(double[:, ::1] image, unsigned char[:, ::1] descriptors, pc0 = pos0[p, 1] pr1 = pos1[p, 0] pc1 = pos1[p, 1] - for k in range(keypoints_row.shape[0]): - kr = keypoints_row[k] - kc = keypoints_col[k] + for k in range(keypoints.shape[0]): + kr = keypoints[k, 0] + kc = keypoints[k, 1] if image[kr + pr0, kc + pc0] < image[kr + pr1, kc + pc1]: descriptors[k, p] = True diff --git a/skimage/feature/match.py b/skimage/feature/match.py index 405fb86b..86d32eb8 100644 --- a/skimage/feature/match.py +++ b/skimage/feature/match.py @@ -34,9 +34,9 @@ def match_binary_descriptors(keypoints1, descriptors1, keypoints2, ------- matches : (Q, 2, 2) ndarray Location of Q matched keypoint pairs from two images. - mask1 : (Q,) ndarray + idxs1 : (Q,) ndarray Indices of keypoints in keypoints1 that have been matched. - mask2 : (Q,) ndarray + idxs2 : (Q,) ndarray Indices of keypoints in keypoints2 that have been matched. """ @@ -51,33 +51,31 @@ def match_binary_descriptors(keypoints1, descriptors1, keypoints2, # Get hamming distances between keypoints1 and keypoints2 distance = pairwise_hamming_distance(descriptors1, descriptors2) - kp1 = np.squeeze(np.dstack((keypoints1.row, keypoints1.col))) - kp2 = np.squeeze(np.dstack((keypoints2.row, keypoints2.col))) if cross_check: matched_keypoints1_index = np.argmin(distance, axis=1) matched_keypoints2_index = np.argmin(distance, axis=0) - matched_index = _binary_cross_check_loop(matched_keypoints1_index, + matched_idxs = _binary_cross_check_loop(matched_keypoints1_index, matched_keypoints2_index, distance, threshold) - matches = np.zeros((matched_index.shape[0], 2, 2), + matches = np.zeros((matched_idxs.shape[0], 2, 2), dtype=np.intp) - mask1 = matched_index[:, 0] - mask2 = matched_index[:, 1] - matches[:, 0, :] = kp1[mask1] - matches[:, 1, :] = kp2[mask2] + idxs1 = matched_idxs[:, 0] + idxs2 = matched_idxs[:, 1] + matches[:, 0, :] = keypoints1[idxs1] + matches[:, 1, :] = keypoints2[idxs2] else: temp = distance > threshold row_check = np.any(~temp, axis=1) - matched_keypoints2 = kp2[np.argmin(distance, axis=1)] + matched_keypoints2 = keypoints2[np.argmin(distance, axis=1)] matches = np.zeros((np.sum(row_check), 2, 2), dtype=np.intp) - matches[:, 0, :] = kp1[row_check] + matches[:, 0, :] = keypoints1[row_check] matches[:, 1, :] = matched_keypoints2[row_check] - mask1 = np.where(row_check == True)[0] - mask2 = np.argmin(distance, axis=1)[row_check] + idxs1 = np.where(row_check == True)[0] + idxs2 = np.argmin(distance, axis=1)[row_check] return matches, mask1, mask2 diff --git a/skimage/feature/tests/_test_brief.py b/skimage/feature/tests/_test_brief.py index 40a0ac38..61042119 100644 --- a/skimage/feature/tests/_test_brief.py +++ b/skimage/feature/tests/_test_brief.py @@ -3,30 +3,26 @@ from numpy.testing import assert_array_equal, assert_raises from skimage import data from skimage import transform as tf from skimage.color import rgb2gray -from skimage.feature import (descriptor_brief, match_binary_descriptors, - corner_peaks, corner_harris, - create_keypoint_recarray) +from skimage.feature import (BRIEF, match_binary_descriptors, + corner_peaks, corner_harris) def test_descriptor_brief_color_image_unsupported_error(): """Brief descriptors can be evaluated on gray-scale images only.""" img = np.zeros((20, 20, 3)) - keypoints_loc = np.asarray([[7, 5], [11, 13]]) - keypoints = create_keypoint_recarray(keypoints_loc[:, 0], - keypoints_loc[:, 1]) - assert_raises(ValueError, descriptor_brief, img, keypoints) + keypoints = np.asarray([[7, 5], [11, 13]]) + assert_raises(ValueError, BRIEF().extract, img, keypoints) def test_descriptor_brief_normal_mode(): """Verify the computed BRIEF descriptors with expected for normal mode.""" - img = data.lena() - img = rgb2gray(img) - keypoints_loc = corner_peaks(corner_harris(img), min_distance=5) - keypoints = create_keypoint_recarray(keypoints_loc[:, 0], - keypoints_loc[:, 1]) + img = rgb2gray(data.lena()) - descriptors, keypoints = descriptor_brief(img, keypoints[:8], - descriptor_size=8) + keypoints = corner_peaks(corner_harris(img), min_distance=5) + + extractor = BRIEF(descriptor_size=8, sigma=2) + + descriptors, mask = extractor.extract(img, keypoints[:8]) expected = np.array([[ True, False, True, False, True, True, False, False], [False, False, False, False, True, False, False, False], @@ -42,14 +38,13 @@ def test_descriptor_brief_normal_mode(): def test_descriptor_brief_uniform_mode(): """Verify the computed BRIEF descriptors with expected for uniform mode.""" - img = data.lena() - img = rgb2gray(img) - keypoints_loc = corner_peaks(corner_harris(img), min_distance=5) - keypoints = create_keypoint_recarray(keypoints_loc[:, 0], - keypoints_loc[:, 1]) - descriptors, keypoints = descriptor_brief(img, keypoints[:8], - descriptor_size=8, - mode='uniform') + img = rgb2gray(data.lena()) + + keypoints = corner_peaks(corner_harris(img), min_distance=5) + + extractor = BRIEF(descriptor_size=8, sigma=2, mode='uniform') + + descriptors, mask = extractor.extract(img, keypoints[:8]) expected = np.array([[ True, False, True, False, False, True, False, False], [False, True, False, False, True, True, True, True], diff --git a/skimage/feature/util.py b/skimage/feature/util.py index b2ddcb7e..1da4b613 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -3,43 +3,40 @@ import numpy as np from skimage.util import img_as_float -def create_keypoint_recarray(rows, cols, scales=None, orientations=None, - responses=None): - """Create keypoint array that allows field access through attributes. +class FeatureDetector(object): - Parameters - ---------- - rows : (N, ) array - Row coordinates of keypoints. - cols : (N, ) array - Column coordinates of keypoints. - scales : (N, ) array - Scales in which the keypoints have been detected. - orientations : (N, ) array - Orientations of the keypoints. - responses : (N, ) array - Detector response (strength) of the keypoints. + def __init__(self): + raise NotImplementedError() - Returns - ------- - recarray : (N, ...) recarray - Array with the fields: `row`, `col`, `scale`, `orientation` and - `response`. + def detect(self, image): + """Detect keypoints in image. - """ + Parameters + ---------- + image : 2D array + Input image. - dtype = [('row', np.double), - ('col', np.double), - ('scale', np.double), - ('orientation', np.double), - ('response', np.double)] - keypoints = np.zeros(rows.shape[0], dtype=dtype) - keypoints['row'] = rows - keypoints['col'] = cols - keypoints['scale'] = scales - keypoints['orientation'] = orientations - keypoints['response'] = responses - return keypoints.view(np.recarray) + """ + raise NotImplementedError() + + +class DescriptorExtractor(object): + + def __init__(self): + raise NotImplementedError() + + def extract(self, image, keypoints): + """Extract feature descriptors in image for given keypoints. + + Parameters + ---------- + image : 2D array + Input image. + keypoints : (N, 2) array + Keypoint locations as ``(row, col)``. + + """ + raise NotImplementedError() def _prepare_grayscale_input_2D(image): @@ -50,17 +47,15 @@ def _prepare_grayscale_input_2D(image): return img_as_float(image) -def _mask_border_keypoints(shape, rr, cc, distance): +def _mask_border_keypoints(image_shape, keypoints, distance): """Mask coordinates that are within certain distance from the image border. Parameters ---------- - shape : (2, ) array_like + image_shape : (2, ) array_like Shape of the image as ``(rows, cols)``. - rr : (N, ) array - Row coordinates. - cc : (N, ) array - Column coordinates. + coords : (N, 2) array + Keypoint coordinates as ``(rows, cols)``. distance : int Image border distance. @@ -72,13 +67,13 @@ def _mask_border_keypoints(shape, rr, cc, distance): """ - rows = shape[0] - cols = shape[1] + rows = image_shape[0] + cols = image_shape[1] - mask = (((distance - 1) < rr) - & (rr < (rows - distance + 1)) - & ((distance - 1) < cc) - & (cc < (cols - distance + 1))) + mask = (((distance - 1) < keypoints[:, 0]) + & (keypoints[:, 0] < (rows - distance + 1)) + & ((distance - 1) < keypoints[:, 1]) + & (keypoints[:, 1] < (cols - distance + 1))) return mask From e839ce2086dc6b66513c734fdb80e0fe760e9d9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 29 Nov 2013 22:59:48 +0100 Subject: [PATCH 223/577] Reactive BRIEF test cases --- skimage/feature/tests/{_test_brief.py => test_brief.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename skimage/feature/tests/{_test_brief.py => test_brief.py} (100%) diff --git a/skimage/feature/tests/_test_brief.py b/skimage/feature/tests/test_brief.py similarity index 100% rename from skimage/feature/tests/_test_brief.py rename to skimage/feature/tests/test_brief.py From 69dccda7cc87854e60c311edae4d7ba8d15b2da4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 29 Nov 2013 23:03:57 +0100 Subject: [PATCH 224/577] Add test case for border keypoints --- skimage/feature/tests/test_brief.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/skimage/feature/tests/test_brief.py b/skimage/feature/tests/test_brief.py index 61042119..0f0a9b1f 100644 --- a/skimage/feature/tests/test_brief.py +++ b/skimage/feature/tests/test_brief.py @@ -7,14 +7,14 @@ from skimage.feature import (BRIEF, match_binary_descriptors, corner_peaks, corner_harris) -def test_descriptor_brief_color_image_unsupported_error(): +def test_color_image_unsupported_error(): """Brief descriptors can be evaluated on gray-scale images only.""" img = np.zeros((20, 20, 3)) keypoints = np.asarray([[7, 5], [11, 13]]) assert_raises(ValueError, BRIEF().extract, img, keypoints) -def test_descriptor_brief_normal_mode(): +def test_normal_mode(): """Verify the computed BRIEF descriptors with expected for normal mode.""" img = rgb2gray(data.lena()) @@ -36,7 +36,7 @@ def test_descriptor_brief_normal_mode(): assert_array_equal(descriptors, expected) -def test_descriptor_brief_uniform_mode(): +def test_uniform_mode(): """Verify the computed BRIEF descriptors with expected for uniform mode.""" img = rgb2gray(data.lena()) @@ -58,6 +58,17 @@ def test_descriptor_brief_uniform_mode(): assert_array_equal(descriptors, expected) +def test_border(): + img = np.zeros((100, 100)) + keypoints = np.array([[1, 1], [20, 20], [50, 50], [80, 80]]) + + extractor = BRIEF(patch_size=41) + descs, mask = extractor.extract(img, keypoints) + + assert descs.shape[0] == 3 + assert_array_equal(mask, (False, True, True, True)) + + if __name__ == '__main__': from numpy import testing testing.run_module_suite() From 29026e7231640d8048cd2972153d96bf525e2621 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 29 Nov 2013 23:08:16 +0100 Subject: [PATCH 225/577] Improve example output of corner_moravec --- skimage/feature/corner_cy.pyx | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 7249fde6..c337fafd 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -38,25 +38,25 @@ def corner_moravec(image, Py_ssize_t window_size=1): Examples -------- - >>> from skimage.feature import corner_moravec, peak_local_max + >>> from skimage.feature import corner_moravec >>> square = np.zeros([7, 7]) >>> square[3, 3] = 1 - >>> square - array([[ 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 1., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0.]]) - >>> corner_moravec(square) - array([[ 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 1., 1., 1., 0., 0.], - [ 0., 0., 1., 2., 1., 0., 0.], - [ 0., 0., 1., 1., 1., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0.], - [ 0., 0., 0., 0., 0., 0., 0.]]) + >>> square.astype(int) + array([[0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 1, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0]]) + >>> corner_moravec(square).astype(int) + array([[0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0], + [0, 0, 1, 1, 1, 0, 0], + [0, 0, 1, 2, 1, 0, 0], + [0, 0, 1, 1, 1, 0, 0], + [0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0]]) """ cdef Py_ssize_t rows = image.shape[0] From 79616815ff7e2e2a6f82117c95157afc44dc0362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Fri, 29 Nov 2013 23:32:50 +0100 Subject: [PATCH 226/577] Implement CenSurE detector in object oriented interface --- skimage/feature/__init__.py | 6 +- skimage/feature/{_brief.py => brief.py} | 1 + .../feature/{_brief_cy.pyx => brief_cy.pyx} | 0 skimage/feature/censure.py | 171 ++++++++++-------- skimage/feature/orb.py | 71 +++++--- skimage/feature/setup.py | 4 +- skimage/feature/tests/_test_censure.py | 89 --------- skimage/feature/tests/test_censure.py | 89 +++++++++ 8 files changed, 231 insertions(+), 200 deletions(-) rename skimage/feature/{_brief.py => brief.py} (99%) rename skimage/feature/{_brief_cy.pyx => brief_cy.pyx} (100%) delete mode 100644 skimage/feature/tests/_test_censure.py create mode 100644 skimage/feature/tests/test_censure.py diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index c7a5a42f..6c9c0df5 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -9,10 +9,10 @@ from .corner import (corner_kitchen_rosenfeld, corner_harris, hessian_matrix_eigvals) from .corner_cy import corner_moravec, corner_orientations from .template import match_template -from ._brief import BRIEF +from .brief import BRIEF +from .censure import CenSurE from .match import match_binary_descriptors from .util import pairwise_hamming_distance -from .censure import keypoints_censure from .orb import keypoints_orb, descriptor_orb __all__ = ['daisy', @@ -30,9 +30,9 @@ __all__ = ['daisy', 'corner_moravec', 'match_template', 'BRIEF', + 'CenSurE', 'pairwise_hamming_distance', 'match_binary_descriptors', - 'keypoints_censure', 'corner_fast', 'corner_orientations', 'structure_tensor', diff --git a/skimage/feature/_brief.py b/skimage/feature/brief.py similarity index 99% rename from skimage/feature/_brief.py rename to skimage/feature/brief.py index 048cd7bb..e29dd230 100644 --- a/skimage/feature/_brief.py +++ b/skimage/feature/brief.py @@ -101,6 +101,7 @@ class BRIEF(DescriptorExtractor): def __init__(self, descriptor_size=256, patch_size=49, mode='normal', sigma=1, sample_seed=1): + mode = mode.lower() if mode not in ('normal', 'uniform'): raise ValueError("`mode` must be 'normal' or 'uniform'.") diff --git a/skimage/feature/_brief_cy.pyx b/skimage/feature/brief_cy.pyx similarity index 100% rename from skimage/feature/_brief_cy.pyx rename to skimage/feature/brief_cy.pyx diff --git a/skimage/feature/censure.py b/skimage/feature/censure.py index dbe8daf5..dc9cd58c 100644 --- a/skimage/feature/censure.py +++ b/skimage/feature/censure.py @@ -1,7 +1,7 @@ import numpy as np from scipy.ndimage.filters import maximum_filter, minimum_filter, convolve -from .util import _prepare_grayscale_input_2D +from skimage.feature.util import FeatureDetector, _prepare_grayscale_input_2D from skimage.transform import integral_image from skimage.feature import structure_tensor @@ -66,19 +66,19 @@ def _filter_image(image, min_scale, max_scale, mode): mo, no = OCTAGON_OUTER_SHAPE[min_scale + i - 1] mi, ni = OCTAGON_INNER_SHAPE[min_scale + i - 1] response[:, :, i] = convolve(image, - _octagon_filter_kernel(mo, no, mi, ni)) + _octagon_kernel(mo, no, mi, ni)) elif mode == 'star': for i in range(max_scale - min_scale + 1): m = STAR_SHAPE[STAR_FILTER_SHAPE[min_scale + i - 1][0]] n = STAR_SHAPE[STAR_FILTER_SHAPE[min_scale + i - 1][1]] - response[:, :, i] = convolve(image, _star_filter_kernel(m, n)) + response[:, :, i] = convolve(image, _star_kernel(m, n)) return response -def _octagon_filter_kernel(mo, no, mi, ni): +def _octagon_kernel(mo, no, mi, ni): outer = (mo + 2 * no)**2 - 2 * no * (no + 1) inner = (mi + 2 * ni)**2 - 2 * ni * (ni + 1) outer_weight = 1.0 / (outer - inner) @@ -92,7 +92,7 @@ def _octagon_filter_kernel(mo, no, mi, ni): return bfilter -def _star_filter_kernel(m, n): +def _star_kernel(m, n): c = m + m // 2 - n - n // 2 outer_star = star(m) inner_star = np.zeros_like(outer_star) @@ -106,21 +106,15 @@ def _star_filter_kernel(m, n): def _suppress_lines(feature_mask, image, sigma, line_threshold): Axx, Axy, Ayy = structure_tensor(image, sigma) - feature_mask[(Axx + Ayy) * (Axx + Ayy) - > line_threshold * (Axx * Ayy - Axy * Axy)] = False + feature_mask[(Axx + Ayy) ** 2 + > line_threshold * (Axx * Ayy - Axy ** 2)] = False -def keypoints_censure(image, min_scale=1, max_scale=7, mode='DoB', - non_max_threshold=0.15, line_threshold=10): - """**Experimental function**. - Extracts CenSurE keypoints along with the corresponding scale using - either Difference of Boxes, Octagon or STAR bi-level filter. +class CenSurE(FeatureDetector): + + """CenSurE keypoint detector. - Parameters - ---------- - image : 2D ndarray - Input image. min_scale : int Minimum scale to extract keypoints from. max_scale : int @@ -145,13 +139,6 @@ def keypoints_censure(image, min_scale=1, max_scale=7, mode='DoB', Threshold for rejecting interest points which have ratio of principal curvatures greater than this value. - Returns - ------- - keypoints : (N, 2) array - Location of the extracted keypoints in the ``(row, col)`` format. - scales : (N, 1) array - The corresponding scale of the N extracted keypoints. - References ---------- .. [1] Motilal Agrawal, Kurt Konolige and Morten Rufus Blas @@ -166,69 +153,101 @@ def keypoints_censure(image, min_scale=1, max_scale=7, mode='DoB', """ - # (1) First we generate the required scales on the input grayscale image - # using a bi-level filter and stack them up in `filter_response`. - # (2) We then perform Non-Maximal suppression in 3 x 3 x 3 window on the - # filter_response to suppress points that are neither minima or maxima in - # 3 x 3 x 3 neighbourhood. We obtain a boolean ndarray `feature_mask` - # containing all the minimas and maximas in `filter_response` as True. - # (3) Then we suppress all the points in the `feature_mask` for which the - # corresponding point in the image at a particular scale has the ratio of - # principal curvatures greater than `line_threshold`. - # (4) Finally, we remove the border keypoints and return the keypoints - # along with its corresponding scale. + def __init__(self, min_scale=1, max_scale=7, mode='DoB', + non_max_threshold=0.15, line_threshold=10): - image = _prepare_grayscale_input_2D(image) + mode = mode.lower() + if mode not in ('dob', 'octagon', 'star'): + raise ValueError("`mode` must be one of 'DoB', 'Octagon', 'STAR'.") - mode = mode.lower() - if mode not in ('dob', 'octagon', 'star'): - raise ValueError('Mode must be one of "DoB", "Octagon", "STAR".') + if min_scale < 1 or max_scale < 1 or max_scale - min_scale < 2: + raise ValueError('The scales must be >= 1 and the number of ' + 'scales should be >= 3.') - if min_scale < 1 or max_scale < 1 or max_scale - min_scale < 2: - raise ValueError('The scales must be >= 1 and the number of scales ' - 'should be >= 3.') + self.min_scale = min_scale + self.max_scale = max_scale + self.mode = mode + self.non_max_threshold = non_max_threshold + self.line_threshold = line_threshold - image = np.ascontiguousarray(image) + def detect(self, image): + """Detect CenSurE keypoints along with the corresponding scale. - # Generating all the scales - filter_response = _filter_image(image, min_scale, max_scale, mode) + Parameters + ---------- + image : 2D ndarray + Input image. - # Suppressing points that are neither minima or maxima in their 3 x 3 x 3 - # neighbourhood to zero - minimas = minimum_filter(filter_response, (3, 3, 3)) == filter_response - maximas = maximum_filter(filter_response, (3, 3, 3)) == filter_response + Returns + ------- + keypoints : (N, 2) array + Keypoint coordinates as ``(row, col)``. + scales : (N, 1) array + Corresponding scales of the N extracted keypoints. - feature_mask = minimas | maximas - feature_mask[filter_response < non_max_threshold] = False + """ - for i in range(1, max_scale - min_scale): - # sigma = (window_size - 1) / 6.0, so the window covers > 99% of the - # kernel's distribution - # window_size = 7 + 2 * (min_scale - 1 + i) - # Hence sigma = 1 + (min_scale - 1 + i)/ 3.0 - _suppress_lines(feature_mask[:, :, i], image, - (1 + (min_scale + i - 1) / 3.0), line_threshold) + # (1) First we generate the required scales on the input grayscale + # image using a bi-level filter and stack them up in `filter_response`. - rows, cols, scales = np.nonzero(feature_mask[..., 1:max_scale - min_scale]) - keypoints = np.column_stack([rows, cols]) - scales = scales + min_scale + 1 + # (2) We then perform Non-Maximal suppression in 3 x 3 x 3 window on + # the filter_response to suppress points that are neither minima or + # maxima in 3 x 3 x 3 neighbourhood. We obtain a boolean ndarray + # `feature_mask` containing all the minimas and maximas in + # `filter_response` as True. + # (3) Then we suppress all the points in the `feature_mask` for which + # the corresponding point in the image at a particular scale has the + # ratio of principal curvatures greater than `line_threshold`. + # (4) Finally, we remove the border keypoints and return the keypoints + # along with its corresponding scale. - if mode == 'dob': - return keypoints, scales + num_scales = self.max_scale - self.min_scale - cumulative_mask = np.zeros(keypoints.shape[0], dtype=np.bool) + image = np.ascontiguousarray(_prepare_grayscale_input_2D(image)) - if mode == 'octagon': - for i in range(min_scale + 1, max_scale): - c = (OCTAGON_OUTER_SHAPE[i - 1][0] - 1) // 2 \ - + OCTAGON_OUTER_SHAPE[i - 1][1] - cumulative_mask |= _mask_border_keypoints(image, keypoints, c) \ - & (scales == i) - elif mode == 'star': - for i in range(min_scale + 1, max_scale): - c = STAR_SHAPE[STAR_FILTER_SHAPE[i - 1][0]] \ - + STAR_SHAPE[STAR_FILTER_SHAPE[i - 1][0]] // 2 - cumulative_mask |= _mask_border_keypoints(image, keypoints, c) \ - & (scales == i) + # Generating all the scales + filter_response = _filter_image(image, self.min_scale, self.max_scale, + self.mode) - return keypoints[cumulative_mask], scales[cumulative_mask] + # Suppressing points that are neither minima or maxima in their + # 3 x 3 x 3 neighborhood to zero + minimas = minimum_filter(filter_response, (3, 3, 3)) == filter_response + maximas = maximum_filter(filter_response, (3, 3, 3)) == filter_response + + feature_mask = minimas | maximas + feature_mask[filter_response < self.non_max_threshold] = False + + for i in range(1, num_scales): + # sigma = (window_size - 1) / 6.0, so the window covers > 99% of + # the kernel's distribution + # window_size = 7 + 2 * (min_scale - 1 + i) + # Hence sigma = 1 + (min_scale - 1 + i)/ 3.0 + _suppress_lines(feature_mask[:, :, i], image, + (1 + (self.min_scale + i - 1) / 3.0), + self.line_threshold) + + rows, cols, scales = np.nonzero(feature_mask[..., 1:num_scales]) + keypoints = np.column_stack([rows, cols]) + scales = scales + self.min_scale + 1 + + if self.mode == 'dob': + return keypoints, scales + + cumulative_mask = np.zeros(keypoints.shape[0], dtype=np.bool) + + if self.mode == 'octagon': + for i in range(self.min_scale + 1, self.max_scale): + c = (OCTAGON_OUTER_SHAPE[i - 1][0] - 1) // 2 \ + + OCTAGON_OUTER_SHAPE[i - 1][1] + cumulative_mask |= ( + _mask_border_keypoints(image.shape, keypoints, c) + & (scales == i)) + elif self.mode == 'star': + for i in range(self.min_scale + 1, self.max_scale): + c = STAR_SHAPE[STAR_FILTER_SHAPE[i - 1][0]] \ + + STAR_SHAPE[STAR_FILTER_SHAPE[i - 1][0]] // 2 + cumulative_mask |= ( + _mask_border_keypoints(image.shape, keypoints, c) + & (scales == i)) + + return keypoints[cumulative_mask], scales[cumulative_mask] diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index fb52e40e..74414465 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -1,8 +1,7 @@ import numpy as np from skimage.feature.util import (_mask_border_keypoints, - _prepare_grayscale_input_2D, - create_keypoint_recarray) + _prepare_grayscale_input_2D) from skimage.feature import (corner_fast, corner_orientations, corner_peaks, corner_harris) @@ -12,36 +11,39 @@ from .orb_cy import _orb_loop OFAST_MASK = np.zeros((31, 31)) -umax = [15, 15, 15, 15, 14, 14, 14, 13, 13, 12, 11, 10, 9, 8, 6, 3] +OFAST_UMAX = [15, 15, 15, 15, 14, 14, 14, 13, 13, 12, 11, 10, 9, 8, 6, 3] for i in range(-15, 16): - for j in range(-umax[np.abs(i)], umax[np.abs(i)] + 1): + for j in range(-OFAST_UMAX[abs(i)], OFAST_UMAX[abs(i)] + 1): OFAST_MASK[15 + j, 15 + i] = 1 + + + def keypoints_orb(image, n_keypoints=500, fast_n=9, fast_threshold=0.08, harris_k=0.04, downscale=1.2, n_scales=8): - """Detect Oriented Fast keypoints. + """Detect oriented FAST keypoints. Parameters ---------- image : 2D ndarray - Input grayscale image. + Input image. n_keypoints : int - Number of keypoints to be returned from this function. The function - will return best ``n_keypoints`` if more than n_keypoints are detected - based on the values of other parameters. If not, then all the detected - keypoints are returned. + Number of keypoints to be returned. The function will return the best + ``n_keypoints`` according to the Harris corner response if more than + ``n_keypoints`` are detected. If not, then all the detected keypoints + are returned. fast_n : int The ``n`` parameter in ``feature.corner_fast``. Minimum number of consecutive pixels out of 16 pixels on the circle that should all be - either brighter or darker w.r.t testpixel. A point c on the circle is + either brighter or darker w.r.t test-pixel. A point c on the circle is darker w.r.t test pixel p if ``Ic < Ip - threshold`` and brighter if ``Ic > Ip + threshold``. Also stands for the n in ``FAST-n`` corner detector. fast_threshold : float - The ``threshold`` parameter in ``feature.corner_fast``. Threshold used to - decide whether the pixels on the circle are brighter, darker or + The ``threshold`` parameter in ``feature.corner_fast``. Threshold used + to decide whether the pixels on the circle are brighter, darker or similar w.r.t. the test pixel. Decrease the threshold when more corners are desired and vice-versa. harris_k : float @@ -50,15 +52,17 @@ def keypoints_orb(image, n_keypoints=500, fast_n=9, fast_threshold=0.08, values of k result in detection of sharp corners. downscale : float Downscale factor for the image pyramid. Default value 1.2 is chosen so - that we have more dense scales that enable robust scale invariance. + that there are more dense scales which enable robust scale invariance + for a subsequent feature description. n_scales : int - Number of scales from the bottom of the image pyramid to extract - the features from. + Maximum number of scales from the bottom of the image pyramid to + extract the features from. Returns ------- - keypoints : record array - Record array with fields row, col, octave, orientation, response. + keypoints : (N, ...) recarray + Record array as returned by `skimage.feature.create_keypoint_recarray` + with the fields: `row`, `col`, `scale`, `orientation` and `response`. References ---------- @@ -97,46 +101,53 @@ def keypoints_orb(image, n_keypoints=500, fast_n=9, fast_threshold=0.08, scales_list = [] harris_response_list = [] - for scale in range(n_scales): + for octave in range(len(pyramid)): - corners = corner_peaks(corner_fast(pyramid[scale], fast_n, + # Extract keypoints for current octave + corners = corner_peaks(corner_fast(pyramid[octave], fast_n, fast_threshold), min_distance=1) - keypoints_list.append(corners * downscale ** scale) - orientations_list.append(corner_orientations(pyramid[scale], corners, + # Scale keypoint coordinates so they correspond to the original + # image shape + keypoints_list.append(corners * downscale ** octave) + + orientations_list.append(corner_orientations(pyramid[octave], corners, OFAST_MASK)) - scales_list.append(scale * np.ones(corners.shape[0], dtype=np.intp)) + scales_list.append(octave * np.ones(corners.shape[0], dtype=np.intp)) - harris_response = corner_harris(pyramid[scale], method='k', k=harris_k) + harris_response = corner_harris(pyramid[octave], method='k', + k=harris_k) harris_response_list.append(harris_response[corners[:, 0], corners[:, 1]]) keypoints_array = np.vstack(keypoints_list) orientations = np.hstack(orientations_list) - octaves = downscale ** np.hstack(scales_list) + scales = downscale ** np.hstack(scales_list) harris_measure = np.hstack(harris_response_list) keypoints = create_keypoint_recarray(keypoints_array[:, 0], keypoints_array[:, 1], - octaves, orientations, + scales, orientations, harris_measure) if keypoints.shape[0] < n_keypoints: return keypoints else: + # Choose best n_keypoints according to Harris corner response best_indices = harris_measure.argsort()[::-1][:n_keypoints] return keypoints[best_indices] def descriptor_orb(image, keypoints, downscale=1.2, n_scales=8): - """Compute rBRIEF descriptors of input keypoints. + """Compute rBRIEF descriptors for keypoints. Parameters ---------- image : 2D ndarray - Input grayscale image. - keypoints : record array - Record array with fields row, col, octave, orientation, response. + Input image. + keypoints : (N, ...) recarray + Record array as returned by `skimage.feature.create_keypoint_recarray` + with the fields: `row`, `col`, `scale`, `orientation` and `response`. downscale : float Downscale factor for the image pyramid. Should be the same as that used in ``keypoints_orb``. diff --git a/skimage/feature/setup.py b/skimage/feature/setup.py index 9bd72ca3..9dc35643 100644 --- a/skimage/feature/setup.py +++ b/skimage/feature/setup.py @@ -15,7 +15,7 @@ def configuration(parent_package='', top_path=None): cython(['corner_cy.pyx'], working_path=base_path) cython(['censure_cy.pyx'], working_path=base_path) cython(['orb_cy.pyx'], working_path=base_path) - cython(['_brief_cy.pyx'], working_path=base_path) + cython(['brief_cy.pyx'], working_path=base_path) cython(['match_cy.pyx'], working_path=base_path) cython(['_texture.pyx'], working_path=base_path) cython(['_template.pyx'], working_path=base_path) @@ -26,7 +26,7 @@ def configuration(parent_package='', top_path=None): include_dirs=[get_numpy_include_dirs()]) config.add_extension('orb_cy', sources=['orb_cy.c'], include_dirs=[get_numpy_include_dirs()]) - config.add_extension('_brief_cy', sources=['_brief_cy.c'], + config.add_extension('brief_cy', sources=['brief_cy.c'], include_dirs=[get_numpy_include_dirs()]) config.add_extension('match_cy', sources=['match_cy.c'], include_dirs=[get_numpy_include_dirs()]) diff --git a/skimage/feature/tests/_test_censure.py b/skimage/feature/tests/_test_censure.py deleted file mode 100644 index 4cd2ad68..00000000 --- a/skimage/feature/tests/_test_censure.py +++ /dev/null @@ -1,89 +0,0 @@ -import numpy as np -from numpy.testing import assert_array_equal, assert_raises -from skimage.data import moon -from skimage.feature import keypoints_censure - - -def test_keypoints_censure_color_image_unsupported_error(): - """Censure keypoints can be extracted from gray-scale images only.""" - img = np.zeros((20, 20, 3)) - assert_raises(ValueError, keypoints_censure, img) - - -def test_keypoints_censure_mode_validity_error(): - """Mode argument in keypoints_censure can be either DoB, Octagon or - STAR.""" - img = np.zeros((20, 20)) - assert_raises(ValueError, keypoints_censure, img, mode='dummy') - - -def test_keypoints_censure_scale_range_error(): - """Difference between the the max_scale and min_scale parameters in - keypoints_censure should be greater than or equal to two.""" - img = np.zeros((20, 20)) - assert_raises(ValueError, keypoints_censure, img, min_scale=1, max_scale=2) - - -def test_keypoints_censure_moon_image_dob(): - """Verify the actual Censure keypoints and their corresponding scale with - the expected values for DoB filter.""" - img = moon() - actual_kp_dob, actual_scale = keypoints_censure(img, 1, 7, 'DoB', 0.15) - expected_kp_dob = np.array([[ 21, 497], - [ 36, 46], - [119, 350], - [185, 177], - [287, 250], - [357, 239], - [463, 116], - [464, 132], - [467, 260]]) - expected_scale = np.array([3, 4, 4, 2, 2, 3, 2, 2, 2]) - - assert_array_equal(expected_kp_dob, actual_kp_dob) - assert_array_equal(expected_scale, actual_scale) - - -def test_keypoints_censure_moon_image_octagon(): - """Verify the actual Censure keypoints and their corresponding scale with - the expected values for Octagon filter.""" - img = moon() - actual_kp_octagon, actual_scale = keypoints_censure(img, 1, 7, 'Octagon', - 0.15) - expected_kp_octagon = np.array([[ 21, 496], - [ 35, 46], - [287, 250], - [356, 239], - [463, 116]]) - - expected_scale = np.array([3, 4, 2, 2, 2]) - - assert_array_equal(expected_kp_octagon, actual_kp_octagon) - assert_array_equal(expected_scale, actual_scale) - - -def test_keypoints_censure_moon_image_star(): - """Verify the actual Censure keypoints and their corresponding scale with - the expected values for STAR filter.""" - img = moon() - actual_kp_star, actual_scale = keypoints_censure(img, 1, 7, 'STAR', 0.15) - expected_kp_star = np.array([[ 21, 497], - [ 36, 46], - [117, 356], - [185, 177], - [260, 227], - [287, 250], - [357, 239], - [451, 281], - [463, 116], - [467, 260]]) - - expected_scale = np.array([3, 3, 6, 2, 3, 2, 3, 5, 2, 2]) - - assert_array_equal(expected_kp_star, actual_kp_star) - assert_array_equal(expected_scale, actual_scale) - - -if __name__ == '__main__': - from numpy import testing - testing.run_module_suite() diff --git a/skimage/feature/tests/test_censure.py b/skimage/feature/tests/test_censure.py new file mode 100644 index 00000000..611604b6 --- /dev/null +++ b/skimage/feature/tests/test_censure.py @@ -0,0 +1,89 @@ +import numpy as np +from numpy.testing import assert_array_equal, assert_raises +from skimage.data import moon +from skimage.feature import CenSurE + + +img = moon() + + +def test_keypoints_censure_color_image_unsupported_error(): + """Censure keypoints can be extracted from gray-scale images only.""" + assert_raises(ValueError, CenSurE().detect, np.zeros((20, 20, 3))) + + +def test_keypoints_censure_mode_validity_error(): + """Mode argument in keypoints_censure can be either DoB, Octagon or + STAR.""" + assert_raises(ValueError, CenSurE, mode='dummy') + + +def test_keypoints_censure_scale_range_error(): + """Difference between the the max_scale and min_scale parameters in + keypoints_censure should be greater than or equal to two.""" + assert_raises(ValueError, CenSurE, min_scale=1, max_scale=2) + + +def test_keypoints_censure_moon_image_dob(): + """Verify the actual Censure keypoints and their corresponding scale with + the expected values for DoB filter.""" + detector = CenSurE() + keypoints, scales = detector.detect(img) + expected_keypoints = np.array([[ 21, 497], + [ 36, 46], + [119, 350], + [185, 177], + [287, 250], + [357, 239], + [463, 116], + [464, 132], + [467, 260]]) + expected_scales = np.array([3, 4, 4, 2, 2, 3, 2, 2, 2]) + + assert_array_equal(expected_keypoints, keypoints) + assert_array_equal(expected_scales, scales) + + +def test_keypoints_censure_moon_image_octagon(): + """Verify the actual Censure keypoints and their corresponding scale with + the expected values for Octagon filter.""" + + detector = CenSurE(mode='octagon') + keypoints, scales = detector.detect(img) + expected_keypoints = np.array([[ 21, 496], + [ 35, 46], + [287, 250], + [356, 239], + [463, 116]]) + + expected_scales = np.array([3, 4, 2, 2, 2]) + + assert_array_equal(expected_keypoints, keypoints) + assert_array_equal(expected_scales, scales) + + +def test_keypoints_censure_moon_image_star(): + """Verify the actual Censure keypoints and their corresponding scale with + the expected values for STAR filter.""" + detector = CenSurE(mode='star') + keypoints, scales = detector.detect(img) + expected_keypoints = np.array([[ 21, 497], + [ 36, 46], + [117, 356], + [185, 177], + [260, 227], + [287, 250], + [357, 239], + [451, 281], + [463, 116], + [467, 260]]) + + expected_scale = np.array([3, 3, 6, 2, 3, 2, 3, 5, 2, 2]) + + assert_array_equal(expected_keypoints, keypoints) + assert_array_equal(expected_scale, scales) + + +if __name__ == '__main__': + from numpy import testing + testing.run_module_suite() From 2705907270549a4b6990e5da005ae453a7ad560c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 01:46:16 +0100 Subject: [PATCH 227/577] Refactor ORB --- skimage/feature/__init__.py | 20 +- skimage/feature/censure.py | 4 +- skimage/feature/orb.py | 334 +++++++++++++++++------------- skimage/feature/orb_cy.pyx | 12 +- skimage/feature/tests/test_orb.py | 115 ++++++---- 5 files changed, 284 insertions(+), 201 deletions(-) diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index 6c9c0df5..4f541227 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -11,9 +11,10 @@ from .corner_cy import corner_moravec, corner_orientations from .template import match_template from .brief import BRIEF from .censure import CenSurE +from .orb import ORB from .match import match_binary_descriptors from .util import pairwise_hamming_distance -from .orb import keypoints_orb, descriptor_orb + __all__ = ['daisy', 'hog', @@ -21,6 +22,10 @@ __all__ = ['daisy', 'greycoprops', 'local_binary_pattern', 'peak_local_max', + 'structure_tensor', + 'structure_tensor_eigvals', + 'hessian_matrix', + 'hessian_matrix_eigvals', 'corner_kitchen_rosenfeld', 'corner_harris', 'corner_shi_tomasi', @@ -28,16 +33,11 @@ __all__ = ['daisy', 'corner_subpix', 'corner_peaks', 'corner_moravec', + 'corner_fast', + 'corner_orientations', 'match_template', 'BRIEF', 'CenSurE', + 'ORB', 'pairwise_hamming_distance', - 'match_binary_descriptors', - 'corner_fast', - 'corner_orientations', - 'structure_tensor', - 'structure_tensor_eigvals', - 'hessian_matrix', - 'hessian_matrix_eigvals', - 'keypoints_orb', - 'descriptor_orb'] + 'match_binary_descriptors'] diff --git a/skimage/feature/censure.py b/skimage/feature/censure.py index dc9cd58c..a2830033 100644 --- a/skimage/feature/censure.py +++ b/skimage/feature/censure.py @@ -182,8 +182,8 @@ class CenSurE(FeatureDetector): ------- keypoints : (N, 2) array Keypoint coordinates as ``(row, col)``. - scales : (N, 1) array - Corresponding scales of the N extracted keypoints. + scales : (N, ) array + Corresponding scales. """ diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 74414465..62bf257f 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -1,6 +1,7 @@ import numpy as np -from skimage.feature.util import (_mask_border_keypoints, +from skimage.feature.util import (FeatureDetector, DescriptorExtractor, + _mask_border_keypoints, _prepare_grayscale_input_2D) from skimage.feature import (corner_fast, corner_orientations, corner_peaks, @@ -17,18 +18,13 @@ for i in range(-15, 16): OFAST_MASK[15 + j, 15 + i] = 1 +class ORB(FeatureDetector, DescriptorExtractor): - - -def keypoints_orb(image, n_keypoints=500, fast_n=9, fast_threshold=0.08, - harris_k=0.04, downscale=1.2, n_scales=8): - - """Detect oriented FAST keypoints. + """Oriented FAST and rotated BRIEF feature detector and binary descriptor + extractor. Parameters ---------- - image : 2D ndarray - Input image. n_keypoints : int Number of keypoints to be returned. The function will return the best ``n_keypoints`` according to the Harris corner response if more than @@ -58,165 +54,223 @@ def keypoints_orb(image, n_keypoints=500, fast_n=9, fast_threshold=0.08, Maximum number of scales from the bottom of the image pyramid to extract the features from. - Returns - ------- - keypoints : (N, ...) recarray - Record array as returned by `skimage.feature.create_keypoint_recarray` - with the fields: `row`, `col`, `scale`, `orientation` and `response`. - References ---------- .. [1] Ethan Rublee, Vincent Rabaud, Kurt Konolige and Gary Bradski - "ORB : An efficient alternative to SIFT and SURF" + "ORB: An efficient alternative to SIFT and SURF" http://www.vision.cs.chubu.ac.jp/CV-R/pdf/Rublee_iccv2011.pdf - Examples - -------- - >>> from skimage.feature import keypoints_orb, descriptor_orb - >>> square = np.zeros((50, 50)) - >>> square[20:30, 20:30] = 1 - >>> keypoints = keypoints_orb(square, n_keypoints=8, n_scales=2) - >>> keypoints.shape - (8,) - >>> keypoints.row - array([ 29. , 29. , 20. , 20. , 20.4, 20.4, 28.8, 28.8]) - >>> keypoints.col - array([ 29. , 20. , 29. , 20. , 28.8, 20.4, 28.8, 20.4]) - >>> keypoints.octave - array([ 1. , 1. , 1. , 1. , 1.2, 1.2, 1.2, 1.2]) - >>> np.rad2deg(keypoints.orientation) - array([-135., -45., 135., 45., 135., 45., -135., -45.]) - >>> keypoints.response - array([ 21.4776577 , 21.4776577 , 21.4776577 , 21.4776577 , - 14.03845308, 14.03845308, 14.03845308, 14.03845308]) - """ - image = _prepare_grayscale_input_2D(image) + def __init__(self, downscale=1.2, n_scales=8, + n_keypoints=500, fast_n=9, fast_threshold=0.08, + harris_k=0.04): + self.downscale = downscale + self.n_scales = n_scales + self.n_keypoints = n_keypoints + self.fast_n = fast_n + self.fast_threshold = fast_threshold + self.harris_k = harris_k - pyramid = list(pyramid_gaussian(image, n_scales - 1, downscale)) - - keypoints_list = [] - orientations_list = [] - scales_list = [] - harris_response_list = [] - - for octave in range(len(pyramid)): + def _build_pyramid(self, image): + image = _prepare_grayscale_input_2D(image) + return list(pyramid_gaussian(image, self.n_scales - 1, self.downscale)) + def _detect_octave(self, octave_image): # Extract keypoints for current octave - corners = corner_peaks(corner_fast(pyramid[octave], fast_n, - fast_threshold), min_distance=1) + fast_response = corner_fast(octave_image, self.fast_n, + self.fast_threshold) + keypoints = corner_peaks(fast_response, min_distance=1) - # Scale keypoint coordinates so they correspond to the original - # image shape - keypoints_list.append(corners * downscale ** octave) + mask = _mask_border_keypoints(octave_image.shape, keypoints, + distance=16) + keypoints = keypoints[mask] - orientations_list.append(corner_orientations(pyramid[octave], corners, - OFAST_MASK)) + orientations = corner_orientations(octave_image, keypoints, + OFAST_MASK) - scales_list.append(octave * np.ones(corners.shape[0], dtype=np.intp)) + harris_response = corner_harris(octave_image, method='k', + k=self.harris_k) + responses = harris_response[keypoints[:, 0], keypoints[:, 1]] - harris_response = corner_harris(pyramid[octave], method='k', - k=harris_k) - harris_response_list.append(harris_response[corners[:, 0], - corners[:, 1]]) + return keypoints, orientations, responses - keypoints_array = np.vstack(keypoints_list) - orientations = np.hstack(orientations_list) - scales = downscale ** np.hstack(scales_list) - harris_measure = np.hstack(harris_response_list) - keypoints = create_keypoint_recarray(keypoints_array[:, 0], - keypoints_array[:, 1], - scales, orientations, - harris_measure) + def detect(self, image): + """Detect oriented FAST keypoints along with the corresponding scale. - if keypoints.shape[0] < n_keypoints: - return keypoints - else: - # Choose best n_keypoints according to Harris corner response - best_indices = harris_measure.argsort()[::-1][:n_keypoints] - return keypoints[best_indices] + Parameters + ---------- + image : 2D array + Input image. + Returns + ------- + keypoints : (N, 2) array + Keypoint coordinates as ``(row, col)``. + scales : (N, ) array + Corresponding scales. + orientations : (N, ) array + Corresponding orientations in radians. + responses : (N, ) array + Corresponding Harris corner responses. -def descriptor_orb(image, keypoints, downscale=1.2, n_scales=8): - """Compute rBRIEF descriptors for keypoints. + """ - Parameters - ---------- - image : 2D ndarray - Input image. - keypoints : (N, ...) recarray - Record array as returned by `skimage.feature.create_keypoint_recarray` - with the fields: `row`, `col`, `scale`, `orientation` and `response`. - downscale : float - Downscale factor for the image pyramid. Should be the same as that - used in ``keypoints_orb``. - n_scales : int - Number of scales from the bottom of the image pyramid to extract - the features from. + pyramid = self._build_pyramid(image) - Returns - ------- - descriptors : (P, 256) bool ndarray - 2darray of type bool describing the P keypoints obtained after - filtering out those near the image border. Size of each descriptor - is 32 bytes or 256 bits. - filtered_keypoints : (P, 2) ndarray - Record array with fields row, col, octave, orientation, response for - P keypoints obtained after removing out those that are near the - border. + keypoints_list = [] + orientations_list = [] + octave_list = [] + responses_list = [] - References - ---------- - .. [1] Ethan Rublee, Vincent Rabaud, Kurt Konolige and Gary Bradski - "ORB : An efficient alternative to SIFT and SURF" - http://www.vision.cs.chubu.ac.jp/CV-R/pdf/Rublee_iccv2011.pdf + for octave in range(len(pyramid)): - Examples - -------- - >>> import numpy as np - >>> from skimage.feature import keypoints_orb, descriptor_orb - >>> square = np.zeros((50, 50)) - >>> square[20:30, 20:30] = 1 - >>> keypoints = keypoints_orb(square, n_keypoints=8, n_scales=2) - >>> keypoints.shape - (8,) - >>> descriptors, filtered_keypoints = descriptor_orb(square, keypoints, n_scales=2) - >>> filtered_keypoints.shape - (8,) - >>> descriptors.shape - (8, 256) + octave_image = np.ascontiguousarray(pyramid[octave]) - """ - image = _prepare_grayscale_input_2D(image) + keypoints, orientations, responses = \ + self._detect_octave(octave_image) - pyramid = list(pyramid_gaussian(image, n_scales - 1, downscale)) + keypoints_list.append(keypoints * self.downscale ** octave) + orientations_list.append(orientations) + octave_list.append(self.downscale ** octave + * np.ones(keypoints.shape[0], dtype=np.intp)) + responses_list.append(responses) - descriptors_list = [] - keypoints_list = [] + keypoints = np.vstack(keypoints_list) + orientations = np.hstack(orientations_list) + scales = np.hstack(octave_list) + responses = np.hstack(responses_list) - for scale in range(n_scales): - curr_image = np.ascontiguousarray(pyramid[scale]) + if keypoints.shape[0] < self.n_keypoints: + return keypoints, scales, orientations, responses + else: + # Choose best n_keypoints according to Harris corner response + best_indices = responses.argsort()[::-1][:self.n_keypoints] + return (keypoints[best_indices], scales[best_indices], + orientations[best_indices], responses[best_indices]) - curr_scale_mask = (np.log(keypoints.octave) / - np.log(downscale)).astype(np.intp) == scale - if np.sum(curr_scale_mask) > 0: - curr_keypoints = keypoints[curr_scale_mask] - curr_scale_kpts = np.squeeze(np.dstack((curr_keypoints.row / curr_keypoints.octave, - curr_keypoints.col / curr_keypoints.octave))) - border_mask = _mask_border_keypoints(curr_image, - curr_scale_kpts, - dist=16) + def _extract_octave(self, octave_image, keypoints, orientations): + mask = _mask_border_keypoints(octave_image.shape, keypoints, + distance=16) + keypoints = np.array(keypoints[mask], dtype=np.intp, order='C', + copy=False) + orientations = np.array(orientations[mask], dtype=np.double, order='C', + copy=False) - curr_keypoints = curr_keypoints[border_mask] + descriptors = _orb_loop(octave_image, keypoints, orientations) - curr_scale_kpts = np.ascontiguousarray(np.round(curr_scale_kpts[border_mask]).astype(np.intp)) - curr_scale_orientation = np.ascontiguousarray(curr_keypoints.orientation) - curr_scale_descriptors = _orb_loop(curr_image, curr_scale) + return descriptors, mask - descriptors_list.append(curr_scale_descriptors) - keypoints_list.append(curr_keypoints) + def extract(self, image, keypoints, scales, orientations): + """Extract rBRIEF binary descriptors for given keypoints in image. - descriptors = np.vstack(descriptors_list).view(np.bool) - filtered_keypoints = np.hstack(keypoints_list) - return descriptors, filtered_keypoints.view(np.recarray) + Parameters + ---------- + image : 2D array + Input image. + keypoints : (N, 2) array + Keypoint coordinates as ``(row, col)``. + scales : (N, ) array + Corresponding scales. + orientations : (N, ) array + Corresponding orientations in radians. + + Returns + ------- + descriptors : (Q, `descriptor_size`) array of dtype bool + 2D array of binary descriptors of size `descriptor_size` for Q + keypoints after filtering out border keypoints with value at an + index ``(i, j)`` either being ``True`` or ``False`` representing + the outcome of the intensity comparison for i-th keypoint on j-th + decision pixel-pair. It is ``Q == np.sum(mask)``. + mask : (N, ) array of dtype bool + Mask indicating whether a keypoint has been filtered out + (``False``) or is described in the `descriptors` array (``True``). + + """ + + pyramid = self._build_pyramid(image) + + descriptors_list = [] + mask_list = [] + + # Determine octaves from scales + octaves = (np.log(scales) / np.log(self.downscale)).astype(np.intp) + + for octave in range(len(pyramid)): + + # Mask for all keypoints in current octave + octave_mask = octaves == octave + + if np.sum(octave_mask) > 0: + + octave_image = np.ascontiguousarray(pyramid[octave]) + + octave_keypoints = keypoints[octave_mask] + octave_keypoints /= self.downscale ** octave + + octave_orientations = orientations[octave_mask] + + descriptors, mask = self._extract_octave(octave_image, + octave_keypoints, + octave_orientations) + + descriptors_list.append(descriptors) + mask_list.append(mask) + + descriptors = np.vstack(descriptors_list).view(np.bool) + mask = np.hstack(mask_list) + + return descriptors, mask + + def detect_and_extract(self, image): + """Detect oriented FAST keypoints and extract rBRIEF descriptors. + + Parameters + ---------- + image : 2D array + Input image. + + Returns + ------- + keypoints : (Q, 2) array + Keypoint coordinates as ``(row, col)``. + descriptors : (Q, `descriptor_size`) array of dtype bool + 2D array of binary descriptors of size `descriptor_size` for Q + keypoints after filtering out border keypoints with value at an + index ``(i, j)`` either being ``True`` or ``False`` representing + the outcome of the intensity comparison for i-th keypoint on j-th + decision pixel-pair. It is ``Q == np.sum(mask)``. + + """ + + pyramid = self._build_pyramid(image) + + keypoints_list = [] + responses_list = [] + descriptors_list = [] + + for octave in range(len(pyramid)): + + octave_image = np.ascontiguousarray(pyramid[octave]) + + keypoints, orientations, responses = \ + self._detect_octave(octave_image) + + descriptors, mask = self._extract_octave(octave_image, keypoints, + orientations) + + keypoints_list.append(keypoints * self.downscale ** octave) + responses_list.append(responses) + descriptors_list.append(descriptors) + + keypoints = np.vstack(keypoints_list) + responses = np.hstack(responses_list) + descriptors = np.vstack(descriptors_list).view(np.bool) + + if keypoints.shape[0] < self.n_keypoints: + return keypoints, descriptors + else: + # Choose best n_keypoints according to Harris corner response + best_indices = responses.argsort()[::-1][:self.n_keypoints] + return (keypoints[best_indices], descriptors[best_indices]) diff --git a/skimage/feature/orb_cy.pyx b/skimage/feature/orb_cy.pyx index 68911bb9..b497c74d 100644 --- a/skimage/feature/orb_cy.pyx +++ b/skimage/feature/orb_cy.pyx @@ -13,21 +13,23 @@ from libc.math cimport sin, cos, round POS = np.loadtxt(os.path.join(data_dir, "orb_descriptor_positions.txt"), dtype=np.int8) +POS0 = np.ascontiguousarray(POS[:, :2]) +POS1 = np.ascontiguousarray(POS[:, 2:]) def _orb_loop(double[:, ::1] image, Py_ssize_t[:, ::1] keypoints, - double[:] orientations, pos): + double[:] orientations): cdef Py_ssize_t i, d, kr, kc, pr0, pr1, pc0, pc1, spr0, spc0, spr1, spc1 cdef int[:, ::1] steered_pos0, steered_pos1 cdef double angle cdef char[:, ::1] descriptors = np.zeros((keypoints.shape[0], - pos.shape[0]), dtype=np.uint8) - cdef char[:, ::1] cpos0 = pos[:, :2] - cdef char[:, ::1] cpos1 = pos[:, 2:] - + POS.shape[0]), dtype=np.uint8) + cdef char[:, ::1] cpos0 = POS0 + cdef char[:, ::1] cpos1 = POS1 for i in range(descriptors.shape[0]): + angle = orientations[i] sin_a = sin(angle) cos_a = cos(angle) diff --git a/skimage/feature/tests/test_orb.py b/skimage/feature/tests/test_orb.py index 956ff4b4..f857ca75 100644 --- a/skimage/feature/tests/test_orb.py +++ b/skimage/feature/tests/test_orb.py @@ -1,21 +1,24 @@ import numpy as np from numpy.testing import assert_array_equal, assert_almost_equal -from skimage.feature import keypoints_orb, descriptor_orb +from skimage.feature import ORB from skimage.data import lena from skimage.color import rgb2gray -def test_keypoints_orb_desired_no_of_keypoints(): - img = rgb2gray(lena()) - keypoints = keypoints_orb(img, n_keypoints=10, fast_n=12, - fast_threshold=0.20) - exp_row = np.array([ 435. , 435.6 , 376. , 455. , 434.88, 269. , - 375.6 , 310.8 , 413. , 311.04]) - exp_col = np.array([ 180. , 180. , 156. , 176. , 180. , 111. , - 156. , 172.8, 70. , 172.8]) +img = rgb2gray(lena()) - exp_octaves = np.array([ 1. , 1.2 , 1. , 1. , 1.44 , 1. , - 1.2 , 1.2 , 1. , 1.728]) + +def test_keypoints_orb_desired_no_of_keypoints(): + detector_extractor = ORB(n_keypoints=10, fast_n=12, fast_threshold=0.20) + keypoints, scales, orientations, responses = detector_extractor.detect(img) + + exp_rows = np.array([ 435. , 435.6 , 376. , 455. , 434.88, 269. , + 375.6 , 310.8 , 413. , 311.04]) + exp_cols = np.array([ 180. , 180. , 156. , 176. , 180. , 111. , + 156. , 172.8, 70. , 172.8]) + + exp_scales = np.array([ 1. , 1.2 , 1. , 1. , 1.44 , 1. , + 1.2 , 1.2 , 1. , 1.728]) exp_orientations = np.array([-175.64733392, -167.94842949, -148.98350192, -142.03599837, -176.08535837, -53.08162354, @@ -25,24 +28,30 @@ def test_keypoints_orb_desired_no_of_keypoints(): 0.5626413 , 0.5097993 , 0.44351774, 0.39154173, 0.39084861, 0.39063076, 0.37602487]) - assert_almost_equal(exp_row, keypoints.row) - assert_almost_equal(exp_col, keypoints.col) - assert_almost_equal(exp_octaves, keypoints.octave) - assert_almost_equal(exp_response, keypoints.response) - assert_almost_equal(exp_orientations, np.rad2deg(keypoints.orientation)) + + assert_almost_equal(exp_rows, keypoints[:, 0]) + assert_almost_equal(exp_cols, keypoints[:, 1]) + assert_almost_equal(exp_scales, scales) + assert_almost_equal(exp_response, responses) + assert_almost_equal(exp_orientations, np.rad2deg(orientations), 5) + + keypoints, _ = detector_extractor.detect_and_extract(img) + assert_almost_equal(exp_rows, keypoints[:, 0]) + assert_almost_equal(exp_cols, keypoints[:, 1]) def test_keypoints_orb_less_than_desired_no_of_keypoints(): img = rgb2gray(lena()) - keypoints = keypoints_orb(img, n_keypoints=15, fast_n=12, - fast_threshold=0.33, downscale=2, n_scales=2) + detector_extractor = ORB(n_keypoints=15, fast_n=12, + fast_threshold=0.33, downscale=2, n_scales=2) + keypoints, scales, orientations, responses = detector_extractor.detect(img) - exp_row = np.array([ 67., 247., 269., 413., 435., 230., 264., - 330., 372.]) - exp_col = np.array([ 157., 146., 111., 70., 180., 136., 336., - 148., 156.]) + exp_rows = np.array([ 67., 247., 269., 413., 435., 230., 264., + 330., 372.]) + exp_cols = np.array([ 157., 146., 111., 70., 180., 136., 336., + 148., 156.]) - exp_octaves = np.array([ 1., 1., 1., 1., 1., 2., 2., 2., 2.]) + exp_scales = np.array([ 1., 1., 1., 1., 1., 2., 2., 2., 2.]) exp_orientations = np.array([-105.76503839, -96.28973044, -53.08162354, -173.4479964 , -175.64733392, -106.07927215, @@ -52,33 +61,51 @@ def test_keypoints_orb_less_than_desired_no_of_keypoints(): 0.39063076, 0.96770745, 0.04935129, 0.21431068, 0.15826555, 0.42403573]) - assert_almost_equal(exp_row, keypoints.row) - assert_almost_equal(exp_col, keypoints.col) - assert_almost_equal(exp_octaves, keypoints.octave) - assert_almost_equal(exp_response, keypoints.response) - assert_almost_equal(exp_orientations, np.rad2deg(keypoints.orientation)) + assert_almost_equal(exp_rows, keypoints[:, 0]) + assert_almost_equal(exp_cols, keypoints[:, 1]) + assert_almost_equal(exp_scales, scales) + assert_almost_equal(exp_response, responses) + assert_almost_equal(exp_orientations, np.rad2deg(orientations), 5) + + keypoints, _ = detector_extractor.detect_and_extract(img) + assert_almost_equal(exp_rows, keypoints[:, 0]) + assert_almost_equal(exp_cols, keypoints[:, 1]) def test_descriptor_orb(): - img = rgb2gray(lena()) - keypoints = keypoints_orb(img, n_keypoints=10, fast_n=12, - fast_threshold=0.20) - descriptors, filtered_keypoints = descriptor_orb(img, keypoints) + detector_extractor = ORB(fast_n=12, fast_threshold=0.20) - descriptors_120_129 = np.array([[ True, False, False, True, False, False, False, False, False, False], - [ True, True, False, False, True, False, False, True, False, True], - [False, True, True, False, True, False, True, True, True, True], - [False, False, False, True, True, False, True, False, True, False], - [False, True, True, True, True, False, True, True, True, False], - [ True, False, True, True, True, False, False, False, True, False], - [ True, False, True, False, True, False, True, True, False, True], - [ True, True, True, True, True, True, False, True, True, True], - [ True, True, True, False, True, False, True, True, True, False], - [ True, False, False, False, False, False, True, True, True, False]], - dtype=bool) + exp_descriptors = np.array([[ True, False, True, True, False, False, False, False, False, False], + [False, False, True, True, False, True, True, False, True, True], + [ True, False, False, False, True, False, True, True, True, False], + [ True, False, False, True, False, True, True, False, False, False], + [False, True, True, True, False, False, False, True, True, False], + [False, False, False, False, False, True, False, True, True, True], + [False, True, True, True, True, False, False, True, False, True], + [ True, True, True, False, True, True, True, True, False, False], + [ True, True, False, True, True, True, True, False, False, False], + [ True, False, False, False, False, True, False, False, True, True], + [ True, False, False, False, True, True, True, False, False, False], + [False, False, True, False, True, False, False, True, False, False], + [False, False, True, True, False, False, False, False, False, True], + [ True, True, False, False, False, True, True, True, True, True], + [ True, True, True, False, False, True, False, True, True, False], + [False, True, True, False, False, True, True, True, True, True], + [ True, True, True, False, False, False, False, True, True, True], + [False, False, False, False, True, False, False, True, True, False], + [False, True, False, False, True, False, False, False, True, True], + [ True, False, True, False, False, False, True, True, False, False]], dtype=bool) + keypoints1, scales1, orientations1, responses1 \ + = detector_extractor.detect(img) + descriptors1, mask1 \ + = detector_extractor.extract(img, keypoints1, scales1, orientations1) + assert_array_equal(exp_descriptors, descriptors1[100:120, 10:20]) - assert_array_equal(descriptors_120_129, descriptors[:, 120:130]) + keypoints2, descriptors2 = detector_extractor.detect_and_extract(img) + assert_array_equal(exp_descriptors, descriptors2[100:120, 10:20]) + + assert_array_equal(keypoints1[mask1], keypoints2) if __name__ == '__main__': From f22e00e693c811f8b6d4c593cc2bc6c65b95e938 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 03:55:40 +0100 Subject: [PATCH 228/577] Refactor match_descriptors and fix small bugs in ORB --- doc/examples/plot_orb_matching.py | 101 ++++++-------- skimage/feature/__init__.py | 6 +- skimage/feature/corner_cy.pyx | 9 +- skimage/feature/match.py | 102 ++++++--------- skimage/feature/match_cy.pyx | 18 --- skimage/feature/orb.py | 8 +- skimage/feature/setup.py | 3 - skimage/feature/tests/test_match.py | 195 ++++++++-------------------- skimage/feature/tests/test_orb.py | 2 - skimage/feature/util.py | 25 ---- 10 files changed, 152 insertions(+), 317 deletions(-) delete mode 100644 skimage/feature/match_cy.pyx diff --git a/doc/examples/plot_orb_matching.py b/doc/examples/plot_orb_matching.py index 0818b76c..2fc5027e 100644 --- a/doc/examples/plot_orb_matching.py +++ b/doc/examples/plot_orb_matching.py @@ -1,78 +1,63 @@ import numpy as np from skimage import data from skimage import transform as tf -from skimage.feature import (pairwise_hamming_distance, - match_binary_descriptors, corner_harris, - corner_peaks, keypoints_orb, descriptor_orb) +from skimage.feature import (match_descriptors, corner_harris, + corner_peaks, ORB) from skimage.color import rgb2gray from skimage import img_as_float import matplotlib.pyplot as plt -# Initializing parameters for transformation -rotate = 0.5 -translate = (-100, -200) -scaling = (1.5, 1.5) -# Creating a transformed image from the original Lena image by scaling and -# rotating it -img_color = data.lena() -tform = tf.AffineTransform(scale = scaling, rotation=rotate, - translation=translate) -transformed_img_color = tf.warp(img_color, tform) -img = rgb2gray(img_color) -transformed_img = rgb2gray(transformed_img_color) +img1_color = data.lena() +img2_color = tf.rotate(img1_color, 180) +tform = tf.AffineTransform(scale=(1.3, 1.1), rotation=0.5, + translation=(0, -200)) +img3_color = tf.warp(img1_color, tform) +img1 = rgb2gray(img1_color) +img2 = rgb2gray(img2_color) +img3 = rgb2gray(img3_color) -# Extracting oFAST keypoints and computing their rBRIEF descriptors -keypoints1 = keypoints_orb(img, n_keypoints=500) -keypoints1.shape -descriptors1, keypoints1 = descriptor_orb(img, keypoints1) -keypoints1.shape -descriptors1.shape +descriptor_extractor = ORB(n_keypoints=200) +keypoints1, descriptors1 = descriptor_extractor.detect_and_extract(img1) +keypoints2, descriptors2 = descriptor_extractor.detect_and_extract(img2) +keypoints3, descriptors3 = descriptor_extractor.detect_and_extract(img3) -keypoints2 = keypoints_orb(transformed_img, - n_keypoints=500) -keypoints2.shape -descriptors2, keypoints2 = descriptor_orb(transformed_img, keypoints2) -keypoints2.shape -descriptors2.shape +idxs1, idxs2 = match_descriptors(descriptors1, descriptors2, cross_check=True) +src12 = keypoints1[idxs1] +dst12 = keypoints2[idxs2] -#Initializing parameters for Descriptor matching -match_threshold = 0.3 -match_cross_check = True +idxs1, idxs3 = match_descriptors(descriptors1, descriptors3, cross_check=True) +src13 = keypoints1[idxs1] +dst13 = keypoints3[idxs3] -pairwise_hamming_distance(descriptors1, descriptors2) -matched_keypoints, mask1, mask2 = match_binary_descriptors(keypoints1, - descriptors1, - keypoints2, - descriptors2, - cross_check=match_cross_check, - threshold=match_threshold) +img12 = np.concatenate((img_as_float(img1_color), + img_as_float(img2_color)), axis=1) +img13 = np.concatenate((img_as_float(img1_color), + img_as_float(img3_color)), axis=1) -matched_keypoints.shape +imgs = (img12, img13) +srcs = (src12, src13) +dsts = (dst12, dst13) -# Plotting the matched correspondences in both the images using matplotlib -src = matched_keypoints[:, 0, :] -dst = matched_keypoints[:, 1, :] -src_scale = 10 * (keypoints1.octave[mask1] + 1) ** 1.5 -dst_scale = 10 * (keypoints2.octave[mask2] + 1) ** 1.5 +offset = img1.shape -img_combined = np.concatenate((img_as_float(img_color), - img_as_float(transformed_img_color)), axis=1) -offset = img.shape +fig, ax = plt.subplots(nrows=2, ncols=1) -fig, ax = plt.subplots(nrows=1, ncols=1) -plt.gray() +for i in range(2): -ax.imshow(img_combined, interpolation='nearest') -ax.axis('off') -ax.axis((0, 2 * offset[1], offset[0], 0)) -ax.set_title('Matched correspondences : Rotation = %f; Scale = %s; Translation = %s; threshold = %f; cross_check = %r' % (rotate, scaling, translate, match_threshold, match_cross_check)) + ax[i].imshow(imgs[i], interpolation='nearest') + ax[i].axis('off') + ax[i].axis((0, 2 * offset[1], offset[0], 0)) -for m in range(len(src)): - c = np.random.rand(3,1) - ax.plot((src[m, 1], dst[m, 1] + offset[1]), (src[m, 0], dst[m, 0]), '-', color=c) - ax.scatter(src[m, 1], src[m, 0], src_scale[m], facecolors='none', edgecolors=c) - ax.scatter(dst[m, 1] + offset[1], dst[m, 0], dst_scale[m], facecolors='none', edgecolors=c) + src = srcs[i] + dst = dsts[i] + + for m in range(len(src)): + color = np.random.rand(3, 1) + ax[i].plot((src[m, 1], dst[m, 1] + offset[1]), (src[m, 0], dst[m, 0]), + '-', color=color) + ax[i].scatter(src[m, 1], src[m, 0], facecolors='none', edgecolors=color) + ax[i].scatter(dst[m, 1] + offset[1], dst[m, 0], facecolors='none', + edgecolors=color) plt.show() - diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index 4f541227..4344c311 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -12,8 +12,7 @@ from .template import match_template from .brief import BRIEF from .censure import CenSurE from .orb import ORB -from .match import match_binary_descriptors -from .util import pairwise_hamming_distance +from .match import match_descriptors __all__ = ['daisy', @@ -39,5 +38,4 @@ __all__ = ['daisy', 'BRIEF', 'CenSurE', 'ORB', - 'pairwise_hamming_distance', - 'match_binary_descriptors'] + 'match_descriptors'] diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index c337fafd..86ded549 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -7,7 +7,7 @@ cimport numpy as cnp from libc.float cimport DBL_MAX from libc.math cimport atan2 -from skimage.util import img_as_float +from skimage.util import img_as_float, pad from skimage.color import rgb2grey from .util import _prepare_grayscale_input_2D @@ -240,7 +240,8 @@ def corner_orientations(image, Py_ssize_t[:, :] corners, mask): if mask.shape[0] % 2 != 1 or mask.shape[1] % 2 != 1: raise ValueError("Size of mask must be uneven.") - cdef double[:, :] cimage = image + cdef double[:, :] cimage = pad(image, 16, mode='constant', + constant_values=0) cdef char[:, ::1] cmask = np.ascontiguousarray(mask != 0, dtype=np.uint8) cdef Py_ssize_t i, r, c, r0, c0 @@ -253,8 +254,8 @@ def corner_orientations(image, Py_ssize_t[:, :] corners, mask): cdef double m01, m10 for i in range(corners.shape[0]): - r0 = corners[i, 0] - mrows2 - c0 = corners[i, 1] - mcols2 + r0 = corners[i, 0] - mrows2 + 16 + c0 = corners[i, 1] - mcols2 + 16 m01 = 0 m10 = 0 diff --git a/skimage/feature/match.py b/skimage/feature/match.py index 86d32eb8..c6f23f6b 100644 --- a/skimage/feature/match.py +++ b/skimage/feature/match.py @@ -1,81 +1,65 @@ import numpy as np - -from .util import pairwise_hamming_distance -from .match_cy import _binary_cross_check_loop +from scipy.spatial.distance import cdist -def match_binary_descriptors(keypoints1, descriptors1, keypoints2, - descriptors2, threshold=0.40, cross_check=True): - """Match keypoints described using binary descriptors in one image to - those in second image. +def match_descriptors(descriptors1, descriptors2, metric=None, p=2, + threshold=0, cross_check=True): + """Brute-force matching of descriptors. + + For each descriptor in the first set this matcher finds the closest + descriptor in the second set (and vice-versa in the case of enabled + cross-checking). Parameters ---------- - keypoints1 : record array with M rows - Record array with fields row, col, octave, orientation, response. - Octave, orientation and response can be None. - descriptors1 : (M, P) ndarray + descriptors1 : (M, P) array Binary descriptors of size P about M keypoints in the first image. - keypoints2 : record array with N rows - Record array with fields row, col, octave, orientation, response. - Octave, orientation and response can be None. - descriptors2 : (N, P) ndarray + descriptors2 : (N, P) array Binary descriptors of size P about N keypoints in the second image. - threshold : float in range [0, 1] - Maximum allowable hamming distance between descriptors of two keypoints + metric : {'euclidean', 'cityblock', 'minkowski', 'hamming', ...} + The metric to compute the distance between two descriptors. See + `scipy.spatial.distance.cdist` for all possible types. The hamming + distance should be used for binary descriptors. By default the L2-norm + is used for all descriptors of dtype float or double and the Hamming + distance is used for binary descriptors automatically. + p : int + The p-norm to apply for ``metric='minkowski'``. + threshold : float + Maximum allowed distance between descriptors of two keypoints in separate images to be regarded as a match. cross_check : bool If True, the matched keypoints are returned after cross checking i.e. a - matched pair (keypoint1, keypoint2) is returned iff keypoint2 is the best - match for keypoint1 in second image and keypoint1 is the best match for - keypoint2 in first image. + matched pair (keypoint1, keypoint2) is returned if keypoint2 is the + best match for keypoint1 in second image and keypoint1 is the best + match for keypoint2 in first image. Returns ------- - matches : (Q, 2, 2) ndarray - Location of Q matched keypoint pairs from two images. - idxs1 : (Q,) ndarray - Indices of keypoints in keypoints1 that have been matched. - idxs2 : (Q,) ndarray - Indices of keypoints in keypoints2 that have been matched. + indices1 : (Q, ) array + Indices of corresponding matches for first set of descriptors. + indices2 : (Q, ) array + Indices of corresponding matches for second set of descriptors. """ - if (keypoints1.shape[0] != descriptors1.shape[0] - or keypoints2.shape[0] != descriptors2.shape[0]): - raise ValueError("The number of keypoints and number of described " - "keypoints do not match.") if descriptors1.shape[1] != descriptors2.shape[1]: - raise ValueError("Descriptor sizes for matching keypoints in both " - "the images should be equal.") + raise ValueError("Descriptor length must equal.") - # Get hamming distances between keypoints1 and keypoints2 - distance = pairwise_hamming_distance(descriptors1, descriptors2) + if metric is None: + if np.issubdtype(descriptors1.dtype, np.bool): + metric = 'hamming' + else: + metric = 'euclidean' + + distances = cdist(descriptors1, descriptors2, metric=metric, p=p) + + indices1 = np.arange(descriptors1.shape[0]) + indices2 = np.argmin(distances, axis=1) if cross_check: - matched_keypoints1_index = np.argmin(distance, axis=1) - matched_keypoints2_index = np.argmin(distance, axis=0) + matches1 = np.argmin(distances, axis=0) + mask = indices1 == matches1[indices2] + indices1 = indices1[mask] + indices2 = indices2[mask] - matched_idxs = _binary_cross_check_loop(matched_keypoints1_index, - matched_keypoints2_index, - distance, threshold) - - matches = np.zeros((matched_idxs.shape[0], 2, 2), - dtype=np.intp) - idxs1 = matched_idxs[:, 0] - idxs2 = matched_idxs[:, 1] - matches[:, 0, :] = keypoints1[idxs1] - matches[:, 1, :] = keypoints2[idxs2] - - else: - temp = distance > threshold - row_check = np.any(~temp, axis=1) - matched_keypoints2 = keypoints2[np.argmin(distance, axis=1)] - matches = np.zeros((np.sum(row_check), 2, 2), - dtype=np.intp) - matches[:, 0, :] = keypoints1[row_check] - matches[:, 1, :] = matched_keypoints2[row_check] - idxs1 = np.where(row_check == True)[0] - idxs2 = np.argmin(distance, axis=1)[row_check] - - return matches, mask1, mask2 + return indices1, indices2 diff --git a/skimage/feature/match_cy.pyx b/skimage/feature/match_cy.pyx deleted file mode 100644 index 6574d573..00000000 --- a/skimage/feature/match_cy.pyx +++ /dev/null @@ -1,18 +0,0 @@ -import numpy as np - - -def _binary_cross_check_loop(Py_ssize_t[:] matched_keypoints1_index, - Py_ssize_t[:] matched_keypoints2_index, - double[:, ::1] distance, double threshold): - cdef Py_ssize_t i - cdef Py_ssize_t count = 0 - cdef Py_ssize_t[:, ::1] matched_index = np.zeros((len(matched_keypoints1_index), 2), dtype=np.intp) - - for i in range(len(matched_keypoints1_index)): - if (matched_keypoints2_index[matched_keypoints1_index[i]] == i and - distance[i, matched_keypoints1_index[i]] < threshold): - matched_index[count, 0] = i - matched_index[count, 1] = matched_keypoints1_index[i] - count += 1 - - return np.asarray(matched_index[:count, :]) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 62bf257f..013a6f94 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -151,7 +151,7 @@ class ORB(FeatureDetector, DescriptorExtractor): def _extract_octave(self, octave_image, keypoints, orientations): mask = _mask_border_keypoints(octave_image.shape, keypoints, - distance=16) + distance=20) keypoints = np.array(keypoints[mask], dtype=np.intp, order='C', copy=False) orientations = np.array(orientations[mask], dtype=np.double, order='C', @@ -260,8 +260,8 @@ class ORB(FeatureDetector, DescriptorExtractor): descriptors, mask = self._extract_octave(octave_image, keypoints, orientations) - keypoints_list.append(keypoints * self.downscale ** octave) - responses_list.append(responses) + keypoints_list.append(keypoints[mask] * self.downscale ** octave) + responses_list.append(responses[mask]) descriptors_list.append(descriptors) keypoints = np.vstack(keypoints_list) @@ -273,4 +273,4 @@ class ORB(FeatureDetector, DescriptorExtractor): else: # Choose best n_keypoints according to Harris corner response best_indices = responses.argsort()[::-1][:self.n_keypoints] - return (keypoints[best_indices], descriptors[best_indices]) + return keypoints[best_indices], descriptors[best_indices] diff --git a/skimage/feature/setup.py b/skimage/feature/setup.py index 9dc35643..c135f0d4 100644 --- a/skimage/feature/setup.py +++ b/skimage/feature/setup.py @@ -16,7 +16,6 @@ def configuration(parent_package='', top_path=None): cython(['censure_cy.pyx'], working_path=base_path) cython(['orb_cy.pyx'], working_path=base_path) cython(['brief_cy.pyx'], working_path=base_path) - cython(['match_cy.pyx'], working_path=base_path) cython(['_texture.pyx'], working_path=base_path) cython(['_template.pyx'], working_path=base_path) @@ -28,8 +27,6 @@ def configuration(parent_package='', top_path=None): include_dirs=[get_numpy_include_dirs()]) config.add_extension('brief_cy', sources=['brief_cy.c'], include_dirs=[get_numpy_include_dirs()]) - config.add_extension('match_cy', sources=['match_cy.c'], - include_dirs=[get_numpy_include_dirs()]) config.add_extension('_texture', sources=['_texture.c'], include_dirs=[get_numpy_include_dirs(), '../_shared']) config.add_extension('_template', sources=['_template.c'], diff --git a/skimage/feature/tests/test_match.py b/skimage/feature/tests/test_match.py index 9bb2c958..3b17ed4d 100644 --- a/skimage/feature/tests/test_match.py +++ b/skimage/feature/tests/test_match.py @@ -1,45 +1,32 @@ import numpy as np -from numpy.testing import assert_array_equal, assert_raises +from numpy.testing import assert_equal, assert_raises from skimage import data from skimage import transform as tf from skimage.color import rgb2gray -from skimage.feature import (descriptor_brief, match_binary_descriptors, - corner_peaks, corner_harris, - create_keypoint_recarray) +from skimage.feature import (BRIEF, match_descriptors, + corner_peaks, corner_harris) -def test_match_binary_descriptors_unequal_descriptor_keypoints_error(): - """Number of descriptors should be equal to the number of keypoints.""" - kp1 = np.array([[40, 50], - [60, 40], - [30, 70]]) - keypoints1 = create_keypoint_recarray(kp1[:, 0], kp1[:, 1]) - des1 = np.array([[True, True, False, True], - [False, True, False, True]]) - kp2 = np.array([[60, 50], - [50, 80]]) - keypoints2 = create_keypoint_recarray(kp2[:, 0], kp2[:, 1]) - des2 = np.array([[True, False, False, True], - [False, True, True, True]]) - assert_raises(ValueError, match_binary_descriptors, keypoints1, des1, keypoints2, des2) - - -def test_match_binary_descriptors_unequal_descriptor_sizes_error(): +def test_binary_descriptors_unequal_descriptor_sizes_error(): """Sizes of descriptors of keypoints to be matched should be equal.""" - kp1 = np.array([[40, 50], - [60, 40]]) - keypoints1 = create_keypoint_recarray(kp1[:, 0], kp1[:, 1]) des1 = np.array([[True, True, False, True], [False, True, False, True]]) - kp2 = np.array([[60, 50], - [50, 80]]) - keypoints2 = create_keypoint_recarray(kp2[:, 0], kp2[:, 1]) des2 = np.array([[True, False, False, True, False], [False, True, True, True, False]]) - assert_raises(ValueError, match_binary_descriptors, keypoints1, des1, keypoints2, des2) + assert_raises(ValueError, match_descriptors, des1, des2) -def test_match_binary_descriptors_lena_rotation_crosscheck_false(): +def test_binary_descriptors(): + des1 = np.array([[True, True, False, True, True], + [False, True, False, True, True]]) + des2 = np.array([[True, False, False, True, False], + [False, False, True, True, True]]) + indices1, indices2 = match_descriptors(des1, des2) + assert_equal(indices1, [0, 1]) + assert_equal(indices2, [0, 1]) + + +def test_binary_descriptors_lena_rotation_crosscheck_false(): """Verify matched keypoints and their corresponding masks results between lena image and its rotated version with the expected keypoint pairs with cross_check disabled.""" @@ -48,72 +35,35 @@ def test_match_binary_descriptors_lena_rotation_crosscheck_false(): tform = tf.SimilarityTransform(scale=1, rotation=0.15, translation=(0, 0)) rotated_img = tf.warp(img, tform) - kp1 = corner_peaks(corner_harris(img), min_distance=5) - keypoints1 = create_keypoint_recarray(kp1[:, 0], kp1[:, 1]) - descriptors1, keypoints1 = descriptor_brief(img, keypoints1, - descriptor_size=512) + descriptor = BRIEF(descriptor_size=512) - kp2 = corner_peaks(corner_harris(rotated_img), min_distance=5) - keypoints2 = create_keypoint_recarray(kp2[:, 0], kp2[:, 1]) - descriptors2, keypoints2 = descriptor_brief(rotated_img, keypoints2, - descriptor_size=512) + keypoints1 = corner_peaks(corner_harris(img), min_distance=5) + descriptors1, mask1 = descriptor.extract(img, keypoints1) + keypoints1 = keypoints1[mask1] - matched_keypoints, m1, m2 = match_binary_descriptors(keypoints1, - descriptors1, - keypoints2, - descriptors2, - threshold=0.13, - cross_check=False) + keypoints2 = corner_peaks(corner_harris(rotated_img), min_distance=5) + descriptors2, mask2 = descriptor.extract(rotated_img, keypoints2) + keypoints2 = keypoints1[mask2] - expected_mask1 = np.array([11, 12, 16, 20, 24, 26, 27, 29, 35, 39, 40, - 42, 45]) - expected_mask2 = np.array([ 1, 3, 0, 4, 6, 7, 8, 9, 10, 10, 11, - 12, 13]) - expected = np.array([[[245, 141], - [221, 176]], + m1, m2 = match_descriptors(descriptors1, descriptors2, threshold=0.13, + cross_check=False) - [[247, 130], - [225, 165]], + print m1 + print m2 - [[263, 272], - [219, 309]], - - [[271, 120], - [250, 159]], - - [[311, 174], - [282, 218]], - - [[323, 164], - [294, 210]], - - [[327, 147], - [301, 195]], - - [[377, 157], - [349, 211]], - - [[414, 70], - [399, 131]], - - [[425, 67], - [399, 131]], - - [[435, 181], - [403, 244]], - - [[454, 176], - [423, 242]], - - [[467, 166], - [437, 234]]]) - - assert_array_equal(matched_keypoints, expected) - assert_array_equal(m1, expected_mask1) - assert_array_equal(m2, expected_mask2) + expected_mask1 = np.array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46]) + expected_mask2 = np.array([33, 0, 35, 7, 1, 35, 3, 2, 3, 6, 4, 9, + 11, 10, 28, 7, 8, 5, 31, 14, 13, 15, 21, 16, + 16, 13, 17, 18, 19, 21, 22, 23, 0, 24, 1, 24, + 23, 0, 26, 27, 25, 34, 28, 14, 29, 30, 21]) + assert_equal(m1, expected_mask1) + assert_equal(m2, expected_mask2) -def test_match_binary_descriptors_lena_rotation_crosscheck_true(): +def test_binary_descriptors_lena_rotation_crosscheck_true(): """Verify matched keypoints and their corresponding masks results between lena image and its rotated version with the expected keypoint pairs with cross_check enabled.""" @@ -122,62 +72,27 @@ def test_match_binary_descriptors_lena_rotation_crosscheck_true(): tform = tf.SimilarityTransform(scale=1, rotation=0.15, translation=(0, 0)) rotated_img = tf.warp(img, tform) - kp1 = corner_peaks(corner_harris(img), min_distance=5) - keypoints1 = create_keypoint_recarray(kp1[:, 0], kp1[:, 1]) - descriptors1, keypoints1 = descriptor_brief(img, keypoints1, descriptor_size=512) + descriptor = BRIEF(descriptor_size=512) - kp2 = corner_peaks(corner_harris(rotated_img), min_distance=5) - keypoints2 = create_keypoint_recarray(kp2[:, 0], kp2[:, 1]) - descriptors2, keypoints2 = descriptor_brief(rotated_img, keypoints2, - descriptor_size=512) + keypoints1 = corner_peaks(corner_harris(img), min_distance=5) + descriptors1, mask1 = descriptor.extract(img, keypoints1) + keypoints1 = keypoints1[mask1] - matched_keypoints, m1, m2 = match_binary_descriptors(keypoints1, - descriptors1, - keypoints2, - descriptors2, - threshold=0.13) + keypoints2 = corner_peaks(corner_harris(rotated_img), min_distance=5) + descriptors2, mask2 = descriptor.extract(rotated_img, keypoints2) + keypoints2 = keypoints1[mask2] - expected = np.array([[[245, 141], - [221, 176]], + m1, m2 = match_descriptors(descriptors1, descriptors2, threshold=0.13, + cross_check=True) - [[247, 130], - [225, 165]], - - [[263, 272], - [219, 309]], - - [[271, 120], - [250, 159]], - - [[311, 174], - [282, 218]], - - [[323, 164], - [294, 210]], - - [[327, 147], - [301, 195]], - - [[377, 157], - [349, 211]], - - [[414, 70], - [399, 131]], - - [[435, 181], - [403, 244]], - - [[454, 176], - [423, 242]], - - [[467, 166], - [437, 234]]]) - - expected_mask1 = np.array([11, 12, 16, 20, 24, 26, 27, 29, 35, 40, 42, 45]) - expected_mask2 = np.array([ 1, 3, 0, 4, 6, 7, 8, 9, 10, 11, 12, 13]) - assert_array_equal(matched_keypoints, expected) - assert_array_equal(m1, expected_mask1) - assert_array_equal(m2, expected_mask2) + expected_mask1 = np.array([ 0, 1, 2, 4, 6, 7, 9, 10, 11, 12, 13, 15, + 16, 17, 19, 20, 21, 24, 26, 27, 28, 29, 30, 35, + 36, 38, 39, 40, 42, 44, 45]) + expected_mask2 = np.array([33, 0, 35, 1, 3, 2, 6, 4, 9, 11, 10, 7, + 8, 5, 14, 13, 15, 16, 17, 18, 19, 21, 22, 24, + 23, 26, 27, 25, 28, 29, 30]) + assert_equal(m1, expected_mask1) + assert_equal(m2, expected_mask2) if __name__ == '__main__': diff --git a/skimage/feature/tests/test_orb.py b/skimage/feature/tests/test_orb.py index f857ca75..9c2a1d6e 100644 --- a/skimage/feature/tests/test_orb.py +++ b/skimage/feature/tests/test_orb.py @@ -105,8 +105,6 @@ def test_descriptor_orb(): keypoints2, descriptors2 = detector_extractor.detect_and_extract(img) assert_array_equal(exp_descriptors, descriptors2[100:120, 10:20]) - assert_array_equal(keypoints1[mask1], keypoints2) - if __name__ == '__main__': from numpy import testing diff --git a/skimage/feature/util.py b/skimage/feature/util.py index 1da4b613..d3945554 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -76,28 +76,3 @@ def _mask_border_keypoints(image_shape, keypoints, distance): & (keypoints[:, 1] < (cols - distance + 1))) return mask - - -def pairwise_hamming_distance(array1, array2): - """**Experimental function**. - - Calculate hamming dissimilarity measure between two sets of - vectors. - - Parameters - ---------- - array1 : (P1, D) array - P1 vectors of size D. - array2 : (P2, D) array - P2 vectors of size D. - - Returns - ------- - distance : (P1, P2) array of dtype float - 2D ndarray with value at an index (i, j) representing the hamming - distance in the range [0, 1] between ith vector in array1 and jth - vector in array2. - - """ - distance = (array1[:, None] != array2[None]).mean(axis=2) - return distance From 5662d705aa4b132fba895b5fd8557e05586e05ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 04:00:07 +0100 Subject: [PATCH 229/577] Use dynamic pad-width for arbitrary mask shapes --- skimage/feature/corner_cy.pyx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 86ded549..3fd860a2 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -240,8 +240,6 @@ def corner_orientations(image, Py_ssize_t[:, :] corners, mask): if mask.shape[0] % 2 != 1 or mask.shape[1] % 2 != 1: raise ValueError("Size of mask must be uneven.") - cdef double[:, :] cimage = pad(image, 16, mode='constant', - constant_values=0) cdef char[:, ::1] cmask = np.ascontiguousarray(mask != 0, dtype=np.uint8) cdef Py_ssize_t i, r, c, r0, c0 @@ -249,13 +247,15 @@ def corner_orientations(image, Py_ssize_t[:, :] corners, mask): cdef Py_ssize_t mcols = mask.shape[1] cdef Py_ssize_t mrows2 = (mrows - 1) / 2 cdef Py_ssize_t mcols2 = (mcols - 1) / 2 + cdef double[:, :] cimage = pad(image, (mrows2, mcols2), mode='constant', + constant_values=0) cdef double[:] orientations = np.zeros(corners.shape[0], dtype=np.double) cdef double curr_pixel cdef double m01, m10 for i in range(corners.shape[0]): - r0 = corners[i, 0] - mrows2 + 16 - c0 = corners[i, 1] - mcols2 + 16 + r0 = corners[i, 0] + c0 = corners[i, 1] m01 = 0 m10 = 0 From dea338b490e13cb9bd8b0c9b34abe5b571327267 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 04:02:48 +0100 Subject: [PATCH 230/577] Fix test cases --- skimage/feature/tests/test_brief.py | 3 +-- skimage/feature/tests/test_util.py | 25 ------------------------- 2 files changed, 1 insertion(+), 27 deletions(-) diff --git a/skimage/feature/tests/test_brief.py b/skimage/feature/tests/test_brief.py index 0f0a9b1f..414be70c 100644 --- a/skimage/feature/tests/test_brief.py +++ b/skimage/feature/tests/test_brief.py @@ -3,8 +3,7 @@ from numpy.testing import assert_array_equal, assert_raises from skimage import data from skimage import transform as tf from skimage.color import rgb2gray -from skimage.feature import (BRIEF, match_binary_descriptors, - corner_peaks, corner_harris) +from skimage.feature import BRIEF, corner_peaks, corner_harris def test_color_image_unsupported_error(): diff --git a/skimage/feature/tests/test_util.py b/skimage/feature/tests/test_util.py index 6e25f51a..6e56d0dd 100644 --- a/skimage/feature/tests/test_util.py +++ b/skimage/feature/tests/test_util.py @@ -1,30 +1,5 @@ import numpy as np from numpy.testing import assert_array_equal -from skimage.feature.util import pairwise_hamming_distance - - -def test_pairwise_hamming_distance_range(): - """Values of all the pairwise hamming distances should be in the range - [0, 1].""" - a = np.random.random_sample((10, 50)) > 0.5 - b = np.random.random_sample((20, 50)) > 0.5 - dist = pairwise_hamming_distance(a, b) - assert np.all((0 <= dist) & (dist <= 1)) - - -def test_pairwise_hamming_distance_value(): - """The result of pairwise_hamming_distance of two fixed sets of boolean - vectors should be same as expected.""" - np.random.seed(10) - a = np.random.random_sample((4, 100)) > 0.5 - np.random.seed(20) - b = np.random.random_sample((3, 100)) > 0.5 - result = pairwise_hamming_distance(a, b) - expected = np.array([[0.5 , 0.49, 0.44], - [0.44, 0.53, 0.52], - [0.4 , 0.55, 0.5 ], - [0.47, 0.48, 0.57]]) - assert_array_equal(result, expected) if __name__ == '__main__': From 722347388bbf5a8de5e08b45a03d15b81948a0e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 04:11:43 +0100 Subject: [PATCH 231/577] Update bento.info --- bento.info | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/bento.info b/bento.info index f819d7c0..986eb34e 100644 --- a/bento.info +++ b/bento.info @@ -96,15 +96,12 @@ Library: Extension: skimage.feature.censure_cy Sources: skimage/feature/censure_cy.pyx - Extension: skimage.feature.match_cy - Sources: - skimage/feature/match_cy.pyx Extension: skimage.feature.orb_cy Sources: skimage/feature/orb_cy.pyx - Extension: skimage.feature._brief_cy + Extension: skimage.feature.brief_cy Sources: - skimage/feature/_brief_cy.pyx + skimage/feature/brief_cy.pyx Extension: skimage.feature.corner_cy Sources: skimage/feature/corner_cy.pyx From d7b598c30b41f5a83c94e9c1a4c8fe166e9f4f63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 10:03:00 +0100 Subject: [PATCH 232/577] Fix legacy import --- skimage/feature/brief.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/feature/brief.py b/skimage/feature/brief.py index e29dd230..38ed7061 100644 --- a/skimage/feature/brief.py +++ b/skimage/feature/brief.py @@ -4,7 +4,7 @@ from scipy.ndimage.filters import gaussian_filter from .util import (DescriptorExtractor, _mask_border_keypoints, _prepare_grayscale_input_2D) -from ._brief_cy import _brief_loop +from .brief_cy import _brief_loop class BRIEF(DescriptorExtractor): From 89dc0ac5ac8582f1164a89bcf4b04a44fe95b944 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 10:23:34 +0100 Subject: [PATCH 233/577] Update BRIEF example --- skimage/feature/brief.py | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/skimage/feature/brief.py b/skimage/feature/brief.py index 38ed7061..cac7f347 100644 --- a/skimage/feature/brief.py +++ b/skimage/feature/brief.py @@ -47,7 +47,7 @@ class BRIEF(DescriptorExtractor): Examples -------- >>> from skimage.feature import (corner_harris, corner_peaks, BRIEF, - ... match_binary_descriptors) + ... match_descriptors) >>> import numpy as np >>> square1 = np.zeros((8, 8), dtype=np.int32) >>> square1[2:6, 2:6] = 1 @@ -77,24 +77,19 @@ class BRIEF(DescriptorExtractor): >>> extractor = BRIEF(patch_size=5) >>> descs1, _ = extractor.extract(square1, keypoints1) >>> descs2, _ = extractor.extract(square2, keypoints2) - >>> matches, idxs1, idxs2 = match_binary_descriptors(keypoints1, descs1, - ... keypoints2, descs2) - >>> matches - array([[[2, 2], - [2, 2]], - - [[2, 5], - [2, 6]], - - [[5, 2], - [6, 2]], - - [[5, 5], - [6, 6]]]) - >>> mask1 - array([0, 1, 2, 3]) - >>> mask2 - array([0, 1, 2, 3]) + >>> idxs1, idxs2 = match_descriptors(descs1, descs2) + >>> idxs1, idxs2 + (array([0, 1, 2, 3]), array([0, 1, 2, 3])) + >>> keypoints1[idxs1] + array([[2, 2], + [2, 5], + [5, 2], + [5, 5]]) + >>> keypoints2[idxs2] + array([[2, 2], + [2, 6], + [6, 2], + [6, 6]]) """ From f9cfdb7e2d76383d01d64e5bc1ae3409586ba755 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 10:38:19 +0100 Subject: [PATCH 234/577] Add example to ORB doc string --- skimage/feature/orb.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 013a6f94..35f0ad45 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -60,6 +60,34 @@ class ORB(FeatureDetector, DescriptorExtractor): "ORB: An efficient alternative to SIFT and SURF" http://www.vision.cs.chubu.ac.jp/CV-R/pdf/Rublee_iccv2011.pdf + Examples + -------- + >>> from skimage.feature import ORB, match_descriptors + >>> img1 = np.zeros((100, 100)) + >>> img2 = np.zeros_like(img1) + >>> np.random.seed(1) + >>> square = np.random.rand(20, 20) + >>> img1[40:60, 40:60] = square + >>> img2[53:73, 53:73] = square + >>> detector_extractor = ORB(n_keypoints=5) + >>> keypoints1, descriptors1 = detector_extractor.detect_and_extract(img1) + >>> keypoints2, descriptors2 = detector_extractor.detect_and_extract(img2) + >>> idxs1, idxs2 = match_descriptors(descriptors1, descriptors2) + >>> idxs1, idxs2 + (array([0, 1, 2, 3, 4]), array([0, 1, 2, 3, 4])) + >>> keypoints1[idxs1] + array([[ 42., 40.], + [ 47., 58.], + [ 44., 40.], + [ 59., 42.], + [ 45., 44.]]) + >>> keypoints2[idxs2] + array([[ 55., 53.], + [ 60., 71.], + [ 57., 53.], + [ 72., 55.], + [ 58., 57.]]) + """ def __init__(self, downscale=1.2, n_scales=8, From 88f7038edb1d8e5f20d37993d543841e9fea795b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 10:49:43 +0100 Subject: [PATCH 235/577] Add note about usage of ORB --- skimage/feature/orb.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 35f0ad45..ac9631db 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -192,6 +192,11 @@ class ORB(FeatureDetector, DescriptorExtractor): def extract(self, image, keypoints, scales, orientations): """Extract rBRIEF binary descriptors for given keypoints in image. + Note that the keypoints must be extracted using the same `downscale` + and `n_scales` parameters. Additionally, if you want to extract both + keypoints and descriptors you should use the faster + `detect_and_extract`. + Parameters ---------- image : 2D array @@ -254,6 +259,9 @@ class ORB(FeatureDetector, DescriptorExtractor): def detect_and_extract(self, image): """Detect oriented FAST keypoints and extract rBRIEF descriptors. + Note that this is faster than first calling `detect` and then + `extract`. + Parameters ---------- image : 2D array From 85efc6a2cd4143b5c27861b5779b5fc304685f47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 10:58:38 +0100 Subject: [PATCH 236/577] Add example to doc string of CenSurE --- skimage/feature/censure.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/skimage/feature/censure.py b/skimage/feature/censure.py index a2830033..f201e12f 100644 --- a/skimage/feature/censure.py +++ b/skimage/feature/censure.py @@ -151,6 +151,32 @@ class CenSurE(FeatureDetector): Descriptors in the Context of Robot Navigation" http://www.jamris.org/01_2013/saveas.php?QUEST=JAMRIS_No01_2013_P_11-20.pdf + Examples + -------- + >>> from skimage.data import lena + >>> from skimage.color import rgb2gray + >>> from skimage.feature import CenSurE + >>> img = rgb2gray(lena()[100:300, 100:300]) + >>> keypoints, scales = CenSurE().detect(img) + >>> keypoints + array([[ 71, 148], + [ 77, 186], + [ 78, 189], + [ 89, 174], + [127, 134], + [131, 133], + [134, 125], + [137, 125], + [149, 36], + [162, 165], + [168, 167], + [170, 5], + [171, 29], + [179, 20], + [194, 65]]) + >>> scales + array([2, 4, 2, 3, 4, 2, 2, 3, 4, 6, 3, 2, 3, 4, 2]) + """ def __init__(self, min_scale=1, max_scale=7, mode='DoB', From 23a1e22bd466d71b1e708068bfab1c98bd261e7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 11:06:34 +0100 Subject: [PATCH 237/577] Fix corner doctests --- skimage/feature/corner.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 33f9b39a..665bfcf1 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -339,9 +339,9 @@ def corner_harris(image, method='k', k=0.05, eps=1e-6, sigma=1): Examples -------- >>> from skimage.feature import corner_harris, corner_peaks - >>> square = np.zeros([10, 10], dtype=int) + >>> square = np.zeros([10, 10]) >>> square[2:8, 2:8] = 1 - >>> square + >>> square.astype(int) array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 1, 1, 1, 1, 0, 0], @@ -409,9 +409,9 @@ def corner_shi_tomasi(image, sigma=1): Examples -------- >>> from skimage.feature import corner_shi_tomasi, corner_peaks - >>> square = np.zeros([10, 10], dtype=int) + >>> square = np.zeros([10, 10]) >>> square[2:8, 2:8] = 1 - >>> square + >>> square.astype(int) array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 1, 1, 1, 1, 0, 0], @@ -609,10 +609,10 @@ def corner_subpix(image, corners, window_size=11, alpha=0.99): Examples -------- >>> from skimage.feature import corner_harris, corner_peaks, corner_subpix - >>> img = np.zeros((10, 10), dtype=int) + >>> img = np.zeros((10, 10)) >>> img[:5, :5] = 1 >>> img[5:, 5:] = 1 - >>> img + >>> img.astype(int) array([[1, 1, 1, 1, 1, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 0, 0, 0, 0, 0], From 9d585aedef94173cab5150917f80bf66133215cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 11:17:02 +0100 Subject: [PATCH 238/577] Add test cases for feature utilities --- skimage/feature/tests/test_util.py | 37 +++++++++++++++++++++++++++++- skimage/feature/util.py | 6 ----- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/skimage/feature/tests/test_util.py b/skimage/feature/tests/test_util.py index 6e56d0dd..6f3f78e1 100644 --- a/skimage/feature/tests/test_util.py +++ b/skimage/feature/tests/test_util.py @@ -1,5 +1,40 @@ import numpy as np -from numpy.testing import assert_array_equal +from numpy.testing import assert_equal, assert_raises +from skimage.feature.util import (FeatureDetector, DescriptorExtractor, + _prepare_grayscale_input_2D, + _mask_border_keypoints) + + +def test_feature_detector(): + assert_raises(NotImplementedError, FeatureDetector().detect, None) + + +def test_descriptor_extractor(): + assert_raises(NotImplementedError, DescriptorExtractor().extract, + None, None) + + +def test_prepare_grayscale_input_2D(): + assert_raises(ValueError, _prepare_grayscale_input_2D, np.zeros((3, 3, 3))) + assert_raises(ValueError, _prepare_grayscale_input_2D, np.zeros((3, 1))) + assert_raises(ValueError, _prepare_grayscale_input_2D, np.zeros((3, 1, 1))) + img = _prepare_grayscale_input_2D(np.zeros((3, 3))) + img = _prepare_grayscale_input_2D(np.zeros((3, 3, 1))) + img = _prepare_grayscale_input_2D(np.zeros((1, 3, 3))) + + +def test_mask_border_keypoints(): + keypoints = np.array([[0, 0], [1, 1], [2, 2], [3, 3], [4, 4]]) + assert_equal(_mask_border_keypoints((10, 10), keypoints, 0), + [1, 1, 1, 1, 1]) + assert_equal(_mask_border_keypoints((10, 10), keypoints, 2), + [0, 0, 1, 1, 1]) + assert_equal(_mask_border_keypoints((4, 4), keypoints, 2), + [0, 0, 1, 0, 0]) + assert_equal(_mask_border_keypoints((10, 10), keypoints, 5), + [0, 0, 0, 0, 0]) + assert_equal(_mask_border_keypoints((10, 10), keypoints, 4), + [0, 0, 0, 0, 1]) if __name__ == '__main__': diff --git a/skimage/feature/util.py b/skimage/feature/util.py index d3945554..3d84298a 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -5,9 +5,6 @@ from skimage.util import img_as_float class FeatureDetector(object): - def __init__(self): - raise NotImplementedError() - def detect(self, image): """Detect keypoints in image. @@ -22,9 +19,6 @@ class FeatureDetector(object): class DescriptorExtractor(object): - def __init__(self): - raise NotImplementedError() - def extract(self, image, keypoints): """Extract feature descriptors in image for given keypoints. From 89233d8409e2972d6c97406f4e18010ba9f7aa2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 11:45:24 +0100 Subject: [PATCH 239/577] Fix imports for Python 3 --- skimage/feature/corner.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 665bfcf1..48f74c27 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -1,13 +1,12 @@ import numpy as np from scipy import ndimage from scipy import stats + from skimage.color import rgb2grey from skimage.util import img_as_float, pad from skimage.feature import peak_local_max - -from .util import _prepare_grayscale_input_2D - -from corner_cy import _corner_fast +from skimage.feature.util import _prepare_grayscale_input_2D +from skimage.feature.corner_cy import _corner_fast def _compute_derivatives(image, mode='constant', cval=0): From 87131db7353d9b4208514d9e1394f2507f6622ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 11:48:48 +0100 Subject: [PATCH 240/577] Add test for unsupported mode --- skimage/feature/tests/test_brief.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/skimage/feature/tests/test_brief.py b/skimage/feature/tests/test_brief.py index 414be70c..61cde324 100644 --- a/skimage/feature/tests/test_brief.py +++ b/skimage/feature/tests/test_brief.py @@ -57,6 +57,10 @@ def test_uniform_mode(): assert_array_equal(descriptors, expected) +def test_unsupported_mode(): + assert_raises(ValueError, BRIEF, mode='foobar') + + def test_border(): img = np.zeros((100, 100)) keypoints = np.array([[1, 1], [20, 20], [50, 50], [80, 80]]) From abd1295a8d99ec490a68ba06775e4644cb62f9f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 11:55:26 +0100 Subject: [PATCH 241/577] Add short description to ORB example --- doc/examples/{plot_orb_matching.py => plot_orb.py} | 14 ++++++++++++++ 1 file changed, 14 insertions(+) rename doc/examples/{plot_orb_matching.py => plot_orb.py} (80%) diff --git a/doc/examples/plot_orb_matching.py b/doc/examples/plot_orb.py similarity index 80% rename from doc/examples/plot_orb_matching.py rename to doc/examples/plot_orb.py index 2fc5027e..e7d1a828 100644 --- a/doc/examples/plot_orb_matching.py +++ b/doc/examples/plot_orb.py @@ -1,3 +1,17 @@ +""" +========================================== +ORB feature detector and binary descriptor +========================================== + +This example demonstrates the ORB feature detection and binary description +algorithm. It uses an oriented FAST detection method and the rotated BRIEF +descriptors. + +ORB is comparatively scale- and rotation-invariant. As a binary descriptor it +allows to employ the very efficient Hamming distance metric for matching and +is thus preferred for real-time applications. + +""" import numpy as np from skimage import data from skimage import transform as tf From 8fbc81eaacec16b182e3871e4e00c153d1888201 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 12:40:26 +0100 Subject: [PATCH 242/577] Add convenience function for plotting matches --- doc/examples/plot_orb.py | 53 ++++++---------------- skimage/feature/__init__.py | 4 +- skimage/feature/util.py | 87 +++++++++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+), 41 deletions(-) diff --git a/doc/examples/plot_orb.py b/doc/examples/plot_orb.py index e7d1a828..d8b5cfbf 100644 --- a/doc/examples/plot_orb.py +++ b/doc/examples/plot_orb.py @@ -16,62 +16,35 @@ import numpy as np from skimage import data from skimage import transform as tf from skimage.feature import (match_descriptors, corner_harris, - corner_peaks, ORB) + corner_peaks, ORB, plot_matches) from skimage.color import rgb2gray from skimage import img_as_float import matplotlib.pyplot as plt -img1_color = data.lena() -img2_color = tf.rotate(img1_color, 180) +img1 = rgb2gray(data.lena()) +img2 = tf.rotate(img1, 180) tform = tf.AffineTransform(scale=(1.3, 1.1), rotation=0.5, translation=(0, -200)) -img3_color = tf.warp(img1_color, tform) -img1 = rgb2gray(img1_color) -img2 = rgb2gray(img2_color) -img3 = rgb2gray(img3_color) +img3 = tf.warp(img1, tform) descriptor_extractor = ORB(n_keypoints=200) keypoints1, descriptors1 = descriptor_extractor.detect_and_extract(img1) keypoints2, descriptors2 = descriptor_extractor.detect_and_extract(img2) keypoints3, descriptors3 = descriptor_extractor.detect_and_extract(img3) -idxs1, idxs2 = match_descriptors(descriptors1, descriptors2, cross_check=True) -src12 = keypoints1[idxs1] -dst12 = keypoints2[idxs2] - -idxs1, idxs3 = match_descriptors(descriptors1, descriptors3, cross_check=True) -src13 = keypoints1[idxs1] -dst13 = keypoints3[idxs3] - -img12 = np.concatenate((img_as_float(img1_color), - img_as_float(img2_color)), axis=1) -img13 = np.concatenate((img_as_float(img1_color), - img_as_float(img3_color)), axis=1) - -imgs = (img12, img13) -srcs = (src12, src13) -dsts = (dst12, dst13) - -offset = img1.shape - fig, ax = plt.subplots(nrows=2, ncols=1) -for i in range(2): +plt.gray() - ax[i].imshow(imgs[i], interpolation='nearest') - ax[i].axis('off') - ax[i].axis((0, 2 * offset[1], offset[0], 0)) +idxs1, idxs2 = match_descriptors(descriptors1, descriptors2, cross_check=True) +plot_matches(ax[0], img1, img2, keypoints1, keypoints2, + idxs1, idxs2) +ax[0].axis('off') - src = srcs[i] - dst = dsts[i] - - for m in range(len(src)): - color = np.random.rand(3, 1) - ax[i].plot((src[m, 1], dst[m, 1] + offset[1]), (src[m, 0], dst[m, 0]), - '-', color=color) - ax[i].scatter(src[m, 1], src[m, 0], facecolors='none', edgecolors=color) - ax[i].scatter(dst[m, 1] + offset[1], dst[m, 0], facecolors='none', - edgecolors=color) +idxs1, idxs3 = match_descriptors(descriptors1, descriptors3, cross_check=True) +plot_matches(ax[1], img1, img3, keypoints1, keypoints3, + idxs1, idxs3) +ax[1].axis('off') plt.show() diff --git a/skimage/feature/__init__.py b/skimage/feature/__init__.py index 4344c311..2402d0ea 100644 --- a/skimage/feature/__init__.py +++ b/skimage/feature/__init__.py @@ -13,6 +13,7 @@ from .brief import BRIEF from .censure import CenSurE from .orb import ORB from .match import match_descriptors +from .util import plot_matches __all__ = ['daisy', @@ -38,4 +39,5 @@ __all__ = ['daisy', 'BRIEF', 'CenSurE', 'ORB', - 'match_descriptors'] + 'match_descriptors', + 'plot_matches'] diff --git a/skimage/feature/util.py b/skimage/feature/util.py index 3d84298a..2d33261f 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -33,6 +33,93 @@ class DescriptorExtractor(object): raise NotImplementedError() +def plot_matches(ax, image1, image2, keypoints1, keypoints2, + indices1, indices2, keypoints_color='k', matches_color=None, + only_matches=False): + + """Plot matched features. + + Parameters + ---------- + ax : matplotlib.axes.Axes + Matches and image are drawn in this ax. + image1 : (N, M [, 3]) array + First grayscale or color image. + image2 : (N, M [, 3]) array + Second grayscale or color image. + keypoints : (K1, 2) array + First keypoint coordinates as ``(row, col)``. + keypoints : (K2, 2) array + Second keypoint coordinates as ``(row, col)``. + keypoints : (K1, 2) array + Keypoint coordinates as ``(row, col)``. + indices1 : (Q, ) array + Indices of corresponding matches for first set of keypoints. + indices2 : (Q, ) array + Indices of corresponding matches for second set of keypoints. + keypoints_color : matplotlib color + Color for keypoint locations. + matches_color : matplotlib color + Color for lines which connect keypoint matches. By default the + color is chosen randomly. + only_matches : bool + Whether to only plot matches and not plot the keypoint locations. + + """ + + image1 = img_as_float(image1) + image2 = img_as_float(image2) + + new_shape1 = image1.shape + new_shape2 = image2.shape + + if image1.shape[0] < image2.shape[0]: + new_shape1[0] = image2.shape[0] + elif image1.shape[0] > image2.shape[0]: + new_shape2[0] = image1.shape[0] + + if image1.shape[1] < image2.shape[1]: + new_shape1[1] = image2.shape[1] + elif image1.shape[1] > image2.shape[1]: + new_shape2[1] = image1.shape[1] + + if new_shape1 != image1.shape: + new_image1 = np.zeros(new_shape1, dtype=image1.dtype) + new_image1[:image1.shape[0], :image1.shape[1]] = image1 + image1 = new_image1 + + if new_shape2 != image2.shape: + new_image2 = np.zeros(new_shape2, dtype=image2.dtype) + new_image2[:image2.shape[0], :image2.shape[1]] = image2 + image2 = new_image2 + + image = np.concatenate([image1, image2], axis=1) + + offset = image1.shape + + if not only_matches: + ax.scatter(keypoints1[:, 1], keypoints1[:, 0], + facecolors='none', edgecolors=keypoints_color) + ax.scatter(keypoints2[:, 1] + offset[1], keypoints2[:, 0], + facecolors='none', edgecolors=keypoints_color) + + ax.imshow(image) + ax.axis((0, 2 * offset[1], offset[0], 0)) + + for i in range(len(indices1)): + idx1 = indices1[i] + idx2 = indices2[i] + + if matches_color is None: + color = np.random.rand(3, 1) + else: + color = matches_color + + ax.plot((keypoints1[idx1, 1], keypoints2[idx2, 1] + offset[1]), + (keypoints1[idx1, 0], keypoints2[idx2, 0]), + '-', color=color) + + def _prepare_grayscale_input_2D(image): image = np.squeeze(image) if image.ndim != 2: From ae1c2a261d0ba9a860272a1d024f9af9c85f9afd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 12:58:06 +0100 Subject: [PATCH 243/577] Use new plot_matches function for plot_matching example script --- doc/examples/plot_matching.py | 28 +++++++++++----------------- skimage/feature/util.py | 4 +++- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/doc/examples/plot_matching.py b/doc/examples/plot_matching.py index bae6d6e2..9fa0b41c 100644 --- a/doc/examples/plot_matching.py +++ b/doc/examples/plot_matching.py @@ -27,7 +27,8 @@ from matplotlib import pyplot as plt from skimage import data from skimage.util import img_as_float -from skimage.feature import corner_harris, corner_subpix, corner_peaks +from skimage.feature import (corner_harris, corner_subpix, corner_peaks, + plot_matches) from skimage.transform import warp, AffineTransform from skimage.exposure import rescale_intensity from skimage.color import rgb2gray @@ -117,28 +118,21 @@ print(tform.scale, tform.translation, tform.rotation) print(model.scale, model.translation, model.rotation) print(model_robust.scale, model_robust.translation, model_robust.rotation) - -# visualize correspondences -img_combined = np.concatenate((img_orig_gray, img_warped_gray), axis=1) - +# visualize correspondence fig, ax = plt.subplots(nrows=2, ncols=1) + plt.gray() -ax[0].imshow(img_combined, interpolation='nearest') +inlier_idxs = np.nonzero(inliers) +plot_matches(ax[0], img_orig_gray, img_warped_gray, src, dst, + inlier_idxs, inlier_idxs, matches_color='b') ax[0].axis('off') -ax[0].axis((0, 400, 200, 0)) ax[0].set_title('Correct correspondences') -ax[1].imshow(img_combined, interpolation='nearest') + +outlier_idxs = np.nonzero(outliers) +plot_matches(ax[1], img_orig_gray, img_warped_gray, src, dst, + outlier_idxs, outlier_idxs, matches_color='r') ax[1].axis('off') -ax[1].axis((0, 400, 200, 0)) ax[1].set_title('Faulty correspondences') - -for ax_idx, (m, color) in enumerate(((inliers, 'g'), (outliers, 'r'))): - ax[ax_idx].plot((src[m, 1], dst[m, 1] + 200), (src[m, 0], dst[m, 0]), '-', - color=color) - ax[ax_idx].plot(src[m, 1], src[m, 0], '.', markersize=10, color=color) - ax[ax_idx].plot(dst[m, 1] + 200, dst[m, 0], '.', markersize=10, - color=color) - plt.show() diff --git a/skimage/feature/util.py b/skimage/feature/util.py index 2d33261f..a27ab1ba 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -36,7 +36,6 @@ class DescriptorExtractor(object): def plot_matches(ax, image1, image2, keypoints1, keypoints2, indices1, indices2, keypoints_color='k', matches_color=None, only_matches=False): - """Plot matched features. Parameters @@ -70,6 +69,9 @@ def plot_matches(ax, image1, image2, keypoints1, keypoints2, image1 = img_as_float(image1) image2 = img_as_float(image2) + indices1 = np.squeeze(indices1) + indices2 = np.squeeze(indices2) + new_shape1 = image1.shape new_shape2 = image2.shape From 0559105f83fb28482f66e9c8f696e0d0059c646c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 14:54:31 +0100 Subject: [PATCH 244/577] Remove prints in test function --- skimage/feature/tests/test_match.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/skimage/feature/tests/test_match.py b/skimage/feature/tests/test_match.py index 3b17ed4d..a028b585 100644 --- a/skimage/feature/tests/test_match.py +++ b/skimage/feature/tests/test_match.py @@ -48,9 +48,6 @@ def test_binary_descriptors_lena_rotation_crosscheck_false(): m1, m2 = match_descriptors(descriptors1, descriptors2, threshold=0.13, cross_check=False) - print m1 - print m2 - expected_mask1 = np.array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, From d00b851204726a5a14dd9a3fe9b0623bea9d275a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 15:11:56 +0100 Subject: [PATCH 245/577] Fix wrong parameter name in doc string --- skimage/feature/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/feature/util.py b/skimage/feature/util.py index a27ab1ba..b8afed57 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -137,7 +137,7 @@ def _mask_border_keypoints(image_shape, keypoints, distance): ---------- image_shape : (2, ) array_like Shape of the image as ``(rows, cols)``. - coords : (N, 2) array + keypoints : (N, 2) array Keypoint coordinates as ``(rows, cols)``. distance : int Image border distance. From 23f94996e0bd47f0c2e0bcc7f011402d07dfe360 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 18:07:14 +0100 Subject: [PATCH 246/577] Convert shape to list to allow for in place modification --- skimage/feature/util.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/feature/util.py b/skimage/feature/util.py index b8afed57..7e31dace 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -72,8 +72,8 @@ def plot_matches(ax, image1, image2, keypoints1, keypoints2, indices1 = np.squeeze(indices1) indices2 = np.squeeze(indices2) - new_shape1 = image1.shape - new_shape2 = image2.shape + new_shape1 = list(image1.shape) + new_shape2 = list(image2.shape) if image1.shape[0] < image2.shape[0]: new_shape1[0] = image2.shape[0] From 0b34d0147223403ad7eb0505bbaf883ec007cb33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 18:07:34 +0100 Subject: [PATCH 247/577] Add example script for BRIEF --- doc/examples/plot_brief.py | 62 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 doc/examples/plot_brief.py diff --git a/doc/examples/plot_brief.py b/doc/examples/plot_brief.py new file mode 100644 index 00000000..390da1e5 --- /dev/null +++ b/doc/examples/plot_brief.py @@ -0,0 +1,62 @@ +""" +======================= +BRIEF binary descriptor +======================= + +This example demonstrates the BRIEF binary description algorithm. + +The descriptor consists of relatively few bits and can be computed using +a set of intensity difference tests. The short binary descriptor results +in low memory footprint and very efficient matching based on the Hamming +distance metric. + +However, BRIEF does not provide rotation-invariance and scale scale-invariance +can be achieved by detecting and extracting features at different scales. + +The ORB feature detection and binary description algorithm is an extension to +the BRIEF method and provides rotation and scale-invariance, see +`skimage.feature.ORB`. + +""" +import numpy as np +from skimage import data +from skimage import transform as tf +from skimage.feature import (match_descriptors, corner_peaks, corner_harris, + plot_matches, BRIEF) +from skimage.color import rgb2gray +from skimage import img_as_float +import matplotlib.pyplot as plt + + +img1 = rgb2gray(data.lena()) +tform = tf.AffineTransform(scale=(1.2, 1.2), translation=(0, -100)) +img2 = tf.warp(img1, tform) +img3 = tf.rotate(img1, 25) + +keypoints1 = corner_peaks(corner_harris(img1), min_distance=5) +keypoints2 = corner_peaks(corner_harris(img2), min_distance=5) +keypoints3 = corner_peaks(corner_harris(img3), min_distance=5) + +extractor = BRIEF() + +descriptors1, mask1 = extractor.extract(img1, keypoints1) +descriptors2, mask2 = extractor.extract(img2, keypoints2) +descriptors3, mask3 = extractor.extract(img3, keypoints3) + +keypoints1 = keypoints1[mask1] +keypoints2 = keypoints2[mask2] +keypoints3 = keypoints3[mask3] + +fig, ax = plt.subplots(nrows=2, ncols=1) + +plt.gray() + +idxs1, idxs2 = match_descriptors(descriptors1, descriptors2, cross_check=True) +plot_matches(ax[0], img1, img2, keypoints1, keypoints2, idxs1, idxs2) +ax[0].axis('off') + +idxs1, idxs3 = match_descriptors(descriptors1, descriptors3, cross_check=True) +plot_matches(ax[1], img1, img3, keypoints1, keypoints3, idxs1, idxs3) +ax[1].axis('off') + +plt.show() From 9871ed704fb277c53af846dad6564f993337d292 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 18:25:56 +0100 Subject: [PATCH 248/577] Add example script for CenSurE --- doc/examples/plot_brief.py | 2 -- doc/examples/plot_censure.py | 41 ++++++++++++++++++++++++++++++++++++ doc/examples/plot_orb.py | 2 -- 3 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 doc/examples/plot_censure.py diff --git a/doc/examples/plot_brief.py b/doc/examples/plot_brief.py index 390da1e5..526c4acd 100644 --- a/doc/examples/plot_brief.py +++ b/doc/examples/plot_brief.py @@ -18,13 +18,11 @@ the BRIEF method and provides rotation and scale-invariance, see `skimage.feature.ORB`. """ -import numpy as np from skimage import data from skimage import transform as tf from skimage.feature import (match_descriptors, corner_peaks, corner_harris, plot_matches, BRIEF) from skimage.color import rgb2gray -from skimage import img_as_float import matplotlib.pyplot as plt diff --git a/doc/examples/plot_censure.py b/doc/examples/plot_censure.py new file mode 100644 index 00000000..468b07d2 --- /dev/null +++ b/doc/examples/plot_censure.py @@ -0,0 +1,41 @@ +""" +======================== +CenSurE feature detector +======================== + +The CenSurE feature detector is a scale-invariant center-surround detectors +(CenSurE) that claims to outperform other detectors and is capable of real-time +implementation. + +""" +from skimage import data +from skimage import transform as tf +from skimage.feature import CenSurE +from skimage.color import rgb2gray +import matplotlib.pyplot as plt + + +img1 = rgb2gray(data.lena()) +tform = tf.AffineTransform(scale=(1.5, 1.5), rotation=0.5, + translation=(150, -200)) +img2 = tf.warp(img1, tform) + +detector = CenSurE() +keypoints1, scales1 = detector.detect(img1) +keypoints2, scales2 = detector.detect(img2) + +fig, ax = plt.subplots(nrows=1, ncols=2) + +plt.gray() + +ax[0].imshow(img1) +ax[0].axis('off') +ax[0].scatter(keypoints1[:, 1], keypoints1[:, 0], 2 ** scales1, + facecolors='none', edgecolors='r') + +ax[1].imshow(img2) +ax[1].axis('off') +ax[1].scatter(keypoints2[:, 1], keypoints2[:, 0], 2 ** scales2, + facecolors='none', edgecolors='r') + +plt.show() diff --git a/doc/examples/plot_orb.py b/doc/examples/plot_orb.py index d8b5cfbf..534c4634 100644 --- a/doc/examples/plot_orb.py +++ b/doc/examples/plot_orb.py @@ -12,13 +12,11 @@ allows to employ the very efficient Hamming distance metric for matching and is thus preferred for real-time applications. """ -import numpy as np from skimage import data from skimage import transform as tf from skimage.feature import (match_descriptors, corner_harris, corner_peaks, ORB, plot_matches) from skimage.color import rgb2gray -from skimage import img_as_float import matplotlib.pyplot as plt From c0af3aaae6e3c29c4af1d36a7a5e551feeaf277d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 18:54:29 +0100 Subject: [PATCH 249/577] Improve layout of gabor example plot --- doc/examples/plot_gabor.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/doc/examples/plot_gabor.py b/doc/examples/plot_gabor.py index db1ff7d6..87d99589 100644 --- a/doc/examples/plot_gabor.py +++ b/doc/examples/plot_gabor.py @@ -24,9 +24,6 @@ from skimage.util import img_as_float from skimage.filter import gabor_kernel -matplotlib.rcParams['font.size'] = 9 - - def compute_feats(image, kernels): feats = np.zeros((len(kernels), 2), dtype=np.double) for k, kernel in enumerate(kernels): @@ -104,24 +101,24 @@ for theta in (0, 1): # Save kernel and the power image for each image results.append((kernel, [power(img, kernel) for img in images])) -fig, axes = plt.subplots(nrows=5, ncols=4, figsize=(9, 6)) +fig, axes = plt.subplots(nrows=5, ncols=4, figsize=(5, 6)) plt.gray() -fig.suptitle('Image responses for Gabor filter kernels', fontsize=15) +fig.suptitle('Image responses for Gabor filter kernels', fontsize=12) axes[0][0].axis('off') # Plot original images for label, img, ax in zip(image_names, images, axes[0][1:]): ax.imshow(img) - ax.set_title(label) + ax.set_title(label, fontsize=9) ax.axis('off') for label, (kernel, powers), ax_row in zip(kernel_params, results, axes[1:]): # Plot Gabor kernel ax = ax_row[0] ax.imshow(np.real(kernel), interpolation='nearest') - ax.set_ylabel(label) + ax.set_ylabel(label, fontsize=7) ax.set_xticks([]) ax.set_yticks([]) From 76e0f7a0476b0834f5370ffc49e40529e5c43aa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 19:01:18 +0100 Subject: [PATCH 250/577] Fix and improve circular hough hough transform example script --- doc/examples/plot_circular_elliptical_hough_transform.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/examples/plot_circular_elliptical_hough_transform.py b/doc/examples/plot_circular_elliptical_hough_transform.py index 7fb67046..0f1524c1 100755 --- a/doc/examples/plot_circular_elliptical_hough_transform.py +++ b/doc/examples/plot_circular_elliptical_hough_transform.py @@ -48,7 +48,7 @@ from skimage.util import img_as_ubyte image = img_as_ubyte(data.coins()[0:95, 70:370]) edges = filter.canny(image, sigma=3, low_threshold=10, high_threshold=50) -fig, ax = plt.subplots(ncols=1, nrows=1, figsize=(6, 6)) +fig, ax = plt.subplots(ncols=1, nrows=1, figsize=(5, 2)) # Detect two radii hough_radii = np.arange(15, 30, 2) @@ -77,6 +77,8 @@ ax.imshow(image, cmap=plt.cm.gray) """ +.. image:: PLOT2RST.current_figure + Ellipse detection ================= @@ -137,7 +139,7 @@ image_rgb[cy, cx] = (0, 0, 255) edges = color.gray2rgb(edges) edges[cy, cx] = (250, 0, 0) -fig2, (ax1, ax2) = plt.subplots(ncols=2, nrows=1, figsize=(10, 6)) +fig2, (ax1, ax2) = plt.subplots(ncols=2, nrows=1, figsize=(8, 4)) ax1.set_title('Original picture') ax1.imshow(image_rgb) From 7e45baa3e2b372d5a81dce656781879c0408bcc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 19:06:20 +0100 Subject: [PATCH 251/577] Fix overlapping text --- doc/examples/plot_equalize.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/examples/plot_equalize.py b/doc/examples/plot_equalize.py index 52121e3a..220a126e 100644 --- a/doc/examples/plot_equalize.py +++ b/doc/examples/plot_equalize.py @@ -17,6 +17,8 @@ that fall within the 2nd and 98th percentiles [2]_. .. [2] http://homepages.inf.ed.ac.uk/rbf/HIPR2/stretch.htm """ + +import matplotlib import matplotlib.pyplot as plt import numpy as np @@ -24,6 +26,9 @@ from skimage import data, img_as_float from skimage import exposure +matplotlib.rcParams['font.size'] = 8 + + def plot_img_and_hist(img, axes, bins=256): """Plot an image along with its histogram and cumulative histogram. @@ -66,7 +71,7 @@ img_eq = exposure.equalize_hist(img) img_adapteq = exposure.equalize_adapthist(img, clip_limit=0.03) # Display results -f, axes = plt.subplots(2, 4, figsize=(8, 4)) +f, axes = plt.subplots(nrows=2, ncols=4, figsize=(8, 5)) ax_img, ax_hist, ax_cdf = plot_img_and_hist(img, axes[:, 0]) ax_img.set_title('Low contrast image') From 444d574efa65a91dac7d216df7a98071fa69e517 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 19:15:00 +0100 Subject: [PATCH 252/577] Fix overlapping text --- doc/examples/plot_local_equalize.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/examples/plot_local_equalize.py b/doc/examples/plot_local_equalize.py index 1fd8325f..c440594f 100644 --- a/doc/examples/plot_local_equalize.py +++ b/doc/examples/plot_local_equalize.py @@ -20,6 +20,7 @@ References """ import numpy as np +import matplotlib import matplotlib.pyplot as plt from skimage import data @@ -30,6 +31,9 @@ from skimage.morphology import disk from skimage.filter import rank +matplotlib.rcParams['font.size'] = 9 + + def plot_img_and_hist(img, axes, bins=256): """Plot an image along with its histogram and cumulative histogram. @@ -70,7 +74,7 @@ img_eq = rank.equalize(img, selem=selem) # Display results -f, axes = plt.subplots(2, 3, figsize=(8, 4)) +f, axes = plt.subplots(2, 3, figsize=(8, 5)) ax_img, ax_hist, ax_cdf = plot_img_and_hist(img, axes[:, 0]) ax_img.set_title('Low contrast image') From dcbbd55b523ee6ff90ec963c698f4b6e50bde502 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 19:32:37 +0100 Subject: [PATCH 253/577] Improve local otsu example script --- doc/examples/plot_local_otsu.py | 45 +++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/doc/examples/plot_local_otsu.py b/doc/examples/plot_local_otsu.py index 3a321780..aff7db62 100644 --- a/doc/examples/plot_local_otsu.py +++ b/doc/examples/plot_local_otsu.py @@ -15,6 +15,7 @@ The example compares the local threshold with the global threshold. .. [1] http://en.wikipedia.org/wiki/Otsu's_method """ +import matplotlib import matplotlib.pyplot as plt from skimage import data @@ -23,29 +24,41 @@ from skimage.filter import threshold_otsu, rank from skimage.util import img_as_ubyte -p8 = img_as_ubyte(data.page()) +matplotlib.rcParams['font.size'] = 9 -radius = 10 + +img = img_as_ubyte(data.page()) + +radius = 15 selem = disk(radius) -loc_otsu = rank.otsu(p8, selem) -t_glob_otsu = threshold_otsu(p8) -glob_otsu = p8 >= t_glob_otsu +local_otsu = rank.otsu(img, selem) +threshold_global_otsu = threshold_otsu(img) +global_otsu = img >= threshold_global_otsu -plt.figure() +plt.figure(figsize=(8, 5)) + plt.subplot(2, 2, 1) -plt.imshow(p8, cmap=plt.cm.gray) -plt.xlabel('original') -plt.colorbar() +plt.imshow(img, cmap=plt.cm.gray) +plt.title('Original') +plt.colorbar(orientation='horizontal') +plt.axis('off') + plt.subplot(2, 2, 2) -plt.imshow(loc_otsu, cmap=plt.cm.gray) -plt.xlabel('local Otsu ($radius=%d$)' % radius) -plt.colorbar() +plt.imshow(local_otsu, cmap=plt.cm.gray) +plt.title('Local Otsu (radius=%d)' % radius) +plt.colorbar(orientation='horizontal') +plt.axis('off') + plt.subplot(2, 2, 3) -plt.imshow(p8 >= loc_otsu, cmap=plt.cm.gray) -plt.xlabel('original >= local Otsu' % t_glob_otsu) +plt.imshow(img >= local_otsu, cmap=plt.cm.gray) +plt.title('Original >= Local Otsu' % threshold_global_otsu) +plt.axis('off') + plt.subplot(2, 2, 4) -plt.imshow(glob_otsu, cmap=plt.cm.gray) -plt.xlabel('global Otsu ($t = %d$)' % t_glob_otsu) +plt.imshow(global_otsu, cmap=plt.cm.gray) +plt.title('Global Otsu (threshold = %d)' % threshold_global_otsu) +plt.axis('off') + plt.show() From 1869ea9147e014af4dc61f567f0b0e5031be09d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 19:33:25 +0100 Subject: [PATCH 254/577] Fix overlapping xtick labels --- doc/examples/plot_otsu.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/examples/plot_otsu.py b/doc/examples/plot_otsu.py index 5221e934..b3b8e279 100644 --- a/doc/examples/plot_otsu.py +++ b/doc/examples/plot_otsu.py @@ -14,12 +14,16 @@ the intra-class variance. .. [1] http://en.wikipedia.org/wiki/Otsu's_method """ +import matplotlib import matplotlib.pyplot as plt from skimage.data import camera from skimage.filter import threshold_otsu +matplotlib.rcParams['font.size'] = 9 + + image = camera() thresh = threshold_otsu(image) binary = image > thresh From 64b9c1847b65b0469772910f47def5da887517b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 19:37:55 +0100 Subject: [PATCH 255/577] Show hidden text --- doc/examples/plot_shapes.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/doc/examples/plot_shapes.py b/doc/examples/plot_shapes.py index 2ae842a5..34d1108c 100644 --- a/doc/examples/plot_shapes.py +++ b/doc/examples/plot_shapes.py @@ -4,11 +4,17 @@ Shapes ====== This example shows how to draw several different shapes: -* line -* Bezier curve -* polygon -* circle -* ellipse + + - line + - Bezier curve + - polygon + - circle + - ellipse + +Anti-aliased drawing for: + + - line + - circle """ import math @@ -69,13 +75,6 @@ ax1.imshow(img) ax1.set_title('No anti-aliasing') ax1.axis('off') -""" - -Anti-aliased drawing for: -* line -* circle - -""" from skimage.draw import line_aa, circle_perimeter_aa From 17206296705045a966bd0d144426a48dd37f32d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 19:39:39 +0100 Subject: [PATCH 256/577] Improve ssim example --- doc/examples/plot_ssim.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/examples/plot_ssim.py b/doc/examples/plot_ssim.py index 9fe0c930..4e657150 100644 --- a/doc/examples/plot_ssim.py +++ b/doc/examples/plot_ssim.py @@ -22,12 +22,16 @@ but with very different mean structural similarity indices. """ import numpy as np +import matplotlib import matplotlib.pyplot as plt from skimage import data, img_as_float from skimage.measure import structural_similarity as ssim +matplotlib.rcParams['font.size'] = 9 + + img = img_as_float(data.camera()) rows, cols = img.shape @@ -41,7 +45,7 @@ def mse(x, y): img_noise = img + noise img_const = img + abs(noise) -f, (ax0, ax1, ax2) = plt.subplots(1, 3) +f, (ax0, ax1, ax2) = plt.subplots(nrows=1, ncols=3, figsize=(8, 4)) mse_none = mse(img, img) ssim_none = ssim(img, img, dynamic_range=img.max() - img.min()) From d609eb1a80b44d70a5baf37cb1333d6e9bbb9167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sat, 30 Nov 2013 22:21:12 +0100 Subject: [PATCH 257/577] Attempt to fix Python 3 error --- skimage/feature/orb.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index ac9631db..7512054a 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -110,6 +110,11 @@ class ORB(FeatureDetector, DescriptorExtractor): self.fast_threshold) keypoints = corner_peaks(fast_response, min_distance=1) + if len(keypoints) == 0: + return (np.zeros((0, 2), dtype=np.double), + np.zeros((0, ), dtype=np.double), + np.zeros((0, ), dtype=np.double)) + mask = _mask_border_keypoints(octave_image.shape, keypoints, distance=16) keypoints = keypoints[mask] @@ -293,6 +298,12 @@ class ORB(FeatureDetector, DescriptorExtractor): keypoints, orientations, responses = \ self._detect_octave(octave_image) + if len(keypoints) == 0: + keypoints_list.append(keypoints) + responses_list.append(responses) + descriptors_list.append(np.zeros((0, 256), dtype=np.bool)) + continue + descriptors, mask = self._extract_octave(octave_image, keypoints, orientations) From cba85c2948122ef2111b5f6545c5d2ee1434115a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sun, 1 Dec 2013 10:58:15 +0100 Subject: [PATCH 258/577] Add tests for plot_matches --- skimage/feature/tests/test_util.py | 32 +++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/skimage/feature/tests/test_util.py b/skimage/feature/tests/test_util.py index 6f3f78e1..31ca826a 100644 --- a/skimage/feature/tests/test_util.py +++ b/skimage/feature/tests/test_util.py @@ -1,8 +1,10 @@ import numpy as np +import matplotlib.pyplot as plt from numpy.testing import assert_equal, assert_raises + from skimage.feature.util import (FeatureDetector, DescriptorExtractor, _prepare_grayscale_input_2D, - _mask_border_keypoints) + _mask_border_keypoints, plot_matches) def test_feature_detector(): @@ -37,6 +39,34 @@ def test_mask_border_keypoints(): [0, 0, 0, 0, 1]) +def test_plot_matches(): + fig, ax = plt.subplots(nrows=1, ncols=1) + + shapes = (((10, 10), (10, 10)), + ((10, 10), (12, 10)), + ((10, 10), (10, 12)), + ((10, 10), (12, 12)), + ((12, 10), (10, 10)), + ((10, 12), (10, 10)), + ((12, 12), (10, 10))) + + keypoints1 = 10 * np.random.rand(10, 2) + keypoints2 = 10 * np.random.rand(10, 2) + idxs1 = np.random.randint(10, size=10) + idxs2 = np.random.randint(10, size=10) + + for shape1, shape2 in shapes: + img1 = np.zeros(shape1) + img2 = np.zeros(shape2) + plot_matches(ax, img1, img2, keypoints1, keypoints2, idxs1, idxs2) + plot_matches(ax, img1, img2, keypoints1, keypoints2, idxs1, idxs2, + only_matches=True) + plot_matches(ax, img1, img2, keypoints1, keypoints2, idxs1, idxs2, + keypoints_color='r') + plot_matches(ax, img1, img2, keypoints1, keypoints2, idxs1, idxs2, + matches_color='r') + + if __name__ == '__main__': from numpy import testing testing.run_module_suite() From e0e4f697de8fc7f32ef3e998e18002f7543a0261 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sun, 1 Dec 2013 10:59:21 +0100 Subject: [PATCH 259/577] Fix parameter list in doc string of plot_matches --- skimage/feature/util.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/skimage/feature/util.py b/skimage/feature/util.py index 7e31dace..6d824ef3 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -46,12 +46,10 @@ def plot_matches(ax, image1, image2, keypoints1, keypoints2, First grayscale or color image. image2 : (N, M [, 3]) array Second grayscale or color image. - keypoints : (K1, 2) array + keypoints1 : (K1, 2) array First keypoint coordinates as ``(row, col)``. - keypoints : (K2, 2) array + keypoints2 : (K2, 2) array Second keypoint coordinates as ``(row, col)``. - keypoints : (K1, 2) array - Keypoint coordinates as ``(row, col)``. indices1 : (Q, ) array Indices of corresponding matches for first set of keypoints. indices2 : (Q, ) array From ed33dbad6e5350ee4608f368a9f9362112e0a6d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sun, 1 Dec 2013 11:14:18 +0100 Subject: [PATCH 260/577] Combine match indices in one array --- doc/examples/plot_brief.py | 9 +++--- doc/examples/plot_orb.py | 11 +++---- skimage/feature/brief.py | 13 +++++--- skimage/feature/match.py | 10 +++--- skimage/feature/orb.py | 14 ++++++--- skimage/feature/tests/test_match.py | 47 ++++++++++++++--------------- skimage/feature/tests/test_util.py | 9 +++--- skimage/feature/util.py | 22 ++++++-------- 8 files changed, 69 insertions(+), 66 deletions(-) diff --git a/doc/examples/plot_brief.py b/doc/examples/plot_brief.py index 526c4acd..b4e7d8cd 100644 --- a/doc/examples/plot_brief.py +++ b/doc/examples/plot_brief.py @@ -45,16 +45,17 @@ keypoints1 = keypoints1[mask1] keypoints2 = keypoints2[mask2] keypoints3 = keypoints3[mask3] +matches12 = match_descriptors(descriptors1, descriptors2, cross_check=True) +matches13 = match_descriptors(descriptors1, descriptors3, cross_check=True) + fig, ax = plt.subplots(nrows=2, ncols=1) plt.gray() -idxs1, idxs2 = match_descriptors(descriptors1, descriptors2, cross_check=True) -plot_matches(ax[0], img1, img2, keypoints1, keypoints2, idxs1, idxs2) +plot_matches(ax[0], img1, img2, keypoints1, keypoints2, matches12) ax[0].axis('off') -idxs1, idxs3 = match_descriptors(descriptors1, descriptors3, cross_check=True) -plot_matches(ax[1], img1, img3, keypoints1, keypoints3, idxs1, idxs3) +plot_matches(ax[1], img1, img3, keypoints1, keypoints3, matches13) ax[1].axis('off') plt.show() diff --git a/doc/examples/plot_orb.py b/doc/examples/plot_orb.py index 534c4634..a3c6bf10 100644 --- a/doc/examples/plot_orb.py +++ b/doc/examples/plot_orb.py @@ -31,18 +31,17 @@ keypoints1, descriptors1 = descriptor_extractor.detect_and_extract(img1) keypoints2, descriptors2 = descriptor_extractor.detect_and_extract(img2) keypoints3, descriptors3 = descriptor_extractor.detect_and_extract(img3) +matches12 = match_descriptors(descriptors1, descriptors2, cross_check=True) +matches13 = match_descriptors(descriptors1, descriptors3, cross_check=True) + fig, ax = plt.subplots(nrows=2, ncols=1) plt.gray() -idxs1, idxs2 = match_descriptors(descriptors1, descriptors2, cross_check=True) -plot_matches(ax[0], img1, img2, keypoints1, keypoints2, - idxs1, idxs2) +plot_matches(ax[0], img1, img2, keypoints1, keypoints2, matches12) ax[0].axis('off') -idxs1, idxs3 = match_descriptors(descriptors1, descriptors3, cross_check=True) -plot_matches(ax[1], img1, img3, keypoints1, keypoints3, - idxs1, idxs3) +plot_matches(ax[1], img1, img3, keypoints1, keypoints3, matches13) ax[1].axis('off') plt.show() diff --git a/skimage/feature/brief.py b/skimage/feature/brief.py index cac7f347..45c9fa11 100644 --- a/skimage/feature/brief.py +++ b/skimage/feature/brief.py @@ -77,15 +77,18 @@ class BRIEF(DescriptorExtractor): >>> extractor = BRIEF(patch_size=5) >>> descs1, _ = extractor.extract(square1, keypoints1) >>> descs2, _ = extractor.extract(square2, keypoints2) - >>> idxs1, idxs2 = match_descriptors(descs1, descs2) - >>> idxs1, idxs2 - (array([0, 1, 2, 3]), array([0, 1, 2, 3])) - >>> keypoints1[idxs1] + >>> matches = match_descriptors(descs1, descs2) + >>> matches + array([[0, 0], + [1, 1], + [2, 2], + [3, 3]]) + >>> keypoints1[matches[:, 0]] array([[2, 2], [2, 5], [5, 2], [5, 5]]) - >>> keypoints2[idxs2] + >>> keypoints2[matches[:, 1]] array([[2, 2], [2, 6], [6, 2], diff --git a/skimage/feature/match.py b/skimage/feature/match.py index c6f23f6b..ccd8c035 100644 --- a/skimage/feature/match.py +++ b/skimage/feature/match.py @@ -35,10 +35,10 @@ def match_descriptors(descriptors1, descriptors2, metric=None, p=2, Returns ------- - indices1 : (Q, ) array - Indices of corresponding matches for first set of descriptors. - indices2 : (Q, ) array - Indices of corresponding matches for second set of descriptors. + matches : (Q, 2) array + Indices of corresponding matches in first and second set of + descriptors, where ``matches[:, 0]`` denote the indices in the first + and ``matches[:, 1]`` the indices in the second set of descriptors. """ @@ -62,4 +62,4 @@ def match_descriptors(descriptors1, descriptors2, metric=None, p=2, indices1 = indices1[mask] indices2 = indices2[mask] - return indices1, indices2 + return np.column_stack((indices1, indices2)) diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index 7512054a..a743962b 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -72,16 +72,20 @@ class ORB(FeatureDetector, DescriptorExtractor): >>> detector_extractor = ORB(n_keypoints=5) >>> keypoints1, descriptors1 = detector_extractor.detect_and_extract(img1) >>> keypoints2, descriptors2 = detector_extractor.detect_and_extract(img2) - >>> idxs1, idxs2 = match_descriptors(descriptors1, descriptors2) - >>> idxs1, idxs2 - (array([0, 1, 2, 3, 4]), array([0, 1, 2, 3, 4])) - >>> keypoints1[idxs1] + >>> matches = match_descriptors(descriptors1, descriptors2) + >>> matches + array([[0, 0], + [1, 1], + [2, 2], + [3, 3], + [4, 4]]) + >>> keypoints1[matches[:, 0]] array([[ 42., 40.], [ 47., 58.], [ 44., 40.], [ 59., 42.], [ 45., 44.]]) - >>> keypoints2[idxs2] + >>> keypoints2[matches[:, 1]] array([[ 55., 53.], [ 60., 71.], [ 57., 53.], diff --git a/skimage/feature/tests/test_match.py b/skimage/feature/tests/test_match.py index a028b585..e8b7c1ad 100644 --- a/skimage/feature/tests/test_match.py +++ b/skimage/feature/tests/test_match.py @@ -9,21 +9,20 @@ from skimage.feature import (BRIEF, match_descriptors, def test_binary_descriptors_unequal_descriptor_sizes_error(): """Sizes of descriptors of keypoints to be matched should be equal.""" - des1 = np.array([[True, True, False, True], + descs1 = np.array([[True, True, False, True], [False, True, False, True]]) - des2 = np.array([[True, False, False, True, False], + descs2 = np.array([[True, False, False, True, False], [False, True, True, True, False]]) - assert_raises(ValueError, match_descriptors, des1, des2) + assert_raises(ValueError, match_descriptors, descs1, descs2) def test_binary_descriptors(): - des1 = np.array([[True, True, False, True, True], + descs1 = np.array([[True, True, False, True, True], [False, True, False, True, True]]) - des2 = np.array([[True, False, False, True, False], + descs2 = np.array([[True, False, False, True, False], [False, False, True, True, True]]) - indices1, indices2 = match_descriptors(des1, des2) - assert_equal(indices1, [0, 1]) - assert_equal(indices2, [0, 1]) + matches = match_descriptors(descs1, descs2) + assert_equal(matches, [[0, 0], [1, 1]]) def test_binary_descriptors_lena_rotation_crosscheck_false(): @@ -45,19 +44,19 @@ def test_binary_descriptors_lena_rotation_crosscheck_false(): descriptors2, mask2 = descriptor.extract(rotated_img, keypoints2) keypoints2 = keypoints1[mask2] - m1, m2 = match_descriptors(descriptors1, descriptors2, threshold=0.13, + matches = match_descriptors(descriptors1, descriptors2, threshold=0.13, cross_check=False) - expected_mask1 = np.array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46]) - expected_mask2 = np.array([33, 0, 35, 7, 1, 35, 3, 2, 3, 6, 4, 9, - 11, 10, 28, 7, 8, 5, 31, 14, 13, 15, 21, 16, - 16, 13, 17, 18, 19, 21, 22, 23, 0, 24, 1, 24, - 23, 0, 26, 27, 25, 34, 28, 14, 29, 30, 21]) - assert_equal(m1, expected_mask1) - assert_equal(m2, expected_mask2) + exp_matches1 = np.array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46]) + exp_matches2 = np.array([33, 0, 35, 7, 1, 35, 3, 2, 3, 6, 4, 9, + 11, 10, 28, 7, 8, 5, 31, 14, 13, 15, 21, 16, + 16, 13, 17, 18, 19, 21, 22, 23, 0, 24, 1, 24, + 23, 0, 26, 27, 25, 34, 28, 14, 29, 30, 21]) + assert_equal(matches[:, 0], exp_matches1) + assert_equal(matches[:, 1], exp_matches2) def test_binary_descriptors_lena_rotation_crosscheck_true(): @@ -79,17 +78,17 @@ def test_binary_descriptors_lena_rotation_crosscheck_true(): descriptors2, mask2 = descriptor.extract(rotated_img, keypoints2) keypoints2 = keypoints1[mask2] - m1, m2 = match_descriptors(descriptors1, descriptors2, threshold=0.13, + matches = match_descriptors(descriptors1, descriptors2, threshold=0.13, cross_check=True) - expected_mask1 = np.array([ 0, 1, 2, 4, 6, 7, 9, 10, 11, 12, 13, 15, + exp_matches1 = np.array([ 0, 1, 2, 4, 6, 7, 9, 10, 11, 12, 13, 15, 16, 17, 19, 20, 21, 24, 26, 27, 28, 29, 30, 35, 36, 38, 39, 40, 42, 44, 45]) - expected_mask2 = np.array([33, 0, 35, 1, 3, 2, 6, 4, 9, 11, 10, 7, + exp_matches2 = np.array([33, 0, 35, 1, 3, 2, 6, 4, 9, 11, 10, 7, 8, 5, 14, 13, 15, 16, 17, 18, 19, 21, 22, 24, 23, 26, 27, 25, 28, 29, 30]) - assert_equal(m1, expected_mask1) - assert_equal(m2, expected_mask2) + assert_equal(matches[:, 0], exp_matches1) + assert_equal(matches[:, 1], exp_matches2) if __name__ == '__main__': diff --git a/skimage/feature/tests/test_util.py b/skimage/feature/tests/test_util.py index 31ca826a..2b601b94 100644 --- a/skimage/feature/tests/test_util.py +++ b/skimage/feature/tests/test_util.py @@ -54,16 +54,17 @@ def test_plot_matches(): keypoints2 = 10 * np.random.rand(10, 2) idxs1 = np.random.randint(10, size=10) idxs2 = np.random.randint(10, size=10) + matches = np.column_stack((idxs1, idxs2)) for shape1, shape2 in shapes: img1 = np.zeros(shape1) img2 = np.zeros(shape2) - plot_matches(ax, img1, img2, keypoints1, keypoints2, idxs1, idxs2) - plot_matches(ax, img1, img2, keypoints1, keypoints2, idxs1, idxs2, + plot_matches(ax, img1, img2, keypoints1, keypoints2, matches) + plot_matches(ax, img1, img2, keypoints1, keypoints2, matches, only_matches=True) - plot_matches(ax, img1, img2, keypoints1, keypoints2, idxs1, idxs2, + plot_matches(ax, img1, img2, keypoints1, keypoints2, matches, keypoints_color='r') - plot_matches(ax, img1, img2, keypoints1, keypoints2, idxs1, idxs2, + plot_matches(ax, img1, img2, keypoints1, keypoints2, matches, matches_color='r') diff --git a/skimage/feature/util.py b/skimage/feature/util.py index 6d824ef3..c3970766 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -33,9 +33,8 @@ class DescriptorExtractor(object): raise NotImplementedError() -def plot_matches(ax, image1, image2, keypoints1, keypoints2, - indices1, indices2, keypoints_color='k', matches_color=None, - only_matches=False): +def plot_matches(ax, image1, image2, keypoints1, keypoints2, matches, + keypoints_color='k', matches_color=None, only_matches=False): """Plot matched features. Parameters @@ -50,10 +49,10 @@ def plot_matches(ax, image1, image2, keypoints1, keypoints2, First keypoint coordinates as ``(row, col)``. keypoints2 : (K2, 2) array Second keypoint coordinates as ``(row, col)``. - indices1 : (Q, ) array - Indices of corresponding matches for first set of keypoints. - indices2 : (Q, ) array - Indices of corresponding matches for second set of keypoints. + matches : (Q, 2) array + Indices of corresponding matches in first and second set of + descriptors, where ``matches[:, 0]`` denote the indices in the first + and ``matches[:, 1]`` the indices in the second set of descriptors. keypoints_color : matplotlib color Color for keypoint locations. matches_color : matplotlib color @@ -67,9 +66,6 @@ def plot_matches(ax, image1, image2, keypoints1, keypoints2, image1 = img_as_float(image1) image2 = img_as_float(image2) - indices1 = np.squeeze(indices1) - indices2 = np.squeeze(indices2) - new_shape1 = list(image1.shape) new_shape2 = list(image2.shape) @@ -106,9 +102,9 @@ def plot_matches(ax, image1, image2, keypoints1, keypoints2, ax.imshow(image) ax.axis((0, 2 * offset[1], offset[0], 0)) - for i in range(len(indices1)): - idx1 = indices1[i] - idx2 = indices2[i] + for i in range(matches.shape[0]): + idx1 = matches[i, 0] + idx2 = matches[i, 1] if matches_color is None: color = np.random.rand(3, 1) From 57016f4db0bb4b11985c8f9b90c60e15a5b513a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sun, 1 Dec 2013 11:15:39 +0100 Subject: [PATCH 261/577] Recover hidden test cases caused by duplicate function names --- skimage/feature/tests/test_corner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/feature/tests/test_corner.py b/skimage/feature/tests/test_corner.py index 200c9e2a..bdfbb808 100644 --- a/skimage/feature/tests/test_corner.py +++ b/skimage/feature/tests/test_corner.py @@ -36,7 +36,7 @@ def test_structure_tensor(): [ 0, 0, 0, 0, 0]])) -def test_structure_tensor(): +def test_hessian_matrix(): square = np.zeros((5, 5)) square[2, 2] = 1 Hxx, Hxy, Hyy = hessian_matrix(square, sigma=0.1) @@ -74,7 +74,7 @@ def test_structure_tensor_eigvals(): [0, 0, 0, 0, 0]])) -def test_structure_tensor_eigvals(): +def test_hessian_matrix_eigvals(): square = np.zeros((5, 5)) square[2, 2] = 1 Hxx, Hxy, Hyy = hessian_matrix(square, sigma=0.1) From 4406c0f0b43a47cc9a37d65dee3a90bf4cfe06e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sun, 1 Dec 2013 11:31:40 +0100 Subject: [PATCH 262/577] Speedup corner orientations --- skimage/feature/corner_cy.pyx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/skimage/feature/corner_cy.pyx b/skimage/feature/corner_cy.pyx index 3fd860a2..86ad3c43 100644 --- a/skimage/feature/corner_cy.pyx +++ b/skimage/feature/corner_cy.pyx @@ -240,7 +240,8 @@ def corner_orientations(image, Py_ssize_t[:, :] corners, mask): if mask.shape[0] % 2 != 1 or mask.shape[1] % 2 != 1: raise ValueError("Size of mask must be uneven.") - cdef char[:, ::1] cmask = np.ascontiguousarray(mask != 0, dtype=np.uint8) + cdef unsigned char[:, ::1] cmask = np.ascontiguousarray(mask != 0, + dtype=np.uint8) cdef Py_ssize_t i, r, c, r0, c0 cdef Py_ssize_t mrows = mask.shape[0] @@ -251,7 +252,7 @@ def corner_orientations(image, Py_ssize_t[:, :] corners, mask): constant_values=0) cdef double[:] orientations = np.zeros(corners.shape[0], dtype=np.double) cdef double curr_pixel - cdef double m01, m10 + cdef double m01, m10, m01_tmp for i in range(corners.shape[0]): r0 = corners[i, 0] @@ -261,11 +262,13 @@ def corner_orientations(image, Py_ssize_t[:, :] corners, mask): m10 = 0 for r in range(mrows): + m01_tmp = 0 for c in range(mcols): if cmask[r, c]: curr_pixel = cimage[r0 + r, c0 + c] m10 += curr_pixel * (c - mcols2) - m01 += curr_pixel * (r - mrows2) + m01_tmp += curr_pixel + m01 += m01_tmp * (r - mrows2) orientations[i] = atan2(m01, m10) From 23f5ae5bb7c8deb98d08376f94100b19497c46cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sun, 1 Dec 2013 11:34:59 +0100 Subject: [PATCH 263/577] Fix plot_matching example --- doc/examples/plot_matching.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/examples/plot_matching.py b/doc/examples/plot_matching.py index 9fa0b41c..5812fa37 100644 --- a/doc/examples/plot_matching.py +++ b/doc/examples/plot_matching.py @@ -123,15 +123,15 @@ fig, ax = plt.subplots(nrows=2, ncols=1) plt.gray() -inlier_idxs = np.nonzero(inliers) +inlier_idxs = np.nonzero(inliers)[0] plot_matches(ax[0], img_orig_gray, img_warped_gray, src, dst, - inlier_idxs, inlier_idxs, matches_color='b') + np.column_stack((inlier_idxs, inlier_idxs)), matches_color='b') ax[0].axis('off') ax[0].set_title('Correct correspondences') -outlier_idxs = np.nonzero(outliers) +outlier_idxs = np.nonzero(outliers)[0] plot_matches(ax[1], img_orig_gray, img_warped_gray, src, dst, - outlier_idxs, outlier_idxs, matches_color='r') + np.column_stack((outlier_idxs, outlier_idxs)), matches_color='r') ax[1].axis('off') ax[1].set_title('Faulty correspondences') From 0c81e14bfae2004f7bc517c4f3e05e389c1bdeb0 Mon Sep 17 00:00:00 2001 From: Raphael Ackermann Date: Sun, 1 Dec 2013 23:11:33 +0100 Subject: [PATCH 264/577] changing docstring to make clear that only 2-D images are currently supported --- skimage/feature/template.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/feature/template.py b/skimage/feature/template.py index 5cb4d382..e8f17512 100644 --- a/skimage/feature/template.py +++ b/skimage/feature/template.py @@ -5,7 +5,7 @@ from . import _template def match_template(image, template, pad_input=False): - """Match a template to an image using normalized correlation. + """Match a template to a 2-D image using normalized correlation. The output is an array with values between -1.0 and 1.0, which correspond to the probability that the template is found at that position. @@ -13,7 +13,7 @@ def match_template(image, template, pad_input=False): Parameters ---------- image : array_like - Image to process. + 2-D Image to process. template : array_like Template to locate. pad_input : bool From 5abd6e3904b9d42d7d69fb081aaee114e99131ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 2 Dec 2013 01:13:36 +0100 Subject: [PATCH 265/577] Add missing plot directive --- doc/examples/plot_circular_elliptical_hough_transform.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/examples/plot_circular_elliptical_hough_transform.py b/doc/examples/plot_circular_elliptical_hough_transform.py index 0f1524c1..fbdd4f2c 100755 --- a/doc/examples/plot_circular_elliptical_hough_transform.py +++ b/doc/examples/plot_circular_elliptical_hough_transform.py @@ -148,3 +148,8 @@ ax2.set_title('Edge (white) and result (red)') ax2.imshow(edges) plt.show() + +""" +.. image:: PLOT2RST.current_figure + +""" From 121fa8f0dbb1dde9a9e83b404f74d6e23f81399e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 2 Dec 2013 10:12:49 +0100 Subject: [PATCH 266/577] Fix description --- doc/examples/plot_brief.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/examples/plot_brief.py b/doc/examples/plot_brief.py index b4e7d8cd..e5ffaaf2 100644 --- a/doc/examples/plot_brief.py +++ b/doc/examples/plot_brief.py @@ -10,8 +10,8 @@ a set of intensity difference tests. The short binary descriptor results in low memory footprint and very efficient matching based on the Hamming distance metric. -However, BRIEF does not provide rotation-invariance and scale scale-invariance -can be achieved by detecting and extracting features at different scales. +However, BRIEF does not provide rotation-invariance and scale-invariance can be +achieved by detecting and extracting features at different scales. The ORB feature detection and binary description algorithm is an extension to the BRIEF method and provides rotation and scale-invariance, see From a5e2b99e722bb92bac6a5fd0ac996bd793162403 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 2 Dec 2013 10:13:23 +0100 Subject: [PATCH 267/577] Fix typo --- doc/examples/plot_censure.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/examples/plot_censure.py b/doc/examples/plot_censure.py index 468b07d2..15cbbd13 100644 --- a/doc/examples/plot_censure.py +++ b/doc/examples/plot_censure.py @@ -3,7 +3,7 @@ CenSurE feature detector ======================== -The CenSurE feature detector is a scale-invariant center-surround detectors +The CenSurE feature detector is a scale-invariant center-surround detector (CenSurE) that claims to outperform other detectors and is capable of real-time implementation. From f6ba14b49499bdb2cdca87c489356bdadbac103c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 2 Dec 2013 11:13:44 +0100 Subject: [PATCH 268/577] Add missing optional description for kwargs --- skimage/feature/brief.py | 10 +++++----- skimage/feature/censure.py | 10 +++++----- skimage/feature/orb.py | 12 ++++++------ skimage/feature/util.py | 6 +++--- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/skimage/feature/brief.py b/skimage/feature/brief.py index 45c9fa11..b7744b4f 100644 --- a/skimage/feature/brief.py +++ b/skimage/feature/brief.py @@ -24,22 +24,22 @@ class BRIEF(DescriptorExtractor): Parameters ---------- - descriptor_size : int + descriptor_size : int, optional Size of BRIEF descriptor for each keypoint. Sizes 128, 256 and 512 recommended by the authors. Default is 256. - patch_size : int + patch_size : int, optional Length of the two dimensional square patch sampling region around the keypoints. Default is 49. - mode : {'normal', 'uniform'} + mode : {'normal', 'uniform'}, optional Probability distribution for sampling location of decision pixel-pairs around keypoints. - sample_seed : int + sample_seed : int, optional Seed for the random sampling of the decision pixel-pairs. From a square window with length patch_size, pixel pairs are sampled using the `mode` parameter to build the descriptors using intensity comparison. The value of `sample_seed` must be the same for the images to be matched while building the descriptors. - sigma : float + sigma : float, optional Standard deviation of the Gaussian low pass filter applied to the image to alleviate noise sensitivity, which is strongly recommended to obtain discriminative and good descriptors. diff --git a/skimage/feature/censure.py b/skimage/feature/censure.py index f201e12f..991875df 100644 --- a/skimage/feature/censure.py +++ b/skimage/feature/censure.py @@ -115,15 +115,15 @@ class CenSurE(FeatureDetector): """CenSurE keypoint detector. - min_scale : int + min_scale : int, optional Minimum scale to extract keypoints from. - max_scale : int + max_scale : int, optional Maximum scale to extract keypoints from. The keypoints will be extracted from all the scales except the first and the last i.e. from the scales in the range [min_scale + 1, max_scale - 1]. The filter sizes for different scales is such that the two adjacent scales comprise of an octave. - mode : {'DoB', 'Octagon', 'STAR'} + mode : {'DoB', 'Octagon', 'STAR'}, optional Type of bi-level filter used to get the scales of the input image. Possible values are 'DoB', 'Octagon' and 'STAR'. The three modes represent the shape of the bi-level filters i.e. box(square), octagon @@ -132,10 +132,10 @@ class CenSurE(FeatureDetector): weights being uniformly negative in both the inner octagon while uniformly positive in the difference region. Use STAR and Octagon for better features and DoB for better performance. - non_max_threshold : float + non_max_threshold : float, optional Threshold value used to suppress maximas and minimas with a weak magnitude response obtained after Non-Maximal Suppression. - line_threshold : float + line_threshold : float, optional Threshold for rejecting interest points which have ratio of principal curvatures greater than this value. diff --git a/skimage/feature/orb.py b/skimage/feature/orb.py index a743962b..e7ab22e1 100644 --- a/skimage/feature/orb.py +++ b/skimage/feature/orb.py @@ -25,32 +25,32 @@ class ORB(FeatureDetector, DescriptorExtractor): Parameters ---------- - n_keypoints : int + n_keypoints : int, optional Number of keypoints to be returned. The function will return the best ``n_keypoints`` according to the Harris corner response if more than ``n_keypoints`` are detected. If not, then all the detected keypoints are returned. - fast_n : int + fast_n : int, optional The ``n`` parameter in ``feature.corner_fast``. Minimum number of consecutive pixels out of 16 pixels on the circle that should all be either brighter or darker w.r.t test-pixel. A point c on the circle is darker w.r.t test pixel p if ``Ic < Ip - threshold`` and brighter if ``Ic > Ip + threshold``. Also stands for the n in ``FAST-n`` corner detector. - fast_threshold : float + fast_threshold : float, optional The ``threshold`` parameter in ``feature.corner_fast``. Threshold used to decide whether the pixels on the circle are brighter, darker or similar w.r.t. the test pixel. Decrease the threshold when more corners are desired and vice-versa. - harris_k : float + harris_k : float, optional The ``k`` parameter in ``feature.corner_harris``. Sensitivity factor to separate corners from edges, typically in range ``[0, 0.2]``. Small values of k result in detection of sharp corners. - downscale : float + downscale : float, optional Downscale factor for the image pyramid. Default value 1.2 is chosen so that there are more dense scales which enable robust scale invariance for a subsequent feature description. - n_scales : int + n_scales : int, optional Maximum number of scales from the bottom of the image pyramid to extract the features from. diff --git a/skimage/feature/util.py b/skimage/feature/util.py index c3970766..b5faa565 100644 --- a/skimage/feature/util.py +++ b/skimage/feature/util.py @@ -53,12 +53,12 @@ def plot_matches(ax, image1, image2, keypoints1, keypoints2, matches, Indices of corresponding matches in first and second set of descriptors, where ``matches[:, 0]`` denote the indices in the first and ``matches[:, 1]`` the indices in the second set of descriptors. - keypoints_color : matplotlib color + keypoints_color : matplotlib color, optional Color for keypoint locations. - matches_color : matplotlib color + matches_color : matplotlib color, optional Color for lines which connect keypoint matches. By default the color is chosen randomly. - only_matches : bool + only_matches : bool, optional Whether to only plot matches and not plot the keypoint locations. """ From b8c30bad4699e13a2c9a3eb055e11cf04990bae3 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Mon, 18 Nov 2013 21:15:04 -0600 Subject: [PATCH 269/577] Move image stack to its own module --- skimage/io/__init__.py | 1 + skimage/io/_image_stack.py | 35 +++++++++++++++++++++++++++++++++++ skimage/io/_io.py | 38 ++++---------------------------------- 3 files changed, 40 insertions(+), 34 deletions(-) create mode 100644 skimage/io/_image_stack.py diff --git a/skimage/io/__init__.py b/skimage/io/__init__.py index 5e701a51..a2553c54 100644 --- a/skimage/io/__init__.py +++ b/skimage/io/__init__.py @@ -14,6 +14,7 @@ from .sift import * from .collection import * from ._io import * +from ._image_stack import * from .video import * diff --git a/skimage/io/_image_stack.py b/skimage/io/_image_stack.py new file mode 100644 index 00000000..ca9896d5 --- /dev/null +++ b/skimage/io/_image_stack.py @@ -0,0 +1,35 @@ +import numpy as np + + +__all__ = ['image_stack', 'push', 'pop'] + + +# Shared image queue +image_stack = [] + + +def push(img): + """Push an image onto the shared image stack. + + Parameters + ---------- + img : ndarray + Image to push. + + """ + if not isinstance(img, np.ndarray): + raise ValueError("Can only push ndarrays to the image stack.") + + image_stack.append(img) + + +def pop(): + """Pop an image from the shared image stack. + + Returns + ------- + img : ndarray + Image popped from the stack. + + """ + return image_stack.pop() diff --git a/skimage/io/_io.py b/skimage/io/_io.py index eb704a6f..ae05ea77 100644 --- a/skimage/io/_io.py +++ b/skimage/io/_io.py @@ -1,10 +1,7 @@ -__all__ = ['Image', 'imread', 'imread_collection', 'imsave', 'imshow', 'show', - 'push', 'pop'] - try: - from urllib.request import urlopen + from urllib.request import urlopen # Python 3 except ImportError: - from urllib2 import urlopen + from urllib2 import urlopen # Python 2 import os import re @@ -19,8 +16,8 @@ from skimage.color import rgb2grey -# Shared image queue -_image_stack = [] +__all__ = ['Image', 'imread', 'imread_collection', 'imsave', 'imshow', 'show'] + URL_REGEX = re.compile(r'http://|https://|ftp://|file://|file:\\') @@ -77,33 +74,6 @@ class Image(np.ndarray): return return_str -def push(img): - """Push an image onto the shared image stack. - - Parameters - ---------- - img : ndarray - Image to push. - - """ - if not isinstance(img, np.ndarray): - raise ValueError("Can only push ndarrays to the image stack.") - - _image_stack.append(img) - - -def pop(): - """Pop an image from the shared image stack. - - Returns - ------- - img : ndarray - Image popped from the stack. - - """ - return _image_stack.pop() - - def imread(fname, as_grey=False, plugin=None, flatten=None, **plugin_args): """Load an image from file. From 312151b481aaa0342dd830ed402fde0a96cfbd2d Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Mon, 18 Nov 2013 21:59:46 -0600 Subject: [PATCH 270/577] Move __init__ functions to submodules. And rename functions so we don't have to alias imports. --- skimage/io/__init__.py | 40 ++--------- skimage/io/_io.py | 2 +- skimage/io/_plugins/plugin.py | 113 ++++++++++++++++++++------------ skimage/io/tests/test_plugin.py | 22 +++---- 4 files changed, 89 insertions(+), 88 deletions(-) diff --git a/skimage/io/__init__.py b/skimage/io/__init__.py index a2553c54..e19c6fe0 100644 --- a/skimage/io/__init__.py +++ b/skimage/io/__init__.py @@ -4,12 +4,7 @@ The following plug-ins are available: """ -from ._plugins import use as use_plugin -from ._plugins import available as plugins -from ._plugins import info as plugin_info -from ._plugins import configuration as plugin_order -from ._plugins import reset_plugins as _reset_plugins - +from ._plugins import * from .sift import * from .collection import * @@ -18,34 +13,9 @@ from ._image_stack import * from .video import * -available_plugins = plugins() +reset_plugins() -def _load_preferred_plugins(): - # Load preferred plugin for each io function. - io_funcs = ['imsave', 'imshow', 'imread_collection', 'imread'] - preferred_plugins = ['matplotlib', 'pil', 'qt', 'freeimage', 'null'] - for func in io_funcs: - for plugin in preferred_plugins: - if plugin not in available_plugins: - continue - try: - use_plugin(plugin, kind=func) - break - except (ImportError, RuntimeError, OSError): - pass - - # Use PIL as the default imread plugin, since matplotlib (1.2.x) - # is buggy (flips PNGs around, returns bytes as floats, etc.) - try: - use_plugin('pil', 'imread') - except ImportError: - pass - -def reset_plugins(): - _reset_plugins() - _load_preferred_plugins() - def _update_doc(doc): """Add a list of plugins to the module docstring, formatted as a ReStructuredText table. @@ -53,7 +23,9 @@ def _update_doc(doc): """ from textwrap import wrap - info = [(p, plugin_info(p)) for p in plugins() if not p == 'test'] + info = [(p, plugin_info(p)) for p in available_plugins if not p == 'test'] + print('test:', available_plugins, info) + col_1_len = max([len(n) for (n, _) in info]) wrap_len = 73 @@ -75,5 +47,3 @@ def _update_doc(doc): return doc __doc__ = _update_doc(__doc__) - -reset_plugins() diff --git a/skimage/io/_io.py b/skimage/io/_io.py index ae05ea77..aa342c33 100644 --- a/skimage/io/_io.py +++ b/skimage/io/_io.py @@ -11,7 +11,7 @@ from io import BytesIO import numpy as np import six -from skimage.io._plugins import call as call_plugin +from skimage.io._plugins import call_plugin from skimage.color import rgb2grey diff --git a/skimage/io/_plugins/plugin.py b/skimage/io/_plugins/plugin.py index 5e04f320..dd6d4527 100644 --- a/skimage/io/_plugins/plugin.py +++ b/skimage/io/_plugins/plugin.py @@ -2,25 +2,26 @@ """ -__all__ = ['use', 'available', 'call', 'info', 'configuration', 'reset_plugins'] - try: - from configparser import ConfigParser + from configparser import ConfigParser # Python 3 except ImportError: - from ConfigParser import ConfigParser + from ConfigParser import ConfigParser # Python 2 import os.path from glob import glob -plugin_store = None +__all__ = ['use_plugin', 'call_plugin', 'plugin_info', 'plugin_order', + 'reset_plugins', 'find_available_plugins', 'available_plugins'] + +plugin_store = None plugin_provides = {} plugin_module_name = {} plugin_meta_data = {} -def reset_plugins(): +def _clear_plugins(): """Clear the plugin state to the default, i.e., where no plugins are loaded """ @@ -30,8 +31,34 @@ def reset_plugins(): 'imshow': [], 'imread_collection': [], '_app_show': []} +_clear_plugins() -reset_plugins() + +def _load_preferred_plugins(): + # Load preferred plugin for each io function. + io_funcs = ['imsave', 'imshow', 'imread_collection', 'imread'] + preferred_plugins = ['matplotlib', 'pil', 'qt', 'freeimage', 'null'] + for func in io_funcs: + for plugin in preferred_plugins: + if plugin not in available_plugins: + continue + try: + use_plugin(plugin, kind=func) + break + except (ImportError, RuntimeError, OSError): + pass + + # Use PIL as the default imread plugin, since matplotlib (1.2.x) + # is buggy (flips PNGs around, returns bytes as floats, etc.) + try: + use_plugin('pil', 'imread') + except ImportError: + pass + + +def reset_plugins(): + _clear_plugins() + _load_preferred_plugins() def _scan_plugins(): @@ -66,7 +93,40 @@ def _scan_plugins(): _scan_plugins() -def call(kind, *args, **kwargs): +def find_available_plugins(loaded=False): + """List available plugins. + + Parameters + ---------- + loaded : bool + If True, show only those plugins currently loaded. By default, + all plugins are shown. + + Returns + ------- + p : dict + Dictionary with plugin names as keys and exposed functions as + values. + + """ + active_plugins = set() + for plugin_func in plugin_store.values(): + for plugin, func in plugin_func: + active_plugins.add(plugin) + + d = {} + for plugin in plugin_provides: + if not loaded or plugin in active_plugins: + d[plugin] = [f for f in plugin_provides[plugin] \ + if not f.startswith('_')] + + return d + + +available_plugins = find_available_plugins() + + +def call_plugin(kind, *args, **kwargs): """Find the appropriate plugin of 'kind' and execute it. Parameters @@ -105,7 +165,7 @@ command. A list of all available plugins can be found using return func(*args, **kwargs) -def use(name, kind=None): +def use_plugin(name, kind=None): """Set the default plugin for a specified operation. The plugin will be loaded if it hasn't been already. @@ -158,35 +218,6 @@ def use(name, kind=None): plugin_store[k] = funcs -def available(loaded=False): - """List available plugins. - - Parameters - ---------- - loaded : bool - If True, show only those plugins currently loaded. By default, - all plugins are shown. - - Returns - ------- - p : dict - Dictionary with plugin names as keys and exposed functions as - values. - - """ - active_plugins = set() - for plugin_func in plugin_store.values(): - for plugin, func in plugin_func: - active_plugins.add(plugin) - - d = {} - for plugin in plugin_provides: - if not loaded or plugin in active_plugins: - d[plugin] = [f for f in plugin_provides[plugin] \ - if not f.startswith('_')] - - return d - def _load(plugin): """Load the given plugin. @@ -201,7 +232,7 @@ def _load(plugin): plugins : List of available plugins """ - if plugin in available(loaded=True): + if plugin in find_available_plugins(loaded=True): return if not plugin in plugin_module_name: raise ValueError("Plugin %s not found." % plugin) @@ -222,7 +253,7 @@ def _load(plugin): store.append((plugin, func)) -def info(plugin): +def plugin_info(plugin): """Return plugin meta-data. Parameters @@ -242,7 +273,7 @@ def info(plugin): raise ValueError('No information on plugin "%s"' % plugin) -def configuration(): +def plugin_order(): """Return the currently preferred plugin order. Returns diff --git a/skimage/io/tests/test_plugin.py b/skimage/io/tests/test_plugin.py index 5d1febe4..82d8e662 100644 --- a/skimage/io/tests/test_plugin.py +++ b/skimage/io/tests/test_plugin.py @@ -20,7 +20,7 @@ except RuntimeError: def setup_module(self): - plugin.use('test') # see ../_plugins/test_plugin.py + plugin.use_plugin('test') # see ../_plugins/test_plugin.py def teardown_module(self): @@ -41,37 +41,37 @@ class TestPlugin: io.imread_collection('*.png', conserve_memory=False, plugin='test') def test_use(self): - plugin.use('test') - plugin.use('test', 'imshow') + plugin.use_plugin('test') + plugin.use_plugin('test', 'imshow') @raises(ValueError) def test_failed_use(self): - plugin.use('asd') + plugin.use_plugin('asd') @skipif(not PIL_available and not FI_available) def test_use_priority(self): - plugin.use(priority_plugin) + plugin.use_plugin(priority_plugin) plug, func = plugin.plugin_store['imread'][0] assert_equal(plug, priority_plugin) - plugin.use('test') + plugin.use_plugin('test') plug, func = plugin.plugin_store['imread'][0] assert_equal(plug, 'test') @skipif(not PIL_available) def test_use_priority_with_func(self): - plugin.use('pil') + plugin.use_plugin('pil') plug, func = plugin.plugin_store['imread'][0] assert_equal(plug, 'pil') - plugin.use('test', 'imread') + plugin.use_plugin('test', 'imread') plug, func = plugin.plugin_store['imread'][0] assert_equal(plug, 'test') plug, func = plugin.plugin_store['imsave'][0] assert_equal(plug, 'pil') - plugin.use('test') + plugin.use_plugin('test') plug, func = plugin.plugin_store['imsave'][0] assert_equal(plug, 'test') @@ -81,8 +81,8 @@ class TestPlugin: assert 'test' in p['imread'] def test_available(self): - assert 'qt' in io.plugins() - assert 'test' in io.plugins(loaded=True) + assert 'qt' in io.available_plugins + assert 'test' in io.find_available_plugins(loaded=True) if __name__ == "__main__": run_module_suite() From 03388d49cdc403c830e03bfae93a663c9c87dd1e Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Mon, 18 Nov 2013 22:02:08 -0600 Subject: [PATCH 271/577] Use explicit imports --- skimage/io/tests/test_plugin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/io/tests/test_plugin.py b/skimage/io/tests/test_plugin.py index 82d8e662..30a44414 100644 --- a/skimage/io/tests/test_plugin.py +++ b/skimage/io/tests/test_plugin.py @@ -1,4 +1,4 @@ -from numpy.testing import * +from numpy.testing import assert_equal, raises from skimage import io from skimage.io._plugins import plugin From 79587eaf48aa256e52b3cc162e39162f6209bfad Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Mon, 18 Nov 2013 22:04:21 -0600 Subject: [PATCH 272/577] Remove debugging statement --- skimage/io/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/skimage/io/__init__.py b/skimage/io/__init__.py index e19c6fe0..5fb2602b 100644 --- a/skimage/io/__init__.py +++ b/skimage/io/__init__.py @@ -24,7 +24,6 @@ def _update_doc(doc): from textwrap import wrap info = [(p, plugin_info(p)) for p in available_plugins if not p == 'test'] - print('test:', available_plugins, info) col_1_len = max([len(n) for (n, _) in info]) From c820699cd85a17de608e6518c8e13cd6d880a663 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Mon, 18 Nov 2013 22:04:37 -0600 Subject: [PATCH 273/577] Remove unnecessary class --- skimage/io/tests/test_plugin.py | 91 +++++++++++++++++---------------- 1 file changed, 46 insertions(+), 45 deletions(-) diff --git a/skimage/io/tests/test_plugin.py b/skimage/io/tests/test_plugin.py index 30a44414..d91e927c 100644 --- a/skimage/io/tests/test_plugin.py +++ b/skimage/io/tests/test_plugin.py @@ -19,70 +19,71 @@ except RuntimeError: FI_available = False -def setup_module(self): +def setup_module(): plugin.use_plugin('test') # see ../_plugins/test_plugin.py -def teardown_module(self): +def teardown_module(): io.reset_plugins() -class TestPlugin: - def test_read(self): - io.imread('test.png', as_grey=True, dtype='i4', plugin='test') +def test_read(): + io.imread('test.png', as_grey=True, dtype='i4', plugin='test') - def test_save(self): - io.imsave('test.png', [1, 2, 3], plugin='test') +def test_save(): + io.imsave('test.png', [1, 2, 3], plugin='test') - def test_show(self): - io.imshow([1, 2, 3], plugin_arg=(1, 2), plugin='test') +def test_show(): + io.imshow([1, 2, 3], plugin_arg=(1, 2), plugin='test') - def test_collection(self): - io.imread_collection('*.png', conserve_memory=False, plugin='test') +def test_collection(): + io.imread_collection('*.png', conserve_memory=False, plugin='test') - def test_use(self): - plugin.use_plugin('test') - plugin.use_plugin('test', 'imshow') +def test_use(): + plugin.use_plugin('test') + plugin.use_plugin('test', 'imshow') - @raises(ValueError) - def test_failed_use(self): - plugin.use_plugin('asd') +@raises(ValueError) +def test_failed_use(): + plugin.use_plugin('asd') - @skipif(not PIL_available and not FI_available) - def test_use_priority(self): - plugin.use_plugin(priority_plugin) - plug, func = plugin.plugin_store['imread'][0] - assert_equal(plug, priority_plugin) +@skipif(not PIL_available and not FI_available) +def test_use_priority(): + plugin.use_plugin(priority_plugin) + plug, func = plugin.plugin_store['imread'][0] + assert_equal(plug, priority_plugin) - plugin.use_plugin('test') - plug, func = plugin.plugin_store['imread'][0] - assert_equal(plug, 'test') + plugin.use_plugin('test') + plug, func = plugin.plugin_store['imread'][0] + assert_equal(plug, 'test') - @skipif(not PIL_available) - def test_use_priority_with_func(self): - plugin.use_plugin('pil') - plug, func = plugin.plugin_store['imread'][0] - assert_equal(plug, 'pil') +@skipif(not PIL_available) +def test_use_priority_with_func(): + plugin.use_plugin('pil') + plug, func = plugin.plugin_store['imread'][0] + assert_equal(plug, 'pil') - plugin.use_plugin('test', 'imread') - plug, func = plugin.plugin_store['imread'][0] - assert_equal(plug, 'test') + plugin.use_plugin('test', 'imread') + plug, func = plugin.plugin_store['imread'][0] + assert_equal(plug, 'test') - plug, func = plugin.plugin_store['imsave'][0] - assert_equal(plug, 'pil') + plug, func = plugin.plugin_store['imsave'][0] + assert_equal(plug, 'pil') - plugin.use_plugin('test') - plug, func = plugin.plugin_store['imsave'][0] - assert_equal(plug, 'test') + plugin.use_plugin('test') + plug, func = plugin.plugin_store['imsave'][0] + assert_equal(plug, 'test') - def test_plugin_order(self): - p = io.plugin_order() - assert 'imread' in p - assert 'test' in p['imread'] +def test_plugin_order(): + p = io.plugin_order() + assert 'imread' in p + assert 'test' in p['imread'] + +def test_available(): + assert 'qt' in io.available_plugins + assert 'test' in io.find_available_plugins(loaded=True) - def test_available(self): - assert 'qt' in io.available_plugins - assert 'test' in io.find_available_plugins(loaded=True) if __name__ == "__main__": + from numpy.testing import run_module_suite run_module_suite() From 552f24be8e0afdeffd3eaa32d435c140a57edaaf Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Mon, 18 Nov 2013 22:07:44 -0600 Subject: [PATCH 274/577] Remove unnecessary initialization --- skimage/io/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/io/__init__.py b/skimage/io/__init__.py index 5fb2602b..350ca202 100644 --- a/skimage/io/__init__.py +++ b/skimage/io/__init__.py @@ -1,4 +1,4 @@ -__doc__ = """Utilities to read and write images in various formats. +"""Utilities to read and write images in various formats. The following plug-ins are available: From f8ea4266082fba1210be270d6ae7607717591978 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Mon, 18 Nov 2013 22:27:34 -0600 Subject: [PATCH 275/577] Refactor io doc building code --- skimage/io/__init__.py | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/skimage/io/__init__.py b/skimage/io/__init__.py index 350ca202..ed6df313 100644 --- a/skimage/io/__init__.py +++ b/skimage/io/__init__.py @@ -15,6 +15,12 @@ from .video import * reset_plugins() +WRAP_LEN = 73 + + +def _separator(char, lengths): + return [char * separator_length for separator_length in lengths] + def _update_doc(doc): """Add a list of plugins to the module docstring, formatted as @@ -23,24 +29,21 @@ def _update_doc(doc): """ from textwrap import wrap - info = [(p, plugin_info(p)) for p in available_plugins if not p == 'test'] + info = [(p, plugin_info(p).get('description', 'no description')) + for p in available_plugins if not p == 'test'] col_1_len = max([len(n) for (n, _) in info]) - - wrap_len = 73 - col_2_len = wrap_len - 1 - col_1_len + col_2_len = WRAP_LEN - 1 - col_1_len # Insert table header - info.insert(0, ('=' * col_1_len, {'description': '=' * col_2_len})) - info.insert(1, ('Plugin', {'description': 'Description'})) - info.insert(2, ('-' * col_1_len, {'description': '-' * col_2_len})) - info.append(('=' * col_1_len, {'description': '=' * col_2_len})) + info.insert(0, _separator('=', (col_1_len, col_2_len))) + info.insert(1, ('Plugin', 'Description')) + info.insert(2, _separator('-', (col_1_len, col_2_len))) + info.append(_separator('-', (col_1_len, col_2_len))) - for (name, meta_data) in info: - wrapped_descr = wrap(meta_data.get('description', ''), - col_2_len) - doc += "%s %s\n" % (name.ljust(col_1_len), - '\n'.join(wrapped_descr)) + for (name, plugin_description) in info: + wrapped_descr = wrap(plugin_description, col_2_len) + doc += "%s %s\n" % (name.ljust(col_1_len), '\n'.join(wrapped_descr)) doc = doc.strip() return doc From a23e31b5539d6d8db268451600ebf71293c02d15 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Mon, 18 Nov 2013 22:33:42 -0600 Subject: [PATCH 276/577] Factor out table formatting code. --- skimage/io/__init__.py | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/skimage/io/__init__.py b/skimage/io/__init__.py index ed6df313..31d22a3f 100644 --- a/skimage/io/__init__.py +++ b/skimage/io/__init__.py @@ -22,6 +22,14 @@ def _separator(char, lengths): return [char * separator_length for separator_length in lengths] +def _format_plugin_info_table(info_table, column_lengths): + """Add separators and column titles to plugin info table.""" + info_table.insert(0, _separator('=', column_lengths)) + info_table.insert(1, ('Plugin', 'Description')) + info_table.insert(2, _separator('-', column_lengths)) + info_table.append(_separator('-', column_lengths)) + + def _update_doc(doc): """Add a list of plugins to the module docstring, formatted as a ReStructuredText table. @@ -29,21 +37,17 @@ def _update_doc(doc): """ from textwrap import wrap - info = [(p, plugin_info(p).get('description', 'no description')) - for p in available_plugins if not p == 'test'] + info_table = [(p, plugin_info(p).get('description', 'no description')) + for p in available_plugins if not p == 'test'] - col_1_len = max([len(n) for (n, _) in info]) - col_2_len = WRAP_LEN - 1 - col_1_len + name_length = max([len(n) for (n, _) in info_table]) + description_length = WRAP_LEN - 1 - name_length + column_lengths = [name_length, description_length] + _format_plugin_info_table(info_table, column_lengths) - # Insert table header - info.insert(0, _separator('=', (col_1_len, col_2_len))) - info.insert(1, ('Plugin', 'Description')) - info.insert(2, _separator('-', (col_1_len, col_2_len))) - info.append(_separator('-', (col_1_len, col_2_len))) - - for (name, plugin_description) in info: - wrapped_descr = wrap(plugin_description, col_2_len) - doc += "%s %s\n" % (name.ljust(col_1_len), '\n'.join(wrapped_descr)) + for (name, plugin_description) in info_table: + wrapped_descr = wrap(plugin_description, description_length) + doc += "%s %s\n" % (name.ljust(name_length), '\n'.join(wrapped_descr)) doc = doc.strip() return doc From 1d399617575dea5d4a9ac931182a7ac53998f997 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Mon, 18 Nov 2013 22:35:32 -0600 Subject: [PATCH 277/577] Minor rename --- skimage/io/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/skimage/io/__init__.py b/skimage/io/__init__.py index 31d22a3f..82a345c9 100644 --- a/skimage/io/__init__.py +++ b/skimage/io/__init__.py @@ -46,10 +46,11 @@ def _update_doc(doc): _format_plugin_info_table(info_table, column_lengths) for (name, plugin_description) in info_table: - wrapped_descr = wrap(plugin_description, description_length) - doc += "%s %s\n" % (name.ljust(name_length), '\n'.join(wrapped_descr)) + description = wrap(plugin_description, description_length) + doc += "%s %s\n" % (name.ljust(name_length), '\n'.join(description)) doc = doc.strip() return doc + __doc__ = _update_doc(__doc__) From 77ff0615d95d333feb905c15fe46b90316a7549e Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Mon, 18 Nov 2013 22:44:18 -0600 Subject: [PATCH 278/577] Fix wrapping of plugin descriptions --- skimage/io/__init__.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/skimage/io/__init__.py b/skimage/io/__init__.py index 82a345c9..02800fbd 100644 --- a/skimage/io/__init__.py +++ b/skimage/io/__init__.py @@ -46,8 +46,11 @@ def _update_doc(doc): _format_plugin_info_table(info_table, column_lengths) for (name, plugin_description) in info_table: - description = wrap(plugin_description, description_length) - doc += "%s %s\n" % (name.ljust(name_length), '\n'.join(description)) + description_lines = wrap(plugin_description, description_length) + name_column = [name] + name_column.extend(['' for _ in range(len(description_lines) - 1)]) + for name, description in zip(name_column, description_lines): + doc += "%s %s\n" % (name.ljust(name_length), description) doc = doc.strip() return doc From 8a2e88241ee31c1bdd650d8b561545f968dc64ef Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Mon, 2 Dec 2013 23:13:05 -0600 Subject: [PATCH 279/577] Factor out config-file parsing for clarity --- skimage/io/_plugins/plugin.py | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/skimage/io/_plugins/plugin.py b/skimage/io/_plugins/plugin.py index dd6d4527..b6e43b0f 100644 --- a/skimage/io/_plugins/plugin.py +++ b/skimage/io/_plugins/plugin.py @@ -61,25 +61,32 @@ def reset_plugins(): _load_preferred_plugins() +def _parse_config_file(filename): + """Return plugin name and meta-data dict from plugin config file.""" + parser = ConfigParser() + parser.read(filename) + name = parser.sections()[0] + + meta_data = {} + for opt in parser.options(name): + meta_data[opt] = parser.get(name, opt) + + return name, meta_data + + def _scan_plugins(): """Scan the plugins directory for .ini files and parse them to gather plugin meta-data. """ pd = os.path.dirname(__file__) - ini = glob(os.path.join(pd, '*.ini')) + config_files = glob(os.path.join(pd, '*.ini')) - for f in ini: - cp = ConfigParser() - cp.read(f) - name = cp.sections()[0] - - meta_data = {} - for opt in cp.options(name): - meta_data[opt] = cp.get(name, opt) + for filename in config_files: + name, meta_data = _parse_config_file(filename) plugin_meta_data[name] = meta_data - provides = [s.strip() for s in cp.get(name, 'provides').split(',')] + provides = [s.strip() for s in meta_data['provides'].split(',')] valid_provides = [p for p in provides if p in plugin_store] for p in provides: @@ -88,7 +95,7 @@ def _scan_plugins(): " Ignoring." % (name, p)) plugin_provides[name] = valid_provides - plugin_module_name[name] = os.path.basename(f)[:-4] + plugin_module_name[name] = os.path.basename(filename)[:-4] _scan_plugins() From 41e62fa0875afed3100d298cdcd7e76648f3ecad Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Mon, 2 Dec 2013 23:36:12 -0600 Subject: [PATCH 280/577] Add comment for clarification --- skimage/io/_plugins/plugin.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/skimage/io/_plugins/plugin.py b/skimage/io/_plugins/plugin.py index b6e43b0f..75b2f9ed 100644 --- a/skimage/io/_plugins/plugin.py +++ b/skimage/io/_plugins/plugin.py @@ -15,7 +15,10 @@ __all__ = ['use_plugin', 'call_plugin', 'plugin_info', 'plugin_order', 'reset_plugins', 'find_available_plugins', 'available_plugins'] +# The plugin store will save a list of *loaded* io functions for each io type +# (e.g. 'imread', 'imsave', etc.). Plugins are loaded as requested. plugin_store = None + plugin_provides = {} plugin_module_name = {} plugin_meta_data = {} @@ -225,7 +228,6 @@ def use_plugin(name, kind=None): plugin_store[k] = funcs - def _load(plugin): """Load the given plugin. From 86abc7c9704b75242f51392189b1d33afec34041 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Tue, 3 Dec 2013 22:16:09 -0600 Subject: [PATCH 281/577] Factor out url handling for unified file/url behavior --- skimage/io/_io.py | 29 +++-------------------------- skimage/io/util.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 26 deletions(-) create mode 100644 skimage/io/util.py diff --git a/skimage/io/_io.py b/skimage/io/_io.py index aa342c33..ce718742 100644 --- a/skimage/io/_io.py +++ b/skimage/io/_io.py @@ -1,11 +1,3 @@ -try: - from urllib.request import urlopen # Python 3 -except ImportError: - from urllib2 import urlopen # Python 2 - -import os -import re -import tempfile from io import BytesIO import numpy as np @@ -13,21 +5,13 @@ import six from skimage.io._plugins import call_plugin from skimage.color import rgb2grey - +from skimage._shared import six +from .util import file_or_url_context __all__ = ['Image', 'imread', 'imread_collection', 'imsave', 'imshow', 'show'] -URL_REGEX = re.compile(r'http://|https://|ftp://|file://|file:\\') - - -def is_url(filename): - """Return True if string is an http or ftp path.""" - return (isinstance(filename, six.string_types) and - URL_REGEX.match(filename) is not None) - - class Image(np.ndarray): """Class representing Image data. @@ -110,14 +94,7 @@ def imread(fname, as_grey=False, plugin=None, flatten=None, if flatten is not None: as_grey = flatten - if is_url(fname): - _, ext = os.path.splitext(fname) - with tempfile.NamedTemporaryFile(delete=False, suffix=ext) as f: - u = urlopen(fname) - f.write(u.read()) - img = call_plugin('imread', f.name, plugin=plugin, **plugin_args) - os.remove(f.name) - else: + with file_or_url_context(fname) as fname: img = call_plugin('imread', fname, plugin=plugin, **plugin_args) if as_grey and getattr(img, 'ndim', 0) >= 3: diff --git a/skimage/io/util.py b/skimage/io/util.py new file mode 100644 index 00000000..06f5a5b5 --- /dev/null +++ b/skimage/io/util.py @@ -0,0 +1,36 @@ +try: + from urllib.request import urlopen # Python 3 +except ImportError: + from urllib2 import urlopen # Python 2 + +import os +import re +import tempfile +from contextlib import contextmanager + +from skimage._shared import six + + +URL_REGEX = re.compile(r'http://|https://|ftp://|file://|file:\\') + + +def is_url(filename): + """Return True if string is an http or ftp path.""" + return (isinstance(filename, six.string_types) and + URL_REGEX.match(filename) is not None) + + +@contextmanager +def file_or_url_context(resource_name): + """Yield name of file from the given resource (i.e. file or url).""" + if is_url(resource_name): + _, ext = os.path.splitext(resource_name) + with tempfile.NamedTemporaryFile(delete=False, suffix=ext) as f: + u = urlopen(resource_name) + f.write(u.read()) + try: + yield f.name + finally: + os.remove(f.name) + else: + yield resource_name From 318781bca1973f34d3a6b00b5b9253cef5190f58 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Tue, 3 Dec 2013 22:27:00 -0600 Subject: [PATCH 282/577] Add test that error gets raised when no plugin available --- skimage/io/tests/test_io.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/skimage/io/tests/test_io.py b/skimage/io/tests/test_io.py index 8049860a..51b9a336 100644 --- a/skimage/io/tests/test_io.py +++ b/skimage/io/tests/test_io.py @@ -4,6 +4,7 @@ from numpy.testing import assert_array_equal, raises, run_module_suite import numpy as np import skimage.io as io +from skimage.io._plugins.plugin import plugin_store from skimage import data_dir @@ -28,5 +29,13 @@ def test_imread_url(): assert image.shape == (512, 512) +@raises(RuntimeError) +def test_imread_no_plugin(): + # tweak data path so that file URI works on both unix and windows. + image_path = os.path.join(data_dir, 'lena.png') + plugin_store['imread'] = [] + io.imread(image_path) + + if __name__ == "__main__": run_module_suite() From 90f1e791d80f2b195c7e2818c200a7016ea78afc Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Tue, 3 Dec 2013 22:30:56 -0600 Subject: [PATCH 283/577] PEP8 --- skimage/io/_plugins/plugin.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/skimage/io/_plugins/plugin.py b/skimage/io/_plugins/plugin.py index 75b2f9ed..ec8ed7c9 100644 --- a/skimage/io/_plugins/plugin.py +++ b/skimage/io/_plugins/plugin.py @@ -155,11 +155,11 @@ def call_plugin(kind, *args, **kwargs): plugin_funcs = plugin_store[kind] if len(plugin_funcs) == 0: - raise RuntimeError('''No suitable plugin registered for %s. - -You may load I/O plugins with the `skimage.io.use_plugin` -command. A list of all available plugins can be found using -`skimage.io.plugins()`.''' % kind) + msg = ("No suitable plugin registered for %s.\n\n" + "You may load I/O plugins with the `skimage.io.use_plugin` " + "command. A list of all available plugins can be found using " + "`skimage.io.plugins()`.") + raise RuntimeError(msg % kind) plugin = kwargs.pop('plugin', None) if plugin is None: From db45127fa93b495337df3e39a1c4622fce297ada Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Tue, 3 Dec 2013 23:16:50 -0600 Subject: [PATCH 284/577] Fix test so it doesn't have side-effects --- skimage/io/tests/test_io.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/skimage/io/tests/test_io.py b/skimage/io/tests/test_io.py index 51b9a336..6b74ae34 100644 --- a/skimage/io/tests/test_io.py +++ b/skimage/io/tests/test_io.py @@ -33,8 +33,12 @@ def test_imread_url(): def test_imread_no_plugin(): # tweak data path so that file URI works on both unix and windows. image_path = os.path.join(data_dir, 'lena.png') + plugins = plugin_store['imread'] plugin_store['imread'] = [] - io.imread(image_path) + try: + io.imread(image_path) + finally: + plugin_store['imread'] = plugins if __name__ == "__main__": From e04066de7ef7c0f1a337fa390ce2e5714b6d5952 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Tue, 3 Dec 2013 23:24:16 -0600 Subject: [PATCH 285/577] Change InheritedConfig so a key is contained if a parent key is contained --- skimage/io/inherited_config.py | 159 +++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 skimage/io/inherited_config.py diff --git a/skimage/io/inherited_config.py b/skimage/io/inherited_config.py new file mode 100644 index 00000000..6b989b66 --- /dev/null +++ b/skimage/io/inherited_config.py @@ -0,0 +1,159 @@ +class InheritedConfig(dict): + """Configuration dictionary where non-existent keys can inherit values. + + This class allows you to define parameter names that can match exactly, but + if it doesn't, parameter names will be searched based on key inheritance. + For example, the key 'size.text' will default to 'size'. + + Note that indexing into the dictionary will raise an error if it doesn't + match exactly, while `InheritedConfig.get` will look up values based on + inheritance. + + Parameters + ---------- + config_values : dict or list of (key, value) pairs + Default values for a configuration, where keys are the parameter names + and values are the associated value. + cascade_map : dict + Dictionary defining cascading defaults. If a parameter name is not + found, indexing `cascade_map` with the parameter name will return + the parameter to look for. + kwargs : dict + Keyword arguments for initializing dict. + """ + + _separator = '.' + + def __init__(self, config_values=None, **kwargs): + assert 'config_values' not in kwargs + + if config_values is None: + config_values = {} + + super(InheritedConfig, self).__init__(config_values, **kwargs) + + def get(self, key, default=None, _prev=None): + """Return best matching config value for `key`. + + Get value from configuration. The search for `key` is in the following + order: + + - `self` (Value in global configuration) + - `default` + - Alternate key specified by `self.cascade_map` + + This method supports the pattern commonly used for optional keyword + arguments to a function. For example:: + + >>> def print_value(key, **kwargs): + ... print kwargs.get(key, 0) + >>> print_value('size') + 0 + >>> print_value('size', size=1) + 1 + + Instead, you would create a config class and write:: + + >>> config = InheritedConfig(size=0) + >>> def print_value(key, **kwargs): + ... print kwargs.get(key, config.get(key)) + >>> print_value('size') + 0 + >>> print_value('size', size=1) + 1 + >>> print_value('non-existent') + None + >>> print_value('size.text') + 0 + + See examples below for a demonstration of the cascading of + configuration names. + + Parameters + ---------- + key : str + Name of config value you want. + default : object + Default value if `key` doesn't exist in instance. + + Examples + -------- + >>> config = InheritedConfig(size=0) + >>> config.get('size') + 0 + >>> top_choice={'size': 1} + >>> top_choice.get('size', config.get('size')) + 1 + >>> config.get('non-existent', 'unknown') + 'unknown' + >>> config.get('size.text') + 0 + >>> config.get('size.text', 2) + 2 + >>> top_choice.get('size', config.get('size.text')) + 1 + """ + if key in self.keys(): + return self[key] + elif default is not None: + return default + elif self._separator in key: + return self.get(self._parent(key)) + else: + return None + + def _parent(self, key): + """Return parent key.""" + parts = key.split(self._separator) + return self._separator.join(parts[:-1]) + + def __contains__(self, key): + if key in self.keys(): + return True + elif self._separator in key: + return self.__contains__(self._parent(key)) + else: + return False + + +def test_get_non_existent(): + config = InheritedConfig() + assert config.get('size') is None + + +def test_get_simple(): + config = InheritedConfig({'imread': 'matplotlib'}) + assert config.get('imread') == 'matplotlib' + + +def test_get_default(): + config = InheritedConfig() + assert config.get('size', 10) == 10 + + +def test_get_best(): + config = InheritedConfig({'size': 0, 'size.text': 1}) + assert config.get('size.text') == 1 + + +def test_get_multi_level(): + config = InheritedConfig({'size': 0}) + assert config.get('size.text.title') == 0 + config['size.text'] = 1 + assert config.get('size.text.title') == 1 + config['size.text.title'] = 2 + assert config.get('size.text.title') == 2 + + +def test_contains(): + config = InheritedConfig({'imread': 'matplotlib'}) + assert 'imread' in config + assert 'imread.jpg' in config + + +if __name__ == '__main__': + import doctest + from numpy import testing + + doctest.testmod() + testing.run_module_suite() From fabe4fa0ccb32aa3ea381e40e17c271dffcce9e6 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Tue, 3 Dec 2013 23:28:27 -0600 Subject: [PATCH 286/577] Move tests to separate file. --- skimage/io/inherited_config.py | 37 -------------------- skimage/io/tests/test_inherited_config.py | 41 +++++++++++++++++++++++ 2 files changed, 41 insertions(+), 37 deletions(-) create mode 100644 skimage/io/tests/test_inherited_config.py diff --git a/skimage/io/inherited_config.py b/skimage/io/inherited_config.py index 6b989b66..446e6db7 100644 --- a/skimage/io/inherited_config.py +++ b/skimage/io/inherited_config.py @@ -116,44 +116,7 @@ class InheritedConfig(dict): return False -def test_get_non_existent(): - config = InheritedConfig() - assert config.get('size') is None - - -def test_get_simple(): - config = InheritedConfig({'imread': 'matplotlib'}) - assert config.get('imread') == 'matplotlib' - - -def test_get_default(): - config = InheritedConfig() - assert config.get('size', 10) == 10 - - -def test_get_best(): - config = InheritedConfig({'size': 0, 'size.text': 1}) - assert config.get('size.text') == 1 - - -def test_get_multi_level(): - config = InheritedConfig({'size': 0}) - assert config.get('size.text.title') == 0 - config['size.text'] = 1 - assert config.get('size.text.title') == 1 - config['size.text.title'] = 2 - assert config.get('size.text.title') == 2 - - -def test_contains(): - config = InheritedConfig({'imread': 'matplotlib'}) - assert 'imread' in config - assert 'imread.jpg' in config - - if __name__ == '__main__': import doctest - from numpy import testing doctest.testmod() - testing.run_module_suite() diff --git a/skimage/io/tests/test_inherited_config.py b/skimage/io/tests/test_inherited_config.py new file mode 100644 index 00000000..5521da0b --- /dev/null +++ b/skimage/io/tests/test_inherited_config.py @@ -0,0 +1,41 @@ +from skimage.io.inherited_config import InheritedConfig + + +def test_get_non_existent(): + config = InheritedConfig() + assert config.get('size') is None + + +def test_get_simple(): + config = InheritedConfig({'imread': 'matplotlib'}) + assert config.get('imread') == 'matplotlib' + + +def test_get_default(): + config = InheritedConfig() + assert config.get('size', 10) == 10 + + +def test_get_best(): + config = InheritedConfig({'size': 0, 'size.text': 1}) + assert config.get('size.text') == 1 + + +def test_get_multi_level(): + config = InheritedConfig({'size': 0}) + assert config.get('size.text.title') == 0 + config['size.text'] = 1 + assert config.get('size.text.title') == 1 + config['size.text.title'] = 2 + assert config.get('size.text.title') == 2 + + +def test_contains(): + config = InheritedConfig({'imread': 'matplotlib'}) + assert 'imread' in config + assert 'imread.jpg' in config + + +if __name__ == '__main__': + from numpy import testing + testing.run_module_suite() From f1dce4be9d18a2787ef5b29b40640e3f41a01a3d Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Tue, 3 Dec 2013 23:32:06 -0600 Subject: [PATCH 287/577] Change plugin_store to use InheritedConfig --- skimage/io/_plugins/plugin.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/skimage/io/_plugins/plugin.py b/skimage/io/_plugins/plugin.py index ec8ed7c9..2ff2f938 100644 --- a/skimage/io/_plugins/plugin.py +++ b/skimage/io/_plugins/plugin.py @@ -9,6 +9,7 @@ except ImportError: import os.path from glob import glob +from skimage.io.inherited_config import InheritedConfig __all__ = ['use_plugin', 'call_plugin', 'plugin_info', 'plugin_order', @@ -29,11 +30,11 @@ def _clear_plugins(): """ global plugin_store - plugin_store = {'imread': [], - 'imsave': [], - 'imshow': [], - 'imread_collection': [], - '_app_show': []} + plugin_store = InheritedConfig({'imread': [], + 'imsave': [], + 'imshow': [], + 'imread_collection': [], + '_app_show': []}) _clear_plugins() From 860c6b5cb56d1744385c37d05b7b7005709c483f Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Tue, 3 Dec 2013 23:57:19 -0600 Subject: [PATCH 288/577] Use InheritedConfig for plugin_store --- skimage/io/_io.py | 11 +++++++++-- skimage/io/inherited_config.py | 9 +++++++-- skimage/io/tests/test_inherited_config.py | 6 ++++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/skimage/io/_io.py b/skimage/io/_io.py index ce718742..1a938408 100644 --- a/skimage/io/_io.py +++ b/skimage/io/_io.py @@ -1,3 +1,4 @@ +import os from io import BytesIO import numpy as np @@ -5,7 +6,6 @@ import six from skimage.io._plugins import call_plugin from skimage.color import rgb2grey -from skimage._shared import six from .util import file_or_url_context @@ -95,7 +95,14 @@ def imread(fname, as_grey=False, plugin=None, flatten=None, as_grey = flatten with file_or_url_context(fname) as fname: - img = call_plugin('imread', fname, plugin=plugin, **plugin_args) + function = 'imread' + # TODO: This should probably use imghdr to get the image format. + try: + _, extension = os.path.splitext(fname) + function = function + extension + except AttributeError: # Buffers don't work with splitext + pass + img = call_plugin(function, fname, plugin=plugin, **plugin_args) if as_grey and getattr(img, 'ndim', 0) >= 3: img = rgb2grey(img) diff --git a/skimage/io/inherited_config.py b/skimage/io/inherited_config.py index 446e6db7..9cbc7857 100644 --- a/skimage/io/inherited_config.py +++ b/skimage/io/inherited_config.py @@ -32,7 +32,10 @@ class InheritedConfig(dict): super(InheritedConfig, self).__init__(config_values, **kwargs) - def get(self, key, default=None, _prev=None): + def __getitem__(self, key): + return self.get(key, _raise=True) + + def get(self, key, default=None, _raise=False): """Return best matching config value for `key`. Get value from configuration. The search for `key` is in the following @@ -94,11 +97,13 @@ class InheritedConfig(dict): 1 """ if key in self.keys(): - return self[key] + return super(InheritedConfig, self).__getitem__(key) elif default is not None: return default elif self._separator in key: return self.get(self._parent(key)) + elif _raise: + raise KeyError('%r not in %s' % (key, self.__class__.__name__)) else: return None diff --git a/skimage/io/tests/test_inherited_config.py b/skimage/io/tests/test_inherited_config.py index 5521da0b..207d3cf1 100644 --- a/skimage/io/tests/test_inherited_config.py +++ b/skimage/io/tests/test_inherited_config.py @@ -36,6 +36,12 @@ def test_contains(): assert 'imread.jpg' in config +def test_getitem(): + config = InheritedConfig({'imread': 'a'}) + assert config['imread'] == 'a' + assert config['imread.png'] == 'a' + + if __name__ == '__main__': from numpy import testing testing.run_module_suite() From 6994bc53b987903946678c684ae46fc35002afa7 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Wed, 4 Dec 2013 22:54:38 -0600 Subject: [PATCH 289/577] Add test for loading preferred plugins. --- skimage/io/_plugins/plugin.py | 3 ++- skimage/io/tests/test_plugin.py | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/skimage/io/_plugins/plugin.py b/skimage/io/_plugins/plugin.py index 2ff2f938..5352a511 100644 --- a/skimage/io/_plugins/plugin.py +++ b/skimage/io/_plugins/plugin.py @@ -24,6 +24,8 @@ plugin_provides = {} plugin_module_name = {} plugin_meta_data = {} +preferred_plugins = ['matplotlib', 'pil', 'qt', 'freeimage', 'null'] + def _clear_plugins(): """Clear the plugin state to the default, i.e., where no plugins are loaded @@ -41,7 +43,6 @@ _clear_plugins() def _load_preferred_plugins(): # Load preferred plugin for each io function. io_funcs = ['imsave', 'imshow', 'imread_collection', 'imread'] - preferred_plugins = ['matplotlib', 'pil', 'qt', 'freeimage', 'null'] for func in io_funcs: for plugin in preferred_plugins: if plugin not in available_plugins: diff --git a/skimage/io/tests/test_plugin.py b/skimage/io/tests/test_plugin.py index d91e927c..4be829ca 100644 --- a/skimage/io/tests/test_plugin.py +++ b/skimage/io/tests/test_plugin.py @@ -30,23 +30,29 @@ def teardown_module(): def test_read(): io.imread('test.png', as_grey=True, dtype='i4', plugin='test') + def test_save(): io.imsave('test.png', [1, 2, 3], plugin='test') + def test_show(): io.imshow([1, 2, 3], plugin_arg=(1, 2), plugin='test') + def test_collection(): io.imread_collection('*.png', conserve_memory=False, plugin='test') + def test_use(): plugin.use_plugin('test') plugin.use_plugin('test', 'imshow') + @raises(ValueError) def test_failed_use(): plugin.use_plugin('asd') + @skipif(not PIL_available and not FI_available) def test_use_priority(): plugin.use_plugin(priority_plugin) @@ -57,6 +63,7 @@ def test_use_priority(): plug, func = plugin.plugin_store['imread'][0] assert_equal(plug, 'test') + @skipif(not PIL_available) def test_use_priority_with_func(): plugin.use_plugin('pil') @@ -74,16 +81,26 @@ def test_use_priority_with_func(): plug, func = plugin.plugin_store['imsave'][0] assert_equal(plug, 'test') + def test_plugin_order(): p = io.plugin_order() assert 'imread' in p assert 'test' in p['imread'] + def test_available(): assert 'qt' in io.available_plugins assert 'test' in io.find_available_plugins(loaded=True) +def test_load_preferred_plugins(): + from skimage.io._plugins import null_plugin + plugin.preferred_plugins = ['null'] + plugin.reset_plugins() + plug, func = plugin.plugin_store['imshow'][0] + assert func == null_plugin.imshow + + if __name__ == "__main__": from numpy.testing import run_module_suite run_module_suite() From ac4eb5ae7b0856712fa01c9dc4c460d25782fcb8 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Wed, 4 Dec 2013 22:58:35 -0600 Subject: [PATCH 290/577] Make preferred_plugins a dict --- skimage/io/_plugins/plugin.py | 7 ++++--- skimage/io/tests/test_plugin.py | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/skimage/io/_plugins/plugin.py b/skimage/io/_plugins/plugin.py index 5352a511..6657ebbc 100644 --- a/skimage/io/_plugins/plugin.py +++ b/skimage/io/_plugins/plugin.py @@ -24,8 +24,9 @@ plugin_provides = {} plugin_module_name = {} plugin_meta_data = {} -preferred_plugins = ['matplotlib', 'pil', 'qt', 'freeimage', 'null'] - +preferred_plugins = { + 'io': ['matplotlib', 'pil', 'qt', 'freeimage', 'null'] +} def _clear_plugins(): """Clear the plugin state to the default, i.e., where no plugins are loaded @@ -44,7 +45,7 @@ def _load_preferred_plugins(): # Load preferred plugin for each io function. io_funcs = ['imsave', 'imshow', 'imread_collection', 'imread'] for func in io_funcs: - for plugin in preferred_plugins: + for plugin in preferred_plugins['io']: if plugin not in available_plugins: continue try: diff --git a/skimage/io/tests/test_plugin.py b/skimage/io/tests/test_plugin.py index 4be829ca..53f105a2 100644 --- a/skimage/io/tests/test_plugin.py +++ b/skimage/io/tests/test_plugin.py @@ -95,7 +95,7 @@ def test_available(): def test_load_preferred_plugins(): from skimage.io._plugins import null_plugin - plugin.preferred_plugins = ['null'] + plugin.preferred_plugins['io'] = ['null'] plugin.reset_plugins() plug, func = plugin.plugin_store['imshow'][0] assert func == null_plugin.imshow From 0922ccf92315f0c4bdd60ac4ee71d1a84cdcea80 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Thu, 5 Dec 2013 22:56:58 -0600 Subject: [PATCH 291/577] Refactor load_preferred_plugins --- skimage/io/_plugins/null_plugin.ini | 2 +- skimage/io/_plugins/null_plugin.py | 7 ++++- skimage/io/_plugins/plugin.py | 40 +++++++++++++++++------------ skimage/io/tests/test_plugin.py | 39 ++++++++++++++++++++++++---- 4 files changed, 64 insertions(+), 24 deletions(-) diff --git a/skimage/io/_plugins/null_plugin.ini b/skimage/io/_plugins/null_plugin.ini index ddc45f33..9703aab0 100644 --- a/skimage/io/_plugins/null_plugin.ini +++ b/skimage/io/_plugins/null_plugin.ini @@ -1,3 +1,3 @@ [null] description = Default plugin that does nothing -provides = imshow, imread, _app_show +provides = imshow, imread, imsave, _app_show diff --git a/skimage/io/_plugins/null_plugin.py b/skimage/io/_plugins/null_plugin.py index 70bfd5d8..4eb7adf3 100644 --- a/skimage/io/_plugins/null_plugin.py +++ b/skimage/io/_plugins/null_plugin.py @@ -1,4 +1,4 @@ -__all__ = ['imshow', 'imread', '_app_show'] +__all__ = ['imshow', 'imread', 'imsave', '_app_show'] import warnings @@ -17,4 +17,9 @@ def imshow(*args, **kwargs): def imread(*args, **kwargs): warnings.warn(RuntimeWarning(message)) + +def imsave(*args, **kwargs): + warnings.warn(RuntimeWarning(message)) + + _app_show = imshow diff --git a/skimage/io/_plugins/plugin.py b/skimage/io/_plugins/plugin.py index 6657ebbc..42cf448e 100644 --- a/skimage/io/_plugins/plugin.py +++ b/skimage/io/_plugins/plugin.py @@ -25,9 +25,14 @@ plugin_module_name = {} plugin_meta_data = {} preferred_plugins = { - 'io': ['matplotlib', 'pil', 'qt', 'freeimage', 'null'] + 'all': ['matplotlib', 'pil', 'qt', 'freeimage', 'null'], + # Use PIL as the default imread plugin, since matplotlib (1.2.x) + # is buggy (flips PNGs around, returns bytes as floats, etc.) + 'imread': ['pil'], + 'imread.tiff': ['tifffile'], } + def _clear_plugins(): """Clear the plugin state to the default, i.e., where no plugins are loaded @@ -43,23 +48,24 @@ _clear_plugins() def _load_preferred_plugins(): # Load preferred plugin for each io function. - io_funcs = ['imsave', 'imshow', 'imread_collection', 'imread'] - for func in io_funcs: - for plugin in preferred_plugins['io']: - if plugin not in available_plugins: - continue - try: - use_plugin(plugin, kind=func) - break - except (ImportError, RuntimeError, OSError): - pass + io_types = ['imsave', 'imshow', 'imread_collection', 'imread'] + for p_type in io_types: + _set_plugin(p_type, preferred_plugins['all']) - # Use PIL as the default imread plugin, since matplotlib (1.2.x) - # is buggy (flips PNGs around, returns bytes as floats, etc.) - try: - use_plugin('pil', 'imread') - except ImportError: - pass + plugin_types = (p for p in preferred_plugins.keys() if p != 'all') + for p_type in plugin_types: + _set_plugin(p_type, preferred_plugins[p_type]) + + +def _set_plugin(plugin_type, plugin_list): + for plugin in plugin_list: + if plugin not in available_plugins: + continue + try: + use_plugin(plugin, kind=plugin_type) + break + except (ImportError, RuntimeError, OSError): + pass def reset_plugins(): diff --git a/skimage/io/tests/test_plugin.py b/skimage/io/tests/test_plugin.py index 53f105a2..fba1c5d0 100644 --- a/skimage/io/tests/test_plugin.py +++ b/skimage/io/tests/test_plugin.py @@ -1,3 +1,5 @@ +from contextlib import contextmanager + from numpy.testing import assert_equal, raises from skimage import io @@ -27,6 +29,16 @@ def teardown_module(): io.reset_plugins() +@contextmanager +def protect_preferred_plugins(): + """Contexts where `preferred_plugins` can be modified w/o side-effects.""" + preferred_plugins = plugin.preferred_plugins.copy() + try: + yield + finally: + plugin.preferred_plugins = preferred_plugins + + def test_read(): io.imread('test.png', as_grey=True, dtype='i4', plugin='test') @@ -93,12 +105,29 @@ def test_available(): assert 'test' in io.find_available_plugins(loaded=True) -def test_load_preferred_plugins(): +def test_load_preferred_plugins_all(): from skimage.io._plugins import null_plugin - plugin.preferred_plugins['io'] = ['null'] - plugin.reset_plugins() - plug, func = plugin.plugin_store['imshow'][0] - assert func == null_plugin.imshow + + with protect_preferred_plugins(): + plugin.preferred_plugins = {'all': ['null']} + plugin.reset_plugins() + + for plugin_type in ('imread', 'imsave', 'imshow'): + plug, func = plugin.plugin_store[plugin_type][0] + assert func == getattr(null_plugin, plugin_type) + + +def test_load_preferred_plugins_imread(): + from skimage.io._plugins import null_plugin + + with protect_preferred_plugins(): + plugin.preferred_plugins['imread'] = ['null'] + plugin.reset_plugins() + + plug, func = plugin.plugin_store['imread'][0] + assert func == null_plugin.imread + plug, func = plugin.plugin_store['imshow'][0] + assert func != null_plugin.imshow if __name__ == "__main__": From 99aa5a823836126c08a811860b7ba39d631b83c4 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Thu, 5 Dec 2013 23:18:09 -0600 Subject: [PATCH 292/577] Move io._plugins.plugin to io.manage_plugins --- skimage/io/__init__.py | 3 +- skimage/io/_io.py | 2 +- skimage/io/_plugins/__init__.py | 1 - .../{_plugins/plugin.py => manage_plugins.py} | 4 +- skimage/io/tests/test_io.py | 2 +- skimage/io/tests/test_plugin.py | 50 +++++++++---------- 6 files changed, 32 insertions(+), 30 deletions(-) rename skimage/io/{_plugins/plugin.py => manage_plugins.py} (98%) diff --git a/skimage/io/__init__.py b/skimage/io/__init__.py index 02800fbd..316253ca 100644 --- a/skimage/io/__init__.py +++ b/skimage/io/__init__.py @@ -4,7 +4,7 @@ The following plug-ins are available: """ -from ._plugins import * +from .manage_plugins import * from .sift import * from .collection import * @@ -37,6 +37,7 @@ def _update_doc(doc): """ from textwrap import wrap + info_table = [(p, plugin_info(p).get('description', 'no description')) for p in available_plugins if not p == 'test'] diff --git a/skimage/io/_io.py b/skimage/io/_io.py index 1a938408..0f5087a1 100644 --- a/skimage/io/_io.py +++ b/skimage/io/_io.py @@ -4,7 +4,7 @@ from io import BytesIO import numpy as np import six -from skimage.io._plugins import call_plugin +from skimage.io.manage_plugins import call_plugin from skimage.color import rgb2grey from .util import file_or_url_context diff --git a/skimage/io/_plugins/__init__.py b/skimage/io/_plugins/__init__.py index 48aad58e..e69de29b 100644 --- a/skimage/io/_plugins/__init__.py +++ b/skimage/io/_plugins/__init__.py @@ -1 +0,0 @@ -from .plugin import * diff --git a/skimage/io/_plugins/plugin.py b/skimage/io/manage_plugins.py similarity index 98% rename from skimage/io/_plugins/plugin.py rename to skimage/io/manage_plugins.py index 42cf448e..ebc55b6a 100644 --- a/skimage/io/_plugins/plugin.py +++ b/skimage/io/manage_plugins.py @@ -9,6 +9,7 @@ except ImportError: import os.path from glob import glob + from skimage.io.inherited_config import InheritedConfig @@ -25,6 +26,7 @@ plugin_module_name = {} plugin_meta_data = {} preferred_plugins = { + # Default plugins for all types (overridden by specific types below). 'all': ['matplotlib', 'pil', 'qt', 'freeimage', 'null'], # Use PIL as the default imread plugin, since matplotlib (1.2.x) # is buggy (flips PNGs around, returns bytes as floats, etc.) @@ -92,7 +94,7 @@ def _scan_plugins(): """ pd = os.path.dirname(__file__) - config_files = glob(os.path.join(pd, '*.ini')) + config_files = glob(os.path.join(pd, '_plugins', '*.ini')) for filename in config_files: name, meta_data = _parse_config_file(filename) diff --git a/skimage/io/tests/test_io.py b/skimage/io/tests/test_io.py index 6b74ae34..14879e64 100644 --- a/skimage/io/tests/test_io.py +++ b/skimage/io/tests/test_io.py @@ -4,7 +4,7 @@ from numpy.testing import assert_array_equal, raises, run_module_suite import numpy as np import skimage.io as io -from skimage.io._plugins.plugin import plugin_store +from skimage.io.manage_plugins import plugin_store from skimage import data_dir diff --git a/skimage/io/tests/test_plugin.py b/skimage/io/tests/test_plugin.py index fba1c5d0..06f3a600 100644 --- a/skimage/io/tests/test_plugin.py +++ b/skimage/io/tests/test_plugin.py @@ -3,7 +3,7 @@ from contextlib import contextmanager from numpy.testing import assert_equal, raises from skimage import io -from skimage.io._plugins import plugin +from skimage.io import manage_plugins from numpy.testing.decorators import skipif try: @@ -22,7 +22,7 @@ except RuntimeError: def setup_module(): - plugin.use_plugin('test') # see ../_plugins/test_plugin.py + manage_plugins.use_plugin('test') # see ../_plugins/test_plugin.py def teardown_module(): @@ -32,11 +32,11 @@ def teardown_module(): @contextmanager def protect_preferred_plugins(): """Contexts where `preferred_plugins` can be modified w/o side-effects.""" - preferred_plugins = plugin.preferred_plugins.copy() + preferred_plugins = manage_plugins.preferred_plugins.copy() try: yield finally: - plugin.preferred_plugins = preferred_plugins + manage_plugins.preferred_plugins = preferred_plugins def test_read(): @@ -56,41 +56,41 @@ def test_collection(): def test_use(): - plugin.use_plugin('test') - plugin.use_plugin('test', 'imshow') + manage_plugins.use_plugin('test') + manage_plugins.use_plugin('test', 'imshow') @raises(ValueError) def test_failed_use(): - plugin.use_plugin('asd') + manage_plugins.use_plugin('asd') @skipif(not PIL_available and not FI_available) def test_use_priority(): - plugin.use_plugin(priority_plugin) - plug, func = plugin.plugin_store['imread'][0] + manage_plugins.use_plugin(priority_plugin) + plug, func = manage_plugins.plugin_store['imread'][0] assert_equal(plug, priority_plugin) - plugin.use_plugin('test') - plug, func = plugin.plugin_store['imread'][0] + manage_plugins.use_plugin('test') + plug, func = manage_plugins.plugin_store['imread'][0] assert_equal(plug, 'test') @skipif(not PIL_available) def test_use_priority_with_func(): - plugin.use_plugin('pil') - plug, func = plugin.plugin_store['imread'][0] + manage_plugins.use_plugin('pil') + plug, func = manage_plugins.plugin_store['imread'][0] assert_equal(plug, 'pil') - plugin.use_plugin('test', 'imread') - plug, func = plugin.plugin_store['imread'][0] + manage_plugins.use_plugin('test', 'imread') + plug, func = manage_plugins.plugin_store['imread'][0] assert_equal(plug, 'test') - plug, func = plugin.plugin_store['imsave'][0] + plug, func = manage_plugins.plugin_store['imsave'][0] assert_equal(plug, 'pil') - plugin.use_plugin('test') - plug, func = plugin.plugin_store['imsave'][0] + manage_plugins.use_plugin('test') + plug, func = manage_plugins.plugin_store['imsave'][0] assert_equal(plug, 'test') @@ -109,11 +109,11 @@ def test_load_preferred_plugins_all(): from skimage.io._plugins import null_plugin with protect_preferred_plugins(): - plugin.preferred_plugins = {'all': ['null']} - plugin.reset_plugins() + manage_plugins.preferred_plugins = {'all': ['null']} + manage_plugins.reset_plugins() for plugin_type in ('imread', 'imsave', 'imshow'): - plug, func = plugin.plugin_store[plugin_type][0] + plug, func = manage_plugins.plugin_store[plugin_type][0] assert func == getattr(null_plugin, plugin_type) @@ -121,12 +121,12 @@ def test_load_preferred_plugins_imread(): from skimage.io._plugins import null_plugin with protect_preferred_plugins(): - plugin.preferred_plugins['imread'] = ['null'] - plugin.reset_plugins() + manage_plugins.preferred_plugins['imread'] = ['null'] + manage_plugins.reset_plugins() - plug, func = plugin.plugin_store['imread'][0] + plug, func = manage_plugins.plugin_store['imread'][0] assert func == null_plugin.imread - plug, func = plugin.plugin_store['imshow'][0] + plug, func = manage_plugins.plugin_store['imshow'][0] assert func != null_plugin.imshow From e59daf474c38aa744c3f3f3ee3cf20d930501082 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Thu, 5 Dec 2013 23:38:13 -0600 Subject: [PATCH 293/577] Modest attempt at normalizing file extensions --- skimage/io/_io.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/io/_io.py b/skimage/io/_io.py index 0f5087a1..d38e7ac0 100644 --- a/skimage/io/_io.py +++ b/skimage/io/_io.py @@ -99,7 +99,7 @@ def imread(fname, as_grey=False, plugin=None, flatten=None, # TODO: This should probably use imghdr to get the image format. try: _, extension = os.path.splitext(fname) - function = function + extension + function = function + extension.lower() except AttributeError: # Buffers don't work with splitext pass img = call_plugin(function, fname, plugin=plugin, **plugin_args) From ed0ae50f6292aa12f3bbf7463661675ac9c701ce Mon Sep 17 00:00:00 2001 From: Olivier Debeir Date: Fri, 6 Dec 2013 09:05:55 +0100 Subject: [PATCH 294/577] add rank filter sum --- skimage/filter/rank/__init__.py | 3 +- skimage/filter/rank/generic.py | 46 ++++++++++++++++++++++++++ skimage/filter/rank/generic_cy.pyx | 24 ++++++++++++++ skimage/filter/rank/tests/test_rank.py | 35 ++++++++++++++++++++ 4 files changed, 107 insertions(+), 1 deletion(-) diff --git a/skimage/filter/rank/__init__.py b/skimage/filter/rank/__init__.py index 04a4b854..361e400e 100644 --- a/skimage/filter/rank/__init__.py +++ b/skimage/filter/rank/__init__.py @@ -1,6 +1,6 @@ from .generic import (autolevel, bottomhat, equalize, gradient, maximum, mean, subtract_mean, median, minimum, modal, enhance_contrast, - pop, threshold, tophat, noise_filter, entropy, otsu) + pop, threshold, tophat, noise_filter, entropy, otsu, sum) from ._percentile import (autolevel_percentile, gradient_percentile, mean_percentile, subtract_mean_percentile, enhance_contrast_percentile, percentile, @@ -51,6 +51,7 @@ __all__ = ['autolevel', 'pop', 'pop_percentile', 'pop_bilateral', + 'sum', 'threshold', 'threshold_percentile', 'tophat', diff --git a/skimage/filter/rank/generic.py b/skimage/filter/rank/generic.py index 34c0787b..29f243d1 100644 --- a/skimage/filter/rank/generic.py +++ b/skimage/filter/rank/generic.py @@ -528,6 +528,52 @@ def pop(image, selem, out=None, mask=None, shift_x=False, shift_y=False): return _apply(generic_cy._pop, image, selem, out=out, mask=mask, shift_x=shift_x, shift_y=shift_y) +def sum(image, selem, out=None, mask=None, shift_x=False, shift_y=False): + """Return the sum of pixels inside the neighborhood. If sum does not fit the data type,folding is possible. + + Parameters + ---------- + image : ndarray (uint8, uint16) + Image array. + selem : ndarray + The neighborhood expressed as a 2-D array of 1's and 0's. + out : ndarray (same dtype as input) + If None, a new array will be allocated. + mask : ndarray + Mask array that defines (>0) area of the image included in the local + neighborhood. If None, the complete image is used (default). + shift_x, shift_y : int + Offset added to the structuring element center point. Shift is bounded + to the structuring element sizes (center must be inside the given + structuring element). + + Returns + ------- + out : ndarray (same dtype as input image) + Output image. + + Examples + -------- + >>> # Local mean + >>> from skimage.morphology import square + >>> import skimage.filter.rank as rank + >>> ima = 255 * np.array([[0, 0, 0, 0, 0], + ... [0, 1, 1, 1, 0], + ... [0, 1, 1, 1, 0], + ... [0, 1, 1, 1, 0], + ... [0, 0, 0, 0, 0]], dtype=np.uint8) + >>> rank.pop(ima, square(3)) + array([[1, 2, 3, 2, 1], + [2, 4, 6, 4, 2], + [3, 6, 9, 6, 3], + [2, 4, 6, 4, 2], + [1, 2, 3, 2, 1]], dtype=uint8) + + """ + + return _apply(generic_cy._sum, image, selem, out=out, + mask=mask, shift_x=shift_x, shift_y=shift_y) + def threshold(image, selem, out=None, mask=None, shift_x=False, shift_y=False): """Return greyscale local threshold of an image. diff --git a/skimage/filter/rank/generic_cy.pyx b/skimage/filter/rank/generic_cy.pyx index dcf6e361..2953b2f0 100644 --- a/skimage/filter/rank/generic_cy.pyx +++ b/skimage/filter/rank/generic_cy.pyx @@ -221,6 +221,21 @@ cdef inline double _kernel_pop(Py_ssize_t* histo, double pop, dtype_t g, return pop +cdef inline double _kernel_sum(Py_ssize_t* histo, double pop,dtype_t g, + Py_ssize_t max_bin, Py_ssize_t mid_bin, + double p0, double p1, + Py_ssize_t s0, Py_ssize_t s1): + + cdef Py_ssize_t i + cdef Py_ssize_t sum = 0 + + if pop: + for i in range(max_bin): + sum += histo[i] * i + return sum + else: + return 0 + cdef inline double _kernel_threshold(Py_ssize_t* histo, double pop, dtype_t g, Py_ssize_t max_bin, Py_ssize_t mid_bin, @@ -455,6 +470,15 @@ def _pop(dtype_t[:, ::1] image, _core(_kernel_pop[dtype_t], image, selem, mask, out, shift_x, shift_y, 0, 0, 0, 0, max_bin) +def _sum(dtype_t[:, ::1] image, + char[:, ::1] selem, + char[:, ::1] mask, + dtype_t_out[:, ::1] out, + char shift_x, char shift_y, Py_ssize_t max_bin): + + _core(_kernel_sum[dtype_t], image, selem, mask, + out, shift_x, shift_y, 0, 0, 0, 0, max_bin) + def _threshold(dtype_t[:, ::1] image, char[:, ::1] selem, diff --git a/skimage/filter/rank/tests/test_rank.py b/skimage/filter/rank/tests/test_rank.py index cedeb92d..26aa43ed 100644 --- a/skimage/filter/rank/tests/test_rank.py +++ b/skimage/filter/rank/tests/test_rank.py @@ -498,6 +498,41 @@ def test_percentile_median(): img_max = rank.median(img16, selem=selem) assert_array_equal(img_p0, img_max) +def test_sum(): + # check the number of valid pixels in the neighborhood + + image8 = np.array([[0, 0, 0, 0, 0], + [0, 1, 1, 1, 0], + [0, 1, 1, 1, 0], + [0, 1, 1, 1, 0], + [0, 0, 0, 0, 0]], dtype=np.uint8) + image16 = 400*np.array([[0, 0, 0, 0, 0], + [0, 1, 1, 1, 0], + [0, 1, 1, 1, 0], + [0, 1, 1, 1, 0], + [0, 0, 0, 0, 0]], dtype=np.uint16) + elem = np.ones((3, 3), dtype=np.uint8) + out8 = np.empty_like(image8) + out16 = np.empty_like(image16) + mask = np.ones(image8.shape, dtype=np.uint8) + + rank.sum(image=image8, selem=elem, out=out8, mask=mask) + r = np.array([[1, 2, 3, 2, 1], + [2, 4, 6, 4, 2], + [3, 6, 9, 6, 3], + [2, 4, 6, 4, 2], + [1, 2, 3, 2, 1]], dtype=np.uint8) + assert_array_equal(r, out8) + + rank.sum(image=image16, selem=elem, out=out16, mask=mask) + r = 400* np.array([[1, 2, 3, 2, 1], + [2, 4, 6, 4, 2], + [3, 6, 9, 6, 3], + [2, 4, 6, 4, 2], + [1, 2, 3, 2, 1]], dtype=np.uint16) + print image16 + assert_array_equal(r, out16) + if __name__ == "__main__": run_module_suite() From fe0e252db67406ba495e844bab038b71e6e1c683 Mon Sep 17 00:00:00 2001 From: Olivier Debeir Date: Fri, 6 Dec 2013 09:08:34 +0100 Subject: [PATCH 295/577] shorten line --- skimage/filter/rank/generic.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/skimage/filter/rank/generic.py b/skimage/filter/rank/generic.py index 29f243d1..6341b822 100644 --- a/skimage/filter/rank/generic.py +++ b/skimage/filter/rank/generic.py @@ -529,7 +529,8 @@ def pop(image, selem, out=None, mask=None, shift_x=False, shift_y=False): mask=mask, shift_x=shift_x, shift_y=shift_y) def sum(image, selem, out=None, mask=None, shift_x=False, shift_y=False): - """Return the sum of pixels inside the neighborhood. If sum does not fit the data type,folding is possible. + """Return the sum of pixels inside the neighborhood. + If sum does not fit the data type,folding is possible. Parameters ---------- From 39b256a7ede77eb5376e01ad7fddad29c31916f2 Mon Sep 17 00:00:00 2001 From: Olivier Debeir Date: Fri, 6 Dec 2013 10:05:19 +0100 Subject: [PATCH 296/577] fix:rank.sum docstring --- skimage/filter/rank/generic.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/filter/rank/generic.py b/skimage/filter/rank/generic.py index 6341b822..ba45a898 100644 --- a/skimage/filter/rank/generic.py +++ b/skimage/filter/rank/generic.py @@ -558,12 +558,12 @@ def sum(image, selem, out=None, mask=None, shift_x=False, shift_y=False): >>> # Local mean >>> from skimage.morphology import square >>> import skimage.filter.rank as rank - >>> ima = 255 * np.array([[0, 0, 0, 0, 0], + >>> ima = np.array([[0, 0, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 1, 1, 0], ... [0, 0, 0, 0, 0]], dtype=np.uint8) - >>> rank.pop(ima, square(3)) + >>> rank.sum(ima, square(3)) array([[1, 2, 3, 2, 1], [2, 4, 6, 4, 2], [3, 6, 9, 6, 3], From 0fc0c9f042cedf1f93876dd066fb3f40013b5dfa Mon Sep 17 00:00:00 2001 From: Olivier Debeir Date: Fri, 6 Dec 2013 10:06:32 +0100 Subject: [PATCH 297/577] fix:rank.sum docstring --- skimage/filter/rank/generic.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/skimage/filter/rank/generic.py b/skimage/filter/rank/generic.py index ba45a898..2c3557b4 100644 --- a/skimage/filter/rank/generic.py +++ b/skimage/filter/rank/generic.py @@ -508,7 +508,6 @@ def pop(image, selem, out=None, mask=None, shift_x=False, shift_y=False): Examples -------- - >>> # Local mean >>> from skimage.morphology import square >>> import skimage.filter.rank as rank >>> ima = 255 * np.array([[0, 0, 0, 0, 0], @@ -555,7 +554,6 @@ def sum(image, selem, out=None, mask=None, shift_x=False, shift_y=False): Examples -------- - >>> # Local mean >>> from skimage.morphology import square >>> import skimage.filter.rank as rank >>> ima = np.array([[0, 0, 0, 0, 0], From ef5de4165b15821b3f1d1feb46fd6fe188f0a31a Mon Sep 17 00:00:00 2001 From: Olivier Debeir Date: Fri, 6 Dec 2013 10:08:27 +0100 Subject: [PATCH 298/577] fix:rank.sum docstring --- skimage/filter/rank/generic.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/skimage/filter/rank/generic.py b/skimage/filter/rank/generic.py index 2c3557b4..b7293862 100644 --- a/skimage/filter/rank/generic.py +++ b/skimage/filter/rank/generic.py @@ -528,8 +528,7 @@ def pop(image, selem, out=None, mask=None, shift_x=False, shift_y=False): mask=mask, shift_x=shift_x, shift_y=shift_y) def sum(image, selem, out=None, mask=None, shift_x=False, shift_y=False): - """Return the sum of pixels inside the neighborhood. - If sum does not fit the data type,folding is possible. + """Return the sum of pixels inside the neighborhood (truncated to uint8 or uint16). Parameters ---------- From 1f8adcc7555ea2555b2f7a011d31f406157090a7 Mon Sep 17 00:00:00 2001 From: Olivier Debeir Date: Fri, 6 Dec 2013 10:09:10 +0100 Subject: [PATCH 299/577] fix:indent --- skimage/filter/rank/generic_cy.pyx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/skimage/filter/rank/generic_cy.pyx b/skimage/filter/rank/generic_cy.pyx index 2953b2f0..dd461fc7 100644 --- a/skimage/filter/rank/generic_cy.pyx +++ b/skimage/filter/rank/generic_cy.pyx @@ -222,9 +222,9 @@ cdef inline double _kernel_pop(Py_ssize_t* histo, double pop, dtype_t g, return pop cdef inline double _kernel_sum(Py_ssize_t* histo, double pop,dtype_t g, - Py_ssize_t max_bin, Py_ssize_t mid_bin, - double p0, double p1, - Py_ssize_t s0, Py_ssize_t s1): + Py_ssize_t max_bin, Py_ssize_t mid_bin, + double p0, double p1, + Py_ssize_t s0, Py_ssize_t s1): cdef Py_ssize_t i cdef Py_ssize_t sum = 0 From d98ed722d986fd92e25115d112c737aaaa70ab39 Mon Sep 17 00:00:00 2001 From: Olivier Debeir Date: Fri, 6 Dec 2013 10:37:39 +0100 Subject: [PATCH 300/577] add:rank.sum_percentile --- skimage/filter/rank/__init__.py | 2 +- skimage/filter/rank/_percentile.py | 36 ++++++++++++++++++++++++++ skimage/filter/rank/percentile_cy.pyx | 32 +++++++++++++++++++++++ skimage/filter/rank/tests/test_rank.py | 34 +++++++++++++++++++++++- 4 files changed, 102 insertions(+), 2 deletions(-) diff --git a/skimage/filter/rank/__init__.py b/skimage/filter/rank/__init__.py index 361e400e..9a31a565 100644 --- a/skimage/filter/rank/__init__.py +++ b/skimage/filter/rank/__init__.py @@ -4,7 +4,7 @@ from .generic import (autolevel, bottomhat, equalize, gradient, maximum, mean, from ._percentile import (autolevel_percentile, gradient_percentile, mean_percentile, subtract_mean_percentile, enhance_contrast_percentile, percentile, - pop_percentile, threshold_percentile) + pop_percentile,sum_percentile, threshold_percentile) from .bilateral import mean_bilateral, pop_bilateral from skimage._shared.utils import deprecated diff --git a/skimage/filter/rank/_percentile.py b/skimage/filter/rank/_percentile.py index ff3b1559..7f24e3e0 100644 --- a/skimage/filter/rank/_percentile.py +++ b/skimage/filter/rank/_percentile.py @@ -310,6 +310,42 @@ def pop_percentile(image, selem, out=None, mask=None, shift_x=False, image, selem, out=out, mask=mask, shift_x=shift_x, shift_y=shift_y, p0=p0, p1=p1) +def sum_percentile(image, selem, out=None, mask=None, shift_x=False, + shift_y=False, p0=0, p1=1): + """Return greyscale local sum of an image. + + sum is computed on the given structuring element. Only levels between + percentiles [p0, p1] are used. result is truncated (8bit or 16bit). + + Parameters + ---------- + image : ndarray (uint8, uint16) + Image array. + selem : ndarray + The neighborhood expressed as a 2-D array of 1's and 0's. + out : ndarray (same dtype as input) + If None, a new array will be allocated. + mask : ndarray + Mask array that defines (>0) area of the image included in the local + neighborhood. If None, the complete image is used (default). + shift_x, shift_y : int + Offset added to the structuring element center point. Shift is bounded + to the structuring element sizes (center must be inside the given + structuring element). + p0, p1 : float in [0, ..., 1] + Define the [p0, p1] percentile interval to be considered for computing + the value. + + Returns + ------- + out : ndarray (same dtype as input image) + Output image. + + """ + + return _apply(percentile_cy._sum, + image, selem, out=out, mask=mask, shift_x=shift_x, + shift_y=shift_y, p0=p0, p1=p1) def threshold_percentile(image, selem, out=None, mask=None, shift_x=False, shift_y=False, p0=0): diff --git a/skimage/filter/rank/percentile_cy.pyx b/skimage/filter/rank/percentile_cy.pyx index e951a76e..bd0cbe53 100644 --- a/skimage/filter/rank/percentile_cy.pyx +++ b/skimage/filter/rank/percentile_cy.pyx @@ -90,6 +90,29 @@ cdef inline double _kernel_mean(Py_ssize_t* histo, double pop, dtype_t g, else: return 0 +cdef inline double _kernel_sum(Py_ssize_t* histo, double pop, dtype_t g, + Py_ssize_t max_bin, Py_ssize_t mid_bin, + double p0, double p1, + Py_ssize_t s0, Py_ssize_t s1): + + cdef Py_ssize_t i, sum, sum_g, n + + if pop: + sum = 0 + sum_g = 0 + n = 0 + for i in range(max_bin): + sum += histo[i] + if (sum >= p0 * pop) and (sum <= p1 * pop): + n += histo[i] + sum_g += histo[i] * i + + if n > 0: + return sum_g + else: + return 0 + else: + return 0 cdef inline double _kernel_subtract_mean(Py_ssize_t* histo, double pop, dtype_t g, @@ -245,6 +268,15 @@ def _mean(dtype_t[:, ::1] image, _core(_kernel_mean[dtype_t], image, selem, mask, out, shift_x, shift_y, p0, p1, 0, 0, max_bin) +def _sum(dtype_t[:, ::1] image, + char[:, ::1] selem, + char[:, ::1] mask, + dtype_t_out[:, ::1] out, + char shift_x, char shift_y, double p0, double p1, + Py_ssize_t max_bin): + + _core(_kernel_sum[dtype_t], image, selem, mask, out, + shift_x, shift_y, p0, p1, 0, 0, max_bin) def _subtract_mean(dtype_t[:, ::1] image, char[:, ::1] selem, diff --git a/skimage/filter/rank/tests/test_rank.py b/skimage/filter/rank/tests/test_rank.py index 26aa43ed..b3de866a 100644 --- a/skimage/filter/rank/tests/test_rank.py +++ b/skimage/filter/rank/tests/test_rank.py @@ -530,9 +530,41 @@ def test_sum(): [3, 6, 9, 6, 3], [2, 4, 6, 4, 2], [1, 2, 3, 2, 1]], dtype=np.uint16) - print image16 assert_array_equal(r, out16) +def test_sum_percentile(): + # check the number of valid pixels in the neighborhood + + image8 = np.array([[0, 0, 0, 0, 0], + [0, 1, 1, 1, 0], + [0, 1, 1, 1, 0], + [0, 1, 1, 1, 0], + [0, 0, 0, 0, 0]], dtype=np.uint8) + image16 = 400*np.array([[0, 0, 0, 0, 0], + [0, 1, 1, 1, 0], + [0, 1, 1, 1, 0], + [0, 1, 1, 1, 0], + [0, 0, 0, 0, 0]], dtype=np.uint16) + elem = np.ones((3, 3), dtype=np.uint8) + out8 = np.empty_like(image8) + out16 = np.empty_like(image16) + mask = np.ones(image16.shape, dtype=np.uint8) + + rank.sum_percentile(image=image8, selem=elem, out=out8, mask=mask,p0=.0,p1=1.) + r = np.array([[1, 2, 3, 2, 1], + [2, 4, 6, 4, 2], + [3, 6, 9, 6, 3], + [2, 4, 6, 4, 2], + [1, 2, 3, 2, 1]], dtype=np.uint8) + assert_array_equal(r, out8) + + rank.sum_percentile(image=image16, selem=elem, out=out16, mask=mask,p0=.0,p1=1.) + r = 400* np.array([[1, 2, 3, 2, 1], + [2, 4, 6, 4, 2], + [3, 6, 9, 6, 3], + [2, 4, 6, 4, 2], + [1, 2, 3, 2, 1]], dtype=np.uint16) + assert_array_equal(r, out16) if __name__ == "__main__": run_module_suite() From 3f0877981025ee139342eb88e8e5f6640abf06fb Mon Sep 17 00:00:00 2001 From: Olivier Debeir Date: Fri, 6 Dec 2013 10:47:52 +0100 Subject: [PATCH 301/577] add:rank.sum_bilateral --- skimage/filter/rank/__init__.py | 2 +- skimage/filter/rank/bilateral.py | 60 +++++++++++++++++++++++++- skimage/filter/rank/bilateral_cy.pyx | 31 +++++++++++++ skimage/filter/rank/tests/test_rank.py | 51 ++++++---------------- 4 files changed, 104 insertions(+), 40 deletions(-) diff --git a/skimage/filter/rank/__init__.py b/skimage/filter/rank/__init__.py index 9a31a565..aad8036b 100644 --- a/skimage/filter/rank/__init__.py +++ b/skimage/filter/rank/__init__.py @@ -5,7 +5,7 @@ from ._percentile import (autolevel_percentile, gradient_percentile, mean_percentile, subtract_mean_percentile, enhance_contrast_percentile, percentile, pop_percentile,sum_percentile, threshold_percentile) -from .bilateral import mean_bilateral, pop_bilateral +from .bilateral import mean_bilateral, pop_bilateral, sum_bilateral from skimage._shared.utils import deprecated diff --git a/skimage/filter/rank/bilateral.py b/skimage/filter/rank/bilateral.py index f1b10fec..f6e7d228 100644 --- a/skimage/filter/rank/bilateral.py +++ b/skimage/filter/rank/bilateral.py @@ -30,7 +30,7 @@ from . import bilateral_cy from .generic import _handle_input -__all__ = ['mean_bilateral', 'pop_bilateral'] +__all__ = ['mean_bilateral', 'pop_bilateral', 'sum_bilateral'] def _apply(func, image, selem, out, mask, shift_x, shift_y, s0, s1, @@ -155,3 +155,61 @@ def pop_bilateral(image, selem, out=None, mask=None, shift_x=False, return _apply(bilateral_cy._pop, image, selem, out=out, mask=mask, shift_x=shift_x, shift_y=shift_y, s0=s0, s1=s1) + +def sum_bilateral(image, selem, out=None, mask=None, shift_x=False, + shift_y=False, s0=10, s1=10): + """Apply a flat kernel bilateral filter. + + This is an edge-preserving and noise reducing denoising filter. It averages + pixels based on their spatial closeness and radiometric similarity. + + Spatial closeness is measured by considering only the local pixel + neighborhood given by a structuring element (selem). + + Radiometric similarity is defined by the greylevel interval [g-s0, g+s1] + where g is the current pixel greylevel. Only pixels belonging to the + structuring element AND having a greylevel inside this interval are + averaged. Return greyscale local bilateral_sum of an image. + + Parameters + ---------- + image : ndarray (uint8, uint16) + Image array. + selem : ndarray + The neighborhood expressed as a 2-D array of 1's and 0's. + out : ndarray (same dtype as input) + If None, a new array will be allocated. + mask : ndarray + Mask array that defines (>0) area of the image included in the local + neighborhood. If None, the complete image is used (default). + shift_x, shift_y : int + Offset added to the structuring element center point. Shift is bounded + to the structuring element sizes (center must be inside the given + structuring element). + s0, s1 : int + Define the [s0, s1] interval around the greyvalue of the center pixel + to be considered for computing the value. + + Returns + ------- + out : ndarray (same dtype as input image) + Output image. + + See also + -------- + skimage.filter.denoise_bilateral for a gaussian bilateral filter. + + Examples + -------- + >>> from skimage import data + >>> from skimage.morphology import disk + >>> from skimage.filter.rank import bilateral_sum + >>> # Load test image / cast to uint16 + >>> ima = data.camera().astype(np.uint16) + >>> # bilateral filtering of cameraman image using a flat kernel + >>> bilat_ima = bilateral_sum(ima, disk(20), s0=10,s1=10) + + """ + + return _apply(bilateral_cy._sum, image, selem, out=out, + mask=mask, shift_x=shift_x, shift_y=shift_y, s0=s0, s1=s1) diff --git a/skimage/filter/rank/bilateral_cy.pyx b/skimage/filter/rank/bilateral_cy.pyx index de2b3e53..25a81766 100644 --- a/skimage/filter/rank/bilateral_cy.pyx +++ b/skimage/filter/rank/bilateral_cy.pyx @@ -47,6 +47,27 @@ cdef inline double _kernel_pop(Py_ssize_t* histo, double pop, dtype_t g, else: return 0 +cdef inline double _kernel_sum(Py_ssize_t* histo, double pop, dtype_t g, + Py_ssize_t max_bin, Py_ssize_t mid_bin, + double p0, double p1, + Py_ssize_t s0, Py_ssize_t s1): + + cdef Py_ssize_t i + cdef Py_ssize_t bilat_pop = 0 + cdef Py_ssize_t sum = 0 + + if pop: + for i in range(max_bin): + if (g > (i - s0)) and (g < (i + s1)): + bilat_pop += histo[i] + sum += histo[i] * i + if bilat_pop: + return sum + else: + return 0 + else: + return 0 + def _mean(dtype_t[:, ::1] image, char[:, ::1] selem, @@ -68,3 +89,13 @@ def _pop(dtype_t[:, ::1] image, _core(_kernel_pop[dtype_t], image, selem, mask, out, shift_x, shift_y, 0, 0, s0, s1, max_bin) + +def _sum(dtype_t[:, ::1] image, + char[:, ::1] selem, + char[:, ::1] mask, + dtype_t_out[:, ::1] out, + char shift_x, char shift_y, Py_ssize_t s0, Py_ssize_t s1, + Py_ssize_t max_bin): + + _core(_kernel_sum[dtype_t], image, selem, mask, out, + shift_x, shift_y, 0, 0, s0, s1, max_bin) diff --git a/skimage/filter/rank/tests/test_rank.py b/skimage/filter/rank/tests/test_rank.py index b3de866a..72f9afe6 100644 --- a/skimage/filter/rank/tests/test_rank.py +++ b/skimage/filter/rank/tests/test_rank.py @@ -516,55 +516,30 @@ def test_sum(): out16 = np.empty_like(image16) mask = np.ones(image8.shape, dtype=np.uint8) + r = np.array([[1, 2, 3, 2, 1], + [2, 4, 6, 4, 2], + [3, 6, 9, 6, 3], + [2, 4, 6, 4, 2], + [1, 2, 3, 2, 1]], dtype=np.uint8) rank.sum(image=image8, selem=elem, out=out8, mask=mask) - r = np.array([[1, 2, 3, 2, 1], - [2, 4, 6, 4, 2], - [3, 6, 9, 6, 3], - [2, 4, 6, 4, 2], - [1, 2, 3, 2, 1]], dtype=np.uint8) assert_array_equal(r, out8) - - rank.sum(image=image16, selem=elem, out=out16, mask=mask) - r = 400* np.array([[1, 2, 3, 2, 1], - [2, 4, 6, 4, 2], - [3, 6, 9, 6, 3], - [2, 4, 6, 4, 2], - [1, 2, 3, 2, 1]], dtype=np.uint16) - assert_array_equal(r, out16) - -def test_sum_percentile(): - # check the number of valid pixels in the neighborhood - - image8 = np.array([[0, 0, 0, 0, 0], - [0, 1, 1, 1, 0], - [0, 1, 1, 1, 0], - [0, 1, 1, 1, 0], - [0, 0, 0, 0, 0]], dtype=np.uint8) - image16 = 400*np.array([[0, 0, 0, 0, 0], - [0, 1, 1, 1, 0], - [0, 1, 1, 1, 0], - [0, 1, 1, 1, 0], - [0, 0, 0, 0, 0]], dtype=np.uint16) - elem = np.ones((3, 3), dtype=np.uint8) - out8 = np.empty_like(image8) - out16 = np.empty_like(image16) - mask = np.ones(image16.shape, dtype=np.uint8) - rank.sum_percentile(image=image8, selem=elem, out=out8, mask=mask,p0=.0,p1=1.) - r = np.array([[1, 2, 3, 2, 1], - [2, 4, 6, 4, 2], - [3, 6, 9, 6, 3], - [2, 4, 6, 4, 2], - [1, 2, 3, 2, 1]], dtype=np.uint8) + assert_array_equal(r, out8) + rank.sum_bilateral(image=image8, selem=elem, out=out8, mask=mask,s0=255,s1=255) assert_array_equal(r, out8) - rank.sum_percentile(image=image16, selem=elem, out=out16, mask=mask,p0=.0,p1=1.) r = 400* np.array([[1, 2, 3, 2, 1], [2, 4, 6, 4, 2], [3, 6, 9, 6, 3], [2, 4, 6, 4, 2], [1, 2, 3, 2, 1]], dtype=np.uint16) + rank.sum(image=image16, selem=elem, out=out16, mask=mask) assert_array_equal(r, out16) + rank.sum_percentile(image=image16, selem=elem, out=out16, mask=mask,p0=.0,p1=1.) + assert_array_equal(r, out16) + rank.sum_bilateral(image=image16, selem=elem, out=out16, mask=mask,s0=1000,s1=1000) + assert_array_equal(r, out16) + if __name__ == "__main__": run_module_suite() From 0b8d83c24c61994c488f69ed699e307f7c5da390 Mon Sep 17 00:00:00 2001 From: Olivier Debeir Date: Fri, 6 Dec 2013 10:50:27 +0100 Subject: [PATCH 302/577] fix:rank.sum docstrings --- skimage/filter/rank/_percentile.py | 2 +- skimage/filter/rank/bilateral.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/skimage/filter/rank/_percentile.py b/skimage/filter/rank/_percentile.py index 7f24e3e0..f2b5e7f4 100644 --- a/skimage/filter/rank/_percentile.py +++ b/skimage/filter/rank/_percentile.py @@ -315,7 +315,7 @@ def sum_percentile(image, selem, out=None, mask=None, shift_x=False, """Return greyscale local sum of an image. sum is computed on the given structuring element. Only levels between - percentiles [p0, p1] are used. result is truncated (8bit or 16bit). + percentiles [p0, p1] are used. Result is truncated (8bit or 16bit). Parameters ---------- diff --git a/skimage/filter/rank/bilateral.py b/skimage/filter/rank/bilateral.py index f6e7d228..6abba0ec 100644 --- a/skimage/filter/rank/bilateral.py +++ b/skimage/filter/rank/bilateral.py @@ -169,7 +169,8 @@ def sum_bilateral(image, selem, out=None, mask=None, shift_x=False, Radiometric similarity is defined by the greylevel interval [g-s0, g+s1] where g is the current pixel greylevel. Only pixels belonging to the structuring element AND having a greylevel inside this interval are - averaged. Return greyscale local bilateral_sum of an image. + summed. Return greyscale local bilateral_sum of an image. + Result is truncated (8bit or 16bit). Parameters ---------- From 9d734ad4f2ac629121d5ab510d1bf2d5c6a0ef3f Mon Sep 17 00:00:00 2001 From: Olivier Debeir Date: Fri, 6 Dec 2013 12:05:36 +0100 Subject: [PATCH 303/577] fix:docstring in sum_bilateral --- skimage/filter/rank/bilateral.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/skimage/filter/rank/bilateral.py b/skimage/filter/rank/bilateral.py index 6abba0ec..4509e06b 100644 --- a/skimage/filter/rank/bilateral.py +++ b/skimage/filter/rank/bilateral.py @@ -169,7 +169,7 @@ def sum_bilateral(image, selem, out=None, mask=None, shift_x=False, Radiometric similarity is defined by the greylevel interval [g-s0, g+s1] where g is the current pixel greylevel. Only pixels belonging to the structuring element AND having a greylevel inside this interval are - summed. Return greyscale local bilateral_sum of an image. + summed. Return greyscale local bilateral sum of an image. Result is truncated (8bit or 16bit). Parameters @@ -204,11 +204,11 @@ def sum_bilateral(image, selem, out=None, mask=None, shift_x=False, -------- >>> from skimage import data >>> from skimage.morphology import disk - >>> from skimage.filter.rank import bilateral_sum + >>> from skimage.filter.rank import sum_bilateral >>> # Load test image / cast to uint16 >>> ima = data.camera().astype(np.uint16) >>> # bilateral filtering of cameraman image using a flat kernel - >>> bilat_ima = bilateral_sum(ima, disk(20), s0=10,s1=10) + >>> bilat_ima = sum_bilateral(ima, disk(20), s0=10,s1=10) """ From cb310feab111e2dafc95360eca4c34cf3e9c7388 Mon Sep 17 00:00:00 2001 From: Olivier Debeir Date: Fri, 6 Dec 2013 13:42:06 +0100 Subject: [PATCH 304/577] fix:rtank.__init__ --- skimage/filter/rank/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/skimage/filter/rank/__init__.py b/skimage/filter/rank/__init__.py index aad8036b..9fc2c18e 100644 --- a/skimage/filter/rank/__init__.py +++ b/skimage/filter/rank/__init__.py @@ -4,7 +4,7 @@ from .generic import (autolevel, bottomhat, equalize, gradient, maximum, mean, from ._percentile import (autolevel_percentile, gradient_percentile, mean_percentile, subtract_mean_percentile, enhance_contrast_percentile, percentile, - pop_percentile,sum_percentile, threshold_percentile) + pop_percentile, sum_percentile, threshold_percentile) from .bilateral import mean_bilateral, pop_bilateral, sum_bilateral from skimage._shared.utils import deprecated @@ -52,6 +52,8 @@ __all__ = ['autolevel', 'pop_percentile', 'pop_bilateral', 'sum', + 'sum_bilateral', + 'sum_percentile', 'threshold', 'threshold_percentile', 'tophat', From 2e84dc639935f89a05ece74b340659b311737412 Mon Sep 17 00:00:00 2001 From: odebeir Date: Fri, 6 Dec 2013 20:13:00 +0100 Subject: [PATCH 305/577] fix:indentation --- skimage/filter/rank/generic.py | 8 ++++---- skimage/filter/rank/generic_cy.pyx | 8 ++++---- skimage/filter/rank/percentile_cy.pyx | 16 ++++++++-------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/skimage/filter/rank/generic.py b/skimage/filter/rank/generic.py index b7293862..703b66b3 100644 --- a/skimage/filter/rank/generic.py +++ b/skimage/filter/rank/generic.py @@ -556,10 +556,10 @@ def sum(image, selem, out=None, mask=None, shift_x=False, shift_y=False): >>> from skimage.morphology import square >>> import skimage.filter.rank as rank >>> ima = np.array([[0, 0, 0, 0, 0], - ... [0, 1, 1, 1, 0], - ... [0, 1, 1, 1, 0], - ... [0, 1, 1, 1, 0], - ... [0, 0, 0, 0, 0]], dtype=np.uint8) + ... [0, 1, 1, 1, 0], + ... [0, 1, 1, 1, 0], + ... [0, 1, 1, 1, 0], + ... [0, 0, 0, 0, 0]], dtype=np.uint8) >>> rank.sum(ima, square(3)) array([[1, 2, 3, 2, 1], [2, 4, 6, 4, 2], diff --git a/skimage/filter/rank/generic_cy.pyx b/skimage/filter/rank/generic_cy.pyx index dd461fc7..2a1a8455 100644 --- a/skimage/filter/rank/generic_cy.pyx +++ b/skimage/filter/rank/generic_cy.pyx @@ -471,10 +471,10 @@ def _pop(dtype_t[:, ::1] image, shift_x, shift_y, 0, 0, 0, 0, max_bin) def _sum(dtype_t[:, ::1] image, - char[:, ::1] selem, - char[:, ::1] mask, - dtype_t_out[:, ::1] out, - char shift_x, char shift_y, Py_ssize_t max_bin): + char[:, ::1] selem, + char[:, ::1] mask, + dtype_t_out[:, ::1] out, + char shift_x, char shift_y, Py_ssize_t max_bin): _core(_kernel_sum[dtype_t], image, selem, mask, out, shift_x, shift_y, 0, 0, 0, 0, max_bin) diff --git a/skimage/filter/rank/percentile_cy.pyx b/skimage/filter/rank/percentile_cy.pyx index bd0cbe53..38d04b33 100644 --- a/skimage/filter/rank/percentile_cy.pyx +++ b/skimage/filter/rank/percentile_cy.pyx @@ -91,9 +91,9 @@ cdef inline double _kernel_mean(Py_ssize_t* histo, double pop, dtype_t g, return 0 cdef inline double _kernel_sum(Py_ssize_t* histo, double pop, dtype_t g, - Py_ssize_t max_bin, Py_ssize_t mid_bin, - double p0, double p1, - Py_ssize_t s0, Py_ssize_t s1): + Py_ssize_t max_bin, Py_ssize_t mid_bin, + double p0, double p1, + Py_ssize_t s0, Py_ssize_t s1): cdef Py_ssize_t i, sum, sum_g, n @@ -269,11 +269,11 @@ def _mean(dtype_t[:, ::1] image, shift_x, shift_y, p0, p1, 0, 0, max_bin) def _sum(dtype_t[:, ::1] image, - char[:, ::1] selem, - char[:, ::1] mask, - dtype_t_out[:, ::1] out, - char shift_x, char shift_y, double p0, double p1, - Py_ssize_t max_bin): + char[:, ::1] selem, + char[:, ::1] mask, + dtype_t_out[:, ::1] out, + char shift_x, char shift_y, double p0, double p1, + Py_ssize_t max_bin): _core(_kernel_sum[dtype_t], image, selem, mask, out, shift_x, shift_y, p0, p1, 0, 0, max_bin) From 0f88bed41d94717ebe8cdaec355e1aef55424c6d Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Fri, 6 Dec 2013 22:26:20 -0600 Subject: [PATCH 306/577] Remove inherited config and file-type-specific code. This functionality needs to fleshed out a bit more. This commit can be reverted after the initial refactor PR. --- skimage/io/_io.py | 10 +- skimage/io/inherited_config.py | 127 ---------------------- skimage/io/manage_plugins.py | 13 +-- skimage/io/tests/test_inherited_config.py | 47 -------- 4 files changed, 6 insertions(+), 191 deletions(-) delete mode 100644 skimage/io/inherited_config.py delete mode 100644 skimage/io/tests/test_inherited_config.py diff --git a/skimage/io/_io.py b/skimage/io/_io.py index d38e7ac0..97f8718e 100644 --- a/skimage/io/_io.py +++ b/skimage/io/_io.py @@ -1,4 +1,3 @@ -import os from io import BytesIO import numpy as np @@ -95,14 +94,7 @@ def imread(fname, as_grey=False, plugin=None, flatten=None, as_grey = flatten with file_or_url_context(fname) as fname: - function = 'imread' - # TODO: This should probably use imghdr to get the image format. - try: - _, extension = os.path.splitext(fname) - function = function + extension.lower() - except AttributeError: # Buffers don't work with splitext - pass - img = call_plugin(function, fname, plugin=plugin, **plugin_args) + img = call_plugin('imread', fname, plugin=plugin, **plugin_args) if as_grey and getattr(img, 'ndim', 0) >= 3: img = rgb2grey(img) diff --git a/skimage/io/inherited_config.py b/skimage/io/inherited_config.py deleted file mode 100644 index 9cbc7857..00000000 --- a/skimage/io/inherited_config.py +++ /dev/null @@ -1,127 +0,0 @@ -class InheritedConfig(dict): - """Configuration dictionary where non-existent keys can inherit values. - - This class allows you to define parameter names that can match exactly, but - if it doesn't, parameter names will be searched based on key inheritance. - For example, the key 'size.text' will default to 'size'. - - Note that indexing into the dictionary will raise an error if it doesn't - match exactly, while `InheritedConfig.get` will look up values based on - inheritance. - - Parameters - ---------- - config_values : dict or list of (key, value) pairs - Default values for a configuration, where keys are the parameter names - and values are the associated value. - cascade_map : dict - Dictionary defining cascading defaults. If a parameter name is not - found, indexing `cascade_map` with the parameter name will return - the parameter to look for. - kwargs : dict - Keyword arguments for initializing dict. - """ - - _separator = '.' - - def __init__(self, config_values=None, **kwargs): - assert 'config_values' not in kwargs - - if config_values is None: - config_values = {} - - super(InheritedConfig, self).__init__(config_values, **kwargs) - - def __getitem__(self, key): - return self.get(key, _raise=True) - - def get(self, key, default=None, _raise=False): - """Return best matching config value for `key`. - - Get value from configuration. The search for `key` is in the following - order: - - - `self` (Value in global configuration) - - `default` - - Alternate key specified by `self.cascade_map` - - This method supports the pattern commonly used for optional keyword - arguments to a function. For example:: - - >>> def print_value(key, **kwargs): - ... print kwargs.get(key, 0) - >>> print_value('size') - 0 - >>> print_value('size', size=1) - 1 - - Instead, you would create a config class and write:: - - >>> config = InheritedConfig(size=0) - >>> def print_value(key, **kwargs): - ... print kwargs.get(key, config.get(key)) - >>> print_value('size') - 0 - >>> print_value('size', size=1) - 1 - >>> print_value('non-existent') - None - >>> print_value('size.text') - 0 - - See examples below for a demonstration of the cascading of - configuration names. - - Parameters - ---------- - key : str - Name of config value you want. - default : object - Default value if `key` doesn't exist in instance. - - Examples - -------- - >>> config = InheritedConfig(size=0) - >>> config.get('size') - 0 - >>> top_choice={'size': 1} - >>> top_choice.get('size', config.get('size')) - 1 - >>> config.get('non-existent', 'unknown') - 'unknown' - >>> config.get('size.text') - 0 - >>> config.get('size.text', 2) - 2 - >>> top_choice.get('size', config.get('size.text')) - 1 - """ - if key in self.keys(): - return super(InheritedConfig, self).__getitem__(key) - elif default is not None: - return default - elif self._separator in key: - return self.get(self._parent(key)) - elif _raise: - raise KeyError('%r not in %s' % (key, self.__class__.__name__)) - else: - return None - - def _parent(self, key): - """Return parent key.""" - parts = key.split(self._separator) - return self._separator.join(parts[:-1]) - - def __contains__(self, key): - if key in self.keys(): - return True - elif self._separator in key: - return self.__contains__(self._parent(key)) - else: - return False - - -if __name__ == '__main__': - import doctest - - doctest.testmod() diff --git a/skimage/io/manage_plugins.py b/skimage/io/manage_plugins.py index ebc55b6a..e68594a2 100644 --- a/skimage/io/manage_plugins.py +++ b/skimage/io/manage_plugins.py @@ -10,8 +10,6 @@ except ImportError: import os.path from glob import glob -from skimage.io.inherited_config import InheritedConfig - __all__ = ['use_plugin', 'call_plugin', 'plugin_info', 'plugin_order', 'reset_plugins', 'find_available_plugins', 'available_plugins'] @@ -31,7 +29,6 @@ preferred_plugins = { # Use PIL as the default imread plugin, since matplotlib (1.2.x) # is buggy (flips PNGs around, returns bytes as floats, etc.) 'imread': ['pil'], - 'imread.tiff': ['tifffile'], } @@ -40,11 +37,11 @@ def _clear_plugins(): """ global plugin_store - plugin_store = InheritedConfig({'imread': [], - 'imsave': [], - 'imshow': [], - 'imread_collection': [], - '_app_show': []}) + plugin_store = {'imread': [], + 'imsave': [], + 'imshow': [], + 'imread_collection': [], + '_app_show': []} _clear_plugins() diff --git a/skimage/io/tests/test_inherited_config.py b/skimage/io/tests/test_inherited_config.py deleted file mode 100644 index 207d3cf1..00000000 --- a/skimage/io/tests/test_inherited_config.py +++ /dev/null @@ -1,47 +0,0 @@ -from skimage.io.inherited_config import InheritedConfig - - -def test_get_non_existent(): - config = InheritedConfig() - assert config.get('size') is None - - -def test_get_simple(): - config = InheritedConfig({'imread': 'matplotlib'}) - assert config.get('imread') == 'matplotlib' - - -def test_get_default(): - config = InheritedConfig() - assert config.get('size', 10) == 10 - - -def test_get_best(): - config = InheritedConfig({'size': 0, 'size.text': 1}) - assert config.get('size.text') == 1 - - -def test_get_multi_level(): - config = InheritedConfig({'size': 0}) - assert config.get('size.text.title') == 0 - config['size.text'] = 1 - assert config.get('size.text.title') == 1 - config['size.text.title'] = 2 - assert config.get('size.text.title') == 2 - - -def test_contains(): - config = InheritedConfig({'imread': 'matplotlib'}) - assert 'imread' in config - assert 'imread.jpg' in config - - -def test_getitem(): - config = InheritedConfig({'imread': 'a'}) - assert config['imread'] == 'a' - assert config['imread.png'] == 'a' - - -if __name__ == '__main__': - from numpy import testing - testing.run_module_suite() From c329ff14bc024cd29264370a9fe4fc736d2a09a1 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Fri, 6 Dec 2013 22:40:37 -0600 Subject: [PATCH 307/577] Fix failing doctest on systems w/o PIL --- skimage/io/manage_plugins.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/skimage/io/manage_plugins.py b/skimage/io/manage_plugins.py index e68594a2..ace57d8f 100644 --- a/skimage/io/manage_plugins.py +++ b/skimage/io/manage_plugins.py @@ -197,15 +197,19 @@ def use_plugin(name, kind=None): See Also -------- - plugins : List of available plugins + available_plugins : List of available plugins Examples -------- - Use the Python Imaging Library to read images: + To use a plugin named 'null' as the default image reader, you would write: - >>> from skimage.io import use_plugin - >>> use_plugin('pil', 'imread') + >>> from skimage import io + >>> io.use_plugin('null', 'imread') + + To see a list of available plugins run ``io.available_plugins``. Note that + this lists plugins that are defined, but the full list may not be usable + if your system does not have the required libraries installed. """ if kind is None: From 99c5ba409a3a03d0a0156302b4b6e7b5324b8a40 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Fri, 6 Dec 2013 23:43:56 -0600 Subject: [PATCH 308/577] Slight clean up of tests --- skimage/io/tests/test_collection.py | 153 ++++++++------------------- skimage/io/tests/test_multi_image.py | 69 ++++++++++++ 2 files changed, 114 insertions(+), 108 deletions(-) create mode 100644 skimage/io/tests/test_multi_image.py diff --git a/skimage/io/tests/test_collection.py b/skimage/io/tests/test_collection.py index cf5ef820..1e9fea73 100644 --- a/skimage/io/tests/test_collection.py +++ b/skimage/io/tests/test_collection.py @@ -1,88 +1,72 @@ -import sys import os.path import numpy as np -from numpy.testing import (assert_raises, - assert_equal, - assert_array_almost_equal, - ) -from numpy.testing.decorators import skipif +from numpy.testing import assert_raises, assert_equal, assert_allclose from skimage import data_dir -from skimage.io import ImageCollection, MultiImage -from skimage.io.collection import alphanumeric_key -from skimage.io import Image as ioImage - -import six +from skimage.io.collection import ImageCollection, alphanumeric_key -try: - from PIL import Image -except ImportError: - PIL_available = False -else: - PIL_available = True +def test_string_split(): + test_string = 'z23a' + test_str_result = ['z', 23, 'a'] + assert_equal(alphanumeric_key(test_string), test_str_result) -class TestAlphanumericKey(): - def setUp(self): - self.test_string = 'z23a' - self.test_str_result = ['z', 23, 'a'] - self.filenames = ['f9.10.png', 'f9.9.png', 'f10.10.png', 'f10.9.png', - 'e9.png', 'e10.png', 'em.png'] - self.sorted_filenames = \ - ['e9.png', 'e10.png', 'em.png', 'f9.9.png', 'f9.10.png', - 'f10.9.png', 'f10.10.png'] - - def test_string_split(self): - assert_equal(alphanumeric_key(self.test_string), self.test_str_result) - - def test_string_sort(self): - sorted_filenames = sorted(self.filenames, key=alphanumeric_key) - assert_equal(sorted_filenames, self.sorted_filenames) +def test_string_sort(): + filenames = ['f9.10.png', 'f9.9.png', 'f10.10.png', 'f10.9.png', + 'e9.png', 'e10.png', 'em.png'] + sorted_filenames = ['e9.png', 'e10.png', 'em.png', 'f9.9.png', + 'f9.10.png', 'f10.9.png', 'f10.10.png'] + sorted_filenames = sorted(filenames, key=alphanumeric_key) + assert_equal(sorted_filenames, sorted_filenames) class TestImageCollection(): - pattern = [os.path.join(data_dir, pic) for pic in ['camera.png', - 'color.png']] - pattern_matched = [os.path.join(data_dir, pic) for pic in - ['camera.png', 'moon.png']] + + pattern = [os.path.join(data_dir, pic) + for pic in ['camera.png', 'color.png']] + + pattern_matched = [os.path.join(data_dir, pic) + for pic in ['camera.png', 'moon.png']] def setUp(self): - self.collection = ImageCollection(self.pattern) - self.collection_matched = ImageCollection(self.pattern_matched) + # Generic image collection with images of different shapes. + self.images = ImageCollection(self.pattern) + # Image collection with images having shapes that match. + self.images_matched = ImageCollection(self.pattern_matched) def test_len(self): - assert len(self.collection) == 2 + assert len(self.images) == 2 def test_getitem(self): - num = len(self.collection) + num = len(self.images) for i in range(-num, num): - assert type(self.collection[i]) is np.ndarray - assert_array_almost_equal(self.collection[0], - self.collection[-num]) + assert type(self.images[i]) is np.ndarray + assert_allclose(self.images[0], + self.images[-num]) - #assert_raises expects a callable, hence this do-very-little func + # assert_raises expects a callable, hence this thin wrapper function. def return_img(n): - return self.collection[n] + return self.images[n] assert_raises(IndexError, return_img, num) assert_raises(IndexError, return_img, -num - 1) def test_slicing(self): - assert type(self.collection[:]) is ImageCollection - assert len(self.collection[:]) == 2 - assert len(self.collection[:1]) == 1 - assert len(self.collection[1:]) == 1 - assert_array_almost_equal(self.collection[0], self.collection[:1][0]) - assert_array_almost_equal(self.collection[1], self.collection[1:][0]) - assert_array_almost_equal(self.collection[1], self.collection[::-1][0]) - assert_array_almost_equal(self.collection[0], self.collection[::-1][1]) + assert type(self.images[:]) is ImageCollection + assert len(self.images[:]) == 2 + assert len(self.images[:1]) == 1 + assert len(self.images[1:]) == 1 + assert_allclose(self.images[0], self.images[:1][0]) + assert_allclose(self.images[1], self.images[1:][0]) + assert_allclose(self.images[1], self.images[::-1][0]) + assert_allclose(self.images[0], self.images[::-1][1]) def test_files_property(self): - assert isinstance(self.collection.files, list) + assert isinstance(self.images.files, list) def set_files(f): - self.collection.files = f + self.images.files = f assert_raises(AttributeError, set_files, 'newfiles') def test_custom_load(self): @@ -95,59 +79,12 @@ class TestImageCollection(): assert_equal(ic[1], (2, 'two')) def test_concatenate(self): - ar = self.collection_matched.concatenate() - assert_equal(ar.shape, (len(self.collection_matched),) + - self.collection[0].shape) - assert_raises(ValueError, self.collection.concatenate) + array = self.images_matched.concatenate() + expected_shape = (len(self.images_matched),) + self.images[0].shape + assert_equal(array.shape, expected_shape) - -class TestMultiImage(): - - def setUp(self): - # This multipage TIF file was created with imagemagick: - # convert im1.tif im2.tif -adjoin multipage.tif - if PIL_available: - self.img = MultiImage(os.path.join(data_dir, 'multipage.tif')) - - @skipif(not PIL_available) - def test_len(self): - assert len(self.img) == 2 - - @skipif(not PIL_available) - def test_getitem(self): - num = len(self.img) - for i in range(-num, num): - assert type(self.img[i]) is np.ndarray - assert_array_almost_equal(self.img[0], - self.img[-num]) - - #assert_raises expects a callable, hence this do-very-little func - def return_img(n): - return self.img[n] - assert_raises(IndexError, return_img, num) - assert_raises(IndexError, return_img, -num - 1) - - @skipif(not PIL_available) - def test_files_property(self): - assert isinstance(self.img.filename, six.string_types) - - def set_filename(f): - self.img.filename = f - assert_raises(AttributeError, set_filename, 'newfile') - - @skipif(not PIL_available) - def test_conserve_memory_property(self): - assert isinstance(self.img.conserve_memory, bool) - - def set_mem(val): - self.img.conserve_memory = val - assert_raises(AttributeError, set_mem, True) - - @skipif(not PIL_available) - def test_concatenate(self): - ar = self.img.concatenate() - assert_equal(ar.shape, (len(self.img),) + - self.img[0].shape) + def test_concatentate_mismatched_image_shapes(self): + assert_raises(ValueError, self.images.concatenate) if __name__ == "__main__": diff --git a/skimage/io/tests/test_multi_image.py b/skimage/io/tests/test_multi_image.py new file mode 100644 index 00000000..ebaa71dc --- /dev/null +++ b/skimage/io/tests/test_multi_image.py @@ -0,0 +1,69 @@ +import os + +import numpy as np +from numpy.testing.decorators import skipif +from numpy.testing import assert_raises, assert_equal, assert_allclose + +from skimage import data_dir +from skimage.io.collection import MultiImage + +try: + from PIL import Image +except ImportError: + PIL_available = False +else: + PIL_available = True + +import six + + +class TestMultiImage(): + + def setUp(self): + # This multipage TIF file was created with imagemagick: + # convert im1.tif im2.tif -adjoin multipage.tif + if PIL_available: + self.img = MultiImage(os.path.join(data_dir, 'multipage.tif')) + + @skipif(not PIL_available) + def test_len(self): + assert len(self.img) == 2 + + @skipif(not PIL_available) + def test_getitem(self): + num = len(self.img) + for i in range(-num, num): + assert type(self.img[i]) is np.ndarray + assert_allclose(self.img[0], self.img[-num]) + + # assert_raises expects a callable, hence this thin wrapper function. + def return_img(n): + return self.img[n] + assert_raises(IndexError, return_img, num) + assert_raises(IndexError, return_img, -num - 1) + + @skipif(not PIL_available) + def test_files_property(self): + assert isinstance(self.img.filename, six.string_types) + + def set_filename(f): + self.img.filename = f + assert_raises(AttributeError, set_filename, 'newfile') + + @skipif(not PIL_available) + def test_conserve_memory_property(self): + assert isinstance(self.img.conserve_memory, bool) + + def set_mem(val): + self.img.conserve_memory = val + assert_raises(AttributeError, set_mem, True) + + @skipif(not PIL_available) + def test_concatenate(self): + array = self.img.concatenate() + assert_equal(array.shape, (len(self.img),) + self.img[0].shape) + + +if __name__ == "__main__": + from numpy.testing import run_module_suite + run_module_suite() From c09f1bfd326876e4f6523a8cee3468e18455bb09 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Sat, 7 Dec 2013 00:01:32 -0600 Subject: [PATCH 309/577] Revert previous 3 commits to test Travis CI failures. --- skimage/io/_io.py | 10 +- skimage/io/inherited_config.py | 127 ++++++++++++++++++ skimage/io/manage_plugins.py | 25 ++-- skimage/io/tests/test_collection.py | 153 +++++++++++++++------- skimage/io/tests/test_inherited_config.py | 47 +++++++ skimage/io/tests/test_multi_image.py | 69 ---------- 6 files changed, 303 insertions(+), 128 deletions(-) create mode 100644 skimage/io/inherited_config.py create mode 100644 skimage/io/tests/test_inherited_config.py delete mode 100644 skimage/io/tests/test_multi_image.py diff --git a/skimage/io/_io.py b/skimage/io/_io.py index 97f8718e..d38e7ac0 100644 --- a/skimage/io/_io.py +++ b/skimage/io/_io.py @@ -1,3 +1,4 @@ +import os from io import BytesIO import numpy as np @@ -94,7 +95,14 @@ def imread(fname, as_grey=False, plugin=None, flatten=None, as_grey = flatten with file_or_url_context(fname) as fname: - img = call_plugin('imread', fname, plugin=plugin, **plugin_args) + function = 'imread' + # TODO: This should probably use imghdr to get the image format. + try: + _, extension = os.path.splitext(fname) + function = function + extension.lower() + except AttributeError: # Buffers don't work with splitext + pass + img = call_plugin(function, fname, plugin=plugin, **plugin_args) if as_grey and getattr(img, 'ndim', 0) >= 3: img = rgb2grey(img) diff --git a/skimage/io/inherited_config.py b/skimage/io/inherited_config.py new file mode 100644 index 00000000..9cbc7857 --- /dev/null +++ b/skimage/io/inherited_config.py @@ -0,0 +1,127 @@ +class InheritedConfig(dict): + """Configuration dictionary where non-existent keys can inherit values. + + This class allows you to define parameter names that can match exactly, but + if it doesn't, parameter names will be searched based on key inheritance. + For example, the key 'size.text' will default to 'size'. + + Note that indexing into the dictionary will raise an error if it doesn't + match exactly, while `InheritedConfig.get` will look up values based on + inheritance. + + Parameters + ---------- + config_values : dict or list of (key, value) pairs + Default values for a configuration, where keys are the parameter names + and values are the associated value. + cascade_map : dict + Dictionary defining cascading defaults. If a parameter name is not + found, indexing `cascade_map` with the parameter name will return + the parameter to look for. + kwargs : dict + Keyword arguments for initializing dict. + """ + + _separator = '.' + + def __init__(self, config_values=None, **kwargs): + assert 'config_values' not in kwargs + + if config_values is None: + config_values = {} + + super(InheritedConfig, self).__init__(config_values, **kwargs) + + def __getitem__(self, key): + return self.get(key, _raise=True) + + def get(self, key, default=None, _raise=False): + """Return best matching config value for `key`. + + Get value from configuration. The search for `key` is in the following + order: + + - `self` (Value in global configuration) + - `default` + - Alternate key specified by `self.cascade_map` + + This method supports the pattern commonly used for optional keyword + arguments to a function. For example:: + + >>> def print_value(key, **kwargs): + ... print kwargs.get(key, 0) + >>> print_value('size') + 0 + >>> print_value('size', size=1) + 1 + + Instead, you would create a config class and write:: + + >>> config = InheritedConfig(size=0) + >>> def print_value(key, **kwargs): + ... print kwargs.get(key, config.get(key)) + >>> print_value('size') + 0 + >>> print_value('size', size=1) + 1 + >>> print_value('non-existent') + None + >>> print_value('size.text') + 0 + + See examples below for a demonstration of the cascading of + configuration names. + + Parameters + ---------- + key : str + Name of config value you want. + default : object + Default value if `key` doesn't exist in instance. + + Examples + -------- + >>> config = InheritedConfig(size=0) + >>> config.get('size') + 0 + >>> top_choice={'size': 1} + >>> top_choice.get('size', config.get('size')) + 1 + >>> config.get('non-existent', 'unknown') + 'unknown' + >>> config.get('size.text') + 0 + >>> config.get('size.text', 2) + 2 + >>> top_choice.get('size', config.get('size.text')) + 1 + """ + if key in self.keys(): + return super(InheritedConfig, self).__getitem__(key) + elif default is not None: + return default + elif self._separator in key: + return self.get(self._parent(key)) + elif _raise: + raise KeyError('%r not in %s' % (key, self.__class__.__name__)) + else: + return None + + def _parent(self, key): + """Return parent key.""" + parts = key.split(self._separator) + return self._separator.join(parts[:-1]) + + def __contains__(self, key): + if key in self.keys(): + return True + elif self._separator in key: + return self.__contains__(self._parent(key)) + else: + return False + + +if __name__ == '__main__': + import doctest + + doctest.testmod() diff --git a/skimage/io/manage_plugins.py b/skimage/io/manage_plugins.py index ace57d8f..ebc55b6a 100644 --- a/skimage/io/manage_plugins.py +++ b/skimage/io/manage_plugins.py @@ -10,6 +10,8 @@ except ImportError: import os.path from glob import glob +from skimage.io.inherited_config import InheritedConfig + __all__ = ['use_plugin', 'call_plugin', 'plugin_info', 'plugin_order', 'reset_plugins', 'find_available_plugins', 'available_plugins'] @@ -29,6 +31,7 @@ preferred_plugins = { # Use PIL as the default imread plugin, since matplotlib (1.2.x) # is buggy (flips PNGs around, returns bytes as floats, etc.) 'imread': ['pil'], + 'imread.tiff': ['tifffile'], } @@ -37,11 +40,11 @@ def _clear_plugins(): """ global plugin_store - plugin_store = {'imread': [], - 'imsave': [], - 'imshow': [], - 'imread_collection': [], - '_app_show': []} + plugin_store = InheritedConfig({'imread': [], + 'imsave': [], + 'imshow': [], + 'imread_collection': [], + '_app_show': []}) _clear_plugins() @@ -197,19 +200,15 @@ def use_plugin(name, kind=None): See Also -------- - available_plugins : List of available plugins + plugins : List of available plugins Examples -------- - To use a plugin named 'null' as the default image reader, you would write: + Use the Python Imaging Library to read images: - >>> from skimage import io - >>> io.use_plugin('null', 'imread') - - To see a list of available plugins run ``io.available_plugins``. Note that - this lists plugins that are defined, but the full list may not be usable - if your system does not have the required libraries installed. + >>> from skimage.io import use_plugin + >>> use_plugin('pil', 'imread') """ if kind is None: diff --git a/skimage/io/tests/test_collection.py b/skimage/io/tests/test_collection.py index 1e9fea73..cf5ef820 100644 --- a/skimage/io/tests/test_collection.py +++ b/skimage/io/tests/test_collection.py @@ -1,72 +1,88 @@ +import sys import os.path import numpy as np -from numpy.testing import assert_raises, assert_equal, assert_allclose +from numpy.testing import (assert_raises, + assert_equal, + assert_array_almost_equal, + ) +from numpy.testing.decorators import skipif from skimage import data_dir -from skimage.io.collection import ImageCollection, alphanumeric_key +from skimage.io import ImageCollection, MultiImage +from skimage.io.collection import alphanumeric_key +from skimage.io import Image as ioImage + +import six -def test_string_split(): - test_string = 'z23a' - test_str_result = ['z', 23, 'a'] - assert_equal(alphanumeric_key(test_string), test_str_result) +try: + from PIL import Image +except ImportError: + PIL_available = False +else: + PIL_available = True -def test_string_sort(): - filenames = ['f9.10.png', 'f9.9.png', 'f10.10.png', 'f10.9.png', - 'e9.png', 'e10.png', 'em.png'] - sorted_filenames = ['e9.png', 'e10.png', 'em.png', 'f9.9.png', - 'f9.10.png', 'f10.9.png', 'f10.10.png'] - sorted_filenames = sorted(filenames, key=alphanumeric_key) - assert_equal(sorted_filenames, sorted_filenames) +class TestAlphanumericKey(): + def setUp(self): + self.test_string = 'z23a' + self.test_str_result = ['z', 23, 'a'] + self.filenames = ['f9.10.png', 'f9.9.png', 'f10.10.png', 'f10.9.png', + 'e9.png', 'e10.png', 'em.png'] + self.sorted_filenames = \ + ['e9.png', 'e10.png', 'em.png', 'f9.9.png', 'f9.10.png', + 'f10.9.png', 'f10.10.png'] + + def test_string_split(self): + assert_equal(alphanumeric_key(self.test_string), self.test_str_result) + + def test_string_sort(self): + sorted_filenames = sorted(self.filenames, key=alphanumeric_key) + assert_equal(sorted_filenames, self.sorted_filenames) class TestImageCollection(): - - pattern = [os.path.join(data_dir, pic) - for pic in ['camera.png', 'color.png']] - - pattern_matched = [os.path.join(data_dir, pic) - for pic in ['camera.png', 'moon.png']] + pattern = [os.path.join(data_dir, pic) for pic in ['camera.png', + 'color.png']] + pattern_matched = [os.path.join(data_dir, pic) for pic in + ['camera.png', 'moon.png']] def setUp(self): - # Generic image collection with images of different shapes. - self.images = ImageCollection(self.pattern) - # Image collection with images having shapes that match. - self.images_matched = ImageCollection(self.pattern_matched) + self.collection = ImageCollection(self.pattern) + self.collection_matched = ImageCollection(self.pattern_matched) def test_len(self): - assert len(self.images) == 2 + assert len(self.collection) == 2 def test_getitem(self): - num = len(self.images) + num = len(self.collection) for i in range(-num, num): - assert type(self.images[i]) is np.ndarray - assert_allclose(self.images[0], - self.images[-num]) + assert type(self.collection[i]) is np.ndarray + assert_array_almost_equal(self.collection[0], + self.collection[-num]) - # assert_raises expects a callable, hence this thin wrapper function. + #assert_raises expects a callable, hence this do-very-little func def return_img(n): - return self.images[n] + return self.collection[n] assert_raises(IndexError, return_img, num) assert_raises(IndexError, return_img, -num - 1) def test_slicing(self): - assert type(self.images[:]) is ImageCollection - assert len(self.images[:]) == 2 - assert len(self.images[:1]) == 1 - assert len(self.images[1:]) == 1 - assert_allclose(self.images[0], self.images[:1][0]) - assert_allclose(self.images[1], self.images[1:][0]) - assert_allclose(self.images[1], self.images[::-1][0]) - assert_allclose(self.images[0], self.images[::-1][1]) + assert type(self.collection[:]) is ImageCollection + assert len(self.collection[:]) == 2 + assert len(self.collection[:1]) == 1 + assert len(self.collection[1:]) == 1 + assert_array_almost_equal(self.collection[0], self.collection[:1][0]) + assert_array_almost_equal(self.collection[1], self.collection[1:][0]) + assert_array_almost_equal(self.collection[1], self.collection[::-1][0]) + assert_array_almost_equal(self.collection[0], self.collection[::-1][1]) def test_files_property(self): - assert isinstance(self.images.files, list) + assert isinstance(self.collection.files, list) def set_files(f): - self.images.files = f + self.collection.files = f assert_raises(AttributeError, set_files, 'newfiles') def test_custom_load(self): @@ -79,12 +95,59 @@ class TestImageCollection(): assert_equal(ic[1], (2, 'two')) def test_concatenate(self): - array = self.images_matched.concatenate() - expected_shape = (len(self.images_matched),) + self.images[0].shape - assert_equal(array.shape, expected_shape) + ar = self.collection_matched.concatenate() + assert_equal(ar.shape, (len(self.collection_matched),) + + self.collection[0].shape) + assert_raises(ValueError, self.collection.concatenate) - def test_concatentate_mismatched_image_shapes(self): - assert_raises(ValueError, self.images.concatenate) + +class TestMultiImage(): + + def setUp(self): + # This multipage TIF file was created with imagemagick: + # convert im1.tif im2.tif -adjoin multipage.tif + if PIL_available: + self.img = MultiImage(os.path.join(data_dir, 'multipage.tif')) + + @skipif(not PIL_available) + def test_len(self): + assert len(self.img) == 2 + + @skipif(not PIL_available) + def test_getitem(self): + num = len(self.img) + for i in range(-num, num): + assert type(self.img[i]) is np.ndarray + assert_array_almost_equal(self.img[0], + self.img[-num]) + + #assert_raises expects a callable, hence this do-very-little func + def return_img(n): + return self.img[n] + assert_raises(IndexError, return_img, num) + assert_raises(IndexError, return_img, -num - 1) + + @skipif(not PIL_available) + def test_files_property(self): + assert isinstance(self.img.filename, six.string_types) + + def set_filename(f): + self.img.filename = f + assert_raises(AttributeError, set_filename, 'newfile') + + @skipif(not PIL_available) + def test_conserve_memory_property(self): + assert isinstance(self.img.conserve_memory, bool) + + def set_mem(val): + self.img.conserve_memory = val + assert_raises(AttributeError, set_mem, True) + + @skipif(not PIL_available) + def test_concatenate(self): + ar = self.img.concatenate() + assert_equal(ar.shape, (len(self.img),) + + self.img[0].shape) if __name__ == "__main__": diff --git a/skimage/io/tests/test_inherited_config.py b/skimage/io/tests/test_inherited_config.py new file mode 100644 index 00000000..207d3cf1 --- /dev/null +++ b/skimage/io/tests/test_inherited_config.py @@ -0,0 +1,47 @@ +from skimage.io.inherited_config import InheritedConfig + + +def test_get_non_existent(): + config = InheritedConfig() + assert config.get('size') is None + + +def test_get_simple(): + config = InheritedConfig({'imread': 'matplotlib'}) + assert config.get('imread') == 'matplotlib' + + +def test_get_default(): + config = InheritedConfig() + assert config.get('size', 10) == 10 + + +def test_get_best(): + config = InheritedConfig({'size': 0, 'size.text': 1}) + assert config.get('size.text') == 1 + + +def test_get_multi_level(): + config = InheritedConfig({'size': 0}) + assert config.get('size.text.title') == 0 + config['size.text'] = 1 + assert config.get('size.text.title') == 1 + config['size.text.title'] = 2 + assert config.get('size.text.title') == 2 + + +def test_contains(): + config = InheritedConfig({'imread': 'matplotlib'}) + assert 'imread' in config + assert 'imread.jpg' in config + + +def test_getitem(): + config = InheritedConfig({'imread': 'a'}) + assert config['imread'] == 'a' + assert config['imread.png'] == 'a' + + +if __name__ == '__main__': + from numpy import testing + testing.run_module_suite() diff --git a/skimage/io/tests/test_multi_image.py b/skimage/io/tests/test_multi_image.py deleted file mode 100644 index ebaa71dc..00000000 --- a/skimage/io/tests/test_multi_image.py +++ /dev/null @@ -1,69 +0,0 @@ -import os - -import numpy as np -from numpy.testing.decorators import skipif -from numpy.testing import assert_raises, assert_equal, assert_allclose - -from skimage import data_dir -from skimage.io.collection import MultiImage - -try: - from PIL import Image -except ImportError: - PIL_available = False -else: - PIL_available = True - -import six - - -class TestMultiImage(): - - def setUp(self): - # This multipage TIF file was created with imagemagick: - # convert im1.tif im2.tif -adjoin multipage.tif - if PIL_available: - self.img = MultiImage(os.path.join(data_dir, 'multipage.tif')) - - @skipif(not PIL_available) - def test_len(self): - assert len(self.img) == 2 - - @skipif(not PIL_available) - def test_getitem(self): - num = len(self.img) - for i in range(-num, num): - assert type(self.img[i]) is np.ndarray - assert_allclose(self.img[0], self.img[-num]) - - # assert_raises expects a callable, hence this thin wrapper function. - def return_img(n): - return self.img[n] - assert_raises(IndexError, return_img, num) - assert_raises(IndexError, return_img, -num - 1) - - @skipif(not PIL_available) - def test_files_property(self): - assert isinstance(self.img.filename, six.string_types) - - def set_filename(f): - self.img.filename = f - assert_raises(AttributeError, set_filename, 'newfile') - - @skipif(not PIL_available) - def test_conserve_memory_property(self): - assert isinstance(self.img.conserve_memory, bool) - - def set_mem(val): - self.img.conserve_memory = val - assert_raises(AttributeError, set_mem, True) - - @skipif(not PIL_available) - def test_concatenate(self): - array = self.img.concatenate() - assert_equal(array.shape, (len(self.img),) + self.img[0].shape) - - -if __name__ == "__main__": - from numpy.testing import run_module_suite - run_module_suite() From 27bab6390029e94626950ec88908761f55ed35d6 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Sat, 7 Dec 2013 00:22:34 -0600 Subject: [PATCH 310/577] Un-revert "Fix failing doctest on systems w/o PIL" commit --- skimage/io/manage_plugins.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/skimage/io/manage_plugins.py b/skimage/io/manage_plugins.py index ebc55b6a..c5334c4a 100644 --- a/skimage/io/manage_plugins.py +++ b/skimage/io/manage_plugins.py @@ -200,16 +200,19 @@ def use_plugin(name, kind=None): See Also -------- - plugins : List of available plugins + available_plugins : List of available plugins Examples -------- - Use the Python Imaging Library to read images: + To use a plugin named 'null' as the default image reader, you would write: - >>> from skimage.io import use_plugin - >>> use_plugin('pil', 'imread') + >>> from skimage import io + >>> io.use_plugin('null', 'imread') + To see a list of available plugins run ``io.available_plugins``. Note that + this lists plugins that are defined, but the full list may not be usable + if your system does not have the required libraries installed. """ if kind is None: kind = plugin_store.keys() From 6a751045f1a6d22c775754388b217182f33da3df Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Sat, 7 Dec 2013 01:04:40 -0600 Subject: [PATCH 311/577] Un-revert commits added to test Travis CI failures --- skimage/io/_io.py | 10 +- skimage/io/inherited_config.py | 127 ------------------ skimage/io/manage_plugins.py | 14 +- skimage/io/tests/test_collection.py | 153 +++++++--------------- skimage/io/tests/test_inherited_config.py | 47 ------- skimage/io/tests/test_multi_image.py | 69 ++++++++++ 6 files changed, 121 insertions(+), 299 deletions(-) delete mode 100644 skimage/io/inherited_config.py delete mode 100644 skimage/io/tests/test_inherited_config.py create mode 100644 skimage/io/tests/test_multi_image.py diff --git a/skimage/io/_io.py b/skimage/io/_io.py index d38e7ac0..97f8718e 100644 --- a/skimage/io/_io.py +++ b/skimage/io/_io.py @@ -1,4 +1,3 @@ -import os from io import BytesIO import numpy as np @@ -95,14 +94,7 @@ def imread(fname, as_grey=False, plugin=None, flatten=None, as_grey = flatten with file_or_url_context(fname) as fname: - function = 'imread' - # TODO: This should probably use imghdr to get the image format. - try: - _, extension = os.path.splitext(fname) - function = function + extension.lower() - except AttributeError: # Buffers don't work with splitext - pass - img = call_plugin(function, fname, plugin=plugin, **plugin_args) + img = call_plugin('imread', fname, plugin=plugin, **plugin_args) if as_grey and getattr(img, 'ndim', 0) >= 3: img = rgb2grey(img) diff --git a/skimage/io/inherited_config.py b/skimage/io/inherited_config.py deleted file mode 100644 index 9cbc7857..00000000 --- a/skimage/io/inherited_config.py +++ /dev/null @@ -1,127 +0,0 @@ -class InheritedConfig(dict): - """Configuration dictionary where non-existent keys can inherit values. - - This class allows you to define parameter names that can match exactly, but - if it doesn't, parameter names will be searched based on key inheritance. - For example, the key 'size.text' will default to 'size'. - - Note that indexing into the dictionary will raise an error if it doesn't - match exactly, while `InheritedConfig.get` will look up values based on - inheritance. - - Parameters - ---------- - config_values : dict or list of (key, value) pairs - Default values for a configuration, where keys are the parameter names - and values are the associated value. - cascade_map : dict - Dictionary defining cascading defaults. If a parameter name is not - found, indexing `cascade_map` with the parameter name will return - the parameter to look for. - kwargs : dict - Keyword arguments for initializing dict. - """ - - _separator = '.' - - def __init__(self, config_values=None, **kwargs): - assert 'config_values' not in kwargs - - if config_values is None: - config_values = {} - - super(InheritedConfig, self).__init__(config_values, **kwargs) - - def __getitem__(self, key): - return self.get(key, _raise=True) - - def get(self, key, default=None, _raise=False): - """Return best matching config value for `key`. - - Get value from configuration. The search for `key` is in the following - order: - - - `self` (Value in global configuration) - - `default` - - Alternate key specified by `self.cascade_map` - - This method supports the pattern commonly used for optional keyword - arguments to a function. For example:: - - >>> def print_value(key, **kwargs): - ... print kwargs.get(key, 0) - >>> print_value('size') - 0 - >>> print_value('size', size=1) - 1 - - Instead, you would create a config class and write:: - - >>> config = InheritedConfig(size=0) - >>> def print_value(key, **kwargs): - ... print kwargs.get(key, config.get(key)) - >>> print_value('size') - 0 - >>> print_value('size', size=1) - 1 - >>> print_value('non-existent') - None - >>> print_value('size.text') - 0 - - See examples below for a demonstration of the cascading of - configuration names. - - Parameters - ---------- - key : str - Name of config value you want. - default : object - Default value if `key` doesn't exist in instance. - - Examples - -------- - >>> config = InheritedConfig(size=0) - >>> config.get('size') - 0 - >>> top_choice={'size': 1} - >>> top_choice.get('size', config.get('size')) - 1 - >>> config.get('non-existent', 'unknown') - 'unknown' - >>> config.get('size.text') - 0 - >>> config.get('size.text', 2) - 2 - >>> top_choice.get('size', config.get('size.text')) - 1 - """ - if key in self.keys(): - return super(InheritedConfig, self).__getitem__(key) - elif default is not None: - return default - elif self._separator in key: - return self.get(self._parent(key)) - elif _raise: - raise KeyError('%r not in %s' % (key, self.__class__.__name__)) - else: - return None - - def _parent(self, key): - """Return parent key.""" - parts = key.split(self._separator) - return self._separator.join(parts[:-1]) - - def __contains__(self, key): - if key in self.keys(): - return True - elif self._separator in key: - return self.__contains__(self._parent(key)) - else: - return False - - -if __name__ == '__main__': - import doctest - - doctest.testmod() diff --git a/skimage/io/manage_plugins.py b/skimage/io/manage_plugins.py index c5334c4a..ace57d8f 100644 --- a/skimage/io/manage_plugins.py +++ b/skimage/io/manage_plugins.py @@ -10,8 +10,6 @@ except ImportError: import os.path from glob import glob -from skimage.io.inherited_config import InheritedConfig - __all__ = ['use_plugin', 'call_plugin', 'plugin_info', 'plugin_order', 'reset_plugins', 'find_available_plugins', 'available_plugins'] @@ -31,7 +29,6 @@ preferred_plugins = { # Use PIL as the default imread plugin, since matplotlib (1.2.x) # is buggy (flips PNGs around, returns bytes as floats, etc.) 'imread': ['pil'], - 'imread.tiff': ['tifffile'], } @@ -40,11 +37,11 @@ def _clear_plugins(): """ global plugin_store - plugin_store = InheritedConfig({'imread': [], - 'imsave': [], - 'imshow': [], - 'imread_collection': [], - '_app_show': []}) + plugin_store = {'imread': [], + 'imsave': [], + 'imshow': [], + 'imread_collection': [], + '_app_show': []} _clear_plugins() @@ -213,6 +210,7 @@ def use_plugin(name, kind=None): To see a list of available plugins run ``io.available_plugins``. Note that this lists plugins that are defined, but the full list may not be usable if your system does not have the required libraries installed. + """ if kind is None: kind = plugin_store.keys() diff --git a/skimage/io/tests/test_collection.py b/skimage/io/tests/test_collection.py index cf5ef820..1e9fea73 100644 --- a/skimage/io/tests/test_collection.py +++ b/skimage/io/tests/test_collection.py @@ -1,88 +1,72 @@ -import sys import os.path import numpy as np -from numpy.testing import (assert_raises, - assert_equal, - assert_array_almost_equal, - ) -from numpy.testing.decorators import skipif +from numpy.testing import assert_raises, assert_equal, assert_allclose from skimage import data_dir -from skimage.io import ImageCollection, MultiImage -from skimage.io.collection import alphanumeric_key -from skimage.io import Image as ioImage - -import six +from skimage.io.collection import ImageCollection, alphanumeric_key -try: - from PIL import Image -except ImportError: - PIL_available = False -else: - PIL_available = True +def test_string_split(): + test_string = 'z23a' + test_str_result = ['z', 23, 'a'] + assert_equal(alphanumeric_key(test_string), test_str_result) -class TestAlphanumericKey(): - def setUp(self): - self.test_string = 'z23a' - self.test_str_result = ['z', 23, 'a'] - self.filenames = ['f9.10.png', 'f9.9.png', 'f10.10.png', 'f10.9.png', - 'e9.png', 'e10.png', 'em.png'] - self.sorted_filenames = \ - ['e9.png', 'e10.png', 'em.png', 'f9.9.png', 'f9.10.png', - 'f10.9.png', 'f10.10.png'] - - def test_string_split(self): - assert_equal(alphanumeric_key(self.test_string), self.test_str_result) - - def test_string_sort(self): - sorted_filenames = sorted(self.filenames, key=alphanumeric_key) - assert_equal(sorted_filenames, self.sorted_filenames) +def test_string_sort(): + filenames = ['f9.10.png', 'f9.9.png', 'f10.10.png', 'f10.9.png', + 'e9.png', 'e10.png', 'em.png'] + sorted_filenames = ['e9.png', 'e10.png', 'em.png', 'f9.9.png', + 'f9.10.png', 'f10.9.png', 'f10.10.png'] + sorted_filenames = sorted(filenames, key=alphanumeric_key) + assert_equal(sorted_filenames, sorted_filenames) class TestImageCollection(): - pattern = [os.path.join(data_dir, pic) for pic in ['camera.png', - 'color.png']] - pattern_matched = [os.path.join(data_dir, pic) for pic in - ['camera.png', 'moon.png']] + + pattern = [os.path.join(data_dir, pic) + for pic in ['camera.png', 'color.png']] + + pattern_matched = [os.path.join(data_dir, pic) + for pic in ['camera.png', 'moon.png']] def setUp(self): - self.collection = ImageCollection(self.pattern) - self.collection_matched = ImageCollection(self.pattern_matched) + # Generic image collection with images of different shapes. + self.images = ImageCollection(self.pattern) + # Image collection with images having shapes that match. + self.images_matched = ImageCollection(self.pattern_matched) def test_len(self): - assert len(self.collection) == 2 + assert len(self.images) == 2 def test_getitem(self): - num = len(self.collection) + num = len(self.images) for i in range(-num, num): - assert type(self.collection[i]) is np.ndarray - assert_array_almost_equal(self.collection[0], - self.collection[-num]) + assert type(self.images[i]) is np.ndarray + assert_allclose(self.images[0], + self.images[-num]) - #assert_raises expects a callable, hence this do-very-little func + # assert_raises expects a callable, hence this thin wrapper function. def return_img(n): - return self.collection[n] + return self.images[n] assert_raises(IndexError, return_img, num) assert_raises(IndexError, return_img, -num - 1) def test_slicing(self): - assert type(self.collection[:]) is ImageCollection - assert len(self.collection[:]) == 2 - assert len(self.collection[:1]) == 1 - assert len(self.collection[1:]) == 1 - assert_array_almost_equal(self.collection[0], self.collection[:1][0]) - assert_array_almost_equal(self.collection[1], self.collection[1:][0]) - assert_array_almost_equal(self.collection[1], self.collection[::-1][0]) - assert_array_almost_equal(self.collection[0], self.collection[::-1][1]) + assert type(self.images[:]) is ImageCollection + assert len(self.images[:]) == 2 + assert len(self.images[:1]) == 1 + assert len(self.images[1:]) == 1 + assert_allclose(self.images[0], self.images[:1][0]) + assert_allclose(self.images[1], self.images[1:][0]) + assert_allclose(self.images[1], self.images[::-1][0]) + assert_allclose(self.images[0], self.images[::-1][1]) def test_files_property(self): - assert isinstance(self.collection.files, list) + assert isinstance(self.images.files, list) def set_files(f): - self.collection.files = f + self.images.files = f assert_raises(AttributeError, set_files, 'newfiles') def test_custom_load(self): @@ -95,59 +79,12 @@ class TestImageCollection(): assert_equal(ic[1], (2, 'two')) def test_concatenate(self): - ar = self.collection_matched.concatenate() - assert_equal(ar.shape, (len(self.collection_matched),) + - self.collection[0].shape) - assert_raises(ValueError, self.collection.concatenate) + array = self.images_matched.concatenate() + expected_shape = (len(self.images_matched),) + self.images[0].shape + assert_equal(array.shape, expected_shape) - -class TestMultiImage(): - - def setUp(self): - # This multipage TIF file was created with imagemagick: - # convert im1.tif im2.tif -adjoin multipage.tif - if PIL_available: - self.img = MultiImage(os.path.join(data_dir, 'multipage.tif')) - - @skipif(not PIL_available) - def test_len(self): - assert len(self.img) == 2 - - @skipif(not PIL_available) - def test_getitem(self): - num = len(self.img) - for i in range(-num, num): - assert type(self.img[i]) is np.ndarray - assert_array_almost_equal(self.img[0], - self.img[-num]) - - #assert_raises expects a callable, hence this do-very-little func - def return_img(n): - return self.img[n] - assert_raises(IndexError, return_img, num) - assert_raises(IndexError, return_img, -num - 1) - - @skipif(not PIL_available) - def test_files_property(self): - assert isinstance(self.img.filename, six.string_types) - - def set_filename(f): - self.img.filename = f - assert_raises(AttributeError, set_filename, 'newfile') - - @skipif(not PIL_available) - def test_conserve_memory_property(self): - assert isinstance(self.img.conserve_memory, bool) - - def set_mem(val): - self.img.conserve_memory = val - assert_raises(AttributeError, set_mem, True) - - @skipif(not PIL_available) - def test_concatenate(self): - ar = self.img.concatenate() - assert_equal(ar.shape, (len(self.img),) + - self.img[0].shape) + def test_concatentate_mismatched_image_shapes(self): + assert_raises(ValueError, self.images.concatenate) if __name__ == "__main__": diff --git a/skimage/io/tests/test_inherited_config.py b/skimage/io/tests/test_inherited_config.py deleted file mode 100644 index 207d3cf1..00000000 --- a/skimage/io/tests/test_inherited_config.py +++ /dev/null @@ -1,47 +0,0 @@ -from skimage.io.inherited_config import InheritedConfig - - -def test_get_non_existent(): - config = InheritedConfig() - assert config.get('size') is None - - -def test_get_simple(): - config = InheritedConfig({'imread': 'matplotlib'}) - assert config.get('imread') == 'matplotlib' - - -def test_get_default(): - config = InheritedConfig() - assert config.get('size', 10) == 10 - - -def test_get_best(): - config = InheritedConfig({'size': 0, 'size.text': 1}) - assert config.get('size.text') == 1 - - -def test_get_multi_level(): - config = InheritedConfig({'size': 0}) - assert config.get('size.text.title') == 0 - config['size.text'] = 1 - assert config.get('size.text.title') == 1 - config['size.text.title'] = 2 - assert config.get('size.text.title') == 2 - - -def test_contains(): - config = InheritedConfig({'imread': 'matplotlib'}) - assert 'imread' in config - assert 'imread.jpg' in config - - -def test_getitem(): - config = InheritedConfig({'imread': 'a'}) - assert config['imread'] == 'a' - assert config['imread.png'] == 'a' - - -if __name__ == '__main__': - from numpy import testing - testing.run_module_suite() diff --git a/skimage/io/tests/test_multi_image.py b/skimage/io/tests/test_multi_image.py new file mode 100644 index 00000000..ebaa71dc --- /dev/null +++ b/skimage/io/tests/test_multi_image.py @@ -0,0 +1,69 @@ +import os + +import numpy as np +from numpy.testing.decorators import skipif +from numpy.testing import assert_raises, assert_equal, assert_allclose + +from skimage import data_dir +from skimage.io.collection import MultiImage + +try: + from PIL import Image +except ImportError: + PIL_available = False +else: + PIL_available = True + +import six + + +class TestMultiImage(): + + def setUp(self): + # This multipage TIF file was created with imagemagick: + # convert im1.tif im2.tif -adjoin multipage.tif + if PIL_available: + self.img = MultiImage(os.path.join(data_dir, 'multipage.tif')) + + @skipif(not PIL_available) + def test_len(self): + assert len(self.img) == 2 + + @skipif(not PIL_available) + def test_getitem(self): + num = len(self.img) + for i in range(-num, num): + assert type(self.img[i]) is np.ndarray + assert_allclose(self.img[0], self.img[-num]) + + # assert_raises expects a callable, hence this thin wrapper function. + def return_img(n): + return self.img[n] + assert_raises(IndexError, return_img, num) + assert_raises(IndexError, return_img, -num - 1) + + @skipif(not PIL_available) + def test_files_property(self): + assert isinstance(self.img.filename, six.string_types) + + def set_filename(f): + self.img.filename = f + assert_raises(AttributeError, set_filename, 'newfile') + + @skipif(not PIL_available) + def test_conserve_memory_property(self): + assert isinstance(self.img.conserve_memory, bool) + + def set_mem(val): + self.img.conserve_memory = val + assert_raises(AttributeError, set_mem, True) + + @skipif(not PIL_available) + def test_concatenate(self): + array = self.img.concatenate() + assert_equal(array.shape, (len(self.img),) + self.img[0].shape) + + +if __name__ == "__main__": + from numpy.testing import run_module_suite + run_module_suite() From f04e14272f1b45c827701b61e4a0df04a0f571fc Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Sat, 7 Dec 2013 01:07:17 -0600 Subject: [PATCH 312/577] Fix doctest which causes side-effects. I'm not sure that there's a safe way to write this example as a doctest, but I think this will pass on Travis (although it still has side-effects. --- skimage/io/manage_plugins.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/io/manage_plugins.py b/skimage/io/manage_plugins.py index ace57d8f..08bf1703 100644 --- a/skimage/io/manage_plugins.py +++ b/skimage/io/manage_plugins.py @@ -202,10 +202,10 @@ def use_plugin(name, kind=None): Examples -------- - To use a plugin named 'null' as the default image reader, you would write: + To use Matplotlib as the default image reader, you would write: >>> from skimage import io - >>> io.use_plugin('null', 'imread') + >>> io.use_plugin('matplotlib', 'imread') To see a list of available plugins run ``io.available_plugins``. Note that this lists plugins that are defined, but the full list may not be usable From b715b79c31c891ab1e91c1ac54738131cfdb4bf3 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Sat, 7 Dec 2013 10:26:56 -0600 Subject: [PATCH 313/577] Test Image._repr_png_ --- skimage/io/tests/test_image.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/skimage/io/tests/test_image.py b/skimage/io/tests/test_image.py index 6c54695b..ef63ef95 100644 --- a/skimage/io/tests/test_image.py +++ b/skimage/io/tests/test_image.py @@ -1,7 +1,12 @@ -from skimage.io import Image +from io import BytesIO + +import numpy as np +from skimage import img_as_ubyte +from skimage.io import Image, imread from numpy.testing import assert_equal, assert_array_equal + def test_tags(): f = Image([1, 2, 3], foo='bar', sigma='delta') g = Image([3, 2, 1], sun='moon') @@ -11,7 +16,17 @@ def test_tags(): assert_array_equal((g + 2).tags['sun'], 'moon') assert_equal(h.tags, {}) + +def test_repr_png_roundtrip(): + original_array = 255 * np.ones((3, 3), dtype=np.uint8) + image = Image(original_array) + array = imread(BytesIO(image._repr_png_())) + # Force output to ubyte range for plugin compatibility. + # For example, Matplotlib will return floats even if the image is uint8. + assert_array_equal(img_as_ubyte(array), original_array) + # Note that PIL breaks with `_repr_jpeg_`. + + if __name__ == "__main__": from numpy.testing import run_module_suite run_module_suite() - From f7fa4049f55b1bfc7818ca89694127ef044a5f30 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Sat, 7 Dec 2013 10:41:03 -0600 Subject: [PATCH 314/577] Test null plugin --- skimage/io/tests/test_null.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 skimage/io/tests/test_null.py diff --git a/skimage/io/tests/test_null.py b/skimage/io/tests/test_null.py new file mode 100644 index 00000000..6d3913d9 --- /dev/null +++ b/skimage/io/tests/test_null.py @@ -0,0 +1,35 @@ +import os +import warnings + +import numpy as np +from numpy.testing import raises + +from skimage import io +from skimage import data_dir + + +@raises(Warning) +def test_null_imread(): + path = os.path.join(data_dir, 'color.png') + with warnings.catch_warnings(): # Temporarily set warnings as errors. + warnings.filterwarnings('error') + io.imread(path, plugin='null') + + +@raises(Warning) +def test_null_imsave(): + with warnings.catch_warnings(): # Temporarily set warnings as errors. + warnings.filterwarnings('error') + io.imsave('dummy.png', np.zeros((3, 3)), plugin='null') + + +@raises(Warning) +def test_null_imshow(): + with warnings.catch_warnings(): # Temporarily set warnings as errors. + warnings.filterwarnings('error') + io.imshow(np.zeros((3, 3)), plugin='null') + + +if __name__ == '__main__': + from numpy.testing import run_module_suite + run_module_suite() From d7cf60ef0b554a458a20bf8803e376a1a45a1cf4 Mon Sep 17 00:00:00 2001 From: Tony S Yu Date: Sat, 7 Dec 2013 11:45:37 -0600 Subject: [PATCH 315/577] Attempt to fix failing test on Python 3 buildbot --- skimage/io/tests/test_image.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/skimage/io/tests/test_image.py b/skimage/io/tests/test_image.py index ef63ef95..b74c973e 100644 --- a/skimage/io/tests/test_image.py +++ b/skimage/io/tests/test_image.py @@ -18,7 +18,8 @@ def test_tags(): def test_repr_png_roundtrip(): - original_array = 255 * np.ones((3, 3), dtype=np.uint8) + # Use RGB-like shape since some backends convert grayscale to RGB + original_array = 255 * np.ones((5, 5, 3), dtype=np.uint8) image = Image(original_array) array = imread(BytesIO(image._repr_png_())) # Force output to ubyte range for plugin compatibility. From 783c04baec7a8bdcfc6229059ee4877d9bee8a30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sun, 8 Dec 2013 18:46:38 +0100 Subject: [PATCH 316/577] Fix bug in array padding, template matching --- bento.info | 3 - skimage/_shared/transform.pyx | 1 + skimage/feature/_template.pyx | 97 ----------------- skimage/feature/setup.py | 3 - skimage/feature/template.py | 140 +++++++++++++++++-------- skimage/feature/tests/test_template.py | 3 +- skimage/util/__init__.py | 9 +- skimage/util/arraypad.py | 6 +- 8 files changed, 108 insertions(+), 154 deletions(-) delete mode 100644 skimage/feature/_template.pyx diff --git a/bento.info b/bento.info index 30367057..ff9122fa 100644 --- a/bento.info +++ b/bento.info @@ -39,9 +39,6 @@ Library: Extension: skimage.morphology._pnpoly Sources: skimage/morphology/_pnpoly.pyx - Extension: skimage.feature._template - Sources: - skimage/feature/_template.pyx Extension: skimage.io._plugins._colormixer Sources: skimage/io/_plugins/_colormixer.pyx diff --git a/skimage/_shared/transform.pyx b/skimage/_shared/transform.pyx index 9bdc6824..d77ec583 100644 --- a/skimage/_shared/transform.pyx +++ b/skimage/_shared/transform.pyx @@ -41,4 +41,5 @@ cdef float integrate(float[:, ::1] sat, Py_ssize_t r0, Py_ssize_t c0, if (c0 - 1 >= 0): S -= sat[r1, c0 - 1] + return S diff --git a/skimage/feature/_template.pyx b/skimage/feature/_template.pyx deleted file mode 100644 index 855ece23..00000000 --- a/skimage/feature/_template.pyx +++ /dev/null @@ -1,97 +0,0 @@ -#cython: cdivision=True -#cython: boundscheck=False -#cython: nonecheck=False -#cython: wraparound=False - -""" -Template matching using normalized cross-correlation. - -We use fast normalized cross-correlation algorithm (see [1]_ and [2]_) to -compute match probability. This algorithm calculates the normalized -cross-correlation of an image, `I`, with a template `T` according to the -following equation:: - - sum{ I(x, y) [T(x, y) - ] } - ------------------------------------------------------- - sqrt(sum{ [I(x, y) - ]^2 } sum{ [T(x, y) - ]^2 }) - -where `` is the average of the template, and `` is the average of the -image *coincident with the template*, and sums are over the template and the -image window coincident with the template. Note that the numerator is simply -the cross-correlation of the image and the zero-mean template. - -To speed up calculations, we use summed-area tables (a.k.a. integral images) to -quickly calculate sums of image windows inside the loop. This step relies on -the following relation (see Eq. 10 of [1]):: - - sum{ [I(x, y) - ]^2 } = - sum{ I^2(x, y) } - [sum{ I(x, y) }]^2 / N_x N_y - -(Without this relation, you would need to subtract each image-window mean from -the image window *before* squaring.) - -.. [1] Briechle and Hanebeck, "Template Matching using Fast Normalized - Cross Correlation", Proceedings of the SPIE (2001). -.. [2] J. P. Lewis, "Fast Normalized Cross-Correlation", Industrial Light and - Magic. -""" - -import numpy as np -from scipy.signal import fftconvolve - -cimport numpy as cnp -from libc.math cimport sqrt, fabs -from skimage._shared.transform cimport integrate - - -from skimage.transform import integral - - -def match_template(cnp.ndarray[float, ndim=2, mode="c"] image, - cnp.ndarray[float, ndim=2, mode="c"] template): - - cdef float[:, ::1] corr - cdef float[:, ::1] image_sat - cdef float[:, ::1] image_sqr_sat - cdef float template_mean = np.mean(template) - cdef float template_ssd - cdef float inv_area - cdef Py_ssize_t r, c, r_end, c_end - cdef Py_ssize_t template_rows = template.shape[0] - cdef Py_ssize_t template_cols = template.shape[1] - cdef float den, window_sqr_sum, window_mean_sqr, window_sum - - image_sat = integral.integral_image(image) - image_sqr_sat = integral.integral_image(image**2) - - template -= template_mean - template_ssd = np.sum(template**2) - # use inversed area for accuracy - inv_area = 1.0 / (template.shape[0] * template.shape[1]) - - # when `dtype=float` is used, ascontiguousarray returns ``double``. - corr = np.ascontiguousarray(fftconvolve(image, - template[::-1, ::-1], - mode="valid"), - dtype=np.float32) - - - # move window through convolution results, normalizing in the process - for r in range(corr.shape[0]): - for c in range(corr.shape[1]): - # subtract 1 because `i_end` and `c_end` are used for indexing into - # summed-area table, instead of slicing windows of the image. - r_end = r + template_rows - 1 - c_end = c + template_cols - 1 - - window_sum = integrate(image_sat, r, c, r_end, c_end) - window_mean_sqr = window_sum * window_sum * inv_area - window_sqr_sum = integrate(image_sqr_sat, r, c, r_end, c_end) - if window_sqr_sum <= window_mean_sqr: - corr[r, c] = 0 - continue - - den = sqrt((window_sqr_sum - window_mean_sqr) * template_ssd) - corr[r, c] /= den - - return np.asarray(corr) diff --git a/skimage/feature/setup.py b/skimage/feature/setup.py index 7df64c32..915bc351 100644 --- a/skimage/feature/setup.py +++ b/skimage/feature/setup.py @@ -16,7 +16,6 @@ def configuration(parent_package='', top_path=None): cython(['censure_cy.pyx'], working_path=base_path) cython(['_brief_cy.pyx'], working_path=base_path) cython(['_texture.pyx'], working_path=base_path) - cython(['_template.pyx'], working_path=base_path) config.add_extension('corner_cy', sources=['corner_cy.c'], include_dirs=[get_numpy_include_dirs()]) @@ -26,8 +25,6 @@ def configuration(parent_package='', top_path=None): include_dirs=[get_numpy_include_dirs()]) config.add_extension('_texture', sources=['_texture.c'], include_dirs=[get_numpy_include_dirs(), '../_shared']) - config.add_extension('_template', sources=['_template.c'], - include_dirs=[get_numpy_include_dirs(), '../_shared']) return config diff --git a/skimage/feature/template.py b/skimage/feature/template.py index e8f17512..d90fe0c5 100644 --- a/skimage/feature/template.py +++ b/skimage/feature/template.py @@ -1,19 +1,33 @@ -"""template.py - Template matching -""" import numpy as np -from . import _template +from scipy.signal import fftconvolve + +from skimage.util import pad -def match_template(image, template, pad_input=False): +def _window_sum(image, window_shape): + + window_sum = np.cumsum(image, axis=0) + window_sum = (window_sum[window_shape[0]:-1] + - window_sum[:-window_shape[0]-1]) + + window_sum = np.cumsum(window_sum, axis=1) + window_sum = (window_sum[:, window_shape[1]:-1] + - window_sum[:, :-window_shape[1]-1]) + + return window_sum + + +def match_template(image, template, pad_input=False, mode='constant', + constant_values=0): """Match a template to a 2-D image using normalized correlation. The output is an array with values between -1.0 and 1.0, which correspond - to the probability that the template is found at that position. + to the correlation coefficient that the template is found at the position. Parameters ---------- image : array_like - 2-D Image to process. + 2-D Image to process. template : array_like Template to locate. pad_input : bool @@ -22,6 +36,10 @@ def match_template(image, template, pad_input=False): Otherwise, the output is an array with shape `(M - m + 1, N - n + 1)` for an `(M, N)` image and an `(m, n)` template, and matches correspond to origin (top-left corner) of the template. + mode : see `numpy.pad`, optional + Padding mode. + constant_values : see `numpy.pad`, optional + Constant values used in conjunction with ``mode='constant'``. Returns ------- @@ -30,52 +48,92 @@ def match_template(image, template, pad_input=False): `(m, n)` template, the `output` is `(M - m + 1, N - n + 1)` when `pad_input = False` and `(M, N)` when `pad_input = True`. + References + ---------- + .. [1] Briechle and Hanebeck, "Template Matching using Fast Normalized + Cross Correlation", Proceedings of the SPIE (2001). + .. [2] J. P. Lewis, "Fast Normalized Cross-Correlation", Industrial Light + and Magic. + Examples -------- >>> template = np.zeros((3, 3)) >>> template[1, 1] = 1 - >>> print(template) - [[ 0. 0. 0.] - [ 0. 1. 0.] - [ 0. 0. 0.]] + >>> template + array([[ 0. 0. 0.] + [ 0. 1. 0.] + [ 0. 0. 0.]]) >>> image = np.zeros((6, 6)) >>> image[1, 1] = 1 >>> image[4, 4] = -1 - >>> print(image) - [[ 0. 0. 0. 0. 0. 0.] - [ 0. 1. 0. 0. 0. 0.] - [ 0. 0. 0. 0. 0. 0.] - [ 0. 0. 0. 0. 0. 0.] - [ 0. 0. 0. 0. -1. 0.] - [ 0. 0. 0. 0. 0. 0.]] + >>> image + array([[ 0. 0. 0. 0. 0. 0.] + [ 0. 1. 0. 0. 0. 0.] + [ 0. 0. 0. 0. 0. 0.] + [ 0. 0. 0. 0. 0. 0.] + [ 0. 0. 0. 0. -1. 0.] + [ 0. 0. 0. 0. 0. 0.]]) >>> result = match_template(image, template) - >>> print(np.round(result, 3)) - [[ 1. -0.125 0. 0. ] - [-0.125 -0.125 0. 0. ] - [ 0. 0. 0.125 0.125] - [ 0. 0. 0.125 -1. ]] + >>> np.round(result, 3) + array([[ 1. -0.125 0. 0. ] + [-0.125 -0.125 0. 0. ] + [ 0. 0. 0.125 0.125] + [ 0. 0. 0.125 -1. ]]) >>> result = match_template(image, template, pad_input=True) - >>> print(np.round(result, 3)) - [[-0.125 -0.125 -0.125 0. 0. 0. ] - [-0.125 1. -0.125 0. 0. 0. ] - [-0.125 -0.125 -0.125 0. 0. 0. ] - [ 0. 0. 0. 0.125 0.125 0.125] - [ 0. 0. 0. 0.125 -1. 0.125] - [ 0. 0. 0. 0.125 0.125 0.125]] + >>> np.round(result, 3) + array([[-0.125 -0.125 -0.125 0. 0. 0. ] + [-0.125 1. -0.125 0. 0. 0. ] + [-0.125 -0.125 -0.125 0. 0. 0. ] + [ 0. 0. 0. 0.125 0.125 0.125] + [ 0. 0. 0. 0.125 -1. 0.125] + [ 0. 0. 0. 0.125 0.125 0.125]]) """ + if np.any(np.less(image.shape, template.shape)): raise ValueError("Image must be larger than template.") - image = np.ascontiguousarray(image, dtype=np.float32) - template = np.ascontiguousarray(template, dtype=np.float32) + + orig_shape = image.shape + + image = np.array(image, dtype=np.float32, copy=False) + + if mode == 'constant': + image = pad(image, pad_width=template.shape, mode=mode, + constant_values=constant_values) + else: + image = pad(image, pad_width=template.shape, mode=mode) + + image_window_sum = _window_sum(image, template.shape) + image_window_sum2 = _window_sum(image**2, template.shape) + + template_area = np.prod(template.shape) + template_ssd = np.sum((template - template.mean())**2) + + xcorr = fftconvolve(image, template[::-1, ::-1], mode="valid")[1:-1, 1:-1] + nom = xcorr - image_window_sum * (template.sum() / template_area) + + denom = image_window_sum2 - image_window_sum**2 / template_area + denom *= template_ssd + np.maximum(denom, 0, out=denom) # sqrt of negative number not allowed + np.sqrt(denom, out=denom) + + response = np.zeros_like(xcorr, dtype=np.float32) + + # avoid zero-division + mask = denom > np.finfo(np.float32).eps + + response[mask] = nom[mask] / denom[mask] if pad_input: - pad_size = tuple(np.array(image.shape) + np.array(template.shape) - 1) - pad_image = np.mean(image) * np.ones(pad_size, dtype=np.float32) - h, w = image.shape - i0, j0 = template.shape - i0 /= 2 - j0 /= 2 - pad_image[i0:i0 + h, j0:j0 + w] = image - image = pad_image - result = _template.match_template(image, template) - return result + r0 = (template.shape[0] - 1) // 2 + r1 = r0 + orig_shape[0] + c0 = (template.shape[1] - 1) // 2 + c1 = c0 + orig_shape[1] + else: + r0 = template.shape[0] - 1 + r1 = r0 + orig_shape[0] - template.shape[0] + 1 + c0 = template.shape[1] - 1 + c1 = c0 + orig_shape[1] - template.shape[1] + 1 + + response = response[r0:r1, c0:c1] + + return response diff --git a/skimage/feature/tests/test_template.py b/skimage/feature/tests/test_template.py index 1b9ff213..e5ce7244 100644 --- a/skimage/feature/tests/test_template.py +++ b/skimage/feature/tests/test_template.py @@ -108,7 +108,8 @@ def test_pad_input(): image[mid, -9:-4] -= template # full min template centered at 12 image[mid, -3:] += template[:, :3] # half max template centered at 18 - result = match_template(image, template, pad_input=True) + result = match_template(image, template, pad_input=True, + constant_values=image.mean()) # get the max and min results. sorted_result = np.argsort(result.flat) diff --git a/skimage/util/__init__.py b/skimage/util/__init__.py index 9cd2bc50..5577e46b 100644 --- a/skimage/util/__init__.py +++ b/skimage/util/__init__.py @@ -3,14 +3,7 @@ from .dtype import (img_as_float, img_as_int, img_as_uint, img_as_ubyte, from .shape import view_as_blocks, view_as_windows from .noise import random_noise -import numpy -ver = numpy.__version__.split('.') -chk = int(ver[0] + ver[1]) -if chk < 18: # Use internal version for numpy versions < 1.8.x - from .arraypad import pad -else: - from numpy import pad -del numpy, ver, chk +from .arraypad import pad from ._regular_grid import regular_grid from .unique import unique_rows diff --git a/skimage/util/arraypad.py b/skimage/util/arraypad.py index 66ad55ea..0bc92d7b 100644 --- a/skimage/util/arraypad.py +++ b/skimage/util/arraypad.py @@ -1027,7 +1027,11 @@ def _normalize_shape(narray, shape): """ normshp = None shapelen = len(np.shape(narray)) - if (isinstance(shape, int)) or shape is None: + + if isinstance(shape, np.ndarray): + shape = shape.tolist() + + if isinstance(shape, (int, float)) or shape is None: normshp = ((shape, shape), ) * shapelen elif (isinstance(shape, (tuple, list)) and isinstance(shape[0], (tuple, list)) From 2e9e6a4ce3f2c208986f26ac2407b8550ec249c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 9 Dec 2013 00:04:54 +0100 Subject: [PATCH 317/577] Fix doctests --- skimage/feature/template.py | 38 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/skimage/feature/template.py b/skimage/feature/template.py index d90fe0c5..4533c636 100644 --- a/skimage/feature/template.py +++ b/skimage/feature/template.py @@ -60,33 +60,33 @@ def match_template(image, template, pad_input=False, mode='constant', >>> template = np.zeros((3, 3)) >>> template[1, 1] = 1 >>> template - array([[ 0. 0. 0.] - [ 0. 1. 0.] - [ 0. 0. 0.]]) + array([[ 0., 0., 0.], + [ 0., 1., 0.], + [ 0., 0., 0.]]) >>> image = np.zeros((6, 6)) >>> image[1, 1] = 1 >>> image[4, 4] = -1 >>> image - array([[ 0. 0. 0. 0. 0. 0.] - [ 0. 1. 0. 0. 0. 0.] - [ 0. 0. 0. 0. 0. 0.] - [ 0. 0. 0. 0. 0. 0.] - [ 0. 0. 0. 0. -1. 0.] - [ 0. 0. 0. 0. 0. 0.]]) + array([[ 0., 0., 0., 0., 0., 0.], + [ 0., 1., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., 0., 0.], + [ 0., 0., 0., 0., -1., 0.], + [ 0., 0., 0., 0., 0., 0.]]) >>> result = match_template(image, template) >>> np.round(result, 3) - array([[ 1. -0.125 0. 0. ] - [-0.125 -0.125 0. 0. ] - [ 0. 0. 0.125 0.125] - [ 0. 0. 0.125 -1. ]]) + array([[ 1. , -0.125, 0. , 0. ], + [-0.125, -0.125, 0. , 0. ], + [ 0. , 0. , 0.125, 0.125], + [ 0. , 0. , 0.125, -1. ]]) >>> result = match_template(image, template, pad_input=True) >>> np.round(result, 3) - array([[-0.125 -0.125 -0.125 0. 0. 0. ] - [-0.125 1. -0.125 0. 0. 0. ] - [-0.125 -0.125 -0.125 0. 0. 0. ] - [ 0. 0. 0. 0.125 0.125 0.125] - [ 0. 0. 0. 0.125 -1. 0.125] - [ 0. 0. 0. 0.125 0.125 0.125]]) + array([[-0.125, -0.125, -0.125, 0. , 0. , 0. ], + [-0.125, 1. , -0.125, 0. , 0. , 0. ], + [-0.125, -0.125, -0.125, 0. , 0. , 0. ], + [ 0. , 0. , 0. , 0.125, 0.125, 0.125], + [ 0. , 0. , 0. , 0.125, -1. , 0.125], + [ 0. , 0. , 0. , 0.125, 0.125, 0.125]]) """ if np.any(np.less(image.shape, template.shape)): From 33d00e7411ae44a07e36bf93a69073d4b90fbfc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 9 Dec 2013 00:07:00 +0100 Subject: [PATCH 318/577] Update arraypad tests --- skimage/util/tests/test_arraypad.py | 762 ++++++++++++++++------------ 1 file changed, 431 insertions(+), 331 deletions(-) diff --git a/skimage/util/tests/test_arraypad.py b/skimage/util/tests/test_arraypad.py index 008c3516..3fbe50a1 100644 --- a/skimage/util/tests/test_arraypad.py +++ b/skimage/util/tests/test_arraypad.py @@ -13,209 +13,219 @@ class TestStatistic(TestCase): def test_check_mean_stat_length(self): a = np.arange(100).astype('f') a = pad(a, ((25, 20), ), 'mean', stat_length=((2, 3), )) - b = np.array([ - 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, - 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, - 0.5, 0.5, 0.5, 0.5, 0.5, + b = np.array( + [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, + 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, + 0.5, 0.5, 0.5, 0.5, 0.5, - 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., - 10., 11., 12., 13., 14., 15., 16., 17., 18., 19., - 20., 21., 22., 23., 24., 25., 26., 27., 28., 29., - 30., 31., 32., 33., 34., 35., 36., 37., 38., 39., - 40., 41., 42., 43., 44., 45., 46., 47., 48., 49., - 50., 51., 52., 53., 54., 55., 56., 57., 58., 59., - 60., 61., 62., 63., 64., 65., 66., 67., 68., 69., - 70., 71., 72., 73., 74., 75., 76., 77., 78., 79., - 80., 81., 82., 83., 84., 85., 86., 87., 88., 89., - 90., 91., 92., 93., 94., 95., 96., 97., 98., 99., + 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., + 10., 11., 12., 13., 14., 15., 16., 17., 18., 19., + 20., 21., 22., 23., 24., 25., 26., 27., 28., 29., + 30., 31., 32., 33., 34., 35., 36., 37., 38., 39., + 40., 41., 42., 43., 44., 45., 46., 47., 48., 49., + 50., 51., 52., 53., 54., 55., 56., 57., 58., 59., + 60., 61., 62., 63., 64., 65., 66., 67., 68., 69., + 70., 71., 72., 73., 74., 75., 76., 77., 78., 79., + 80., 81., 82., 83., 84., 85., 86., 87., 88., 89., + 90., 91., 92., 93., 94., 95., 96., 97., 98., 99., - 98., 98., 98., 98., 98., 98., 98., 98., 98., 98., - 98., 98., 98., 98., 98., 98., 98., 98., 98., 98.]) + 98., 98., 98., 98., 98., 98., 98., 98., 98., 98., + 98., 98., 98., 98., 98., 98., 98., 98., 98., 98. + ]) assert_array_equal(a, b) def test_check_maximum_1(self): a = np.arange(100) a = pad(a, (25, 20), 'maximum') - b = np.array([ - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, + b = np.array( + [99, 99, 99, 99, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 99, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99]) + 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 99] + ) assert_array_equal(a, b) def test_check_maximum_2(self): a = np.arange(100) + 1 a = pad(a, (25, 20), 'maximum') - b = np.array([ - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, + b = np.array( + [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]) + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100] + ) assert_array_equal(a, b) def test_check_minimum_1(self): a = np.arange(100) a = pad(a, (25, 20), 'minimum') - b = np.array([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, + b = np.array( + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + ) assert_array_equal(a, b) def test_check_minimum_2(self): a = np.arange(100) + 2 a = pad(a, (25, 20), 'minimum') - b = np.array([ - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, + b = np.array( + [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]) + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2] + ) assert_array_equal(a, b) def test_check_median(self): a = np.arange(100).astype('f') a = pad(a, (25, 20), 'median') - b = np.array([ - 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, - 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, - 49.5, 49.5, 49.5, 49.5, 49.5, + b = np.array( + [49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, + 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, + 49.5, 49.5, 49.5, 49.5, 49.5, - 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., - 10., 11., 12., 13., 14., 15., 16., 17., 18., 19., - 20., 21., 22., 23., 24., 25., 26., 27., 28., 29., - 30., 31., 32., 33., 34., 35., 36., 37., 38., 39., - 40., 41., 42., 43., 44., 45., 46., 47., 48., 49., - 50., 51., 52., 53., 54., 55., 56., 57., 58., 59., - 60., 61., 62., 63., 64., 65., 66., 67., 68., 69., - 70., 71., 72., 73., 74., 75., 76., 77., 78., 79., - 80., 81., 82., 83., 84., 85., 86., 87., 88., 89., - 90., 91., 92., 93., 94., 95., 96., 97., 98., 99., + 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., + 10., 11., 12., 13., 14., 15., 16., 17., 18., 19., + 20., 21., 22., 23., 24., 25., 26., 27., 28., 29., + 30., 31., 32., 33., 34., 35., 36., 37., 38., 39., + 40., 41., 42., 43., 44., 45., 46., 47., 48., 49., + 50., 51., 52., 53., 54., 55., 56., 57., 58., 59., + 60., 61., 62., 63., 64., 65., 66., 67., 68., 69., + 70., 71., 72., 73., 74., 75., 76., 77., 78., 79., + 80., 81., 82., 83., 84., 85., 86., 87., 88., 89., + 90., 91., 92., 93., 94., 95., 96., 97., 98., 99., - 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, - 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5]) + 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, + 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5] + ) assert_array_equal(a, b) def test_check_median_01(self): a = np.array([[3, 1, 4], [4, 5, 9], [9, 8, 2]]) a = pad(a, 1, 'median') - b = np.array([ - [4, 4, 5, 4, 4], + b = np.array( + [[4, 4, 5, 4, 4], - [3, 3, 1, 4, 3], - [5, 4, 5, 9, 5], - [8, 9, 8, 2, 8], + [3, 3, 1, 4, 3], + [5, 4, 5, 9, 5], + [8, 9, 8, 2, 8], - [4, 4, 5, 4, 4]]) + [4, 4, 5, 4, 4]] + ) assert_array_equal(a, b) def test_check_median_02(self): a = np.array([[3, 1, 4], [4, 5, 9], [9, 8, 2]]) a = pad(a.T, 1, 'median').T - b = np.array([ - [5, 4, 5, 4, 5], + b = np.array( + [[5, 4, 5, 4, 5], - [3, 3, 1, 4, 3], - [5, 4, 5, 9, 5], - [8, 9, 8, 2, 8], + [3, 3, 1, 4, 3], + [5, 4, 5, 9, 5], + [8, 9, 8, 2, 8], - [5, 4, 5, 4, 5]]) + [5, 4, 5, 4, 5]] + ) assert_array_equal(a, b) def test_check_mean_shape_one(self): a = [[4, 5, 6]] a = pad(a, (5, 7), 'mean', stat_length=2) - b = np.array([ - [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], - [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], - [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], - [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], - [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], + b = np.array( + [[4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], + [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], + [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], + [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], + [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], - [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], + [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], - [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], - [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], - [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], - [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], - [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], - [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], - [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6]]) + [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], + [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], + [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], + [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], + [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], + [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6], + [4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6]] + ) assert_array_equal(a, b) def test_check_mean_2(self): a = np.arange(100).astype('f') a = pad(a, (25, 20), 'mean') - b = np.array([ - 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, - 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, - 49.5, 49.5, 49.5, 49.5, 49.5, + b = np.array( + [49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, + 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, + 49.5, 49.5, 49.5, 49.5, 49.5, - 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., - 10., 11., 12., 13., 14., 15., 16., 17., 18., 19., - 20., 21., 22., 23., 24., 25., 26., 27., 28., 29., - 30., 31., 32., 33., 34., 35., 36., 37., 38., 39., - 40., 41., 42., 43., 44., 45., 46., 47., 48., 49., - 50., 51., 52., 53., 54., 55., 56., 57., 58., 59., - 60., 61., 62., 63., 64., 65., 66., 67., 68., 69., - 70., 71., 72., 73., 74., 75., 76., 77., 78., 79., - 80., 81., 82., 83., 84., 85., 86., 87., 88., 89., - 90., 91., 92., 93., 94., 95., 96., 97., 98., 99., + 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., + 10., 11., 12., 13., 14., 15., 16., 17., 18., 19., + 20., 21., 22., 23., 24., 25., 26., 27., 28., 29., + 30., 31., 32., 33., 34., 35., 36., 37., 38., 39., + 40., 41., 42., 43., 44., 45., 46., 47., 48., 49., + 50., 51., 52., 53., 54., 55., 56., 57., 58., 59., + 60., 61., 62., 63., 64., 65., 66., 67., 68., 69., + 70., 71., 72., 73., 74., 75., 76., 77., 78., 79., + 80., 81., 82., 83., 84., 85., 86., 87., 88., 89., + 90., 91., 92., 93., 94., 95., 96., 97., 98., 99., - 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, - 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5]) + 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, + 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5, 49.5] + ) assert_array_equal(a, b) @@ -223,23 +233,73 @@ class TestConstant(TestCase): def test_check_constant(self): a = np.arange(100) a = pad(a, (25, 20), 'constant', constant_values=(10, 20)) - b = np.array([10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, + b = np.array( + [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20]) + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20] + ) + assert_array_equal(a, b) + + def test_check_constant_float(self): + a = np.arange(100) + a = pad(a, (25, 20), 'constant', constant_values=-1.1) + b = np.array( + [-1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, + -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, + -1.1, -1.1, -1.1, -1.1, -1.1, + + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + + -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, + -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1] + ) + assert_array_equal(a, b) + + def test_check_constant_float(self): + a = np.arange(100, dtype=float) + a = pad(a, (25, 20), 'constant', constant_values=(-1.1, -1.2)) + b = np.array( + [-1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, + -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, -1.1, + -1.1, -1.1, -1.1, -1.1, -1.1, + + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + + -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, + -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2] + ) assert_array_equal(a, b) @@ -247,24 +307,25 @@ class TestLinearRamp(TestCase): def test_check_simple(self): a = np.arange(100).astype('f') a = pad(a, (25, 20), 'linear_ramp', end_values=(4, 5)) - b = np.array([ - 4.00, 3.84, 3.68, 3.52, 3.36, 3.20, 3.04, 2.88, 2.72, 2.56, - 2.40, 2.24, 2.08, 1.92, 1.76, 1.60, 1.44, 1.28, 1.12, 0.96, - 0.80, 0.64, 0.48, 0.32, 0.16, + b = np.array( + [4.00, 3.84, 3.68, 3.52, 3.36, 3.20, 3.04, 2.88, 2.72, 2.56, + 2.40, 2.24, 2.08, 1.92, 1.76, 1.60, 1.44, 1.28, 1.12, 0.96, + 0.80, 0.64, 0.48, 0.32, 0.16, - 0.00, 1.00, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00, 9.00, - 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, - 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, - 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, - 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, - 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, - 60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, - 70.0, 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0, - 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0, - 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, + 0.00, 1.00, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00, 9.00, + 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, + 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, + 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, + 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, + 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, + 60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, + 70.0, 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0, + 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0, + 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, - 94.3, 89.6, 84.9, 80.2, 75.5, 70.8, 66.1, 61.4, 56.7, 52.0, - 47.3, 42.6, 37.9, 33.2, 28.5, 23.8, 19.1, 14.4, 9.7, 5.]) + 94.3, 89.6, 84.9, 80.2, 75.5, 70.8, 66.1, 61.4, 56.7, 52.0, + 47.3, 42.6, 37.9, 33.2, 28.5, 23.8, 19.1, 14.4, 9.7, 5.] + ) assert_array_almost_equal(a, b, decimal=5) @@ -272,67 +333,70 @@ class TestReflect(TestCase): def test_check_simple(self): a = np.arange(100) a = pad(a, (25, 20), 'reflect') - b = np.array([ - 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, - 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, - 5, 4, 3, 2, 1, + b = np.array( + [25, 24, 23, 22, 21, 20, 19, 18, 17, 16, + 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, + 5, 4, 3, 2, 1, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, - 88, 87, 86, 85, 84, 83, 82, 81, 80, 79]) + 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, + 88, 87, 86, 85, 84, 83, 82, 81, 80, 79] + ) assert_array_equal(a, b) def test_check_large_pad(self): a = [[4, 5, 6], [6, 7, 8]] a = pad(a, (5, 7), 'reflect') - b = np.array([ - [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7], + b = np.array( + [[7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5]]) + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7, 8, 7, 6, 7], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5]] + ) assert_array_equal(a, b) def test_check_shape(self): a = [[4, 5, 6]] a = pad(a, (5, 7), 'reflect') - b = np.array([ - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + b = np.array( + [[5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], - [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5]]) + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5], + [5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5, 6, 5, 4, 5]] + ) assert_array_equal(a, b) def test_check_01(self): @@ -355,83 +419,85 @@ class TestWrap(TestCase): def test_check_simple(self): a = np.arange(100) a = pad(a, (25, 20), 'wrap') - b = np.array([ - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, + b = np.array( + [75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]) + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] + ) assert_array_equal(a, b) def test_check_large_pad(self): a = np.arange(12) a = np.reshape(a, (3, 4)) a = pad(a, (10, 12), 'wrap') - b = np.array([ - [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, - 11, 8, 9, 10, 11, 8, 9, 10, 11], - [ 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, - 3, 0, 1, 2, 3, 0, 1, 2, 3], - [ 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, - 7, 4, 5, 6, 7, 4, 5, 6, 7], - [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, - 11, 8, 9, 10, 11, 8, 9, 10, 11], - [ 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, - 3, 0, 1, 2, 3, 0, 1, 2, 3], - [ 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, - 7, 4, 5, 6, 7, 4, 5, 6, 7], - [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, - 11, 8, 9, 10, 11, 8, 9, 10, 11], - [ 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, - 3, 0, 1, 2, 3, 0, 1, 2, 3], - [ 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, - 7, 4, 5, 6, 7, 4, 5, 6, 7], - [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, - 11, 8, 9, 10, 11, 8, 9, 10, 11], + b = np.array( + [[10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, + 11, 8, 9, 10, 11, 8, 9, 10, 11], + [2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, + 3, 0, 1, 2, 3, 0, 1, 2, 3], + [6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, + 7, 4, 5, 6, 7, 4, 5, 6, 7], + [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, + 11, 8, 9, 10, 11, 8, 9, 10, 11], + [2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, + 3, 0, 1, 2, 3, 0, 1, 2, 3], + [6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, + 7, 4, 5, 6, 7, 4, 5, 6, 7], + [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, + 11, 8, 9, 10, 11, 8, 9, 10, 11], + [2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, + 3, 0, 1, 2, 3, 0, 1, 2, 3], + [6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, + 7, 4, 5, 6, 7, 4, 5, 6, 7], + [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, + 11, 8, 9, 10, 11, 8, 9, 10, 11], - [ 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, - 3, 0, 1, 2, 3, 0, 1, 2, 3], - [ 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, - 7, 4, 5, 6, 7, 4, 5, 6, 7], - [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, - 11, 8, 9, 10, 11, 8, 9, 10, 11], + [2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, + 3, 0, 1, 2, 3, 0, 1, 2, 3], + [6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, + 7, 4, 5, 6, 7, 4, 5, 6, 7], + [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, + 11, 8, 9, 10, 11, 8, 9, 10, 11], - [ 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, - 3, 0, 1, 2, 3, 0, 1, 2, 3], - [ 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, - 7, 4, 5, 6, 7, 4, 5, 6, 7], - [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, - 11, 8, 9, 10, 11, 8, 9, 10, 11], - [ 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, - 3, 0, 1, 2, 3, 0, 1, 2, 3], - [ 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, - 7, 4, 5, 6, 7, 4, 5, 6, 7], - [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, - 11, 8, 9, 10, 11, 8, 9, 10, 11], - [ 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, - 3, 0, 1, 2, 3, 0, 1, 2, 3], - [ 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, - 7, 4, 5, 6, 7, 4, 5, 6, 7], - [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, - 11, 8, 9, 10, 11, 8, 9, 10, 11], - [ 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, - 3, 0, 1, 2, 3, 0, 1, 2, 3], - [ 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, - 7, 4, 5, 6, 7, 4, 5, 6, 7], - [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, - 11, 8, 9, 10, 11, 8, 9, 10, 11]]) + [2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, + 3, 0, 1, 2, 3, 0, 1, 2, 3], + [6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, + 7, 4, 5, 6, 7, 4, 5, 6, 7], + [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, + 11, 8, 9, 10, 11, 8, 9, 10, 11], + [2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, + 3, 0, 1, 2, 3, 0, 1, 2, 3], + [6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, + 7, 4, 5, 6, 7, 4, 5, 6, 7], + [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, + 11, 8, 9, 10, 11, 8, 9, 10, 11], + [2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, + 3, 0, 1, 2, 3, 0, 1, 2, 3], + [6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, + 7, 4, 5, 6, 7, 4, 5, 6, 7], + [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, + 11, 8, 9, 10, 11, 8, 9, 10, 11], + [2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, + 3, 0, 1, 2, 3, 0, 1, 2, 3], + [6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, + 7, 4, 5, 6, 7, 4, 5, 6, 7], + [10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, + 11, 8, 9, 10, 11, 8, 9, 10, 11]] + ) assert_array_equal(a, b) def test_check_01(self): @@ -450,19 +516,21 @@ class TestStatLen(TestCase): a = np.arange(30) a = np.reshape(a, (6, 5)) a = pad(a, ((2, 3), (3, 2)), mode='mean', stat_length=(3,)) - b = np.array([[ 6, 6, 6, 5, 6, 7, 8, 9, 8, 8], - [ 6, 6, 6, 5, 6, 7, 8, 9, 8, 8], + b = np.array( + [[6, 6, 6, 5, 6, 7, 8, 9, 8, 8], + [6, 6, 6, 5, 6, 7, 8, 9, 8, 8], - [ 1, 1, 1, 0, 1, 2, 3, 4, 3, 3], - [ 6, 6, 6, 5, 6, 7, 8, 9, 8, 8], - [11, 11, 11, 10, 11, 12, 13, 14, 13, 13], - [16, 16, 16, 15, 16, 17, 18, 19, 18, 18], - [21, 21, 21, 20, 21, 22, 23, 24, 23, 23], - [26, 26, 26, 25, 26, 27, 28, 29, 28, 28], + [1, 1, 1, 0, 1, 2, 3, 4, 3, 3], + [6, 6, 6, 5, 6, 7, 8, 9, 8, 8], + [11, 11, 11, 10, 11, 12, 13, 14, 13, 13], + [16, 16, 16, 15, 16, 17, 18, 19, 18, 18], + [21, 21, 21, 20, 21, 22, 23, 24, 23, 23], + [26, 26, 26, 25, 26, 27, 28, 29, 28, 28], - [21, 21, 21, 20, 21, 22, 23, 24, 23, 23], - [21, 21, 21, 20, 21, 22, 23, 24, 23, 23], - [21, 21, 21, 20, 21, 22, 23, 24, 23, 23]]) + [21, 21, 21, 20, 21, 22, 23, 24, 23, 23], + [21, 21, 21, 20, 21, 22, 23, 24, 23, 23], + [21, 21, 21, 20, 21, 22, 23, 24, 23, 23]] + ) assert_array_equal(a, b) @@ -471,58 +539,90 @@ class TestEdge(TestCase): a = np.arange(12) a = np.reshape(a, (4, 3)) a = pad(a, ((2, 3), (3, 2)), 'edge') - b = np.array([ - [0, 0, 0, 0, 1, 2, 2, 2], - [0, 0, 0, 0, 1, 2, 2, 2], + b = np.array( + [[0, 0, 0, 0, 1, 2, 2, 2], + [0, 0, 0, 0, 1, 2, 2, 2], - [0, 0, 0, 0, 1, 2, 2, 2], - [3, 3, 3, 3, 4, 5, 5, 5], - [6, 6, 6, 6, 7, 8, 8, 8], - [9, 9, 9, 9, 10, 11, 11, 11], + [0, 0, 0, 0, 1, 2, 2, 2], + [3, 3, 3, 3, 4, 5, 5, 5], + [6, 6, 6, 6, 7, 8, 8, 8], + [9, 9, 9, 9, 10, 11, 11, 11], - [9, 9, 9, 9, 10, 11, 11, 11], - [9, 9, 9, 9, 10, 11, 11, 11], - [9, 9, 9, 9, 10, 11, 11, 11]]) + [9, 9, 9, 9, 10, 11, 11, 11], + [9, 9, 9, 9, 10, 11, 11, 11], + [9, 9, 9, 9, 10, 11, 11, 11]] + ) assert_array_equal(a, b) -def test_check_too_many_pad_axes(): - arr = np.arange(30) - arr = np.reshape(arr, (6, 5)) - kwargs = dict(mode='mean', stat_length=(3, )) - assert_raises(ValueError, pad, arr, ((2, 3), (3, 2), (4, 5)), - **kwargs) +class TestZeroPadWidth(TestCase): + def test_zero_pad_width(self): + arr = np.arange(30) + arr = np.reshape(arr, (6, 5)) + for pad_width in (0, (0, 0), ((0, 0), (0, 0))): + assert_array_equal(arr, pad(arr, pad_width, mode='constant')) -def test_check_negative_stat_length(): - arr = np.arange(30) - arr = np.reshape(arr, (6, 5)) - kwargs = dict(mode='mean', stat_length=(-3, )) - assert_raises(ValueError, pad, arr, ((2, 3), (3, 2)), - **kwargs) +class TestNdarrayPadWidth(TestCase): + def test_check_simple(self): + a = np.arange(12) + a = np.reshape(a, (4, 3)) + a = pad(a, np.array(((2, 3), (3, 2))), 'edge') + b = np.array( + [[0, 0, 0, 0, 1, 2, 2, 2], + [0, 0, 0, 0, 1, 2, 2, 2], + + [0, 0, 0, 0, 1, 2, 2, 2], + [3, 3, 3, 3, 4, 5, 5, 5], + [6, 6, 6, 6, 7, 8, 8, 8], + [9, 9, 9, 9, 10, 11, 11, 11], + + [9, 9, 9, 9, 10, 11, 11, 11], + [9, 9, 9, 9, 10, 11, 11, 11], + [9, 9, 9, 9, 10, 11, 11, 11]] + ) + assert_array_equal(a, b) -def test_check_negative_pad_width(): - arr = np.arange(30) - arr = np.reshape(arr, (6, 5)) - kwargs = dict(mode='mean', stat_length=(3, )) - assert_raises(ValueError, pad, arr, ((-2, 3), (3, 2)), - **kwargs) +class ValueError1(TestCase): + def test_check_simple(self): + arr = np.arange(30) + arr = np.reshape(arr, (6, 5)) + kwargs = dict(mode='mean', stat_length=(3, )) + assert_raises(ValueError, pad, arr, ((2, 3), (3, 2), (4, 5)), + **kwargs) + + def test_check_negative_stat_length(self): + arr = np.arange(30) + arr = np.reshape(arr, (6, 5)) + kwargs = dict(mode='mean', stat_length=(-3, )) + assert_raises(ValueError, pad, arr, ((2, 3), (3, 2)), + **kwargs) + + def test_check_negative_pad_width(self): + arr = np.arange(30) + arr = np.reshape(arr, (6, 5)) + kwargs = dict(mode='mean', stat_length=(3, )) + assert_raises(ValueError, pad, arr, ((-2, 3), (3, 2)), + **kwargs) -def test_pad_one_axis_three_ways(): - arr = np.arange(30) - arr = np.reshape(arr, (6, 5)) - kwargs = dict(mode='mean', stat_length=(3, )) - assert_raises(ValueError, pad, arr, ((2, 3, 4), (3, 2)), - **kwargs) +class ValueError2(TestCase): + def test_check_simple(self): + arr = np.arange(30) + arr = np.reshape(arr, (6, 5)) + kwargs = dict(mode='mean', stat_length=(3, )) + assert_raises(ValueError, pad, arr, ((2, 3, 4), (3, 2)), + **kwargs) -def test_zero_pad_width(): - arr = np.arange(30) - arr = np.reshape(arr, (6, 5)) - for pad_width in (0, (0, 0), ((0, 0), (0, 0))): - assert np.all(arr == pad(arr, pad_width, mode='constant')) +class ValueError3(TestCase): + def test_check_simple(self): + arr = np.arange(30) + arr = np.reshape(arr, (6, 5)) + kwargs = dict(mode='mean', stat_length=(3, )) + assert_raises(ValueError, pad, arr, ((-2, 3), (3, 2)), + **kwargs) if __name__ == "__main__": From 84e03ec48b8cf0f62a685774160ad33d2dab2ee5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 9 Dec 2013 00:25:55 +0100 Subject: [PATCH 319/577] Add support for 3-D template matching --- skimage/feature/template.py | 81 ++++++++++++++++++++++++++++--------- 1 file changed, 62 insertions(+), 19 deletions(-) diff --git a/skimage/feature/template.py b/skimage/feature/template.py index 4533c636..dd857054 100644 --- a/skimage/feature/template.py +++ b/skimage/feature/template.py @@ -4,7 +4,7 @@ from scipy.signal import fftconvolve from skimage.util import pad -def _window_sum(image, window_shape): +def _window_sum_2d(image, window_shape): window_sum = np.cumsum(image, axis=0) window_sum = (window_sum[window_shape[0]:-1] @@ -17,18 +17,35 @@ def _window_sum(image, window_shape): return window_sum +def _window_sum_3d(image, window_shape): + + window_sum = np.cumsum(image, axis=0) + window_sum = (window_sum[window_shape[0]:-1] + - window_sum[:-window_shape[0]-1]) + + window_sum = np.cumsum(window_sum, axis=1) + window_sum = (window_sum[:, window_shape[1]:-1] + - window_sum[:, :-window_shape[1]-1]) + + window_sum = np.cumsum(window_sum, axis=2) + window_sum = (window_sum[:, :, window_shape[2]:-1] + - window_sum[:, :, :-window_shape[2]-1]) + + return window_sum + + def match_template(image, template, pad_input=False, mode='constant', constant_values=0): - """Match a template to a 2-D image using normalized correlation. + """Match a template to a 2-D or 3-D image using normalized correlation. The output is an array with values between -1.0 and 1.0, which correspond to the correlation coefficient that the template is found at the position. Parameters ---------- - image : array_like - 2-D Image to process. - template : array_like + image : (N, M[, D]) array + 2-D or 3-D input image. + template : (N, M[, D]) array Template to locate. pad_input : bool If True, pad `image` with image mean so that output is the same size as @@ -91,27 +108,42 @@ def match_template(image, template, pad_input=False, mode='constant', if np.any(np.less(image.shape, template.shape)): raise ValueError("Image must be larger than template.") + if image.ndim not in (2, 3): + raise ValueError("Only 2- and 3-D images supported.") + if image.ndim != template.ndim: + raise ValueError("Dimensionality of template must match image.") - orig_shape = image.shape + image_shape = image.shape image = np.array(image, dtype=np.float32, copy=False) + pad_width = tuple((width, width) for width in template.shape) if mode == 'constant': - image = pad(image, pad_width=template.shape, mode=mode, + image = pad(image, pad_width=pad_width, mode=mode, constant_values=constant_values) else: - image = pad(image, pad_width=template.shape, mode=mode) + image = pad(image, pad_width=pad_width, mode=mode) - image_window_sum = _window_sum(image, template.shape) - image_window_sum2 = _window_sum(image**2, template.shape) + if image.ndim == 2: + image_window_sum = _window_sum_2d(image, template.shape) + image_window_sum2 = _window_sum_2d(image**2, template.shape) + elif image.ndim == 3: + image_window_sum = _window_sum_3d(image, template.shape) + image_window_sum2 = _window_sum_3d(image**2, template.shape) - template_area = np.prod(template.shape) + template_volume = np.prod(template.shape) template_ssd = np.sum((template - template.mean())**2) - xcorr = fftconvolve(image, template[::-1, ::-1], mode="valid")[1:-1, 1:-1] - nom = xcorr - image_window_sum * (template.sum() / template_area) + if image.ndim == 2: + xcorr = fftconvolve(image, template[::-1, ::-1], + mode="valid")[1:-1, 1:-1] + elif image.ndim == 3: + xcorr = fftconvolve(image, template[::-1, ::-1, ::-1], + mode="valid")[1:-1, 1:-1, 1:-1] - denom = image_window_sum2 - image_window_sum**2 / template_area + nom = xcorr - image_window_sum * (template.sum() / template_volume) + + denom = image_window_sum2 - image_window_sum**2 / template_volume denom *= template_ssd np.maximum(denom, 0, out=denom) # sqrt of negative number not allowed np.sqrt(denom, out=denom) @@ -125,15 +157,26 @@ def match_template(image, template, pad_input=False, mode='constant', if pad_input: r0 = (template.shape[0] - 1) // 2 - r1 = r0 + orig_shape[0] + r1 = r0 + image_shape[0] c0 = (template.shape[1] - 1) // 2 - c1 = c0 + orig_shape[1] + c1 = c0 + image_shape[1] else: r0 = template.shape[0] - 1 - r1 = r0 + orig_shape[0] - template.shape[0] + 1 + r1 = r0 + image_shape[0] - template.shape[0] + 1 c0 = template.shape[1] - 1 - c1 = c0 + orig_shape[1] - template.shape[1] + 1 + c1 = c0 + image_shape[1] - template.shape[1] + 1 - response = response[r0:r1, c0:c1] + + if image.ndim == 3: + if pad_input: + d0 = (template.shape[2] - 1) // 2 + d1 = d0 + image_shape[2] + else: + d0 = template.shape[2] - 1 + d1 = d0 + image_shape[2] - template.shape[2] + 1 + + response = response[r0:r1, c0:c1, d0:d1] + else: + response = response[r0:r1, c0:c1] return response From 8443c8469c7872c2f7117de97daa38b289fef750 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 9 Dec 2013 00:33:01 +0100 Subject: [PATCH 320/577] Reuse 2D sum in 3D sum --- skimage/feature/template.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/skimage/feature/template.py b/skimage/feature/template.py index dd857054..bd25b4cf 100644 --- a/skimage/feature/template.py +++ b/skimage/feature/template.py @@ -19,13 +19,7 @@ def _window_sum_2d(image, window_shape): def _window_sum_3d(image, window_shape): - window_sum = np.cumsum(image, axis=0) - window_sum = (window_sum[window_shape[0]:-1] - - window_sum[:-window_shape[0]-1]) - - window_sum = np.cumsum(window_sum, axis=1) - window_sum = (window_sum[:, window_shape[1]:-1] - - window_sum[:, :-window_shape[1]-1]) + window_sum = _window_sum_2d(image, window_shape) window_sum = np.cumsum(window_sum, axis=2) window_sum = (window_sum[:, :, window_shape[2]:-1] From baa0b2cfbf3cfcb5b67fdf067a16083c980769e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 9 Dec 2013 00:42:20 +0100 Subject: [PATCH 321/577] Add tests for 3-D template matching --- skimage/feature/template.py | 3 ++- skimage/feature/tests/test_template.py | 34 +++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/skimage/feature/template.py b/skimage/feature/template.py index bd25b4cf..092ab309 100644 --- a/skimage/feature/template.py +++ b/skimage/feature/template.py @@ -118,6 +118,8 @@ def match_template(image, template, pad_input=False, mode='constant', else: image = pad(image, pad_width=pad_width, mode=mode) + # Use special case for 2-D images for much better performance in + # computation of integral images if image.ndim == 2: image_window_sum = _window_sum_2d(image, template.shape) image_window_sum2 = _window_sum_2d(image**2, template.shape) @@ -160,7 +162,6 @@ def match_template(image, template, pad_input=False, mode='constant', c0 = template.shape[1] - 1 c1 = c0 + image_shape[1] - template.shape[1] + 1 - if image.ndim == 3: if pad_input: d0 = (template.shape[2] - 1) // 2 diff --git a/skimage/feature/tests/test_template.py b/skimage/feature/tests/test_template.py index e5ce7244..a74c0ce7 100644 --- a/skimage/feature/tests/test_template.py +++ b/skimage/feature/tests/test_template.py @@ -1,5 +1,5 @@ import numpy as np -from numpy.testing import assert_array_almost_equal as assert_close +from numpy.testing import assert_almost_equal, assert_equal from skimage.morphology import diamond from skimage.feature import match_template, peak_local_max @@ -31,7 +31,7 @@ def test_template(): positions = positions[np.argsort(positions[:, 0])] for xy_target, xy in zip(target_positions, positions): - yield assert_close, xy, xy_target + yield assert_almost_equal, xy, xy_target def test_normalization(): @@ -114,9 +114,35 @@ def test_pad_input(): # get the max and min results. sorted_result = np.argsort(result.flat) i, j = np.unravel_index(sorted_result[:2], result.shape) - assert_close(j, (12, 0)) + assert_equal(j, (12, 0)) i, j = np.unravel_index(sorted_result[-2:], result.shape) - assert_close(j, (18, 6)) + assert_equal(j, (18, 6)) + + +def test_3d(): + np.random.seed(1) + template = np.random.rand(3, 3, 3) + image = np.zeros((12, 12, 12)) + + image[3:6, 5:8, 4:7] = template + + result = match_template(image, template) + + assert_equal(result.shape, (10, 10, 10)) + assert_equal(np.unravel_index(result.argmax(), image.shape), (2, 5, 6)) + + +def test_3d_pad_input(): + np.random.seed(1) + template = np.random.rand(3, 3, 3) + image = np.zeros((12, 12, 12)) + + image[3:6, 5:8, 4:7] = template + + result = match_template(image, template, pad_input=True) + + assert_equal(result.shape, (12, 12, 12)) + assert_equal(np.unravel_index(result.argmax(), image.shape), (4, 6, 5)) if __name__ == "__main__": From 7924c46cfdcdf5470915ea9dfe8b2df53ee008c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 9 Dec 2013 00:44:36 +0100 Subject: [PATCH 322/577] Add tests for wrong input shapes --- skimage/feature/tests/test_template.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/skimage/feature/tests/test_template.py b/skimage/feature/tests/test_template.py index a74c0ce7..c9052d82 100644 --- a/skimage/feature/tests/test_template.py +++ b/skimage/feature/tests/test_template.py @@ -1,5 +1,5 @@ import numpy as np -from numpy.testing import assert_almost_equal, assert_equal +from numpy.testing import assert_almost_equal, assert_equal, assert_raises from skimage.morphology import diamond from skimage.feature import match_template, peak_local_max @@ -88,7 +88,7 @@ def test_no_nans(): def test_switched_arguments(): image = np.ones((5, 5)) template = np.ones((3, 3)) - np.testing.assert_raises(ValueError, match_template, template, image) + assert_raises(ValueError, match_template, template, image) def test_pad_input(): @@ -145,6 +145,20 @@ def test_3d_pad_input(): assert_equal(np.unravel_index(result.argmax(), image.shape), (4, 6, 5)) +def test_wrong_input(): + image = np.ones((5, 5, 1)) + template = np.ones((3, 3)) + assert_raises(ValueError, match_template, template, image) + + image = np.ones((5, 5)) + template = np.ones((3, 3, 2)) + assert_raises(ValueError, match_template, template, image) + + image = np.ones((5, 5, 3, 3)) + template = np.ones((3, 3, 2)) + assert_raises(ValueError, match_template, template, image) + + if __name__ == "__main__": from numpy import testing testing.run_module_suite() From 688778b572527f7b6f5126d735501480db58652c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 9 Dec 2013 00:57:07 +0100 Subject: [PATCH 323/577] Move inlined function definitions to header for actual inlining --- bento.info | 3 - skimage/_shared/interpolation.pxd | 344 ++++++++++++++++++++++++++++-- skimage/_shared/interpolation.pyx | 331 ---------------------------- skimage/_shared/setup.py | 3 - 4 files changed, 324 insertions(+), 357 deletions(-) delete mode 100644 skimage/_shared/interpolation.pyx diff --git a/bento.info b/bento.info index 30367057..84c85634 100644 --- a/bento.info +++ b/bento.info @@ -123,9 +123,6 @@ Library: Extension: skimage.transform._warps_cy Sources: skimage/transform/_warps_cy.pyx - Extension: skimage._shared.interpolation - Sources: - skimage/_shared/interpolation.pyx Extension: skimage.segmentation._felzenszwalb_cy Sources: skimage/segmentation/_felzenszwalb_cy.pyx diff --git a/skimage/_shared/interpolation.pxd b/skimage/_shared/interpolation.pxd index c5f32b6a..a8b96014 100644 --- a/skimage/_shared/interpolation.pxd +++ b/skimage/_shared/interpolation.pxd @@ -1,27 +1,331 @@ +#cython: cdivision=True +#cython: boundscheck=False +#cython: nonecheck=False +#cython: wraparound=False +from libc.math cimport ceil, floor -cdef double nearest_neighbour_interpolation(double* image, Py_ssize_t rows, - Py_ssize_t cols, double r, - double c, char mode, - double cval) -cdef double bilinear_interpolation(double* image, Py_ssize_t rows, Py_ssize_t cols, - double r, double c, char mode, - double cval) +cdef inline Py_ssize_t round(double r): + return ((r + 0.5) if (r > 0.0) else (r - 0.5)) -cdef double quadratic_interpolation(double x, double[3] f) -cdef double biquadratic_interpolation(double* image, Py_ssize_t rows, Py_ssize_t cols, - double r, double c, char mode, - double cval) -cdef double cubic_interpolation(double x, double[4] f) -cdef double bicubic_interpolation(double* image, Py_ssize_t rows, Py_ssize_t cols, - double r, double c, char mode, - double cval) +cdef inline double nearest_neighbour_interpolation(double* image, Py_ssize_t rows, + Py_ssize_t cols, double r, + double c, char mode, + double cval): + """Nearest neighbour interpolation at a given position in the image. -cdef double get_pixel2d(double* image, Py_ssize_t rows, Py_ssize_t cols, Py_ssize_t r, - Py_ssize_t c, char mode, double cval) + Parameters + ---------- + image : double array + Input image. + rows, cols : int + Shape of image. + r, c : double + Position at which to interpolate. + mode : {'C', 'W', 'R', 'N'} + Wrapping mode. Constant, Wrap, Reflect or Nearest. + cval : double + Constant value to use for constant mode. -cdef double get_pixel3d(double* image, Py_ssize_t rows, Py_ssize_t cols, Py_ssize_t dims, - Py_ssize_t r, Py_ssize_t c, Py_ssize_t d, char mode, double cval) + Returns + ------- + value : double + Interpolated value. -cdef Py_ssize_t coord_map(Py_ssize_t dim, Py_ssize_t coord, char mode) + """ + + return get_pixel2d(image, rows, cols, round(r), round(c), mode, cval) + + +cdef inline double bilinear_interpolation(double* image, Py_ssize_t rows, + Py_ssize_t cols, double r, double c, + char mode, double cval): + """Bilinear interpolation at a given position in the image. + + Parameters + ---------- + image : double array + Input image. + rows, cols : int + Shape of image. + r, c : double + Position at which to interpolate. + mode : {'C', 'W', 'R', 'N'} + Wrapping mode. Constant, Wrap, Reflect or Nearest. + cval : double + Constant value to use for constant mode. + + Returns + ------- + value : double + Interpolated value. + + """ + cdef double dr, dc + cdef Py_ssize_t minr, minc, maxr, maxc + + minr = floor(r) + minc = floor(c) + maxr = ceil(r) + maxc = ceil(c) + dr = r - minr + dc = c - minc + top = (1 - dc) * get_pixel2d(image, rows, cols, minr, minc, mode, cval) \ + + dc * get_pixel2d(image, rows, cols, minr, maxc, mode, cval) + bottom = (1 - dc) * get_pixel2d(image, rows, cols, maxr, minc, mode, cval) \ + + dc * get_pixel2d(image, rows, cols, maxr, maxc, mode, cval) + return (1 - dr) * top + dr * bottom + + +cdef inline double quadratic_interpolation(double x, double[3] f): + """Quadratic interpolation. + + Parameters + ---------- + x : double + Position in the interval [-1, 1]. + f : double[4] + Function values at positions [-1, 0, 1]. + + Returns + ------- + value : double + Interpolated value. + + """ + return f[1] - 0.25 * (f[0] - f[2]) * x + + +cdef inline double biquadratic_interpolation(double* image, Py_ssize_t rows, + Py_ssize_t cols, double r, double c, + char mode, double cval): + """Biquadratic interpolation at a given position in the image. + + Parameters + ---------- + image : double array + Input image. + rows, cols : int + Shape of image. + r, c : double + Position at which to interpolate. + mode : {'C', 'W', 'R', 'N'} + Wrapping mode. Constant, Wrap, Reflect or Nearest. + cval : double + Constant value to use for constant mode. + + Returns + ------- + value : double + Interpolated value. + + """ + + cdef Py_ssize_t r0 = round(r) + cdef Py_ssize_t c0 = round(c) + if r < 0: + r0 -= 1 + if c < 0: + c0 -= 1 + # scale position to range [-1, 1] + cdef double xr = (r - r0) - 1 + cdef double xc = (c - c0) - 1 + if r == r0: + xr += 1 + if c == c0: + xc += 1 + + cdef double fc[3], fr[3] + + cdef Py_ssize_t pr, pc + + # row-wise cubic interpolation + for pr in range(r0, r0 + 3): + for pc in range(c0, c0 + 3): + fc[pc - c0] = get_pixel2d(image, rows, cols, pr, pc, mode, cval) + fr[pr - r0] = quadratic_interpolation(xc, fc) + + # cubic interpolation for interpolated values of each row + return quadratic_interpolation(xr, fr) + + +cdef inline double cubic_interpolation(double x, double[4] f): + """Cubic interpolation. + + Parameters + ---------- + x : double + Position in the interval [0, 1]. + f : double[4] + Function values at positions [0, 1/3, 2/3, 1]. + + Returns + ------- + value : double + Interpolated value. + + """ + return \ + f[1] + 0.5 * x * \ + (f[2] - f[0] + x * \ + (2.0 * f[0] - 5.0 * f[1] + 4.0 * f[2] - f[3] + x * \ + (3.0 * (f[1] - f[2]) + f[3] - f[0]))) + + +cdef inline double bicubic_interpolation(double* image, Py_ssize_t rows, + Py_ssize_t cols, double r, double c, + char mode, double cval): + """Bicubic interpolation at a given position in the image. + + Parameters + ---------- + image : double array + Input image. + rows, cols : int + Shape of image. + r, c : double + Position at which to interpolate. + mode : {'C', 'W', 'R', 'N'} + Wrapping mode. Constant, Wrap, Reflect or Nearest. + cval : double + Constant value to use for constant mode. + + Returns + ------- + value : double + Interpolated value. + + """ + + cdef Py_ssize_t r0 = r - 1 + cdef Py_ssize_t c0 = c - 1 + if r < 0: + r0 -= 1 + if c < 0: + c0 -= 1 + # scale position to range [0, 1] + cdef double xr = (r - r0) / 3 + cdef double xc = (c - c0) / 3 + + cdef double fc[4], fr[4] + + cdef Py_ssize_t pr, pc + + # row-wise cubic interpolation + for pr in range(r0, r0 + 4): + for pc in range(c0, c0 + 4): + fc[pc - c0] = get_pixel2d(image, rows, cols, pr, pc, mode, cval) + fr[pr - r0] = cubic_interpolation(xc, fc) + + # cubic interpolation for interpolated values of each row + return cubic_interpolation(xr, fr) + + +cdef inline double get_pixel2d(double* image, Py_ssize_t rows, Py_ssize_t cols, + Py_ssize_t r, Py_ssize_t c, char mode, double cval): + """Get a pixel from the image, taking wrapping mode into consideration. + + Parameters + ---------- + image : double array + Input image. + rows, cols : int + Shape of image. + r, c : int + Position at which to get the pixel. + mode : {'C', 'W', 'R', 'N'} + Wrapping mode. Constant, Wrap, Reflect or Nearest. + cval : double + Constant value to use for constant mode. + + Returns + ------- + value : double + Pixel value at given position. + + """ + if mode == 'C': + if (r < 0) or (r > rows - 1) or (c < 0) or (c > cols - 1): + return cval + else: + return image[r * cols + c] + else: + return image[coord_map(rows, r, mode) * cols + coord_map(cols, c, mode)] + + +cdef inline double get_pixel3d(double* image, Py_ssize_t rows, Py_ssize_t cols, + Py_ssize_t dims, Py_ssize_t r, Py_ssize_t c, Py_ssize_t d, + char mode, double cval): + """Get a pixel from the image, taking wrapping mode into consideration. + + Parameters + ---------- + image : double array + Input image. + rows, cols, dims : int + Shape of image. + r, c, d : int + Position at which to get the pixel. + mode : {'C', 'W', 'R', 'N'} + Wrapping mode. Constant, Wrap, Reflect or Nearest. + cval : double + Constant value to use for constant mode. + + Returns + ------- + value : double + Pixel value at given position. + + """ + if mode == 'C': + if (r < 0) or (r > rows - 1) or (c < 0) or (c > cols - 1): + return cval + else: + return image[r * cols * dims + c * dims + d] + else: + return image[coord_map(rows, r, mode) * cols * dims + + coord_map(cols, c, mode) * dims + + d] + + +cdef inline Py_ssize_t coord_map(Py_ssize_t dim, Py_ssize_t coord, char mode): + """ + Wrap a coordinate, according to a given mode. + + Parameters + ---------- + dim : int + Maximum coordinate. + coord : int + Coord provided by user. May be < 0 or > dim. + mode : {'W', 'R', 'N'} + Whether to wrap or reflect the coordinate if it + falls outside [0, dim). + + """ + dim = dim - 1 + if mode == 'R': # reflect + if coord < 0: + # How many times times does the coordinate wrap? + if (-coord / dim) % 2 != 0: + return dim - (-coord % dim) + else: + return (-coord % dim) + elif coord > dim: + if (coord / dim) % 2 != 0: + return (dim - (coord % dim)) + else: + return (coord % dim) + elif mode == 'W': # wrap + if coord < 0: + return (dim - (-coord % dim)) + elif coord > dim: + return (coord % dim) + elif mode == 'N': # nearest + if coord < 0: + return 0 + elif coord > dim: + return dim + + return coord diff --git a/skimage/_shared/interpolation.pyx b/skimage/_shared/interpolation.pyx deleted file mode 100644 index a8b96014..00000000 --- a/skimage/_shared/interpolation.pyx +++ /dev/null @@ -1,331 +0,0 @@ -#cython: cdivision=True -#cython: boundscheck=False -#cython: nonecheck=False -#cython: wraparound=False -from libc.math cimport ceil, floor - - -cdef inline Py_ssize_t round(double r): - return ((r + 0.5) if (r > 0.0) else (r - 0.5)) - - -cdef inline double nearest_neighbour_interpolation(double* image, Py_ssize_t rows, - Py_ssize_t cols, double r, - double c, char mode, - double cval): - """Nearest neighbour interpolation at a given position in the image. - - Parameters - ---------- - image : double array - Input image. - rows, cols : int - Shape of image. - r, c : double - Position at which to interpolate. - mode : {'C', 'W', 'R', 'N'} - Wrapping mode. Constant, Wrap, Reflect or Nearest. - cval : double - Constant value to use for constant mode. - - Returns - ------- - value : double - Interpolated value. - - """ - - return get_pixel2d(image, rows, cols, round(r), round(c), mode, cval) - - -cdef inline double bilinear_interpolation(double* image, Py_ssize_t rows, - Py_ssize_t cols, double r, double c, - char mode, double cval): - """Bilinear interpolation at a given position in the image. - - Parameters - ---------- - image : double array - Input image. - rows, cols : int - Shape of image. - r, c : double - Position at which to interpolate. - mode : {'C', 'W', 'R', 'N'} - Wrapping mode. Constant, Wrap, Reflect or Nearest. - cval : double - Constant value to use for constant mode. - - Returns - ------- - value : double - Interpolated value. - - """ - cdef double dr, dc - cdef Py_ssize_t minr, minc, maxr, maxc - - minr = floor(r) - minc = floor(c) - maxr = ceil(r) - maxc = ceil(c) - dr = r - minr - dc = c - minc - top = (1 - dc) * get_pixel2d(image, rows, cols, minr, minc, mode, cval) \ - + dc * get_pixel2d(image, rows, cols, minr, maxc, mode, cval) - bottom = (1 - dc) * get_pixel2d(image, rows, cols, maxr, minc, mode, cval) \ - + dc * get_pixel2d(image, rows, cols, maxr, maxc, mode, cval) - return (1 - dr) * top + dr * bottom - - -cdef inline double quadratic_interpolation(double x, double[3] f): - """Quadratic interpolation. - - Parameters - ---------- - x : double - Position in the interval [-1, 1]. - f : double[4] - Function values at positions [-1, 0, 1]. - - Returns - ------- - value : double - Interpolated value. - - """ - return f[1] - 0.25 * (f[0] - f[2]) * x - - -cdef inline double biquadratic_interpolation(double* image, Py_ssize_t rows, - Py_ssize_t cols, double r, double c, - char mode, double cval): - """Biquadratic interpolation at a given position in the image. - - Parameters - ---------- - image : double array - Input image. - rows, cols : int - Shape of image. - r, c : double - Position at which to interpolate. - mode : {'C', 'W', 'R', 'N'} - Wrapping mode. Constant, Wrap, Reflect or Nearest. - cval : double - Constant value to use for constant mode. - - Returns - ------- - value : double - Interpolated value. - - """ - - cdef Py_ssize_t r0 = round(r) - cdef Py_ssize_t c0 = round(c) - if r < 0: - r0 -= 1 - if c < 0: - c0 -= 1 - # scale position to range [-1, 1] - cdef double xr = (r - r0) - 1 - cdef double xc = (c - c0) - 1 - if r == r0: - xr += 1 - if c == c0: - xc += 1 - - cdef double fc[3], fr[3] - - cdef Py_ssize_t pr, pc - - # row-wise cubic interpolation - for pr in range(r0, r0 + 3): - for pc in range(c0, c0 + 3): - fc[pc - c0] = get_pixel2d(image, rows, cols, pr, pc, mode, cval) - fr[pr - r0] = quadratic_interpolation(xc, fc) - - # cubic interpolation for interpolated values of each row - return quadratic_interpolation(xr, fr) - - -cdef inline double cubic_interpolation(double x, double[4] f): - """Cubic interpolation. - - Parameters - ---------- - x : double - Position in the interval [0, 1]. - f : double[4] - Function values at positions [0, 1/3, 2/3, 1]. - - Returns - ------- - value : double - Interpolated value. - - """ - return \ - f[1] + 0.5 * x * \ - (f[2] - f[0] + x * \ - (2.0 * f[0] - 5.0 * f[1] + 4.0 * f[2] - f[3] + x * \ - (3.0 * (f[1] - f[2]) + f[3] - f[0]))) - - -cdef inline double bicubic_interpolation(double* image, Py_ssize_t rows, - Py_ssize_t cols, double r, double c, - char mode, double cval): - """Bicubic interpolation at a given position in the image. - - Parameters - ---------- - image : double array - Input image. - rows, cols : int - Shape of image. - r, c : double - Position at which to interpolate. - mode : {'C', 'W', 'R', 'N'} - Wrapping mode. Constant, Wrap, Reflect or Nearest. - cval : double - Constant value to use for constant mode. - - Returns - ------- - value : double - Interpolated value. - - """ - - cdef Py_ssize_t r0 = r - 1 - cdef Py_ssize_t c0 = c - 1 - if r < 0: - r0 -= 1 - if c < 0: - c0 -= 1 - # scale position to range [0, 1] - cdef double xr = (r - r0) / 3 - cdef double xc = (c - c0) / 3 - - cdef double fc[4], fr[4] - - cdef Py_ssize_t pr, pc - - # row-wise cubic interpolation - for pr in range(r0, r0 + 4): - for pc in range(c0, c0 + 4): - fc[pc - c0] = get_pixel2d(image, rows, cols, pr, pc, mode, cval) - fr[pr - r0] = cubic_interpolation(xc, fc) - - # cubic interpolation for interpolated values of each row - return cubic_interpolation(xr, fr) - - -cdef inline double get_pixel2d(double* image, Py_ssize_t rows, Py_ssize_t cols, - Py_ssize_t r, Py_ssize_t c, char mode, double cval): - """Get a pixel from the image, taking wrapping mode into consideration. - - Parameters - ---------- - image : double array - Input image. - rows, cols : int - Shape of image. - r, c : int - Position at which to get the pixel. - mode : {'C', 'W', 'R', 'N'} - Wrapping mode. Constant, Wrap, Reflect or Nearest. - cval : double - Constant value to use for constant mode. - - Returns - ------- - value : double - Pixel value at given position. - - """ - if mode == 'C': - if (r < 0) or (r > rows - 1) or (c < 0) or (c > cols - 1): - return cval - else: - return image[r * cols + c] - else: - return image[coord_map(rows, r, mode) * cols + coord_map(cols, c, mode)] - - -cdef inline double get_pixel3d(double* image, Py_ssize_t rows, Py_ssize_t cols, - Py_ssize_t dims, Py_ssize_t r, Py_ssize_t c, Py_ssize_t d, - char mode, double cval): - """Get a pixel from the image, taking wrapping mode into consideration. - - Parameters - ---------- - image : double array - Input image. - rows, cols, dims : int - Shape of image. - r, c, d : int - Position at which to get the pixel. - mode : {'C', 'W', 'R', 'N'} - Wrapping mode. Constant, Wrap, Reflect or Nearest. - cval : double - Constant value to use for constant mode. - - Returns - ------- - value : double - Pixel value at given position. - - """ - if mode == 'C': - if (r < 0) or (r > rows - 1) or (c < 0) or (c > cols - 1): - return cval - else: - return image[r * cols * dims + c * dims + d] - else: - return image[coord_map(rows, r, mode) * cols * dims - + coord_map(cols, c, mode) * dims - + d] - - -cdef inline Py_ssize_t coord_map(Py_ssize_t dim, Py_ssize_t coord, char mode): - """ - Wrap a coordinate, according to a given mode. - - Parameters - ---------- - dim : int - Maximum coordinate. - coord : int - Coord provided by user. May be < 0 or > dim. - mode : {'W', 'R', 'N'} - Whether to wrap or reflect the coordinate if it - falls outside [0, dim). - - """ - dim = dim - 1 - if mode == 'R': # reflect - if coord < 0: - # How many times times does the coordinate wrap? - if (-coord / dim) % 2 != 0: - return dim - (-coord % dim) - else: - return (-coord % dim) - elif coord > dim: - if (coord / dim) % 2 != 0: - return (dim - (coord % dim)) - else: - return (coord % dim) - elif mode == 'W': # wrap - if coord < 0: - return (dim - (-coord % dim)) - elif coord > dim: - return (coord % dim) - elif mode == 'N': # nearest - if coord < 0: - return 0 - elif coord > dim: - return dim - - return coord diff --git a/skimage/_shared/setup.py b/skimage/_shared/setup.py index 765c30de..4c36b97e 100644 --- a/skimage/_shared/setup.py +++ b/skimage/_shared/setup.py @@ -14,12 +14,9 @@ def configuration(parent_package='', top_path=None): config.add_data_dir('tests') cython(['geometry.pyx'], working_path=base_path) - cython(['interpolation.pyx'], working_path=base_path) cython(['transform.pyx'], working_path=base_path) config.add_extension('geometry', sources=['geometry.c']) - config.add_extension('interpolation', sources=['interpolation.c'], - include_dirs=[get_numpy_include_dirs()]) config.add_extension('transform', sources=['transform.c'], include_dirs=[get_numpy_include_dirs()]) From d8b343e4304cba917615bb0278b96418681af4da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 9 Dec 2013 01:00:32 +0100 Subject: [PATCH 324/577] Fix doc tests --- skimage/feature/template.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/feature/template.py b/skimage/feature/template.py index 092ab309..a5bbd062 100644 --- a/skimage/feature/template.py +++ b/skimage/feature/template.py @@ -89,7 +89,7 @@ def match_template(image, template, pad_input=False, mode='constant', array([[ 1. , -0.125, 0. , 0. ], [-0.125, -0.125, 0. , 0. ], [ 0. , 0. , 0.125, 0.125], - [ 0. , 0. , 0.125, -1. ]]) + [ 0. , 0. , 0.125, -1. ]], dtype=float32)) >>> result = match_template(image, template, pad_input=True) >>> np.round(result, 3) array([[-0.125, -0.125, -0.125, 0. , 0. , 0. ], @@ -97,7 +97,7 @@ def match_template(image, template, pad_input=False, mode='constant', [-0.125, -0.125, -0.125, 0. , 0. , 0. ], [ 0. , 0. , 0. , 0.125, 0.125, 0.125], [ 0. , 0. , 0. , 0.125, -1. , 0.125], - [ 0. , 0. , 0. , 0.125, 0.125, 0.125]]) + [ 0. , 0. , 0. , 0.125, 0.125, 0.125]], dtype=float32)) """ if np.any(np.less(image.shape, template.shape)): From 8ae8548dfd190d69016d8646574ee20aa26e67fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 9 Dec 2013 07:52:08 +0100 Subject: [PATCH 325/577] Avoid temporary array allocations --- skimage/feature/template.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/skimage/feature/template.py b/skimage/feature/template.py index a5bbd062..a721cadf 100644 --- a/skimage/feature/template.py +++ b/skimage/feature/template.py @@ -139,7 +139,10 @@ def match_template(image, template, pad_input=False, mode='constant', nom = xcorr - image_window_sum * (template.sum() / template_volume) - denom = image_window_sum2 - image_window_sum**2 / template_volume + denom = image_window_sum2 + np.multiply(image_window_sum, image_window_sum, out=image_window_sum) + np.divide(image_window_sum, template_volume, out=image_window_sum) + denom -= image_window_sum denom *= template_ssd np.maximum(denom, 0, out=denom) # sqrt of negative number not allowed np.sqrt(denom, out=denom) From e1033e3f8a3f9f9b0c735ec100eb4de9b015ea1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 9 Dec 2013 08:06:16 +0100 Subject: [PATCH 326/577] Add missing bracket in doc tests --- skimage/feature/template.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/feature/template.py b/skimage/feature/template.py index a721cadf..37dec0bc 100644 --- a/skimage/feature/template.py +++ b/skimage/feature/template.py @@ -89,7 +89,7 @@ def match_template(image, template, pad_input=False, mode='constant', array([[ 1. , -0.125, 0. , 0. ], [-0.125, -0.125, 0. , 0. ], [ 0. , 0. , 0.125, 0.125], - [ 0. , 0. , 0.125, -1. ]], dtype=float32)) + [ 0. , 0. , 0.125, -1. ]], dtype=float32) >>> result = match_template(image, template, pad_input=True) >>> np.round(result, 3) array([[-0.125, -0.125, -0.125, 0. , 0. , 0. ], @@ -97,7 +97,7 @@ def match_template(image, template, pad_input=False, mode='constant', [-0.125, -0.125, -0.125, 0. , 0. , 0. ], [ 0. , 0. , 0. , 0.125, 0.125, 0.125], [ 0. , 0. , 0. , 0.125, -1. , 0.125], - [ 0. , 0. , 0. , 0.125, 0.125, 0.125]], dtype=float32)) + [ 0. , 0. , 0. , 0.125, 0.125, 0.125]], dtype=float32) """ if np.any(np.less(image.shape, template.shape)): From 914b8cbfe557f473162d1c089de08d43fbad0e13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 9 Dec 2013 08:21:22 +0100 Subject: [PATCH 327/577] Re-order input checks --- skimage/feature/template.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/feature/template.py b/skimage/feature/template.py index 37dec0bc..0443b1c6 100644 --- a/skimage/feature/template.py +++ b/skimage/feature/template.py @@ -100,12 +100,12 @@ def match_template(image, template, pad_input=False, mode='constant', [ 0. , 0. , 0. , 0.125, 0.125, 0.125]], dtype=float32) """ - if np.any(np.less(image.shape, template.shape)): - raise ValueError("Image must be larger than template.") if image.ndim not in (2, 3): raise ValueError("Only 2- and 3-D images supported.") if image.ndim != template.ndim: raise ValueError("Dimensionality of template must match image.") + if np.any(np.less(image.shape, template.shape)): + raise ValueError("Image must be larger than template.") image_shape = image.shape From 50e155e254f9d6f6846aa803eca9c2721b38c01c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 9 Dec 2013 11:43:32 +0100 Subject: [PATCH 328/577] Fix test case --- skimage/feature/tests/test_template.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/feature/tests/test_template.py b/skimage/feature/tests/test_template.py index c9052d82..68eb3ead 100644 --- a/skimage/feature/tests/test_template.py +++ b/skimage/feature/tests/test_template.py @@ -129,7 +129,7 @@ def test_3d(): result = match_template(image, template) assert_equal(result.shape, (10, 10, 10)) - assert_equal(np.unravel_index(result.argmax(), image.shape), (2, 5, 6)) + assert_equal(np.unravel_index(result.argmax(), result.shape), (3, 5, 4)) def test_3d_pad_input(): @@ -142,7 +142,7 @@ def test_3d_pad_input(): result = match_template(image, template, pad_input=True) assert_equal(result.shape, (12, 12, 12)) - assert_equal(np.unravel_index(result.argmax(), image.shape), (4, 6, 5)) + assert_equal(np.unravel_index(result.argmax(), result.shape), (4, 6, 5)) def test_wrong_input(): From 48334705c10b77b3846c4dfb4775cf6ed9428cf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Mon, 9 Dec 2013 11:44:26 +0100 Subject: [PATCH 329/577] Fix ndim test --- skimage/feature/template.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/feature/template.py b/skimage/feature/template.py index 0443b1c6..7e289711 100644 --- a/skimage/feature/template.py +++ b/skimage/feature/template.py @@ -100,7 +100,7 @@ def match_template(image, template, pad_input=False, mode='constant', [ 0. , 0. , 0. , 0.125, 0.125, 0.125]], dtype=float32) """ - if image.ndim not in (2, 3): + if image.ndim not in (2, 3) or template.ndim not in (2, 3): raise ValueError("Only 2- and 3-D images supported.") if image.ndim != template.ndim: raise ValueError("Dimensionality of template must match image.") From 598ee3f9ec652a64059af3f6f68296e52952c3aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Tue, 10 Dec 2013 09:19:17 +0100 Subject: [PATCH 330/577] Improve description of match_template --- skimage/feature/template.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/skimage/feature/template.py b/skimage/feature/template.py index 7e289711..020bf8f1 100644 --- a/skimage/feature/template.py +++ b/skimage/feature/template.py @@ -32,8 +32,10 @@ def match_template(image, template, pad_input=False, mode='constant', constant_values=0): """Match a template to a 2-D or 3-D image using normalized correlation. - The output is an array with values between -1.0 and 1.0, which correspond - to the correlation coefficient that the template is found at the position. + The output is an array with values between -1.0 and 1.0. The value at a + given position corresponds to the correlation coefficient between the image + and the template. The template is centered around each position. To find + the best match you must search for peaks in the response image. Parameters ---------- From b815b5d04508ed6e61217cf1b2996fe6940f4f3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Tue, 10 Dec 2013 09:19:47 +0100 Subject: [PATCH 331/577] Refactor final slicing --- skimage/feature/template.py | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/skimage/feature/template.py b/skimage/feature/template.py index 020bf8f1..8a508f73 100644 --- a/skimage/feature/template.py +++ b/skimage/feature/template.py @@ -156,27 +156,14 @@ def match_template(image, template, pad_input=False, mode='constant', response[mask] = nom[mask] / denom[mask] - if pad_input: - r0 = (template.shape[0] - 1) // 2 - r1 = r0 + image_shape[0] - c0 = (template.shape[1] - 1) // 2 - c1 = c0 + image_shape[1] - else: - r0 = template.shape[0] - 1 - r1 = r0 + image_shape[0] - template.shape[0] + 1 - c0 = template.shape[1] - 1 - c1 = c0 + image_shape[1] - template.shape[1] + 1 - - if image.ndim == 3: + slices = [] + for i in range(template.ndim): if pad_input: - d0 = (template.shape[2] - 1) // 2 - d1 = d0 + image_shape[2] + d0 = (template.shape[i] - 1) // 2 + d1 = d0 + image_shape[i] else: - d0 = template.shape[2] - 1 - d1 = d0 + image_shape[2] - template.shape[2] + 1 + d0 = template.shape[i] - 1 + d1 = d0 + image_shape[i] - template.shape[i] + 1 + slices.append(slice(d0, d1)) - response = response[r0:r1, c0:c1, d0:d1] - else: - response = response[r0:r1, c0:c1] - - return response + return response[slices] From c1b2d5159d21bbbe923cdc6477f83504bda57543 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Tue, 10 Dec 2013 09:29:36 +0100 Subject: [PATCH 332/577] Add test for reflected padding --- skimage/feature/tests/test_template.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/skimage/feature/tests/test_template.py b/skimage/feature/tests/test_template.py index 68eb3ead..10e6f677 100644 --- a/skimage/feature/tests/test_template.py +++ b/skimage/feature/tests/test_template.py @@ -145,6 +145,17 @@ def test_3d_pad_input(): assert_equal(np.unravel_index(result.argmax(), result.shape), (4, 6, 5)) +def test_padding_reflect(): + template = diamond(2) + image = np.zeros((10, 10)) + image[2:7, :3] = template[:, -3:] + + result = match_template(image, template, pad_input=True, + mode='reflect') + + assert_equal(np.unravel_index(result.argmax(), result.shape), (4, 0)) + + def test_wrong_input(): image = np.ones((5, 5, 1)) template = np.ones((3, 3)) From 33aedfd9aabcb0c55edec06c3334e0031e4fb1ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Orieux?= Date: Fri, 25 Oct 2013 23:44:44 +0200 Subject: [PATCH 333/577] Add deconvolution module to skimage. This module add three function to skimage. The `wiener` function is a simple wiener deconvolution. The `unsupervised_wiener` is a more sophisticated wiener deconvolution with automatic estimation of regularisation parameters. The third function is a literal traduction in python of the rychardson lucy deconvolution of wikipedia. --- doc/examples/plot_deconvolution.py | 58 +++ skimage/deconvolution/__init__.py | 27 + skimage/deconvolution/test/camera_unsup.npy | Bin 0 -> 2097232 bytes skimage/deconvolution/test/camera_wiener.npy | Bin 0 -> 2097232 bytes .../deconvolution/test/test_deconvolution.py | 38 ++ skimage/deconvolution/uft.py | 473 ++++++++++++++++++ skimage/deconvolution/wiener.py | 325 ++++++++++++ skimage/setup.py | 1 + 8 files changed, 922 insertions(+) create mode 100644 doc/examples/plot_deconvolution.py create mode 100644 skimage/deconvolution/__init__.py create mode 100644 skimage/deconvolution/test/camera_unsup.npy create mode 100644 skimage/deconvolution/test/camera_wiener.npy create mode 100644 skimage/deconvolution/test/test_deconvolution.py create mode 100644 skimage/deconvolution/uft.py create mode 100644 skimage/deconvolution/wiener.py diff --git a/doc/examples/plot_deconvolution.py b/doc/examples/plot_deconvolution.py new file mode 100644 index 00000000..fd94e77f --- /dev/null +++ b/doc/examples/plot_deconvolution.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +""" +===================== +Deconvolution of Lena +===================== + +In this example, we deconvolve a noisy version of Lena using wiener +and unsupervised wiener algorithms. This algorithms are known to not +have the best respect of sharp edge in the image. + +Wiener filter +------------- + +This is simply the inverse filter based on the PSF, the prior +regularisation (penalisation of high frequency) and the tradeoff +between the data and prior adequacy. The regularization parameter must +be hand tuned. + +Unsupervised wiener +------------------- + +This algorithm has a self tuned regularisation parameters based on +data learning. This is not common and based on the following publication + +.. [1] François Orieux, Jean-François Giovannelli, and Thomas + Rodet, "Bayesian estimation of regularization and point + spread function parameters for Wiener-Hunt deconvolution", + J. Opt. Soc. Am. A 27, 1593-1607 (2010) +""" +import numpy as np +import matplotlib.pyplot as plt + +from skimage import color, data, deconvolution + +lena = color.rgb2gray(data.lena()) +from scipy.signal import convolve2d as conv2 +psf = np.ones((5, 5)) +lena = conv2(lena, psf, 'same') +lena += 0.1 * lena.std() * np.random.standard_normal(lena.shape) + +deconvolued, _ = deconvolution.unsupervised_wiener(lena, psf) + +fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(8, 5)) + +plt.gray() + +ax[0].imshow(lena) +ax[0].axis('off') +ax[0].set_title('Data') + +ax[1].imshow(deconvolued) +ax[1].axis('off') +ax[1].set_title('Deconvolution') + +fig.subplots_adjust(wspace=0.02, hspace=0.2, + top=0.9, bottom=0.05, left=0, right=1) + +plt.show() diff --git a/skimage/deconvolution/__init__.py b/skimage/deconvolution/__init__.py new file mode 100644 index 00000000..508f9d1c --- /dev/null +++ b/skimage/deconvolution/__init__.py @@ -0,0 +1,27 @@ +"""Skimage module for image deconvolution + +This module implement various algorithm of the literarture for image +deconvolution. + +References +---------- +.. [1] François Orieux, Jean-François Giovannelli, and Thomas + Rodet, "Bayesian estimation of regularization and point + spread function parameters for Wiener-Hunt deconvolution", + J. Opt. Soc. Am. A 27, 1593-1607 (2010) + + http://www.opticsinfobase.org/josaa/abstract.cfm?URI=josaa-27-7-1593 + +.. [2] Richardson, William Hadley, "Bayesian-Based Iterative Method of + Image Restoration". JOSA 62 (1): 55–59. doi:10.1364/JOSA.62.000055, 1972 + +.. [3] B. R. Hunt "A matrix theory proof of the discrete + convolution theorem", IEEE Trans. on Audio and + Electroacoustics, vol. au-19, no. 4, pp. 285-288, dec. 1971 +""" + +from .wiener import wiener, unsupervised_wiener, richardson_lucy + +__all__ = ['wiener', + "unsupervised_wiener", + "richardson_lucy"] diff --git a/skimage/deconvolution/test/camera_unsup.npy b/skimage/deconvolution/test/camera_unsup.npy new file mode 100644 index 0000000000000000000000000000000000000000..a10fbd7635bcd5de1dd7526ae18b3c6e533c94f1 GIT binary patch literal 2097232 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≠iN;`wSXi4p($AcmZjl{!}i-NvZl?U9}T^vMOn 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

pU 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

F2&WIQRPl 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

tc|J@Lu#4^(~)(;Eg~&{V-%vsR1Z`hp(p*r-7k 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%0D!0?CYr_qmQd{NoPlRkyYx_xEqGwxmuFDV%B& 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 z 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≶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

s0Q|2DG8i-Ss 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

Yr!ynEH~{aeHpR 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�e)}I6e1?I) z3=ZFM&X&XRNG#$AMIYwX*$xY5;Ql)PBhMe63!<{CucyCnKwoBmu}EhE&O=k#33k+- zY2Ti!*Wdk@8$H@@g6HF^Z*>B`N@#}2S55RN&-i}404?f6wC;JSd!5?tnc>M?GZ=rzHnXWeEI8BzSh`tFT zY3`50qo|WKqQXz);B&hJw*zxp~MHvz~r?G!ka}TVz~4^7U;xtZzEi_8~TibeH*V2 zFp#h4(OlSo`)(>^kZ%d_NJ?_QobM{&ihiyqrRW>Y4jjFzkN$G`Zmtb$jsqtSE*WDF1b znMZeuIvBEnFOzZpwd*8sEyFG3J9sPZ#rrQmcn_W;j9K)36Y6@AGw!^&ufFDA(AIRv z{j|hiH2xv<{w)#b^#d>mEpzJwZjT^pN$pW*mzf6u`u|6T*rfA{GsGO`|+m% z@WGX*>-0x>p!2_hG@WYXl^L(?xtWGJ3*#TmSUAJ!j&jmOLq|9bd|mOR>{2+bG+>Cj zDumOha)FEm2XY*GWSD&eLdhmQf-|ZP`QBUJ8o4hBqYc)lk~bv6m%Djav9Vt`1uUGu zny)#GI{0SR>;xWJ`7~-lFV>@zYgae8okgEE@Y}*jjUd`wg!$3VSa%{6*0tcghiB3= zF+7heWTKk4;XJN&Grpv26GXq_R-9k^DUjU$Tz{iD7Dxk=63Tf$-~)Ja!7~v$jsu#t zpX#q--d@HVh5w2I>DNY21D-_S{rxFp(!k$u`2}MWp5f;*QY$oo=QGcRdNc@QKI3cg z&+`eqS@o}FSJ3ZQJ*c6QBOOQ*_YAXA!51(hclA6)fA`fEsnOv>fz&uA()>IDzyDV2 z>865Qyp8udSKbale%PmtGeO`L{`^grf^H=5Q8eykuBG_i!fUx~pLT*+-qop57WjQyO&|jb8)khIo*%B>0TJ^=fPG&IQus zw>5Epg^}ywYdCOMFNnrI^-bRy_NQTnw19*X_RCkL!V?RiXZaJwseagks+ z-Eh>HmA)HB4o|mM+1|svhXd$$3}gK$x?srWi2T#75i0TN@ShFr+h_rOj>*=-o)@37 zj&M$nNQQzJbW2fPT?E|TbZgTdtcS&6-AnE{AvaD~(C>~7a%r}03EZKI{_gKJvZh$S zcIxW=6ubrg{?we>M_=@}x0@3Q}LRVAY3rx%X~ z(aW^Qm3OW}$2ZphY~m;QOityHA=GJA$to|oYT@U>F`)>u14RDC~VXlz{!LCeJ-D1w6a({cQ{Tu%2`8 zoMc-+fagE+h66WneRA2by2;L9+W$p1FWmw>uh)sBiZ%FqTh|(+mzZlm{8(E9{0E2F zxwj?Y7gxMKGZ^?E_-mdgtt??7)c4r>o5{Hl>a-t^?La^MO3~DkAa>*3rQEX8#^@#JQJ>T9g4d)^w$OQFy2 zzGB-`S@=LMxJ;bF|6h8u(zpl5J22XJn(YQYhw=O3!EGT_k@>s+`AOh^(Zlh}c85@_ zhVoaVK;-?~StMxApg-_p=?K$%?7JUQtIr?9|5ssO6A4{d>2D{yL1yT{%qMShqCc>u zFthN@s2_#%OP9`$xllvGF`-B3lQPYyJKToUQ{e`}D`1I=4caXDH{a?+a%}O-=$c=gDft8fRlvK4<9l3dq zMW!e32%z6=n6*fhiL0yDk5*B0taZ>xdx#1##-V_;f=` zDDXX3YtcLrdD64kyVhb2<`(ogI6N%Ie7CSK4_pVJ!{+$3)AIyyc>ngc5f^a`!p?4w zcNL}YM|U$H7ZV}tlrGD}S>SEHZ_K-OmLZRrVJb0#eEv3@XOZ`pQoN_@aFf&u@D*yO z@8Ue=pU)a9R#}FAWeeNkKA8HT-2vUcvSveJ{naQ{xTugUmF~= zZ<*4X+eb~!B%m99#V+|gLZ2A3(Pu}#LRUYJdxs|cDvG{Ls@x&qB~0d68hoJt*u5{d zQ%9JF-fkInbCM&bt}o?zTgTvN)6?H@y zFU!)@r{;*xtE=?1iD8u0XYxapy0`oiO=Mn*T-)x4m2=?7$F$ zT-RpyD^QZj_7~mVlEnAa;(M$w?kl6V1fFy7#RncO(5i;N<$ULmU6vBn>HaY{o4|4Z zKHc?V5eG5KS>$sM3o;;tkeFD=&*(nY_+{laIa1zp=ID%$898_GvMxFT-urb|!jp0z znpUcLAmt9d)DEkV5#>h|MEBIYPr7RSUr_ouZB-rO26 z^`!NZ3F0-=PSBzJXuED`P611L^ye%!X(3ylb!xOcMdsc+?eRp8xc5)Ve`S>+Y0)cN z!sOU6Px9Tu)uIa-Ojj$j+|GY!tXukc_yYKYodS76wd+F{e_S+;8caBfzxtTj=fe62#=5TUBvzKJ<0npCr9_Ni8S!V1JDq zl_^E6;@4S9L#<+sX=hi^;$ihaZLvfv<<$<;d9FgJe>}mcKhI^ooXsLzdD(B zgVA>|Rydeiy#d7Rpx@?~HQVigC$0av5 zXCbHk*@_IW2-KmomlgVcqkg~PO%AB5!X4vu8Q7O+0^2-I^O2XcaPN`qcIcUtE$+Pk ziGJ+DHg^8?=r<{?d)PVRMXwJ&UU#h6k#4Wd@e<#v2Oo`9{>LmPMqPwUR1do}gQ@$| zmNy)u#^HULKThduQL=aX`?sG>sbFk1{c1L+TO7-77M%nQ!yUA?mDhk&ETSYY?=Ydg zUZ)zSPdiX{0FUc8BX?4}-r=;$8Tn0?T7ElSFekS;Ld6yPr{ea?oqec_%;lRJ*p}jc z6qSi{*@y3Q)Lwe)Vay40&3Jj~2mI;t`W4xRQCCFTpZ0`)+KpeXcTF60!e{1ftlW!w z&vbgjKcBm;;n^=5!KhE{_lo2<17Al zvs`3rKj!`#y&kX^522aoMll~AfXDGl{k_Q@x^-#is(5zPMKAK|{BV6DOds!$LS4o+ z6dSmGA?5{Cdj#s@eQE3FZOj1upnw9*LIc~AKhRvho=Cm|c`B7&%w!6H_|gE}PC zSNH~W3BH-{tfxbe3m~kdC;;B**3XkW-Q_SZy0mwvR1H)KYfg0r{R#S`Gp zV{GwhJA>#hQ|v;sF!VK3VwL{lJ`ODqn7B2K`<#1S7r$v370;wC(76^)BaOr3$t~gJ z$kl$nH#MA+&%2gwxf4!$ho6~;Yzil_1pfAQJHv?8GerKoYA99x(c{$y9*Q)xp5C(> zpZ{I;$SZNoW9MBPbV44vEw1Dr+4ZjupAZPj4x=GXovm9=h0~F=r?QFf!f8eSlbFJi za0dg}P2vj+O1n|`{g3cw4Foskk) zhZ5r}+?pD2U5=?n*u6pjyj{df7U$Vsr=0KOe9ZGS^r{RrhW;lz_xU9Oe4hf&+*_l8 zKo=vQ+#2&)8F`Ec^G0;R$Mk&tr82k>>snu!dHWym20?n&Ol;6~ zr+r;jp$HyGu=dCe@MF!^(QEeX3?!`_rsnb(X>fa=SOdu2lCs@0k*O>eAQ;iE}? zrUA%-jgcwY=Rv0Z8u#PxJJZ~d!ph9G>!?dyeYepmZ!(BK)yc07-Hg{dz2YU|nCInn z=6XyRwH2&#ip+=p$RbiL3g6Q**}7y+eIVvyvrk^Qf^}|twsj)#ZC*y;_ZKY4Wr^nL zTmBgSz9#`(r&eO$;q6QGz;n7s(wEsC&r{ieLu$dtVA4@sJD9y4^Xpp$!+$km?&7g# z^MF&xcc5?HanpD%l(WpDH>2OO@mnQ2lvHzgSDHr?bVs**o>w-6kRZRm$BUoHmGu?P z*r^MiU~2E;^-kbjV{>8$_oGjpVdtt42)%!bPvlvp5Gr-xHM#`cY@Z)+fCKyd^q;T# zCx_wZ?|Zzm3w&Yc+N}9@7tqhQQJYBw54W((cSx`vd{k7S@(^1vIV}yjd9(xm7VhB~ zKHyZcV%Bs8-WEBd{<{@C!TMDP%>{Gd(>Wv{$O>M-Ay7l*?P2IOD&Cm80Kfkhc#}VY z=WXTlhgmb{pr1&Zi?hUfA|ExlIDQiTuMW)<%qGEfFgxk{;a=>6<2`+bQ{YMZ&ktWb z3I3RQz)c^XoZ$A~y)nZE8U4V?L~_OTy1jVgJ4JOQ?D?t_zp3QMYJ5 z=Iy0iA7c1Je=vXd*E;MIhhIJV?TX{-52>pecn6(^`L7ph=+A%iZZ}_4hV?G!xzS~O zUZCQVjSjnmNnc{?t3fsBD6eF{-VpmQ_wVHKjv=or?$V}*MZ|r>}>jCe;xHfwM#^JM+olI+ebePhS1GxS?^ZYg^;fGVqP8W zueG;3Zja_*{!)8q%laqC11!29;oT5Q2cEiLanQ%Q6k%hU4<7S=(E5}|g7E3w&C7S! z^`?ye`ExUm9O;wA-F!i83rHK}u z88AbCarN!pvIWSu7m@S58v(sQ2-mz10zA-<&n><9V=-lKssG%$m!CR*Ss2`p!`}-| z9}4wnA*SqaDoyXWiI1bg-!2w>fc>eE7hll#j*Vjrj1wa!PSaBp8T`bgaIp0j|BP|c zb`zb|snf>()=3sK4rKF=&v zB1|2=t9G4v{?EUDM@nloJEVAyY1y^$<5kZ2XdC;`wX7;e;`jDa<&`>RkFnKa7?t}47?O0hGH8pPb}sp@;{qyw3Y@xdEHI(m^^%l z_cA!2$x&6t_RQyt70Fszi#h8H`q8geC&?|BqomXWEiVKlC`oPL((e_r@FTweaMc)p zuTZd@Iai#rFYKJEsNh4+-xuDeJ&S32Q_6$yk;pwTK6K=u4RjLQ*{G4UICesziY zJ$z69M?w=aZ{b@w+bOVm5zZgS4_}im%n?{6^-b~=KYaeYW}6qtQ@69#m3u9!BtL!j z`n67V`ku9`$WdQ|STFLMx!K@&=T#msR@Eh~*3Y;8TWdsvo7Y||Xe8oVGgMF_WKK-+ zo0e@$H>cvjD_1_BH>J1f{%#v@tfpY2d%cry^{KU1e>2yF7S)MdA=P)tt2CP2(YQmN zXzb`EiA?A<T3ax@BZD@N9bh z_ow@x8Alha9xU$=VI=JyuVN2ez^F?w7%A^pqkvMsgX+aLG}q-4IM2+T3{+>-q_X_! z`@H^zeHkPE!34~H%03+{{4S3mIOI-}n zM|gk4^={#LA8Ii<`c9u*==a!fzg;yJwC&eRCTABNTEZhz?)V0Lm=ceV`(3OfBP>5Z zAA{h-fTfTrYqIhC*0H*&e)yOclsS~~tfJt;()C{>9O+RoSEliLH!|-MO3h$$qpyvT z23+EfWd3a3+boVqs#bI*8_nx1Rko#m*< zKD-&4eHTV{ZWAok$0BI?6t|O<@+RWnxmIA*cN5(o`<<})LIh==o(a1)3LNo{MW=XG zAe|prZP_{PL-!3HeT@+Jp}d?}o|f(Yv}9nu)iWOWX3I~q6rq1Rv})VxMZo=+96#T` zg*qbTnb*SoW$+7DmMCyRM{r8_%TNvKIPM!)>hGmP|Li05<_mD?*})H;xxk6yvo-gF zH^J{-bvsi9`y5w(e4eN}=4PEW+bzY5yq<@v$7@kP*lm3DMN~0_oMhgAc?g_MyN*RZ z#^*jY9uE71_q%p$b=@!X$Nj9#YzJM(gy0ST6+5huJE_6n5V4GsT&xf5pW$UNo%}ns z%l1`c^qqT>R-aWVj=4_9F5iS67fShiidd2xZ(oD@YcmS`9JHG!Z#6ARD|t5L3E7Wv z&)fJmE3!QM0{{A;%nDH}qa|_weKAsMHNm{3^4@is#>iPOlFC$v?t5d* zt!N6+?dZanuF{f70MJ#>KMHchUr ze1|$J`K4cc1vC7G!q#6>1>k#LEmqK8johf6lhwb0uiSK(U7xFk4xIPSB%!}E%y(BR z!3KS(zF*x}@Ow+e&AdV{pu7IKZTDvUyDOsQ#{rzD75fJ(Gphgb9iPwCp#IF)pL<_A zh#ci3r?qdWVcvl6#mCQ4*S_*sI6LzeedZ0M6vG)ryi#7awbzhCw&dJ~+fK;kYE#kj zcgK7q=aU6S&^`Me&vA$`2q9kj&N=@M^0gKZ{ik*l_@}0Qy67D8!8i3dn+_vqoSoPH z<{|KmE|+Xx|GRGN*^+f9kymxp{l9;Ci^VUOG#dfG{D{=~b{%zc5`R16;eGgPH@Q?k zH$?7X>N|}}G4KY*V!uqtfnO+D__X03@J8>=THlocbdr}LCuM+?0SNI$cgp$0f+4@^8p)|vJ{I~-8yDS=8Ds>A&$y|^B#I?Rqdd(AS zdmQ~|Bc-KYK6PPa`Mad2|6>@b^$f&kFAt+@*D~j|4I?jtdztewC+NfV$1l%Cqb{te zANkRZI?v@x$CZnrq*K+eamG6g`6k=FWIsbc>^^mVqzUr_U&eep4gO*0q2@(P718fW z7;|ML!VeI=o$Iz8{4ZvyT37p#gIHZKvJN=;PnAe=9P0I^qZch^(68l5=!kN93q5&G z*G$2D^a+1|UnhGH`5*{*KI-6N-bP2{Wp7@UyJaGnde69}iOWEzJIGoa3%vPw>|3@vaN!B}mbm~k=yT4k zxxFMCc&)yq&JFr~qxVypA4Gv`KYCww0*>9TaO{06){hT&WY&q}^L~^$ZyorGd2d6F zD(061N$PsU!Cggxl%l72Q33cgqJCecbtL@Krf=GIZGaz5>5bBVz}KPCK8hIL7}N^n1y)w^-pMkDWD zDl|7rAdrT&yt}V4!8Z~8=i_iWc*S-uoz3B)w1l1WplD+l_%L3Pa~k1vlSOo`&f0LA z5PR2j0XYGi7*jR;6`_>FduU!>GD?-KMX;VdPd=_gCr&_=oZ-;~xGn za*>Q$_5kb0#--A!D!4zdHLcs1+y*?!z9F_Q7dnTKy#1XO@Np-XvzT9oAKu{HTn75N zrqAzeZ2O<1>yGF0ZKKEvA!P5pS1J)Mp~&8Z>@7)yhC)PkgS3#8(k@C$MwBL{ga#Q= zAt6c8dw%aH-ip!&sT0hPGi^2xZmK3 z{+|AAar++T)UiEgI}2W6yNo02z*^jop@&S;_V5!FWN{Xi;OFX_GumtesGQ~g*zfzm zzg9vH(+Bt}_GNAD$?X1D;{@fSSRD4Ey#{>J`dbX&9$=ko35J#BFyi@M;^QTu>rY!91r=-({pf}a{{oT706KKkX}@3; z&Ib{}UnSX?->!Npwq%n(6~$G_w2&v|#gy+V{D8Vc$hO3*)rGXSm}yGL`jDz=v3Kx6 z@S_VAE*;U|8Ox20UMGSJUJQ z|5k+`~W*f3Ra0QafyWJ7p2_)N*(ydBQSW9h%`;fiy7 zJYmaSDD6qH`V7ki&U4|-HE6##<}!B66LpDWsPSj`HGy_$Q;fG z7t!)_I2V_2b1OXqK2NHO)#-VJT-Jfk;V)b9y`vAfc;j0^5B;70)wx|b-%cI&{ZItH@3GpXL>RuOv)k10Har*W-sXfh=K+sgumx* z={ZY7=;#CLx~sq^h+lg5{-;0u2cOI3({P`>$L+ZO<0qGGv-@`F7;-^Z{8JFaIhuB= zZTmXxQ-)n)<$fXf_wKp;i@@&|F7DA%(gG>}OMEt`pz~6rC5J z&e;+~tqk!#XLq5$-Zb}_V>Rwq*pXwu;*ke1ddssH=lopwl)%(i@E&{fdPbpt^{HK# zDpZ7A9X92S>zTmkKk$i)K8o}2#Dcmh{NB9(t<3e6IA>VobZsNCpMDwT;`R!rB`kiq zL$|<#UMQ_C#{FXmZdRNDf28_slW|0IFg=aSsT;t#aHe}AW2Z(aY5j|IirNm}ZM)vB z>QH~Wnv-#6QNKG0>f5hbv3VWIA6|a1QA`g$V*QzkCmnV5XCqi9{h90i1b44E5(oeK zvfA(R-oOd^J+t#0g@_guZqM-KphV#+r(LcBG$Z4yB%mlmmYez0lLqCXlO1_$+5vnU znf%wV4u5|+IhG6^eayz!iQSUO$xfAAfA|{us!xB9^eQM*%&7;GE(O4`Wgnd98-R2B z_E_bc1COhu{t@R#Zr41wTJC#s8t?B4bCXdcmnRpKBd#nX$-afRc~7jQfwje5uSStC zc<{wW?^D2yCrmG&TY}HWbaEsrV!kes@52?TwM?Yl>V3@r0CJty;ln+EtW84C{7{h>!Gt%@7mBy>st$>Q+Ha?E!#a@FXHB@An-wj0hdB7;hX2<-KH^uT(>Po%pbDB4_pXT*}QorY&w`1Vstj>z9F&qzmBx+hK!~A^yo=;{Sagi=uIT=$-f9kkdpxr)PEL z-0=qViL%2o(zQ_Ev&(rI-9(+0!4(jSI%k#VPTiCe^jQy<9j!;7`#Y;^`c{rGlKri} zDDDk(tp>igx^cc_DM;~b((tC?PdC|Dv^tVo+i9azMl*^P<{H}^sY}9F=Az9QC5ZRx zVDlnocIuUx-lNpYOXi9R%0Y*BdaM{)N5IU zhy|rszFw&60=dkRLfI|)E9i3a-qMxIrgVwpHs2i`d-D0omeRc6mA+O^t=^>TLzN!f zA+G4ZeN$!+iG+XjNuW>Ot;|Tean3u8At;)Rw;Zqg`8b*yCBjP^UPMw$>dxvd58(ej zEc$BcVe~oT#%u?`W6kKUb7Mxvq1e=SH^x>-x&Raf+wG|yr2`f zyvMF40{Y*NZb3}Yr76TV*0U$!Tz-bDt`6S)ix(4LEY7WVo1SfY!8FKrPUm4IeD#Z& z+hVaEl1sL%d58RmfcFcm8d*`7n11MraRdMH=Okaej{`LYW+j$fSqUGFY}5=J8!`CU z|GTThSg(D0llEvG_S2`l*Q)mz6MJKc@uyS^=t%YEYZ5Hz=@IQgp0fl#y^&*o6k;o` z$+?P$n$fRvC65c`b`<^YfJckHCmmks8j=G%$GX^3v*!l7oMrOLUlr^ z_p{{5cgf(%zVHQVgYOz}{&Tu>0zTjNZT31r@F~nn*G`%t@5knT=n~YAw@=0y8$wsG z@}BKO8Q|_;uWT(gbReJo4%?eI?=i1Wk)?FvC3p+w+iQA&Ye!N_OUiMdPj7rNmyG*g z_I!y<^l9{!rX9Ou(0_SyY0Wm5G1Pmz3i4CHQ%rX%FR?{Eb254H#hs`-oIA2AHMisU zRJ-PHf@hfSnZEa*-&$(tlEUVLsKZz?pA75;UO&r_E%X-p)(`)>rcpN@pA?GOpa7r1 zb4NCQ)OE+20#(G%VEt*#DL*&`{^8N1XMElGy{q(@%?Un#(_80!fY*3C-_KSpTC`Hs3Uh| zy=GPa2ET`KQO18d^<(Di)V}~XIpsgGs>XUzzx47$wyi(e${oJ`VYffcylj4PVLNox z@2?7lum#b(v^VPSfzRFaYS|P~SKrV}S+me9gt+y8e}1u{glRDIZFc3R$c6`-IT$&CMIGY=AEH@9nskoWbOA(5RyLFxxF(Z|cZJX$83n^3 z5^UtVfx}k`3rTWrVp4MiG4X+aJi)K^Kx^Sa9IC75w2vn@%4G zPb>Xq$8PIk;Jqh}XSu)|nPmK4{tET2`F?q;IIOEfYU`wbn2~$f5 z72U4bY=HBMrRunVx_BsAb#skuToFnR6OQE}Cqqa_ul}S)H+;aBmo4Lf(;ohD?#oRL zAg`Kp>#I002eQ(BGO{9oiaZ{D@q^xm!%XD45$f_kpKI0D#DL|iRxLhI8XOZs8Zg~vms*3#Z;UnZ6s) znh?_OwexAl{fh4m-T!_G@INc>;Gc7WR9>~@W`z#?D<;;GTtn!y2c{i*dJUh8=Xs;x zhX8ux!dbD!3ORm^E@d~73;46*v^DFHKONEk75)>~tRu8`qBrrhx~TaJ{he zG9P>|{zW5wDp&_6kIrUbJIpUQYTTidT`#~RG_%Sv17AnkF7s>X@u#ExTSk@x zXUA7Nncn!~Pu(-Q9=0~f3zUC#?{F6MX`EO87I*}ZW>n9D?YsfBXwT-xH00pNed_$k z<%IjSZRSz}o?G@eGmE9xz!&m<#DdotexT2q5(o|@{brr_jky8D*`%48n1p=)r093I z=kUE8v&5@+;5nD(U-byj^|}lNh27W(M0H+Qjdl8ynqBwY{iFVry`S|-N)B+n#)MqM z3G|Jv)~~kDfez(TSk+lv59e(jW$E*NwE2rbL2pU`B@KBlZC?#v#}C`FH7kSZ4YGbl zU;2^X{MqO@HV@j6ptkb?hcnfjV~pSa!iBE4v?!l`;6t(LHvI3#vEG*d5Y9LR--lC; zq4O>9IBh>Y?ZMB8Zhh>!75m4UUk|(z((pdAOWu_5L8rC;y%eV=cr%jwbaw_h0aMJf z`OmT6fAx&1KN3g>1NVqGe@0FW(~y!ecr{;*=i?{;f{z_Eugp{mBD2Yz8uQ?-GecMW zs|DVF=2Wch=K%h7E>|Q@0sO4zwT`G);7k8FzfL}m-|w|;Gd_r%d9y$n9|7?6X=mrk z!GC{DKCMD{-!dj9Rl`B2>&-jcqf2vV6zJf8->dZ1d3u?u;MtbUzKzX9Jr_mlA{ zhR(n5&rL?`BP{z(K5#t5`RAPY!(tuy+feb(-q>e^wm0t2#Q7erruy^QGw6=)WakVX zhQ7<_Pp+&p_~;$am^H((k5!s$sg!{?7w=eR1bjUxz`T|Lbw0*78IY z?rS#BVR!r-Z`WzLZk)dcl{(APaPD5|u~nJ74IXBvc;HUdL(4yQ*=n03Z_r|^+p{m= zBl@iybI*fMXksaUc?^6D>&Ox5kMPNDmHxL9=fa^}FNeAs(X?QZS?U+VFH!|lG_ zg-qqcAN%dLpy8D6bs3wXqc2x7fBj>wuD#XR%Feff)~Fn2z0x$65oRT`gu z+_d|V6!{h0+wb;5f@rm@UD8e9VAg=I^EDb2@BGl=uPpM-`p>Jlq0g+{|FxXQOpc^C zE?pS_+{(Ld>}jMVeCu~z-b|cUqI75RK*{ zX6@MdPtBSzsBc}y7vEXummN1(X(2({A8KbNp5c4CY;+%8uR--m!*|Ujzym0(RN2}I z{eczt->hqGCW*()=KVz%*E49x#kP#Rt!s<>l<_zQK89rrN*uEVsif?Ar~nfeUCTe3 z7?vnZE%oa4&%}|NrgGogVqTK8%d5vLjfBa;C{3`Pc`-@H@CXLTF{6+E=iRP)0qWg+ zG;>H8a}@pRV_#OQk@wSvuzEqkl^QZk@-9`Vo zI^?gGh%!~*A2_RLFm9!p5~?rAm3g>{OyPR$Z5E!wXGl?f9Kd)nebeVw4XLe-DTE+ z9@)hEVuuD@bG>iB-bIC!w`Mn9j#H<5A~(-9tp^Tvn9#b!jX48124V)0Gm!q&tz$qQ zbJsO24Gurnq)s2>OBRhv)G55GWHc5&f(2pMzpYlLdg~K?jRz&EgiqkR`gi0mvKbk; zCP-4trw#3Da&c4y57~GL>VTo zis#@VUJ3)`8;Z`?h8b1CL&Z_zl&qz69f{+FM-SJ2EW>4>iaE2-otN9F*F zKIwVQz4n5iLfOZNGoW3b7}E6yN~;%9$+h1fwhA&6;yUt$3vr!xT5|QI%Avnr*|S9o zK8m%TJcYjCWuDs)WWQF$+?TChp&d)9L?}pxe;afW+E;u77U~eg=jI1H9Ko;jmoF=0 z6(WW|H#~lqh>-BXiPhTB)n|t9xmL8-iXN#?#wFCcQONQWl3jm%sn_%Bw>t;m|5N9c zYhyufk${)`k>U_)sOx03L%+9rBF`wF2Yl=@{@GE~53y?&b=*@0Zg^vvwHds!@gE&t z%Q5Jp&Wv2LtVe!&lAl$D5b(~)hI{w1ua*|)J4%|NE($O(y>cXsia%C|1u=!wU76jT z#ls;K(K_YZ$AJ7GiR1$chbG#- zob0M^nE=e6%Nst>qL0iYnWvGQvYW3;@ybJ2k`}Xy`x)v*`}&efDhk|bznx)|*3Dw;V7R;y&X{h$98miRP%z zTT)8*mc?d5tB7xhQ{n=||7~}2WEM1E_UvpZG!kuFbb zK$4gj>FS5-GTvBEQJQP5_T2F${VRR1S)T^btbR$=NFsc-m-7VAfFG{SgO3*Hy?KoD zxOF!2&V^4;7$paipVJSM>?^1f)TB$VOXIve+#o3IhP>Qvr2#(FAMKN;$_#-2^se6c zx5^KGfCp*ui?T4!SL@u|6a3j4Q!X_219OV%|DI`qPB8ZS^mcdX(aQ28#HQupcPi2{W2#@<)IzrUH|!4#zoVQ|ElX< z_;%A7-Noc_mDiw7cR5|E(%`gSyc#~F_|e)LGm_zy;AXHh1^yEIb4uQnzE$1!G&@c- zthS8j+$&3Rd!sm(cgB^LiLY+9we%zXSP7}iIN!xZk{|qR0v{2%s<7lg-^nWt^R+3^ z<%w*Xeeeu@b+H9%A@6`^1r-)V_6Aclhr-` zN-~F4_vuW9(wlpVo8GF1kzDy|Puh>%@V+8*&#hr3ZN)s?>j@q3)6=7C1jFdUx`D61 zV$o;399VPuJAB)l8;?XR4yC*Q8jcQkg%F33heg0tFbO`+{FuHgm}=smzdK?Qj9m0J z@AG@$vq(_l*^GLuWUTW~qayU60V-h)E0G_#W1X=bzTcX!HCcy5&|ea4tKb2T!27!Q zyv0uBCcCrl*^D|%yTViA8}8%#jw$D~)A+f9qpV2}fv+dF9a8*`xk#@=ZWug5-{YqC zmBu?*4^Hv6>rkgDEN>6}k7tP2OC>}*8W#-J_~JUK^>RgZf%@!26^$D^VjWT zfX=cv`qNL;Q!PnvMOL6r+|Lm`IfD9q>CI=KUaG*S&$r?GbSQMX&5rt0+DPT4m2dqqM|x6ToHKx~Gd}s_hW??fk^53H zT<3V*(ic+OfYXnezA4dzE@vV+Hwiet?ffp5_o*Q?+!STi=m;EVlEr)l>nP|^!c_;! z5XxNi*3B09Z{apM6{9QgfzMr#PY?xv#Md~ydN=&}ZA{rvq?5#8uu{hvtjpE0mg2yJ zf~ntkyCbKrdg-rlGvti9H9kn?KL9>S%l+Pc^q0TgxU}iqAaVlTZk0J*4WT9juT^gk zV!u4$Sy?%a{*dt{)!5hFnDDE5h}! zFc)-t4&xo{|1%jYL)cJ1A1`p`&;f6du{^=kt`R={^CcG3TT#C|#0&qIH+ii~YhMxS z*ppLXZgQ;96RkVh`vB`hBuHC!{t-UMZn;zYvH!F;v!CG81K;!}qG&yI-DLyzWp2Qw zn}Qbql+wiSGgsAY3IbvqXP~pOSidZ-8+?NOu{!Y*e;N$vShYOdpEURzFKAsvKcCV5 z$$dY}E6l&SNECV!2mAW-{;%;ov2Dt>uf*pF9amI2gua0jQ|9!I0Ky=TKOE583^9Ic zRbLuNd-DId_u&0Y52WU-ss)}ue6>aZ-{&<$n7Qg(@O>k%A8o?Ak(gLlUx@XhX_v`# z+7avW-CrO3Y~*;J-8Gg`?oYCJb?V&U4+t09@#2pid}lZP@2`cAK{@kmx;6MJ^>04L zhq;kccysZ+TMEbxOyEAh9eN^jUhCkZeB8g1OY6p*f+@0J{(5d7<^-I`uQufJppO<$ zyCnIX$yV>~@@1N?q?uSD)3IO!4OExcE(89*!E$FkxAFS7_YX(}MYQ%lwzwnqz&NK71?=KDmcI z`|WQo=;kf5Zo2+~uAaTUP5{5hPO|bt`1|*_PG1zk3tH9xochs%JlXQyRvyqNBnRbW ztMsFeF}(248~4R>smkRPysy#l=$oEv@R=+g3Z2J3vr57_=?~5ik?*lniK4)_5gJQBW0@Bq)-MEgT7-vd;H0{#5I_=<`+I8e*t*w;Oggr+)Bs;c*9_s zi~eC*Q~l>g_|?T8+lPLFA9`ZXj=P%_N&nc}cLP_@?`2O6EG|=^maHqqEf(;LD;;VG z=ujr+8ILPtZ?vg!hKKoqrzVx$b#*Y`p+(oUUZ|#Qf-b{Cxjn*puqRB;=Gvm!Dhua#7u4R zH{1t<6)5Gg!TN2lwaLTt#+KX{=x5s=%l?HqYrItfn?(*Qpf6-Un?J)(^$U9MpBDXP z;`eYxfYuhg&iS|7b1neiH=9RKr^}JF%LS8$m;A(=F~pfYiJX4N|M|s ztee}iAybmVnAVX0apd+Jyo_gQk|W^*!Ixv(F|T2zzIn+P;I%E@(($Y1FyG#KFm+0b zq($yWP7Dc?_U#=G6U`#fyGQ4K%tXK2%;r?t8D-R6S(o_KpoiFS|MS``YG2b!3TQYi>`y6Bmt7tWe5$zJwB=K6{$Vs!YQ3+g&c-$Gp9q0nfsBn#5kURr6W9 zGAYaFuqVF5_x`wpU+f8VFDoziKEm@gP?}P>JX4Qs*jx_>Tw6*Wb}`|C+Tda8m7Dc@ zp_j>NO=OT~AO?Gh3tB12uQh{KI9`EzA5L>{y;mX+#*rf) zmg@9u%0PoReJSSJf7#o-av7x$T#vI51`l(zyqLRw)`WbQEnJ>CWm4$;+U;9|9I@_e zG^VXYvS*TS*Ni)o?nkd$*|1)t;x5|iA!K9oc@vU8y_xSc7km7kS+sHNM2-MR!||7vF#8M4tzP8d(L+s5!zo z$_@ViqPJf&Ccmwt%%qCCBM+R(uH(t{iBsOBAbiI?N(Sfll92ZI$eUuEy_uF75H~CVFm=;IDOVm%SzmyN+e7kj%Cv6_}!x~2Z#RWT{-;-h6Ie8j&|5I9g0XV5m zMz=iU8R}a>@x!^OLyJnD^f&__)V~-F9r8e5MtFtQQS^xx`OK$`%%hLG?bC&4w~#+q z`rtgvl3@5OJbIo%58uIHea#s7#VM$j^|TN0hV3=+(l+QrDpK!dK$kqc^ZUbo=qoi< zlAO-TV1Bi`fb;H4=+EaiKMRewr6YHL>6@R_r}`q1$McT!CiSai*SQL_)OWt$r~G8I z0%cv{5gry=LF&8bVq9055W_h)spD%*sdww^bz$bKDcW=@dLgGNSvf|zwpgyADPbj69jYu{u4J97eKbbimA>`QA z=eQkyIgV{gW@9@rUu}0}N#7piF7EPmT@D>_4Cnhq)z6{i{UiI{9i1@hsCT`P7#>Ef zPcFs2yd6g8zJ5`9{u4gXJ)sgotzl#{FBQ;)y6}d;mzA$l!zk7__4K3&e%{hVMp!J2 z9`1kM)7t@^aNESSdA@LJNvp{?o*70yoqOfZ{|Ti-8;7P9`9jI3NH*wzFZA67U%q$- z1VVGdwApPfAL zSIb~c!OAw^y<hW4`~cpzX5$Tft??w(@}3~*-brKcMpB4N1t}-1Fwnx8fQ&Fy*F&kvoY*l zAk{`lrL%+AQ?^Oi+l+dcTl%cQ5MC$XvHh*a8RYVnRD7LtK>a@^sdXm|e4+oyjU4p1 zHoTS<%0Rt&O`%*mTIU9X zsqoQWy)NYXwd(Hsxpqk?O`KtRTnoRw%9)l_S>XDD=-;VN(Sqi-CnthQvrDa z;sIrc3bFq(y=pA}4BW?fuFvlY@LhrSXP(`-J`$on%G;qI`K#&~eiXj%?y7st$$?a} zyMKQmaEo7~ZAEY~eCStv4jKV>eLUH>*>^K=;m96QK|IfPi)iO>;7r%w_M6?Mkpmd| z{0uwR$tN>&`49`_ifPveHMv9AyX5Ed17)lL%Z{l-q;b~c7FA06J$+r(1p8;R0ZHX+$`pKF4dsW^(kQAne zUcLffwtQiQE+=roxtWhA=r(fCBO@!>ZSY)#amg*mzPBgpa#aYf+mGPxs%$pkf*WiH znn%(KPQ1d;d8j%{1or|G3TMwfFbk>!3PMIV3P=bC!p{Q&+|jb^RzTf_u$A3PX9f)!s}yYJw0%0=pAEWvZKxXJE= z1p3fyhLKU=cXpHv-JUlOpuk2~`9kn+;&`(YKm19uBx!ZEdjLiB?ei6#!a6uNB2sVr zUoM=5K?rdDStf5`x9`va{N`{O!0Z1|JM#DRVZ5*3IZIDGe=+R}mmTqW!avk$4T2|F zb*i1$20X=~3uSuV1p##J)ahdk@DZ%5J(FpT`@477#{F-=zi3T%$X#9qe49OMqOu40 zJ>*oc?iGL9Qo?8L1YB?QagI0lAMyZw9m^``YZ`yvJ&9 zxe%X*!u0liKIEc*(#aS6k4xi=7t!m&XkDG~r&2tZevsx~2mZU6<7WO0x`-p|o6cE) z#}qx%>}fIzob7lq+Q$+3@<&%q7@&X4X)rm^ggWV``mWqL;KgGGIj`HXpNFi>98Q&i zU(MNWa0~js$LD3Oybd5&uJ7ncDOa4w(v?boo56dvovE(l$9mm4vao>xx|!UJ0k2r_ z3B`}49Fm~N5zPy!8-dRLQlV3ACw%r?tEbK%g8%;I>`bOB`p%!2*X^tZ?;l*h{wntW zr?u^Yw+isQ{;fQfA&AeLw49X}xP9@ZVCR1m*#Er@l{ly2`>*CT3YG-FAR;jK75(le zbNA*|4$y(UfB8yD5&5gzKV3YJ=VZiVhVeD_`vsbkw+3dhPFbQlw^idjNpZbD+66wx z>+-<9eaNpXW%;$*1#_bo&cD*z5BdBhx>XZ(TdU4A(>TLnSa z#xsBM*cI?1l#wO82>tXD)x#{%Z$$rg*5%U;rqCacub+4i{!d@_ej0v$bp3SpH|PO2 zJso@e0@p=t`bHL)3v^Hmx9oot0^X8g>VXx0zU*`Li_%i?CDQf#18_g4hnY6cvVxyx zE`9guE%G-iQ_pbVTr26>dPMFl{Q8eB9ZLn@T`8qmpS2jj=q)L7Ogk#rVt>!hsfan~>=818b4!q$uC&$ibCD!DEP3hb z&>=v*VUeFY;a{)L90?zNqC{oc1LFhe%j);MxyqlQP9C=A(OchOUfX6>0iC}}q`x7y zafON+NhcaNJo=@CKImPGF63qj(-q~<#+YN@_sB5AQ-tcxcCBp9WTJYWlAY=M1So8n zZHJT`@VJn+t-wh+s;}UksJ4MFVLZr1WL}7*zqB&=%kyGxy-rWl3e1bkSDBKul%vYk zEe}J%U(hS{-;YexiQQR>(?&{#!j=rlXE!L(u-UZv58(WI2cHl6`GRE0cykZOHQ@V4 z7Oi@3G4F8Gq56x~3YhcitY0<_-Fo+8?uH+7RGlU{DN(0}yo>bN&R43$ZW6vcC_{m+ ztye!OSraWP{5p!V@zkRsI&Xe%af zRw4)KO9rWx!2e#mrpEp)p)j6ZTiqk!Td;QWUc3Z)i51b;W;bil@a~7Zx;`tQ-|lhI zGgT3D-n0GH_>u3nm)Wx?T@AQZxId{G*ZHR9p-a!yi3T5QbIT}A@Yue2Ui>QPH5i|A<{yxs@RVmglb03QuQOgR)t_#%U8 zh_M3ZP(4zowk(u5zFw-`chsb0!$Vz3E$B~v-|ArRQAhsHMXAD`rDU_k)p?*>kJO)vZeH|i zIq6?q!CZD{Ic=4T&c_6C8d>Lldmn-!?-=;Z@V z%HXNEoHPvWWhwruWABY=@GFw~x>^C+7cpZ*?e&xgO4Q2nN?bK-+M%t%kh6&G`* z9yjHo^!J!6=g7e)4;*-B$@Q0q6*0eWbVBh6bjyE#pLt(23_N16u+ym*{l1~$krA99 z%o1tu)h?iaF)951znq&Rtn)2avQ0f@@a{dGAr9uwtcDa-5sr;*UV6&+m zEe~}N%|XsYltrztpYG!NO2#d3k9ugVphtK(DmtMyitton|b zO~9SzBNc*D1-*&c?Z{Gwa5v1USmsx*YzhB}Sp2Wf71SF)ZYzd4^zm|6zHdx)Bu-s3 z!3BSPDA&78cFQ~D?0;q!aCqiV%9icn3lDfuiDF-&>IqBaHap0tC76JNu_B(ubaCPr3I2pWJNuFvxV{K|;I4P; zI*$a=nVh7&4dJM3Pl&|rL!Dv#df}S#wZLsD7sgY2P-myNF|zDL&dtS=j`we&ALMen z{f!km<=NNw9+%;D_WUBc*1TSuuWa=@<2+)-Q# z{~X&f!HWlRfBLeuv%J-j?|n2aBho1hI?KZ&o$g_@&Ge(uC7v)cbM`s0U;=!V>*uax zE5fMmzRjleIpDA-oV3R~j4J2n-uRrw9PzcY?Sps1=vV#D^P;0+w6ghuW8?jB`uoak z<2Q>4YCOC8kB4{!z2GbmGf4@jh)sW%emWdR`Ip9+HZ+XU{S4kE zJglyX6>|+5E)IR#gnaVyG})KCp&N9XQ{BjsENZ%fD+F8$>@M@%ZXK5%iy!oIFym>LL#=Gk%{`Ng#A= zs}D&7H;Edawy3a#&htv(H<=xHJ&x|Q8Q^;9$2^m!sCVx1Y@ZP`1 z_p)-(RW@Jpu_4s8Ay@v!%b<=iYhZl>e8aJA>M)}>=FCr>I8dsMI#u+AT?OjJLwOw& z>DUjJy4?>`08T6N=t#+sMI9`Oj>Mw6x!e`zm?->#!4qX*UDE6`ukxFtGT;X856YYb%N< zgFl$()g5+!gt>Lko>jF;gi#2;>CKxDLTQ>sWx0+6_^RY4ln(e&AGYL#FW} z;L3+j`i)*Gqpo)OKCA~lHuvgZFYT`dQZ;+eu<%Cc*uolRW;0O#pZz`@oP_JeA9Xcs zCHy%(7B~0xAs;{REPEQx1%ume$|pMlXqSvR_dy}dIWwO2tn~J$=bCFbeS#lc&u^f9 zO_x7Cx%~I)PcPtVoeifZrLe!|{y*~0KG-p8slLn=zWJ9g;?}3FSAB? z!z|v<%W|sS4?iDO!OhUQ3_9=y!l%XE;U{x%;eTfXANVzGNpJ8RCPkWIdEg0twj4Oo z6AwSWss8MjPMlj>jE{rCpX_E}PqPJne<9!56TdTnx^EtSx(fe)b}w_AGW&mh`R;2k z@LY(=NiY48jOXKP5ZyT+fch$M((TB`)U zK>dM5E;o3I(uJQ4V$;AgZ}inIN4>C7a=|0#G3XBx?4wi<`O~|hGf(Pw_|cZF^4WgI zz~?z4`5f>gUSld;hA4b`Vk-5;@Two3Jty{0Qp*E<5ykWc+Rnt)^XSqo4p)*rc=_?M zvzWWnXT3tIA2}K2hRI{#fpr~YR<b?0Xeyp9ED>RCJwL+w&-7Fd@~Cw_Lbp?=vY5O!lDcxLbR+TqRw%o_@=FnLr7 zeN=ezhqf2s19qGd9s-XR#3D0Wiv8o4-RtAF!2P2-tF8v{gTHA>d45kHdWDQjno(Tf zsY&3N;~;c~Oy4v_ZE<~`B)kqo-(cWH<*|I8U|RU;V16O$%A!#(6i2T9sST=w&~Z%rnk?O|g*gI}lLjo;;eWfE|0WFlUXJ$4C9PP? zL%zDPriIv-_F6FC&Iuxo;eLey_^;k~ax5slh5F{SNZSG(@G0pHdSl=-_6@yNDL55K zXn-VD;5_QSGP~;V6!ff%zdx8`hOe+*C+5GoN3ZWh>%Mmkq65*=jki$`WvHpdxdnsQ z3$mZ(!Syzkk=R0r7VMkRKc`E>7Z>{cdj~u}bmp(?LG-&dY;{!oMKL#E+mu)B50l=c zA2(_nxQYGLbL*%E;K0EjTH4<5Z+zs? zdg_}`GIYl*9}-Som7}mV-&yhvfvf&{MVj!55#0)E|JA@jyr*inhz0Ty!*S8?;yki6 zJ~f$gRs#6^B4PA1+B# zXHeU71rb^D;PSe&vlO3mjkwI&Tsh{&!Q3q-R-e{LIkbe$;&PCMglao{e9H->H-IrwSGyYw#OJ3lF^T#?LoDST>LW zfB&G|r&IMykhgDeuV0mc99~ql^TsTu!cc{o5`Xvr9wc2~c>@0ISKlwcy@S53!hOaY zFOZwi@@diC1;DZLKY4<=Ba51E&)G( z+FZr;-WY#%hX(usJic#(7iv&vuKCOBmAIZRV+><;m@jbRWaZck_!i2n{0yJ#(4~bF zO*VYM-K3TrnW;m|SF+&k4y-c=C!Z~2$hA-3l{Difp+wRVXk zeq7`yszVV>jCVBomeWA5yU<0B<#cWJsIwKTHnAtqb#LDbzspw1C#-|WNBkW(&m9N9 z%S8E(oCR8xeqPgHpHG4Ur)y+a?{iCiZ|VtL+g)Zem(_@rFiHuAcYy{oA9z3+Zx zSAI3h4s~?NZT;^<1;KQ+a$M#o@LVVFuVe%Cw_1OtHuwSmi&`CsdGQ`~{s#O> zZPL~*JB)L9((JlNJABs_8x{VQL$|$F)9UOce^S+d>TROoL5KXWjktSR(WH*4sS%!m>bIuRdL-F@Ks-wVvTiLC>uuWzsWJVNDvfqGb`KA~V0-Xp?mK zn3%E`v7Q{3RM>|6|M+}f`eg=w?CTpVLp}JuxfSZ{SJS$s9V=fry3$B`_tLY2{xmmg zqtYpaxnA`e7s`P*VvklF_5QS;V#cise*Lkc(`G3pKYF46zw^Yr1#=%7_t7VjC>N60 zd*0=^@&;Nw^ZrPN%OrpzlDhEYUJn}nisBrOZA-XU}$5zZMa+c93I*7iib?L4A zN$9~V*WTF@g1KlR#kZYtP8sd5GtrzvU4MdscY7yvthd&e^rgY)CMLl5ojaI5o|`W{ z_y_*+k*dye@B+&Hi`55CLucrv*?b6f_6>*i;k*jS)A0$vZe|M{cdNYax;*l83Qo>d z?}wh@vi7cp=qI`^@wt1n4m|&>)b?TY_ue*$ulrmROrzf)e7RMF`rr_6Zm^0!9a73( zAS>xf4#o#9O|RQfjEw66@pSNUGuH! z^~^)A+X=?5>}6r3cJDShLm$BVb!pG$*I`tjmVR@|pD>bUW7N0I3n%4;v-_TCMv!FQ zsrT^?5mX?g{JIf5Ko;Mw0squ+Qg_bT)AtPX#54|cG2BD{_pQf5Ckmwpfp?bQJ&3vC zvdYs{PeMq~KIy>54bTzRK7IWFI3`Bn^d+@;)GMZ`nXEII=Ow-JzVB!NDRwWu+meoY z^m4>H-9Y3mA5vPh5YMmKwK+S3=#AZw4*Ylb?TD7Y?EB=*wJC5oC(%tQaBV67!!<@{o5N`ZgZh zVk-t~asR($*S*HSOByKBCFlfpT6$VLf?t?FcGoRR9sMZv;o-liJAZ#@e3<+NxIT-g zbu(Un_Md{V+TQ=>37Uu~c0hlsz}|WV>ut67l}XiZ;Mt@Hew*+-ipRQf@8bav(5ZH2 z-)GE0n>d}F&;&dq(imERbsSabUiu#OD1SF!f_V>g0;#$Kkt67LYfpc#`X5Et9gk%j zMpcrXY}tG7UB+cZp@@t`_R22Vm87B&BD11|HieW5DbbXWNe=z&$3XgAzP}6YKo_*j&dkFCq6v_Iv0s+}<(? zZ*73DJjG~t#M&S#Y?HK6WB?xDd1&=nTjcd!5qkG%R{%MPadu7gfG@qr8W~@VxlBLV z&xdG&XZpmP$uS#9y?MHoTHWxEOXxS1rUcSZ$JbOJ5BQ*-x4tTN3M4nFv_a!_-~(>B z-JI$Pq_y%jOYGFq|L0-#zlb?=b>{3v_qGSq!}kv2k6#7AR1D|pip?_3! zCZ}!C1-hN<@{&p{cwQ|T0uu4_2;;8NL(5RV+OdUm;W-|dlSsIM=Xxge!jBVEz|(#g z-oBZ^{WDoJcno!|N|0@49iHd@%c`zr_krs>qg%ApkssF_>Y?AzlPpJN2Hm>&;-F;sF&+%ht+dul{CU6U7zWQhhp3>k%^4K2Clk8Em zc=s25dG2y!D1AG)nI3BPlx-R6y};KRS| zyJ@vFd@YPG0~8wIFVH)bm*a-Kh+8hZ`x|_zbRsPHV*_&G(wUyyxWSKo=dxtx6#N}M zySF!vq3@h_^Ti-9u0KQMg^)1Z-|oI^UIRZXd3zkbh`hVRp^}4V^MNPdIh}j<9M4Zi zhIZfx`sfP_bQ6G=Tk9iv_TzoJ*N{le5b{}zd*2PB?_C#ECYBhCe0#gk`6qV(cOJ5M zoR0pqY}3Vz8d! z!SlTQ;!CM53rwz_4xP0m-vK_ zO$f>%Pjr9q@Tz5g^tL8>ch7BK5->E9EIxz&yxuKad;072n%2 zY*{6EwW@}Da;9+cKo$mYM6ai_rla2?VAJ_~)2Q9*>(8sr$5i*7K&eU;L6(P+s&ACk-d z8}~2Jn^g6*>Pl_EZ!~SbBsLa6*1NZkCm_$kmmEx;T-^ z=8;aO)6Ud*or}vEbC3os46a;xgZ)iKb)+4hr-%Wo&Ve6Wvu zah3K?!{0u1yl?kPJa;zzSMv>lJKdAClysqUKa`s%2p%&qNswzVo}cHeu26rm#Z9%I`XUYiI!vNHJqDgmJ2w>m9RqNM;l+RbIuk2F!{5Z>`dJ>ceS#*bq^6m2C~48OyYXc?;2iHT4J9Vbk7pSE z$QI}LzJ-CoIz`9)LW{#djtlp=Br(VFSDiuMQ(|Pl+S~&4qZ9HEY_yW5VJ=UbPOF8K zB5&^NoIh^LpgV5leT|C**DhJ?x>1%Y1+MSnumP@_y0WZC0e*CI)tJc(;v^9%^zu%S z5DkYke5$gPC59hDV`jN3)Oq&Lx9YcAw7SbD*ybtbn+u2~>sey{onKspxqwF}oPd{8 zC*0G-rKomzAM0Ho`1f`7@19~{!5o2YH@=S#nKG%c7lJfmQI`eB13NL!wx<^37z-~ZhaBp z_L|q;wqH%r8|^OhD$#(Szd6ux_Jsy@`f#4i>3|L+HFr+?2@qH37p~bI z`25%MoxfzEZ@4m?blwsor`oxdVsEu+b=;Mx&_sR8k*TtqLzmFj4C_Nsro=-z^dk|8b_Vv9(frL0QAQUo8y!2e$Z#a!}6xg0*Qj zxX!IssjrhU-y+NIYFHP1EtV#YoFR(D`s6`m=SnT=JSfM1XP*w$Hjk`oG||Fb!#hlg zXEo@$ij&Lo9~v~U{#jr`A9#$Y842|k1*&Q1cocLAx{;5`pSAiiPjKDu>f3AONpO$Z zmEZa*)VgwS;7TSf@^0V0E4{>kEOX`?cD&aok5j|pwm-GVayS?1jmQPY8Z@jJy3FLPDz%C-ej0-= zqO~w#@8Du3_}r^v2lM4Af7(mqSTF~ARt_;1Kt1KE@K{JJ@~M~5=$mfhq@ejFU$G^>s~D*pO7==T(7V8 z(7h&mtGr7v<|M{BrCjB zi_V6Lm0HEwk>%rK)}otSX^}S5NLr*jc?q)=^S^MS@K;#C6rnx4Y8G@a6GRsMA(GkSuok5lA*!mgkf+z^4b96@FFPggmC5@~4ArNbg~F ze|iehCGW&N>(;L!)@@FV3ewKRU=cTJ+r61AZk4t2w4uVa&HTA5vde7C;)!+;)tpf7~~3ZqEfTzU0_>j@X6Bu}Nc6`G@+uUq)i{XAa=7 zzF(=ofDcT>KY27`K`Bg1?zuHATNwoUvEFbcfXf|3nAjKH-S@NSzx!77Yg7S<9{>im6 zB-~iIOrEoqIfSKr#Vs{b2&q|rEYO^aKAkvQbHJLqn+HShKei;_O+TB(7n%|C4JpOg zH)h1SP5V;MVLN*DBCx@hZzE~mTD$EIblzO&xYaHV0=HeV@ocLKp}C1kmWF>J#1|oY z=wV|pNwnU0?1B8Qj_Sa>K`}ve_J_@~q6*~rologCwhbniv;$VMMZsj*d~YUhGKkoh zzCLsce(XzZYgLY12_jC@i=uTr!6bQf>u$q-6zc$%%?A41%pHsr?k zU|!kls21z`V1j&O{O4#e?UVj15ewacO^n(^fS&>c9zUgLdib20GpP40{Qroe#_{tH%w!0&mx{a!JrKe<*s%D-cezLBOLXLtno zfnkTe%l{xhuix%+81V9$2|kw*;Qk9C*{uDAeq?dw(xR9A{$$d9ktIYM{hr7}2_IRY zyL5YIjp9mXZdTVK|HjtT2Q z@o(-hfqL$$r)1#(>dkjS zJ0zKuQLjeY%H7+Dynr>AA4fo^EpOFwlg$A7$t7pIi;aQLN@AXPJ3${Cbwh7>23L@hko8XJ; zs3SiHjUCzNPurtv0v>=@84`4N4aM`E)2=sFeASOmy1da4o5fu3<7=|lSfftWQSvJR zKHyCd7u~LgdU}u8n)Ffd2enyU{Q3cOeZ$b`)CuVI4_O=U--Mh7F|}>~=ZC$v6jHb` z4;;v7IJFD@^uYU!M{dhw9gu#@=_!mpm!G1Z4%W+Z^%{0ItncB(aR?aJx7B2>lJIU8wUfF4ao@9fRvs-8Q-y>(0JYmoGlM2Aw&>na*P1 z{#eaFH;!xt&RH35Sz!*J(+a1o`x`6Kk{?2TXgz!x-`EI&67T?MnYbaEZm@0oFx^Xt2jkI~I``2IZl zqg7|0%Hn-qH4DDedy5=Az5&@W+^6b}KNl|i4xMqGT7zW)_yVpuL$5u4RLa6?^8(MM z&ytTTO;e%ISy9<$rw<*_sW00kz_Ud?a=2@U*QYO)5a<~OzrkVO7188N49$6tO*kJ> zQlAXRMd1tUx>QvU9G#P)S&~u@-G#7Z(i-6WXVLj0yTHS*`PJ-{)8s>kjUUfg8p9vB z=;<``TI6fy+0+RE_g^@%{YZT~^8EK&%Hp0UilLPJx7BYwZB|k)hBF$$>uPy{pjXuP}~p?D7>B^z*lCR=Nsqg$`w_ z;g6ale&j#?`Lc>DzVFkUH45i(K9}rqeSqsT!OcFQE)BeC|EBBnF<)A6D~IQ#p$|1= zpV{!h!J9^A+2xKTVXlD9u_YRzfzW%({ql!z=Lyv@4JJb`a)djBM{Xl>46P>9H8;@D zr+MbFw>HpxBvbHgl?Uy!jyDRl0e}9{M&0Wf{5dXRPG|q;VPivhGjUwEUq>Gsbwhq( z(DGI*e>`VtO#41I_){Cx$Zr8YpxGu-;VMTd?nL3UXBIPno-7{rZx0{uO62=CFFml+U35a-brw(X$c#l4jn5pZHm^ z`l&s$ZUE(&ONUQg#2neEkSEF5&qF^PZE;$GIuT_xw1ss>{uJv24X&_I7p~TY&?|-F! z(rn8EqF@GKT9`fEC`_Eca@*#*5f$C&Yb#zy60bZ z)jP2>_`IYEfpd7@dxbIXY(L=>+Q$^Va~k~F2acC!Nzkokt*CCvg5JJE?F!3z=rDF_ zDe^%_@N;sgRt)d!;`!6DXEAh@i#5D{fPZ05L9okB%pdrWTC?SN0KM6j?(qlLrEJ1K zo*TSM<=<0VravQ(N8a$lIdkM2)Zf3W3f%vt{+Dc&AM!rfnEAHY1<;ER-}k1(LMNtJ z`1R}o=xpnMA1=iC*c_FYeyJ8Zjn4wLCD_+j^!;I(uY~TblP&j&VGwC;QhNUYd~v?m z>YX0%{HRiLy;fA97YX{RhwuKofw;mp_L!$xQN6{J*A6>0$xX$~s^SlD=c-xhE=y5b zEzQZu&mfKYj?$;w17%1-PNFbYK$RF*e`ndhUJLWwoV&lxXi@Nx-=CH%YBU_SEV#B5 zdgEK(mlv+%r1G>owgHk0sN7Dn-Q_ayQ}?*;`w7g63(#>sUW=T$B?%Qb1eOyyA3ATA zHErs>$>`GEP5Aruxt`i>=)2$XxRwiF{#g85YYjdkpcSaF2^tNw`-EosO73DbA8I(`p(=~P=^e5N$`c&D-zeQDT6pqej1*> zsCn6r0aqbK^Nw`Et3@#8&@Gg+gYf3t|Yc6^xMXM{~Qo22$6VQFQZdx7JZQ>5I z;1V&44`+7y{RH1XL`{W1SQYrS=19^l_|`u@|J$o*KNzy`4G?wG-N8nMXDZD%zC!rl-X9CwQKn;o={v6=?YW@$iMU3dGwm8G24ugT|Vp zkEb^3pfA|vl2wEL`@gSQV@9~n9<{%=6=I%XD1X_`4>-S~Cmos|Vg91Isydg<#^z;MFB}W_tp1r!Uu^T+bAp@7C+f7ap=YQW z2+%$;ElCU))UKK&3gdb%{j1*ze#QRhVb_Za)H)$*bYC3jsdatE$y3VI`t`Mi&t~Kt zUR%Q&EC&9h(f!!tS2!=Me!CLc#cBHIowK6wJv2SLaF2C`JaOd**`|ccQHq2V1N;AT z6t|58I$(~%2H(Ei0&{J8kZpGP)EiAIFRkycInGO(_Te6-*C7Z%{h$+b0};l&`&fyz$^0+9SqU zo8+l=jZ$F@JXSN1f3xa4#i6ZYeEMv2W?z2HTE8;1O^3;uSz zUU^?I`bw|5GyJ1558!d)lDzeSRIz?$&ysfZ&q|+W6{*0l`y+_w?l({RtEIxI;p9X+ zwu*cooi`)Cq0rATc18@H&V4q{bk^|k-U{T$Eq|OX~mCQ$$syNjJ7+fkDt~grGtucyezy{qLd&bN~{8)BeDDZ{tW{EB5^@vIoX(fur=q4mAC*Gn_AV z`^WPYx_(Y6<{IcWJ|1)XBLbd$#e6~IIqc_UG3MoYz;{tg3)Sa-qc112yu==TffE-e zZ$CnvZnKN!!;B>A?MZFPhc15981y;rA?o_MUb!op2hgYZsAyIJKN?r)Rn9zP%rWoC z8SS3mE~6* z8Q|~VIrW)g2)^zE?+Q4ygULuEm*YiPFnPp%Rt!IiIbWiqp3F?a#M6>e)t4AVF~2kI zFDD@<@TcEbn+f2*nuAudm^03^@ zXt+FQDe?p6niG>p(O>7c7K{eoI4Si?-aQz+ffd9Q>4yjG05fDckyb z(>ma+W0O0S#YB*6w&YD_4sc85R&kD5`f}kX_VA6&V=inz{P(TRx_J^oBvdRm;T#x5&dPRGtXe^2cULWG z8#m?vc1qto$rwaA%Xy!^d=^Nte_PiEK_{@QdwfXuK_FciD0kk%9z?8tb>r&!(3hxH z$4D%JPNlCUerH}V?bK$Js*((*92frCyJv&w=b?!=o|edu2#n_Y^9wj&AWnXqdvn(&t-$qgySl%|sUA6LK~-iNUeKQl|5BLWi|b-= zNHrI{(7?m6%UL*o&$8mRPGVi?dr5hfcIb;{5=8>=pCmd@8PAS(%yQ zY3Oyw+2S(57eq{lwCkh*PgOO&c?{k!(DRn?XCe6QUvE8m3VMZttkBBG;GY`1B=a96 zK;I!A`1`&x^!_5V*Y&sglCnZrp*u71B;)3PNeWr=pbDF)VD&{P!;&=$|vwB8~YP_O27*^Y1l+MYGI!0qBDiZ=X`0~ zx5sTfCwys*7h8<;qz@5?)o|1sALMr~*r4;y2m9M`$qId63T<3{zv{9t9W*OgJME9T zpeLi8M8LN&*|OGeyzN6zo^&PhGO87RxlflY`sgOT$A6VPWZ42wNHjDE1r^W2sg=#h+8me_^h_rCTz8=ED-m0xWhonMA| zcy`BY^`84fU-Y;>6X$K8-$^H~MCAOlFMQC*3;s-%dA(Os+ z%rp*M@do{I4y(vSJYPq=2R}yx_cO$fS2*K2>%CWY$YKC|#)$4JFYpDwRu%qSwhn!u zRkd;T0seH{EP0tD@OZLSoz7Gb`U#ry5znvV|4*LqT2KQVe%mOMtsi-QwKdsA^Y8=3 zqz}fe0FJ)4d1=~P=+_nYw<>0UFMea2&T|2I7#ZVo_je)BWBh5U&3n{g4~h;zl!d$_ zy+t?g0$=kT{;(9hLx7dO5D)fu9!|!67q|LTvwWl934-tFbYk}+@V(V9eq?uGpNRSU z*th1DA3c9;Z}sdt_{7C^V-|YQ6XXPJPIf>p?q-f>Uif<_u_`t>5BMs~eof79LGB9% zrX14_pc%$5Kk7pRsFkhA+b9Tqd{N%qdZhq*_fOHP7kLC9*jD$tze9axymM^;c!1}p z)o%W^Mcyc@%mW1ZQ0akOZ+-#f94dtW^%#dgvv&K9A)J@Js=+Dt&^6pKa5pQ(`Dxng zS)0WkKv~xEqjK_?w`Fuk_~%q0h3R=l$F>GiVOppcZ#(L@jl<(|Rz7q_>0sQZE;kB1 z5@*3(W=E^zD|uf2(uYo|TqWo{4@G5M;g8YdrRgIzlMBy_lEgEqH~-Ec=buHZpiUJ1 zSSta~UtGw`^VSxL_fRDX^^MU+dCJiHepkD*4Y_^{Qmb85Wl3V)ljKPbAxd%Cxh7kP zm*T^c7KM!gkCn>ydD|;d(JrRcSLKrAup;|0MH9hK2 zvg_0-?a{3yj!!yNuWi3c`Gqz~gp|vryQ|Z1o8P&qR5XMeBSvGK6ZhmvB^u&;h*wayY#XU<-E|$@Oy+l_j0+$MI$nl^Y@_kT&@hQ z9*%Nzcq2hnQ_IIwf}cAoIHesWh|6Nl!grk#RQ|HX@_95L)h5{=FOKD=8u7G?x{rak zzI(e5PktVgPK+RVjp|0b_O)APC&?JLx% zM)iq!Q!nt|fd=bpHuwR!IC{*!A}_GWEO-a;oXII{DWu@;IRl9w>RY%1k`2 z@AQ~J&2>dGSU%vN^;wF>7eA?t^g#b#$*SdtpcFY=X6iR^EFWQ=4>k;o+vuqnD%Us@1cyipoh@&*EX(YxS|R@e1bW9 zojlca8$3L>1=n-To?T=f`gaTAAeR|F%2}M56tNF{f$z1EAw7AjbzSVdW;fo4-Yfwz{O_AGz&?l^_Ew}iLoW7o|dbTUzmk>Sq zhD`Xdzq=Jw2Vo9fjO1SR&EO>puiHI6Btt2UmAV^FL#JPn8nNs)awp8n#rxMNliRzs zna}>=I1lwXeSR-R!z?C)exGEKk6C2aVx&x5Z+pbDZY$IH*U$E9m@B}LWboqAG@j2x zLpeUr)R0eUA5$!+L@B4@U&Wn=?jW0Q$M>yx|L=yKgR=4@F~HQGo0RJ6J_W2Ll}H$2(!)WFyv6% z3tV(83Z$30x?jh!4i>g>?Rjwlbqc4Vi6Q=OW#LJg1E?!iPan<>u0jq>ZkmMlAAd@@ z{@z5|8uL$|ewby$y52Ck>1p*^@%Y zvvkT`wm@QE?m49#0v+ye6~o(Jo5+hrfZ@?02a;ZJ=Kkqn17aAlE(zJT5V^TRx<{v$ zv|d*eE`Q*_)arfu;pqng@^o%sfba2BOG?T7;=F#nBdwcf?7b4^O1_?!%0fvlRB67w zXZN{vWH;BN<>j!FVz}3y|Gr(5j)cbTDLQIRI=-T_mVWMJrINgF+dbeKX`}hZbC`3d zCdAkyiQKTvEt!tLUC2dOtK^i674ZjiEZfdW)Zuqx-_h%~^sYnUxvrusY5o;gJg@Cd z6AfV%sd?}{?2q}YV-`%U{ner~dqb&MD=RwQC7c-QIXrw>!YMT&^T>14Eo4K_XrUka zjqUYuvOm1(n1SyCHml7ea6P7?~X4{wQ;yzB?5ZC zPaRfLPmuTCe2-ng0{%M=MPb!=C4eqErI`IE^x)sIT8(3#~Z#EqEBxJPTOM5Fm z4xzq}RK2xkJMh_2yK(t)g%GkkHx$+-5<(Kcl9o9JU_Q9C?8yO+U}6{u?aY}&?)nY4 z$e-x%D;PzTH*^M3cUGUBS21$e$_!X5bb#Zh4361422m>4oAi^?!KAzUMDfm!VBqI$ zRf9dq8K`pqFw+o1?&pWha(@J4t`zgK<%@!;=AYq(XyE_6L!-})kq;=dCaA6lJj3lR zjqmk3%7g=*ey&^X1tg~~X3`Q-{j=!gtM^pC&6G|a2*ePQbV z{GSNhAIQ&K$E59a2L1)j4F6B&qsWE7^z+TDJIEz3e6xWc^^ZYXC41jh^i!`J==@!d zzN6IZ`<(ZIAFQ_DA?lC#Poe)>u;=gjLFARoZ^(T90{Kz9u4m_? zUg>mqG*SHl94%xf?9zw&^1OjyaR~A!*LmLfKWF;hv$6QY*8ZecJu*|j2>*UDbFdfp z%ZZh$W7~l%#r`-A?#+V#K-ciV*Jkj6ol#GIl%q~#S5AA&fORDAu+JmlMlS2u{Hl?D zq?Nzt4s#}Q*S3|cy}2KHgzifl6lZ`V=S@YQt_QxYeLQ>^b*)kPmG0C{;HeUgcjz2J z-a(X?H$E4P-Z!0)~?zcLzlYepm?g5g8}Jv_8AscUN>>NqX8CKl*EmV8VIT>=~++BO$) zI*`nM`}fUa{+x$E>WphfAa%*}^k*a^_ivl2t(rj~X@xA5opcVQQM1-Hv7Ujn!uqH^ zLunw{GdDbNLI1z1uRX4P0{MU2?+ZwA1d&N(nx|!95PkG?y>|imk>?nTJVerhskmE5 z^j2>W@lI-(yNV+BufjCD4n6|qDz^1TE&;^2ATVMzo^Q9vr;khHk#l#+vEt7-aQ|q< zL`W3$;vCGTF=<#I>ZMkD0cS33|NS8exb=IW7jqKu+meWv7w&eWKfB{!a|ZDG>|Ne3 zPfnumeC>tfC-6uH%LfCdfm3TX8}F(CUvuW9w8SakM3q$&UO&cwy9Gz9Eke*|k99~+ z0bhD^eSt{DP3ZKM4lzxgLVozh`%2r^fZx5m(tRm#f9uV%ti7zjtw%}~1Gq4Upv@zJ z!4ZAO@RLpXz_(u-eN=uugJ0b-g8f1}j_0;!KrHUVh7V)Iec&;7X@xD*J&*Zn+|KH% z_~;Z;41Ri{YXG=d>=Ey%u{iMaT&iK&Lg-#fKLvC_=ivU^)!uN_hmwbO7cs)G z&Nar>BrWPor_0S*^SPmW_a1*WyVRH7r&fP$z2-w<;zw&)T74+vrlJ@#hb9JqE9rE%v9pC)G4d?6JP>-zX zc|YBS~|kIqqts8QhgVS@*y>!1giYrE5t+zZ{rcehl-8@_aAwZO}> z*T4^K;LKc|51j4rIqS{=;C83*%Nd>czFz7~J7qDqf&Y|=+f`qZU16x_>0E5zVudd*`AO>UkWJxl)}IZ9_Q5~^T#)#Z>W2D!`c>j|N4HL zlSaNIaYA&0Wm*MXi9WV5j;(i)?-*RvX_PKK}bqlS)Pe>e%{k04{%=MAt zQXFT%h&0o)wb1Lm9Dz;<_u-l)9(!xN>Cs(7gY5tFavC=;8;tj*wKZ~TOOGIzGxTsq z_go--wD52Kr0q+SOIgL4&u%2ELmZ0MW=`ZE{WWd+KI#XNW1FpZx|5!s&Y$ntU;QmU zUO9e0h`Lth$#lU7v|=6OHzh{!k8wkSQK`P<#r3P&2J26L<;;^aiUG7RY2)s9;MZ-p zN`G|j03Vj>J6?$AN>ZxGmH#aG9KIzpy1V>ID|~H#UswPM4>-}|!T`F$zs%w-cL3>H z-YJVn!g`#Zao899tjD0lcJ3{}@!wi|nV6B=mtVW_F`jSc7c$X97U-W_aP1sjhUZ`N z*Vie3==kLf(~IBvQu)QZNsL%Wx9Rl@`U2;25BBzDb|UvxaK)p|!0TJLESB1Y^?tgw zNr+7rzAJ~G6~d_R1op1k6pekJOEjC=GUtSCGbpv0!i~H%JK9H*$(a+xi+-l=J z-h2e>xk(0((FuPVn|Z;chW(`Bx9dsU9pEE^tWq9hzql*%xT*aBWJEx`SuKMQ51zrw$gaogDKn;#W)XvPiT_PZ#Xhzyus0S5my}5-akMT=Q8Z z*F#58>(#*`jeOW7Etm5+@7y;H|6NXjj!xp`4{v-=u1|;EtoZ_H!!K7|?_t!(wf3Jc zF9rW=JS%E_3p{_<;>BOkR}p{7dfkv6{gm2Miw+HVkWlJp?Tj=>T3jf-;=Q6dF^h-j zzY>!p28O4ndmiPPw(9?E=5S@AsPc5q)@UheEzjaLo>swJ;bosvUblrlW&uYl) zKU^NGCQT{FoSf!=2_lb7QLHE){`XTlelHkgh?eio`k^dIt&dGCHa&rE;PZ%e!EZI1 zKDr2gGY!nEX^dK3i#}|R42KzV+-du^b%im&w~V?Lx-v4z(XTmsC`*Y%nD#K8uhpUH z&$IWPx(!KU*Ijo}6Mbqr3n3VvGEE;_t8TlT4|C&E`lD{4vDUORb>AyF%uf)Zqf(g9 zZgQm8rb&amJwsMrs)3F@a$54s8sz&+#5Za#l_m*+f-~AvqGWK;WUt_98O)peJfm(7 zzxJX)<867sZAD3ELzVd9pK1_zq6gg8C;I7+y)3mZi^^TRUxpZX9iQK9Mn9_a$YQGj zarpQnI-m236Xm*G>$|^@81z@A%*?%SNtq4Gziu$sLdhHa!j0L9A@AYFk_I6f@TszX zia87EU(++Xfd>`z`1^z(0uNrgexrGa8$SH}6Y_+9v}roig*fQ+cTT@Qy$`2@)^aJ4`p7Q_TcleuEco;lQIa>>Bb{P88KfY*~-G}~R{{}(k zDfr8s5^wPD(xjAE$9SE5)k%Zdd-cu@S~M}TOZ<}*^8V^K`$=eN($BcMO|%dB{>MZL zQtQEYD0nAv{044KcUx=r8t38I29F)-$ggLZ)Jv~YM(#d?&-^St_s639$7ZzYr_{y` zw^nG=?cvw1r}=@0CDRYHM5>Ub&@j_-J@|@cJOOqIvjaCdYfZrLv$auD2htfOF zO7Pnvhi_AL#i@D~YHitacgJrP3ihZ{ma^5Pvd4wZ)^pGa7*CH6;`QDxGbdidC+{Fe zS_^O=muEW(2n%o$*P`MCmM7B4lY1t5AQ(71xpINUVdNBQvJa`ORY30k@x0P2$jv*h z61}%lhZr}_96G9|LlPGU_ZuG8B@z8nZGT2RYL&Rqkw2?U68~<=d{q>osFmOPQnpJG z!&6TCbq|s2=y60h;)DV*m^phz+9=WQ!G#@MYcy!JmF|#Xlm^vED04T%*FRolva)+r zj<~XPOJ4UVQ0k1kaY5Fnmm4ai)lMHJ5JaPhgj3;gu@mqtxa$cHeFowAbIoj74 za9?SheVlV4LV@Bl%XY2QgU+Bm`#nkE{R$IAvmAs;!u55m*#R8i4y(D>H`VC+n(BF$ za5H)|5&ERuYdy^cE=l)kh9Ca&Z_e1im|K(O_uhD20A1opHXoP_q&*q4ST-e4E*>f&-#>4GIRw7fV`EI{z-I>Q6R&J3@I%|(b^BdNMR$~iC&i2QeYovX)(n59 zi}=sTW6%K?=e%uS8%jw$Neu!v;WV23d$yr7jH=X!e{5meLRT7FW=}E)(8(=q1|?^_ ziJQgJHkR9yk_$am=Z2oWn9i7+G8oUbq+@5DP#uxpm?!qF@2_fhYjT^7~c6ig5C0}kOJGx^oUBu}1v%#E*)nv^%cyjUa4RpLD$lkkQ zGr61Gn<`g9-_UiDlotGRql*tdGIxQVdfh&2{bj)IHfow-H-kv8tX|6O0C2v=a_1uS zX>XgDGL}jQkwJ#4OoKb}DGyGz?N&zLf0K2^WsM*TZ7Wah@eQWf$(y=ObMXJ~yu+AP z5<+fWyI<@a389)}LnZu~A@sRPV3}?eeEkW(%QB${h|g|ZB;*-P>Whyy@WU6fdc|yV zZ&xst81_DU8~r~&(bC&G9YS&@I}PRKwoqqCxa2tAH;i+eSKMGQz0O!+ZVx>|$HLX-AFE!u z#}9twmB(4vtDzsc?Z=K^sN=kC?rnC%{nwFk>+LW2OojEC7wj_$B$3j<`w#R3No8uO zzoB~|4G3pARN{BT$~U5S&IVB8MnSgQdjHQ`a6Ki6{ztwn-&Dy$^g;4_-|2k8I?%b& zBm?!+k@tSfw|WH7w#+YGmFfYcxQK6o%6I5ff)8z*3&y;qXchhs-2eBTzVyAqIuq%* z>Pi1@)K}BFAw^h!%zaKj8mdLT86vsj%`5bmn7Jf;J;DVg=$+4z+W)- zauus5^aVm+EYii0mzbCKMi+H!YVNHiMQ<>F+nZ^PP8IOUw#KO4;Xbrf!SGf!_^Ak` zB#DGD=!un@mwyFc(UC3TQn4n0B3<~H>)#;X#JlQMY8-N#M=JJe1NU!q``YU3i1~j$ zoqhMC0;x6o#ogGPK#~jT$lUA=KYz5?;}GbnmgVlfnT>wVc}~Us=eUpqIR9;aTq%&W zy=3ZNZ3v|78yri8(vcT%bcf@=yg)khr10lbh9EM0b}5)4GKlE(-(AP+z>^k#Nm>XU z!d%p$V~@}e60^A3Ulokc`PWqGg?d_M_o%9hFX~Cj4T~NI0SB~5-8=przVKJt3g6@X zNP>4q@~0i}QwMxIp_>4|v_=0*N%V^^Tv`ymso9tQMGJlr0KTkrQr9vS#JaVQdG?$Y zUUxJ1Np(N^uiqoZjQoI8&q&K&`Gs7tsrI6E9KhvPeOKQDFaKrG3Ak8*`%JNjzr7l{ zr{y+_U8Iq}b$RzkDJ}3doX^5#|XQ+m`ha*Jq4_XZQr>YIEI}=)v`u z-}XLdxv(#}c$kmfdEi4Twdz%p3$YIJYmIp70OuR6yJKO3xe`&ACRCJ=@Asm-(0m#6 zDZ*spkpkR#>K$j?8RW;2ZXV-$=pq(Nq#efh+f=V9%C6u`84td@7(g$+v>@w?QV{0Q zf3Y}`R)GDpaR-xdrVs7ypW|7V;X?&NY@HX@`Ox5QeR4*QE5jJ`iQH`DB&e3E`<#J4 z+&L}z{8HSHRgV*^CBUPxFA#Zf5;+k{6M_|Q8mDT7=+Us}EGWxfv1Ux}&2E5T2`)G(X-y7DFF zHgZTGG_6Cvf5%z<8arRQK69a47P$O;l(OGH_#BS(jCp511l~Vfc-El{e&X|^3vTQH zzTO{^Z^h$F3SZaB9B{_m03Wv$^E>cOSh<~AjGr$)Y4C2&fzPVkU{973zTc{>tr6hK zrxoX;j(WpqVgK;`Bj^RXl|t9WgV$F-n(S&Q0NyD%BzzWn5%Dz@FAqU~llZPUZi6c3 zJtY3wDe#aOQ_<^)32 zZ$l4t%C&1^H}V~|54>usgZ|{K(DdD_Snrfp`P;Z+zRTe+_3|0ek(c`pN?wA#i9IXt z@LxPv(J3a@&-}9_#L`RSfeI=fUE}yt3^O`Xq;!$tN&k?()^k^Ijj|yNv2N=kN&r2u;1!f!H^yH;Js2eH}pm z{vFgze-S|T7LP`jfv442m~6hS0QFjdg1ZdXY2AvfuZ{ZPKRl*X@1+LP;Vr#3F>OK6 zk5<;czm0l>@%qwW^r4oosB})l{m=Gh_sbYPHsFbdKbE4jS*1|| zI%dDswi%2R^~SD2`XhYsqFa8bA*a76l|z>)UWdv?1mzQ3wQ2fN`IgC}>XftYefM09 z7`0B_E@ZpMK;9!sMh#I*sPz|9+K@8l&dt`p-@F5OLdNWFp`A22EPkc0Z-RXKlCNUd z)1i;v`MX<^U4~j)w>fuym88yliP>2e=zkkEq=vJjk7>i>U}~*}JlTVM^`5%qpb;6Z zkfuiuGPrN4+|i_Af94xZ1=5%^C)xidoR7G|H1=AS94I<8xxNUfId zFQxobr13j_34e|$Q_-EhSJfNPFO5;{UR0|{-k;)+N!u#X>X@{H6WYLcm)h3oqR*`H zrOh&ED{|a~oo(+X0iS*zTu00w3S-h z<5(GzNL}u%$S*@pD^@ zC@L#Ufxm#&L-fcN%vXH9fu-v>cpm#-(J$oTzZm2B7GI28a< zbNe&A_A1EHdvA7JSDkuo?0EyGG|0obsagAqHc|7BORsK1{~yMh89kHXQbfiIv^r04{L=F8~Pti88jZ|h^$*kgYqn%@WVapJe>{S>3W;*{6qGE zG+ePi#tpo%2S=q|eXc(#X|;^XTVel*SnIsf0XeCh<~nbH^M#`f-km;%T={pqn?-M6 zz5m`9(~LUwkma6qSJZjtS2+{P(f@y0C>c8S41OuKMIpzuk*D_LM&rl17p9f z{TSJ(d&{Iwe1Sf7NG+^m9k!#%ww;&Txt(cAydw9eXD*Z-?$wm_c|CEyiO={VYDp4j zmnz4f!umJR$rVrsda3V$o@vMi`Zl=Z))pD~9}7DrHGuC*Ese}RKMW-EzT?r;sIy|* zHYxTUb*2a5CwZDmEy>bA>2=3P6Y7^d8h=W|4*kr*{Ov=|v`tCYL6v_qY22(A8sUcC zG|OhrCMbxQ{ZFoNjtM1o)5WTj-^0nfF*o3BeK<8$sPt9e+(Nrm58O$-2H*Uk*;iKN zF|zGTD7n$%LB9ob?W8-v_x?H5Q#R#A23Kxgl^*q_o8{YDZR2si$8S3RN6~f1W4VT5 zsYFqfoxS&-sobQZWY19MM^=(FiHxX-j6_M2QWP1L21TfZNJbPQqmri4I@kG~Km0oQ zeBblF@AKT(xUahcd~>dRT#^s?m(pF2$DG50?k&t~DdQ7mObfB^u=JZQPq&IbBnmm~3)3 zg|jwc=cj|d`CQb}Hr}53OqpbbJ-k|k4XAMOz>R0xMCY~@9gnkFLkUvxT=_2zkSmn1 z>Cf|Z^z*sKqC`C_QkSlG6{~P27oK;GqtKhsiL-umfL+1&vGxw+byJ-8yB+k{adzHg z#t!Jnd{raWe&jO0bLjaLeCP{4i+;Nbo?`P^(^T*m90D?2UeF89{!Z-UY)8HvTWV04 z0iHMgBNIN4F{j$J$>#5T;Nz%y-a)_#wUOQ%H*JJIE1ldTjrz~*`^o(Q@HvLcG0gQ* zCl{xO@45d8d6egxQuW|VzvJ~dIbgRh-J0`V%XJcbNb{UO%VXpa+?x9`EdxC2kkrl0 zj(PNJ?fI?^`q1)v{oc)wFlW8x%e>>rJNhVku)$&&dBy>U60Pe{#~t$We*r#8GSxAs z_b<6!iMP&f%$Fe27~_a%dawzZE=|3VPrhjOPpeacugE~rxz-+4IX!M}238E?%g=q#&LyO%wJFCbg`^k3k?H#~eC z)>9tT`&G|que1kwNsb!NQ}v*sjJeFGk)AYD-q^n$zNO`1+$ybvd0{i|_d4T!h@b7n z&ky*V-pMO}q{=bqfyOW;{_A9b=kvK`=6wysK5BZX zViLHX)w8kV{Yv2d#GAS6v>9|)@ww%&26%zCPYS`33=)eBp8n3nAUWkM=`kY)oprrd z(Q}7Ec@_0LukhkJYp%9xj>nvUuw(<*T} z*b*lUo!*PJxC?kY=75vo3-swPWvug~xm9ij@Q&W?RMwTy=e{TK z{W%I;a`epcfB5}}8Aq>e>qV|xm@wNY^wa@<*T>J`^X3i}{Kf)&-!tzDr^Pe)H<~J| ziyy&fl0B(r8HoCyMW+dqwP;c{_rwQJ%$HfeC&gzLc>L4m-f`gIe|8^!@U|nLO$1p?vv=J1G~a__9-ExIhkVwn#{2VTEIp`e`=<|yW zt(9{NFmGVw$GLaFiLHCP*_mshw=Xz$;4j{<#EgPfJ16{TEvu(bwZdl~aQ0Ly@VZd) z%@ut;o|Ja~k*PkeTl`S|sr}8Kj@OHSB(Ww6SoLSxzIi)v9Xh|dDXzkO7^EFw z*S->YlUl~?qu?zRA1ig7iuR?_b+vkppNVqf>v&gRa=ch&}r1PUGo% z({X3qsY=I?W50k0F-}jdPdbIy7aHd;<%a({?)ck9!0Dkn_k}8CJV?yQ^pD^1?R09F zPsK~T&gblNW0$cXZdkdM|7IR|Ya^wFAhhYv>8{sr-aFEfo>MFiayIbC`CgXtvm+J# zPj75rxKPH>?j^_T(AVT2F2vjUzaNZm%uEJzii}%t$|RyM$*SIv59_IMDf-ahR_Nwd z&)UOyk%JrB&U;!0{a70LZba0RNY`uqlg>TSUbkxO!xX{6&1>fc0j22!Bc~D*T(**P6mlkYgeXUOH#)69losir1 z%IovrGa6K@rIVHq-90KWw0lhsevhrFMPV~1aWd&wo4E5MHz0ET;&Y;y16Rqj_?0Ae zyOwYJH3^+jP5#s6KMEA0|E2TcMg^iJvz%#}V!)Zd)E7MvqbsM@O$}Dd!2kX|&%*`! zHHUcmZr~=R&Gy>XY48io#w>k+`F1JqB5Zg|khkY5DZ$?b-2cip?t3c_i5YZ0b-KYz zYI3J%4F*Li%WMhX!$c`!9jv?@mIPn5c_I7gA_d^z1|zW+Rch)Oj?dfzeR;6qZ{}uI zY70KIaTki$9p?1YE@g>Vy-nMJhl?0jO1-gSv7d?jT~_pUyo zhkQG&pG$LB0%!hZ9@FWEet$1lw{=7T`gd)<{38+KWM9`Uxj};NJx_`Mp`=b$1`?7b z`+yh4l}uh8Q6s56*4_tkv`{1a9tS z36?p;M|rK`PD=H{q&Cm;#l}fdyziHn`mQ2Z(5=Thy&t*r5kZ@;BqBeu$I!cMfd*Bq zuy|*&N{fm`=5;;F(j!iOtrw+X`V^?(5!P$3Ml*w@kIsJr-$QX@`fI?0G%=qkD3_qN z_KR-AeIk_St(RhuRwW4V+FM6Wp*1 zdVHzjiKjkzKl~fgKYAdKu;^T(khcbzzaC18@KvY0eHIlFrYclg#h!XzPz^j%YT-nH zJXy6L?rl(&ro8nXwaTC2*GOWz?pCEjobzUSK9%DBiWWTM?xYAEYj-gJ56mHK8uQ4h zRVTHF1*_85X_A!b*~{BsYLolkq1`ic`oy_@BKd9^`X6km${9JDOzGA>A$u|3z)P9? z!hJ4s@A=vH-Iaq%FB!4u1oP3AfLq*|_2?V8bxiq!FXnU%T~qny$xBobtF5#Wxrc5$ z<83x-tD}v~F~Z=A&WXuO}Rj@zg5) zWP7#WXnAec&4oeltQV2@{Ndh%ENf`_@(!2m!&YRSG}+OX<3MUf%TovE94IQ_kl?#v zD`LdN^?uMcA~jvjE9Y;5AFDh1DJ5b(o%1?ytRd2gB*V8VI`e_&u-)siY?B{tXOEd% zx73$b-mhkhdg4K@3-%RChuG7jtsYY@J?m+c1}nQ|r4hx?d}$9_U_q;HzTo+B%ASnn zZu%{fbR##>;l6zM6BVx9534otCBe0QSvCg)s6xLuX|rE2@=lkhjvf!DPPWzm;&KD% zYr||Iw+(|@Y`R!GFu!Onswl6(-3@s#Dom{_+(@+1rlMTcojTqpYDTd`$J$%=YeE%z zE35qQ(2x%eos3XP$U;6)rObR&@Y7>i8HdxP!NaS_>Atw_MGM^$*;u`y7kG1g^M-D4 z#k_y#)Mn^<+|3+LHOPSu7>aEKZ!@55*O5Ne^BF2Pu_>d*V9p8NBoGF#iAg zmH)1uhK`n0IeBYE9_k*S#D5a-yN+a>l{<%dONS#D%xG@jMz_yvj~%IZqqh&Ycn=u3 zQsKIzSHyNW)3eEeMHNx@WYQD3({n4Xmu^kJOr8;$j$S=@&;tAJbl$fy^Ldm~nUcS{ zi{kX@**45>L9x?7VRNEI~TQ2B*^JWG)4qboVL~0vSMcI7uzO}|AlK*J$ zp7)#4AEY6k``m#Xw_J$nIN(mN4rjK_aibr6V(l_@HstG#{r$9u;RjuPS>tWs_`wI+ z3vb`Vb^1|z-0Cxf5(UCTSuP@P=d0%Oi@?9vax8B&i29P5!EWjC55RxNbf1p7`_gYo z6Qws(42pKrj=R-|TsNV=oxh;dCg&dcS5*wZ{{y2ZkKq4rc6fg0;z>W!`4|&rl8!ux ze)dN)`p6f&&iUZWc3)bucB{W~9Q55Gg}+;r{D{{oV|f3B9~s-V7FbE{pzB^un(r|u z@cY?D=H5ii39MBuy(ow})X9Brh~Jl3PR`@Z^}{^44fCCM=>Vq}G*nrbGHANYbh+6F zTou~)z)5P;NyTRYp`P(*Nefr)<|8&KDWT7YVRv)?a zH(9=_yu&(VnVPZa@9`zu@6Cs=|M8_>-MNO#BGAJ$rH}k}Vo=oA<5Q;K5r^6Lecl6H zo02n8)gg^OqQ+wv-f=L?5shrVs^8 zpBiWqW*-Lcn5kyi{1E-32XdGK>{-1#Yj}pk93g`v2Zvk{5*|7<8t=j!l4c}iK{KTLie1gyiXZeLv$U*Hkl_(EpkoaeL`~DTa)V=ec`g?O+ z=dYIqQ?VcYvg)BT>)@MW!9Y22Uy5HR@OCf!3B7yVez2gfEbU+He5)Mqzv6n(sb$FF zJEH8P3!E_j_Nh7@57e(?BSX7TuMfwhzWDkA_3p1<(#9O{>v~T2F1myK#YmU+2Edy% z%K9UDANrt}&+S_14&8RINfV&Yf?G z-=!kq|4&WR;RTN5pS=I3QN)uTX~eMY1>PS$S@7o#@c-NRt4kycfrD%NWdA({?$tIv z^AYEcM)8c}Ch!JtFE78I3!Iyx+ddKsA4I#kxW>`5z_E(9HaDw0==Ue@RXy1r#PoOH zgG=QewEU|5_-g3;+&?0e4WRocH$~KJMed-(d*w%Wfd30_#aM3y4sBF>#QQAHlTvqi zsEpVn&u`w>UE}xB2X18a`^0zfB$dJUZsMGMV4i-s`x|mrue=EE0FKIh8lkWQ`}MT^ z@W?@2H}$=|>;LZge{Mp|fiESvZ+9Jjd*!MJWhr%kUTFuvMC#R-bxhEiGnC$j@_5m% z7fqturoeabUUL2iKIA|QFPohW=CO?MhUDM(peC;~Z?`W1Z)5PHYAO)(G2h%*ix@?p z|BI>AKMUatx{~M?2404R*J@-Ae9V}kz@AOu3yd<~4Y&v3-!`*B&EOS;Ywg}lsC&}Q zm=oJaO)zKh$G*Fb7m*V%=-Ku(1$_het_*Cbg>T?Ai*X^R7l|r2561#uUMVeEa?u9w z`@-8_BmVFu2|3m(C!xyE8+QWt_O(Ci`3zhgulBl0=m+v6 zD-+m~*W$k07=8X$E_^UUrgE&{X^x!e3Y-*nf#b|8Tyt=h8v& z1s{{$4}x!TpUrgmg*qlkKZ18F_yBcH>v6FZ@FtoE`Gfak9d{@51>keN{JP=eKUU}> zmulq2`!L^xdrRh%0n80i(AW_I|G<+Yns;NN|4Zd}ZZUfY9&+CFw!Rqbzjiw^r*Zz= zk2@h6hWkt@?aaPX8}QV}Wa1C7`cU)8`XhP$(9g;wmj4jlTb-%n=wi=IpG{;;vc4)&J{^qdGOkmw|^o(yU^< z6evM8^U2p0z>zzb{x;t%Ng-Lob91M}X=-7-g$o~i|AB3>elLJ8i?vwF<)K%OoI9Cc ziTt#>!TFgDB2;^a!|HtCQmS3MAyVhoeByl4V9@ddebq6~uPHf zXyr+h*zrsEUdYH$+gVvDy9*qC$0!s3&rrvE)#@}Q^rK+17CwiT&c{O{GSrkD zac6I!1akJ`xJ5 zUwAlp^5`e<9p!>s@7x!M??GOSpR1#W>B6Q1r`G(bseSZ4bgo&DQdBpcjzd5Gy^V@* zGGn!Ac=gQ-C!BQYUWiWWQOt>Fa#|{6(un?pvPzMz9#M+ARdlFKL4^jw3@*-t-hNwf z+(Y7qGIXcb%oFVLzd!mL7z4~ z+W*R!MTTyFp8x*aav4h5wpr0E5cB0TwwUJ6qF>@@K?@Suse9Zns-pur`Tjv~zZYW; zLZ!mQQsftiO{JtgS%ciW$6d?37vuh7_TS!}D@8N2OMV|+fTyB z@HKa(0>{I^A8q+~TXm^8sr5xzhaDEBJXXaL!3UD$Zr*yA+d___{DRdiFJQgiMz45Z zpiTS}32KsQx)eKc_}sX)I>{YZncR5*`Hmd5mG;Y!6CoPDc$=I&Ic@Ks)(XAH0|0{;=*z_%N0(_Ki&9j(VOOK=QQVKO zRC?T zm-L=Caa@IY9_oJwt1T%rbZ%g0g9~}jEv|EZi#g7J6%W0SfxmxH&av79epD%4uP8PK zd6j)j+XvnMg}o5-*@w`5cC%|m%tJ2C>jK^SAnd1}qShL>@qLyO{p1SZi57R4^Wbko zxdabB!N1Qb@8~JfKpnn+qIugdFETQ%pY=EcU-`Ne-Ua#aKb<|ZS{3ze+w42;&EVnL z<5Wxh{&-NcR^I^|IcLgC_jM`PwxsK>caFtA*2f$Y-X~rL6E(R^k_$(rq-$q*2PNt* zi`AN%eYL-FpO>yy?lq~KHl_pFV{?1PZAet`;O8%`PT;4*UAoI1DZ@^twG24()BP8F zU^hap2Um^>{1`G`&dyx(Olh3C=hGHZ7xFW(wcNJ^x}}Wt#hp>eZF}@IIqK{G^SD1h zj2Xc^skQf4-XjN^8OvIKp}~wy^R(?a@|_<$&G$I z)a=~68ta$4?F-X>@VT=-`G*Vx$b`q|{8!^(dU@_EBlKD@9f|Ep&{`Nsx?a2EFT#JJ zCVgxqkPrIK&;;Ao7B@;68u?W6+Liv)R_b%}xKn&~zTdSw@L#@Eh?RSdIwAV)HSZHX z6s0fsrwsh^f`~P_y3cWL?ep9{FC6~rpo!OMR^DW~>qqB$oLj70n-7kSpzi!?+gbxX z=FR-NswFtLJ$t%m1W}(C^=DS;RC>`ysmTS~P;b~C%`fBy51zho#klYg{J4)ZL+sbU z=X$(zj~}Z$-Tr>3Huk9-owzr0HSF$IdZRcjzwrUqU-KvHk8o$2v#sx1df1t425gcA zES;%%GYf4lazvh7e4}!+EoD3H>Ak(xjBI4i8}f+i68p|x3oUbg%+XBUvcLP8q4~ou z8{g8Ev?!#V&Fqghau6Iv6@rM;>YM5-BaJD1e%7tPFGiHJ!jYHT0`nN2bqy*uB46-U z7h6!44L#Yp$oHj= zMEPxTw;8nfNtRh%HvZ0q>yP8~eJN_k`CxGsKe}5ncs3~0k7DljI+WO;4_wmc=*0wI z+AY<5OmYPMw)*BP))n9rV`b}aB}}7!`fhto@FsjGp=>2*-T+rW zXpMjH)Q1vg58ZM=ofPrA^R#~`^4=2f4^20~uNuMqWuqW`1^2p~dzV3P+x4yb_dMh+ zYsl|+xsK0uGwIv$1=yd|lD#kPgx^+RWPjv#;6x7QXv0?YOM43NE)hWgbpO`l+d4c* zaH{{NV4WwaG5zkpdkp>a9d5!^c&_BGAggxc+gDrKdu<;TI4y9KVO(*VE(HV!S{dxY<%J8vd$~ zV40AP`MBQ>ByK)Cz##KNq#WhLA8_Xn&Gay6>{s593;3KqUB5Jr6kmGE-W<(``}U>B zBTdmFUs|ZL@!8K4zT`fdlrn?sApKC*wUNz-V!LL2@616@v(Y*j=?Y(mY$)40;G^V` zL+Q(*YgHsZE5CaSc_4LOCMKwFS^COZi<7*mw%F+JMGxfv7dMz)vPB*2`5`Y4_TGm0$Me*^YNkpc3_0f0T&~{W8LSOb7A;-_-SA;d z{7F&t*Z$f6@Wv+OO@3jz8Hao?IkS|qOTfAP&cnmE4?<_VB=Ofw5zpn-_iuk--?3Tr z*sB+QjY;Jd%07j_0j`^GKTrqG*Z+1hyVINO*RXir0qLSw;HzJs zJrj<81Jhpi{xu4or00AmCh{x#0b1;G_D6cqGnt%#WIqpj;4|**3Ow7^+S8y=f`0p| zlozwV&~NZc@ynYX(A#~hn`5ybf8U@zn^TQ>dZ`@ZOwfB--m7`m1%anIa?kV{){(vE zw!~v=^wT>Pu&;RTLC>$Tux-Mey|$jlx|`=bsrs{UZ!UP@8rvd9{wnCzH!_0LJ#pWk z?=9ra$LEar{O##a4>~q4-aHcbyY}6A8_Mv$w5Em^d;|VJT(hkF#bR8KwD#0zi-33Z zj1*tb0=JKjPm97AP{Z8z_}UNnAku{u8jm4g(X&%M1nc>o<7OrI2IKJQs!a{<|Pl^|2@Q^FH)VO9S74G=`5$ftxFgUVPtyKK$o# zvv%+e47TOu`B%dK@lc2_0ldte%lCdCGD6OPP`PNqeh(@xk@D}>0v|tJtXBp8BC>3$ z_f_CjosLm1lT}#PCv1y%>AKUD;Ur`58(HSh1YT!C&RT6A z!~UB)2|kO9E7EqNG5_ZL`(3uAVKmQbF{eFo+;qIUi^+|~-W;eXH$#6CTkxCa=e{&) ze6lE%8T)Fj?R?$?z{`O@9S?#}ad;|lw5$z&mFU)VKGa8nxi`P)puTafs$r`J{%gC@ zZO~o^K2E;X)eFzpRaGwAr!knHl70J)4|E5{ne)j;(BU;l756#MNB`Xu(VO}Bxyho< zdm>I^K7du_#QIg(m+S9ZOrXy}FoTy(1-$+}BZt@fS3tl2vPnl0uhZvJZJ}QR{dvLQ zr}7(kerHc}E!hvBiNM)pCkgNi%bgsaxFd(}lic3UVC=&H_`ay?{-v9H-YM{+G?9~w z8Wd0$NL#bj=HmY2*4Wj=51xS8#(eSw@`7G+I=1|Szus-h-=|o|gLPS9LeQrrRCsRG z2qN#e{+?KdB=qew(sckrCN;hVrZ)bIIXm~SnW;7?m_iqO7_R2S0fcNWt^v7_` zAoiE*9L!#ws6$RDR_I*7oQK299_N7nNL%nWj5!v4ilfR8*Q)=24u$Iqfd7sD5;kGf z=0gF3lRV+5dk&7c{i}tKQ7O;QSq`r^bk5{k&M4N&$kX+fr8m7h?bgjSj`iz%vMXr> zJVAi|$YZjxg?d*NC5fk{^?59SbtwA5B;kD}It>8O))m&Lt zLzkKT*WV3ai2N(xOL;i27QbO1xI2jaMn}F5**?@6eGeWizvWANwwCLjkjI>vC7t1_ zHqgF8E=tKNNE26qKY!Cx z)zcS%*Vi?Dug+B`*TBiXW-$$l;wu%Nn^Gb7E$6Dn|G^)x%aYo}4&3YLntLNvg%WZ% z`UM$kP=eVF&HA?*RKG9dA-HVP63Fuoe5?mp;S7 zwdvL%eA~}H>fW6YqXgsC-$wb7D{s2Cvmq0C`NDTsMTAQe>$Syv9#g&(CauKqsQKtIO|JK{W@60M>oS&NtpTN;IC(GZ%r#*abmjgHE zwF#}gD76|ou%+39mrvA)zrLz1^b_#f?`W~_nzGdNC97y`1b%%KfJ^}5<_Mez1a69A3z~^o7d9;=LWO8Ee zVErD=N1yTcG39z!EOHO$;^)jbkk4lvk>9B$L0Nu}maeFQZ~ym}vD6S1dbzPN(TG!v zPKaK6T4u;+bfAsFYxg2;8(`6F3G8W5Giqi$PD?4OK%6xm(w%_POP@8xq>!nSrOCOsw zr$Eo&xZ~-3N%V1;+bvnMN|MG#yLALDBq{2Fb>MBx|0@--FOPXENn(<=4*vqcHx!Sq z`uIhj+>f%fJQl^=hV7~9ySE@G(sBH>_j+OCSJXbsl!%`jDqXI$9sL(p?0af)AJpD5 z8e;83PC$9kLR)#{EpAASKGuT!WLhVwWk`ymra69V`GQY#81Z;FqC~Zwg3Nu(HK>5? zaAw^*UD6w@-OGPPm-0B{m#oQwkKjZ6!|MA|bR{t(awJrO`~rv1st3x$KWY@CYpqP~ z_v95X>;Ye5esJP}lPtL-waW51H!=OGeeQFDiLA1;J386HtMI2M-EiJOlW!9kJJGiu z^+!Ef`J_A9_N-O>2%b6k_fO;gSKz~i_BIY+A3Nc-Z)7*{r0jY1cSbyzrxG*0`Dq}0 zU1_iXG`| zXJ-E@eLV)S8R$GuhnzDc_O`wtyX4NTG~M*Kfm#e(sBb{UI!v``6EOtFhM`I(ucsb$Rq%ToPBY6vBCUG5*a; zX>a>93tEO>QG_Rg!A{t8i9Xa?F^F0zWU`Z@E3c&@u%=C^m}ZNo$bGleBbU? zn=R07MD8XCnzkY@IZ!CPGnzs1+nrUnY{wk;PpJa!7Z}9#EJVR=C-9u8b@vrT2H9*# z=sW(^hkO^z?B|F>e*8l94f-v}@zsq{%v%kd9>wJ;3LJN&BFUKh19IQYolD=@GN@0o zw8+7nLGo!^Oj>*4-(Pg5P6@oh%m+EWf^WXmyo-EY*CIcls`bSm_zG@zonbzs>Pr&8 z7RKzhM1O+F*Lx5D`cky7t?E4qg!_a^xU#0UoHQzA3`} zQYQK09QrrphpTQX@A0PJmkf(EmwJfn(lXRamV-1H#}N?0lIYds?V=aKZVca z_rJFWKIn_STrx593O~2tiRDey`{FycOL*LeK72ub$$a3zHj&`?b-??DahaZ}s6YK& zyBv7F0H<0Fes@405)D@^cKii>l&wtrCG;ihBL47Gz;}Z4MKqqm4-i`aZ|Sxi=)dW< zC#_MpZe{2N$zDRgsyk2MKOfBHbo06Ptdv39)@+c{Dt*SDW5Ot&OP{bUgTTXYx7v3b8Ye% z-~0(UTY0E26zd{wP%n51I$`WOtL9>3_=q?3UCh))f31=C`{h`_OJOA=R9j(mja|hR}RCexc34F&6Oq&k#toI_0msbbFW#My{TiX9i z0Ixe!Q)&$!Qmm}2fZqhTsW;!Ou-A(!3xcaYaM%+SH7 zOw|NVS|g`$G}J*t8vMt?!zn)Po>Y~;GWW+LPx3l;$>%ci?2N6auGDCGQhGyV1D6c+ z?aSs8TVv1%|BI(v0r$ruTlZISThRwEdH;TGNAUJhQs++lC%-z}JrIPo&m82$+Vf%sH^;A57CF5%#l zp4k5ydK5c7$vi#Ub_*Zo)3{#sPz ze{T0K;}iITM|A^tat`D93*Gvq!V7r;lD)xe!4uqZSjBhoiYGBKE_HXo$1#+_5iV4U z=lXc$=bj^8#MF9ea@9C;2!5Jr+T1`cf*j-4K78)n%;b5N2R!L0lWYsi3B2wQyY+%B z%<&7%Q(%Cza(N@PwZQrzw!qdHth4s;&Q1MeJ7`WUuwNkot0CVZ0^~zJ;yHjgq{eq`6 zj`Y{)><+7PTN*yF)@t^H9ldUq5xAi3M$fI;NA!VTUEWm%@-OtGBd0mi6Okj+7a%dS z4fy+`c(V)({_gtn52oAqV_okpI~a}qbYY@_K^N+sZDnbRiF(MzS+?-!heY7+&Yiy= zzXQJ#&=OFy(wm}2Io);vXJ1&dWi0FxeEL88y!}@h0&i9w?x?@M63zU4>UFYM1xxK66U+u}o{-E4@(`*xT^iczM4qWe_v2})v za2^DmoOF@Kx_PAuZD&INy}>%^g}HISx!lYr#?9dqRTRu}Lp@2wU!Qlb#vIuXY2tGR z_&Wh*aY@V3=cCsQ|O zA%zy(4-wH=&kZH5$v3^oeOaMaJ?{TLmb5*Wa6WJyd(<=90lvZMQsS)$`0Y!Iw%;#@ z|Lnd~^szc0deo4ob!Qmzl}olp<@p^QAKk0&qW zflt3_u_kC>oe!BXXFPW|X3&~iU0L--zQicX3zA(1-v8igr*q&puDNXJ^ntJF?hU1! z8-h;sa%7(J!u(CdFEsT1|G8+jYC;|S;Y(|4KOWY*mHExEbVS!{wGKZu*#zZ%ON5TE z8qB9}3_p03YxFi0L~2|vXWu^pUMSfyf7~6o?b3Iy+V!%;B=ExQmX-o$zug;FTlSW?5RbNN6^XeYYs`%?>2oVX!H{ zzkc&|k)Hq!WECmra`RH&*|)LF#*uHwx9Fv12Ij8`K65GY5vQ4}{2SwAfFGYkzqWIf zA+gkgh=wK7G%$bJHz`i&pHWqJg`G7?=!sI5jimmwKGcLF*HGN8ENm2W3FBN{E-ylko!juD=UK`W^<=J@ zXS*DUeHvO{r-=Rq@0RMui?Vb(J>sU?T5%ePJ*#(PMvAiPIy&#vtp5_Xh!~1P=jEj3CNA3YL zA*1PR7)Z9Qtm)hDn%do*T+9V4i0PFL>%sw1;-9YGm$emozIx+8$7XG6(i`cyk%v5k zlxugD?ZK1ixz?{2ktU(*r%WYG)Q}g@$Xj56pSP?$$NXB6nEG!7n+*Zy@6HhYV+$U{ zKF}qRM~c)AR#=Qm%TrX-`ASxO^pzL)+;BLId4V<0xA*^$rP?Nr)$PmWh*i7hF%$d% zO^>cUTr~>*W7XRdURiaz#~-~^4>-2XB}p`9kvj5C7HF@|(W0#PQJKTx$W2p782qsp zI{vDVbt^uC{|OyP-4=?zcq3h7(KGOU@NKhP|5cLMmpG}0zQbJm_Q(C=yVR*UUG!B0 zzGk|FFCACcrh%(U+k;POk(|Cn#b6HR-TR~)_*CnY!VziFqeJ>suk^$=?zAS&eP!WQ zFVmp4?N8T7f`8&)$a-9)33DofHr+VsDM7b~JDMAeF&}Z&8XqzE0QTJ$Yba6IB-Y)> zmE#-X_n%0*cTpa=-p5;GDSRy<#@B^x|4C9?ns9vs1TW-UbooV#BDo75 zbG#{`4!?<}y5=V-%F{Nz7Qm1qC!^he-7t5+X{6w1_aO~ByK6!4QY8(Fs#TAcJEuuZ z{H#no3zWgPa|G9Rh|xd*&nb_OtdytqxNX<|<>bW6VOJ3Weo4*dYl4d`ow#1jXD)-j z4(&3bYip5nC_Hd2-$#j39$Znh9&#oSAx*p~l=b2|gfzFXDMYvt4iK*%5 zdOheaBWq;-20?GM_NMuf@##l!f}d7xdZMJ@4}7n;L123&d|bbnH_z9Bj=vzzp=2fccuyAKKk&WZU&gwC zzs~zp{^<~S(_3s!HB(^}YPyV=Hg-7rUW&GOn`{vPy{yJ<-{bm7IpZ3R7E zn@Orlp`mb_HcdTjJ)9nnBGB;Fk6gZ$wTHwf`Y$7=WRfp;Ctry^>W)==XAfAA+bJ2v zmq(q*LPIL;z$E7Oly^=qy6Q;Psv6HMS6R@TPv06dQVof=2R^E<3nqw8d=}XV9xL1)bI27kjG+mUMqJC`VAchSU2?BQ>O58=Vknx z=y072Tg}OhWOhtTihZ3Wb+cG4EG@9Z{>T|{;gl;ab1eNgWCuQb?!@@K^S-3zTk99N zAb@H&9gAv?3ZjnLxdZ#21<~Icfz3+I{uHM(5r2*sxr@(YRJ_DJ=wsRFF*Qe5vI>^E zpnS`PRvlk5as1JCl0V31$3VSx^~+Di8Aopt&V1~_-G;he>8kpc9mv`8@0@22-Ha+n zP7i>;VK1=$z60kmqdbsls0nq$7)Ru)VdMp?FOzM`$J`s`S1&ayrp`+aX6;UVCzH z;0R!AuptGTHA8hpHgxlBN}vuacqeZ|gT{JCx|-PXvn6#ak?QdVj$5weX_fhOSLIf+ zn0>gPInkCJ#kswW%h%IXZ{$p|lL7^2mToZ`SYEq;QE4*$fVVcq&eTLjNQi2))!vsI z>Cp4@OnZ~i&%xNa^vf@mb>yxfsV~B3KzZEiK|UX}sU?!lG|SzHI?WPRHpg4hKn;h6 ziGmA-W;PXw%%D!Y?I~A|`iyC6{XTaFgWPxqzZ?d>AE@1M=KEgU&(Gv;w}U5n|NO>8 z`BCW6?E(35@O96Y3G@VjC$JDozUKB5{yasE8urJ?Z!_(!GYnzSfor}$f;buU)9j>w z+-l&(v)dm_r~=Qeir-dQ!l2l-l?8io-s|aTb47fIu6$`<+Y;bP@uS0`#WyjRs(R0Y zBl!Ngx^gBFHtyxG`iXNh@n%+V*ylQ6&DV(-XX5nmFPOq#*nZ@*rJn22t zn9X(Qr-yd@waO=5DAN-+gb@hw~*>@QJ8A|Y=eBCz%m*2w=y>#G0>L%co z!1BtE~^}+j@Z4kvMf%sSkbkvc?*Bn34ZoEh;@Pib317Zv;Hq&7d%k!NWhw zFkj4RS;V{v20gtcusIog3#-e~{`=Q_==JunEoz~Y~chnRtPmQTwsXv2QNeNm-$ zrV%*3OeL->26>>fZ6&o6UUa-BE%FBNe6sSY3SIc{$G@)?ajEh`zD{Hb(=+U2T$AzY z4bTNwCEtm-3SY9LlK+A*FIteUAYE1i-+%617Z%jnM$h?9jcfv5+#HwUSmsH2$DR+r z5=8!f>h2x-AEDD%b!!Vp0+)!Z`+hbBUbxP8Vrw<}36dnn(*lqiILdT$p(k=<+8&%8 z3qn4CPqI5lIdW<2#A_pFw)>H>`Qoc^>kXdNtd_aY7W*5ErUTdg!{{GS-LkOa1o(xh(ZFG> zXLI^9`wv{et?7w|Oo!kjOWdFF7dpJj1p)a&L--i-7TP}se%E@#_IlbB{_8V5bE^OI zf@Yf4bFbj%P)SXB3BJK9SmVpBJ6H!zozm0r0c5qT{<-|BCoOqe$v*~uA#-%LdciPw ziWkbhk&phLL&tq^;vwpaf5(#6!Y5)WXUJrcjsE?q;oGY4YgELYR$2reps#w+bDuQ& z7GgcKl)xXv*yVEy|cA2d(O7D^bRJm~WI21`krPtMU1r7!UGm z4tTEAy`6Rynfe#6*iNjAj!<+e=6tlxTk~+C4^6R?4IAndTG}mgNX~-_@9=NB>E=X& zmHy1uCvB-<&32Jd7duinn14-9%8f!a9=dWK0iM?_xnVJk+}A?c32h}`s*Szk_Y&7# zN^z&Aal8j9Cl!B*_@9^0%HMJRGVtcHA6|KKJjREPUVWVu4Su_iFFUn133)LhPdHqU;`e?olC+G4KlEX}U{yB! zo=?xayiN9|1-6?%Y_0MphYR9|Y-+seOT?DSbnp?yYL&{S_2eMchXRsxsVb6MX26x}TEV1I)cn_O|?Z$A|d7heuWW!LPu?KOxQRLvLr2MNWJK zzfy0p|KC2W+dz0uBzXR9YvYZ^&iYb=&)C;U)B}F%y3;Z6Wu4956@B-x8(nYSAA8IL zxs+-xo7>Hes4ZSgIAiy6_)V3Rgo^lT=>n^yvFdNbsdE82;ah}=Y4iKQ+Dgo=E8kW7 ze5VXWJ^zl!?88zd7Tn?4%uX%lOU> z9OF_a&Ik?xDa_eZlPSn{^Ux$UfxDZ+^0cW~VpULJJ95{$S8tk|1a5h2R4wyfow{}V zoi^;1rYoPWuUh&Td3u)2(Gy3MFjsD)pvFN(s@)Jn^#)z{h)^vKxI+ri7Y+-6fcJuq)bej zOx6G9%Nj~U*C;>x>ZS;ZxwVS*pueB9%ja|Hj5u-!y{ru99iH?Ey)uIS{ryt;Jk=@`q9mxsVuOGC?Mt-XsYX^7&6Sn~3dAHgHx%2) zLrhFON2W{*3~86hfNRrY8fYyyTyv3^n0DHq{xGaSw?*H*;u6vztHP4Bv;4s6bYEot zUHI=;+zpe)`~o%ZrWfqGYBZpd^CBu4x^K>&=iPSDr;YE+IPApd2-DI%yb(Ok>f#kf zJCv!oA&0z5H7G^%M6qbACPguLwcEdgKbcC{tuBc5)7Y9ET>?MBq|SNPBk(tHy4`>H z4zHteNT|47nVRep)_O2Qhu*HpvEEvZg7Zyk=883`oqhN?#}yqaw&XtRsR#b2zb}tt zP=iig$k_ElSd;d>VD3l;f1@{kF6Unrc$zC2HkZ&p^77=$Hyc~9P8$@K8J|=pHM`tZ z1MoeB`^Bs~0{nl-yoWcD9sI|I6Q*09>ruf}h~P()RYXIxUouW>(^@7I_jAlT^dOY; z%c!(2rIcDq?`DFJh0$QX#&9L=yCU-OEPN$x8_TP`AF2@d6F#Zpd+6`K-7w>K5q^QP z^_iss3RD{C7JF_t`XHuD9KIkoA4BhIn0F}9e-vGJJXil4H6kRbkbGtDy+_s)Sxwo= z-YXHwN|Z{&D3Vnq6;dQhMk#4XMrjbGQYe*BA>(&`fAtcd&*y&bec$_j&Uwx`&*Z4~ z&Knk(18_QR#IXVEF=ol@+5k10syDpku^c>=e67G;=mXfEubx_id4m!hOdYo|51~!$ zw7(N_8M37re)dMdf1+;2wa8qNtQN(tdKUxy-*T*t`7;xVgl{X*(B;CMiiy9`F9fLb z*vR^ZLF8pv2h1GZE>DH~FMN{lf{$T)Ua-6Xu9N=ce5xGg`V}oHuQG$ap`1HIQ%;Sd z%+K9TI)yn5%k66vz<+dJ3UAcP{EreoJo*#3a>QtCX}wnL3!8yol)h2Sz1_&UmXWVo^&S4scYl)3 zJ%c~fC#3E^>Or>Y=^tz6yl6ns{zB4G=!CiThqnUvlj1kioIdEy1|?LTHUKwYcyy$6 z1^l}SJNlj;haRji!f{ar^j4hNi4TgvuTCFxI~N6i@QK&T*MXO+_G?Z4%t4-9{N&wd z>hR$WTpi$cwx>6hT3wS~=2ZAfZb;~e0vT@i?1??V*VHL~b<3+yB2C7Rx#}Kt^N=H* z+Bjgij#85!tlZGLjatJCv*+`iXmWSO`1wg^%mWlq{buVx&wq5U_Ym4dDsgIv$uOeG zj+>Fvcl2m9yE%ID%vS1-Ki%NG%Z-|%N*hNPp?~MQSA@ySj~WiK-p+AA9&c~MUe?#{ zz=3P7wA9#=Ezi&m{GvFIgkk{X*K087G?FnXlc5 zK8Du6-lA7YezduuMquM?AZhaOn%&piNg3&;RXmwHi6ysewL@JXEm*|y+*#~P_x|~$ zMgT|gHt)T(yv&&@GppMxc$`V(NB4u#)$Y(;W%gvEf2H?g={JFDZ?dko_-F)vdGN`Y zPugw#teEOP1pYg4VZ%9fW8`$T1T>R2aDIQJvq>^?0Y2vZ(LCi%Bi{qhWEo?AanKU2 zC3}E})G87Vr6G5Hd)~x-)G0^Uq%NwKLswb;DR28mPhyiFQn-qF%5Kte$?@4v)M!}} zYRTn5yK=o8d!%eh_IqQw1HU!JNe#`cx3ebcRVBAVQtXK5=T*^@^4rNu{!{sZWAIbn zHn3pXh3|3oruE4>tjiO8FT*!ELKimf74m%(ah`Sh4lDYC85#P^u5P7AzkcURz`P;a{_)-OPk^E|)%Rx~xYsHZN7Lsbk+**kG~u z=vsPyzPF9N-jbppC;oE#Wl#53?HJ#~iyZI55LTH#*pFF-nx?XRX-uNd_{BVYDL1uN zuxSCunQl7vINpc0HL72_$O4?Md}h4p5_H-+cb2sM_9X@pSFX7S$Z1z8yUhVT|MyuF zn=JST6xa6hSmS-1p32@j-t9|uXDwGe4Z!Q_E#emzd@1a5X@ct^%#YqM(e>yCasmtu zg{_bK(a7-26=x!$-)~&Jy}|(f{MMCjYVdp8es;I4hECwW*r_vsC?$ou~kd_iMc=R#HDIKTA#Y^O7;ssQc0UTwGQjA?W|b2sXyur z9R|*1OUxINcYd1s1na%+42Oa_^a`gX4@MTFK3`khHOqiGT8DY^8y~up_1j;WJK;O& zxc+V1$HVSqF;>c9Sm8l+ywBSFfa`CnC9*jK=l43Krj#;yQ2y1G>-B1&zuli+JpaU< z-VApS)NptZ*RDq{t{366ztcUo*WH5}S#L=@q_~sblhw7ce>$$baC)u)iF^a=0`k8xURNi*mGcE1iuJ?Z(veB{W#puUgGb>Xu zgx)(hUZlqaIds?iT&KZfsa;>z-U7WxNxet?yKO%7Cz;#xuq1L#%s&h7x9}ug%btw_ z+8)H(7WhpDI-jy?qo5x6T^bHJt?^3rp>FoP`YZc=>AbY%7t<@?d(IdcOx5|)txHFp z;(`C4hW)E)Df6XsLEn^92>yKcaLF3zHu%i~<>n=EeKr)btJAmx;V@T&t?ApSg{wF6ChHmqGW>{1*IU)&j#poRbCEz z3*8jI-D^R;V(3oz43j>Z@klM`-lDD^IZ5lL_*QW@A>{Z zXeo522d*l=ZiYTfrDDPUqZjcpG=&_nf)1eHSacqJ$Ky-oTy1>4NUFK?@UXNOIW&Y6 z7M4JVAN$Wp@rM^()h-FW3j9BK!GOC9yx_+pOlCdkQ?m-)f4w#zywU!Yrwi!EkB^^> zTLpYvlzX;#Df-=U=T<*CcFU8}J~=h)ulJ%QN>00X;rXI)T6@d7Sm?2(OdLW+kwbFl z=T~*`%%^t5UUG!5pxWipCbmfIKRU*yyB`DJ#Q*Ya1m0=pvA#Z430|7|%+>(Ur*bdp zas}TIEcl$!X$R&-{^!S)u@UqAgzFZUC?W5VHU0_*`p*|G{R@&|!}rT}HqMiQzU95Q zy2X0rwXLbOYySg({<#L>lqTTLEe~}o44^mB+n4Ns@6mQ~^=)nNN`Ka}8EXQ6e*N`& z@cbbDF8ieYPrT2&uelRm=x0{NkDoXV-SJpp&gKyCOPce=q1~nE%MNa{EqUxo+G%b! z*1qU>fBEjg(gptUcmBZ)9PjM>nCg5p{_eTP*vnlw-_nLbl(RaGH!J?!SS zJ;{!FX4$WK%tf5;XnTt5ZWs}EI3yYKWLq3J-^FR z=ymqQUJiCc|9r#ZJV7DM;d>%CV^il&L7NOi=Plf6`o#1*JDiu%3VIj<+{gQ~<&knM z?rY}X8q1*z_~h!#aTfVMbr;t7C+phK_6X+|&O0_VC*`N#><{1As-l0Z&@a!|*?Xk} zda9VjybJ)~VKQcNg%K+Y@&fnHnQU(N+IQ8v5xg15A#I9m4#N`)%s4 z+mVxZNo2H#8T{kEf-ijk!8fl~e=)z$|DCNeW;--UOhk; z^PvY>ldkRXCJEQ>U-{17B-!H6qS(Jdb`m~u4u;fdq_kAGkJPT>A%jcjKV_}Iq(9GJzw+=0vPKK$)P6)rP3OTjz( zZCBW1hzF$G=(+#%Z2aIA*I)g|3$KLF}8qd!< zzFV&<{~`bAACJzSOPG5+uax3G1fFKGfL0d^d}r0G{;r1(Q_88Qv=DrPQOW+C^CNdE0OQ)wIg@QXXqFV`PTEr_|Z+<+SoJjmBi;XzT%$up{Csd=iGjJ zP;J+yjlU)x=s_Q&ev0x2DqqKZloTQlQkPQRoymRa4URf}zwSQ5iSpeKBc)Ewd z6Me%sGbz8Hix5N7%f-n*MWGj4S$(QO40&=#V=q>sUsyYs+%5+HylrXyK{nu~3oK)s zS3+lO)?4-|3jXGh&c>IwppPDAdKJ4MObj7QtM$2{d%jbCmkGIjlYFn=xT6m~{6X-T zkQU~p2l-vNDy2sL4;_AYKDt=jh!c4QlJQ(%t-0gLs-n zx3{m*rpND=HebllAhz|-ULVgbXrY>PfW-`KPtw|)o$1by}hz)TvmzQOCOxdW%H9BN3KLRJf2J zWo7`~`)FYG4Dt`%dk+-I_9K_SRK+`H4|E%6Jg#5JLf^iqZSgx5^yv@w@NQbL*4|C|U4gWi}B14Lj)AShB`=EnZk~$E=t_J^e zd6)McH8Nh|Z+QVZ`n3wX-^JrPC2&-d3d9FS9Q%d;%V? zXnhq0UM9Od#m09M{KQ1+Rrm91Eo211)@F8q}H*|dvpo9$Vh;0nEXXmr|344#t&^U;yeKt&INevQD}cG+%LXhP#Hs1wvF$zV z;71;QsysXco`~0;w@*ijI)ls)YkUDu7GV&Z&?bdB4;743sS;%MUAHmen>=|hdp~W5 zIfo2d8V5YbptqSGXzcyYLn4PqXRAdRh@a{Hsb^EjgLsuRUN~k#hFkL74}Z5Mw&ps1 z!Bls8{_S*>Sfe*ZZ`0d+2KB7^3nrDp89djt^_7(a;ExJc5hjRM@ zR3@JwFYxStl}z}%*^P^Ri?+fS&6Cu(2mQ*uADW;4fiF5d`Nx;DtHHy!D;53-cBfGu z|NSS+ZAo~*B<6373BCFL^Tot#A=)CYHF2p!qDi`W`gdoDTvPcuU6%fPti;xMqUpAU zF&${wmCom9O%{r^x09AS(Or|Qes_v-(pfTh0{-SbLaW!hLWc{cY|sGnSlyrg@TzyG>l32E zRz0@lR2QAx$!Ja+SnicCTfUy$-Cmn-Ox{Gk+lE$5z z!d4#>aevag=;68QY!L0%c)%#rw38wjg>vJZyHTKaKg(q{^ zFF7_E#`U58{ChvWKJ_~KLz$QBbKOxlMDv^JLr1qMlq2U14|IiQLbYdL_PYI z;PpmZ$(-uskJ?-rx1p-DR-e+pxzelyv)U!}9Xu}!JkkT+77#GKVf4q3cE~I@_r=e{ z^=cIvtZYli%&#vt$0#&$mv@qe0o_yFF&H+5$1upiOf=To(q7hulKaD&I#pYB(2U%Mya zPX%A9<#t{7qo`9o_m2Vxa#O2F^*i`M9&z&hxDWhz!r;wW@Bs?(X8PqeK$XHT(Re{4*JZteI8b8`TS{_#O|lXmLVoEZUr&RCbKdBW3!+|m=}Ja+=OZ`|tG zTjD_s@~>7Oa7RC|Q%8h(4{(8Ev2stj2Z^6fdU2%Cos1K1XtO)G6PK-0W#Y6O6}o2| z+_Q5h9mkgE3Qiu>BzfYv$Q*q7Tep=OYTmF zillo{LP2v_WGU)bzUmh%Q7_s)$Y^!J^QM92vB2j?$O-q?omlnTgSsXZlm(zecolu6 zIx`BqM)JtJz8<{(%-HeKPd=p8l=b{DaJFGVw0kdj9M68|dzbm)7rAoJXvIhPNS@_J zj|1N)iK{c~t@fi;`it*|!tb-X{N9xS^a(f2aaXMt0blTa*R1y`_)2bHx7}p~JRd)_ zvJZcsV;U)0up4}10giV&Fi*fmQZ%g)d4YAc z=1leA4<>d8gkgQ?Jl2?Vbn&GZH@$WVfamC3{@{BK`mB{~|8B;|Ku60ibLE*Q{L5Re z*hzs8IJJaHJ`Q^GJ!)l{qUcv|JXi0R1U_JSnV{eU;JY7R>g-flFc*uf!KhFcufOGb zdlc^@^PiE$+bzKV0fW-_n9;AUUB1bT54iVT8~kX%=bUQ=RF2`iF}w=NTn-$fdggF( zG;&Phxpf%X(3h-koLKc0IQObfQxEt@#l?p*^8%44uI~`la~YqL64EfV6gdG|%lKK) z|E_zVBIK5a&w0p`AjgF{WCDw3O>8lL*4(-Hpe*ubRARqA0AG;i-dv&&eCxYKKxEto zdWNUd_x(3R_dj>3LXHvr^)QE+&Q|!}b+`4~~S3S86 zAA8l_oXCr!n7`)2o%06gD?cPVD+BtIU5-DpJHbOZe6z}wL7)5DSSRbUO~AJYqs@cw zc+!o?$>kH!JMdp`+0_SKgVPtr9GNcgF~NSRtYhF6?n~t_#`kTx74l$yxi`hFNPV4p z-;350tKY7xcy6~{J8l6yzv7aI!$B^b@0eZLcbC9tpLu%e`zN?x=Kd6S#30Y$Tjk|g z;KbiEN9a@;_>z`P#WwH_E6XZdRM%n7o}lpG)A!)3ImX{ti0j3}ofPT}Ty7!lIFaB4 z{l{?cXHno>-iTE_ijl~T|Mrz9yvCFCb7VS0fwwi*+Fwgj#r|+pb2DoeUO&}rD+d1I zI`e;l{o6fBLO)sPhal!C7R(CS{)1m4ZsL*e8Sr$|It3@5OHv%j6(|v!7sB=R*yS#`cL;cR zS-pNE)?H6+et`RV=y{g8JpA<1o$j+LJU{9WKI2R@bwJuPv6gk9)ZvF0A+iV%R*M#4C@KG`?>G3m1{+&_W`_kvojTAIroASivP{Ev?;JNoHEZyo-4 zpbqo9b8j^(`Y-i6O&*AO(OkiO_e;1=bGheZ3!*&f5$70>74ZL?N+FJJe4h5i%fkeJ z;9!&d#-F%f_Dnwb@KXnT;Hr%`*?`B#JEZGsp+hfvy1ghd134<=mo-YHfnR@|Ei&E! ze!|8gKJOXojQ$%L?DFsh%0Bs`x*YQpz8tuA|2TM*j`xG6;y911O+P)w`LB19W?cCV zJfe8j=t`_FE9ZgJ%i6u@(z5hC5gd=VU`MoX5qt*5dMQZ_&{H(73tEEy__WSLweYt- zB%&Vs{6#hLTnkeN%f@`@U_;W|YT)n{Yy;2RyTRj%zP{_Z89Ie8pX0}Yzc+T5I9w9K z+(b2-4HsK+ydLY~SAIfX$l!|jt*emNc>eTc66%+QxjfyXYhGlzv8(o@i#Ofh@v-fp z2I|(d9i#=_!|Z&AEJp_JuXdJj>95|zbddAF;#c0pCH1Otbum77K|^H`^l`;2OU;LW zdDD#mmw@r_-n75>R%HhVbb?WbWRCIp(5zC`mL6qt!bz?_Fw3`6@j|@zJk!6ue>fawj)bp z;Fc9F5;SUguC7Pi@v;Fs5AqPh@G1Gzb4_WEvA>^-%P7KQ;U)}1M zzJX1f1f?H3=e8?Rh^7Sh7O>1o&|p1ZVMI4@wufSP$r1F2Pj6*#1l|n|%-_1?nHVvA z=`gKG5+a7a=W}Z;(VxzmIkb123v=9e4E+}?Ooe{8qjryCUip(1E7J1NM>bk(_mM@7 zbmDuyU6;pP!QSO6H^iZjcNiB9XVxSgiMxgC@{#*q-6}ETtwVkDUz(nZ=ul{5G~NHJ zO$k+#(*o%8hdyC1JY@>KzPOS1Er0kv)gJ551}hN5LAOliY84{WGs)@4fNwSSH!sS9 zuHL4z;*7QkH92mojDL+>`a|g-J@mvW+wtW+rIqp&%oqLZ!Aa!gSAXu^&!-A~zqw9p z7jgpK`0g;VBfou*?iQ1C$Uk(9dc9ImoC-~#NEDYO2Cwr8yduEAr*+E)tdz;>xA5_; z+`xMRORw#oR-sL{YcB8Q1-@tOOOjdxUHMigvDk6E?&0^s@4mokx}{Y85qyC6z`9^{ zfaC87g}(=)NczlNoml4ol9R| zsR|Y52=p|+LciImnqT8K^y#{_3So`^VZfHU>Fz+}Csg~~vRbM@BI^q_#%U`OLvaDq zm4C97zEyI_@DTU|w{QqMvMM2R|spUQu2!_ zh4;7Rpx-U2;d~8#udDab)v(XmP?W2^Ekyn!O*R+ooDHcmZE`o zn&P>PnCs{M;jM@q>iUW^`nwf0sIXkNbi7ZN23~M7PmI7{vPczas zr8d!f;FHi9u@GD8q(~z5yzkz{f`@aO({QL1B{r@PD>Q~=D1YOz`)|{r19(#%#l;MN zhS2akmIKIdj5&~0WhP0pM?IgZ_5-ypI2XzlZX_-t-i7U!jud>HgVCn|{4}ew(>pfs zk}`?8`m*SA3Lg5dxEDI5V~vYvz(>D2W*Q-kx@GBw&hRU)-ZbNp@!t(b=;gizFR&_M z{&nZhQx-5jgCmr(Vqlh45u^uJ!7VF6#T_WF}Phnz_~qQR`kYa8*;aj!V# zYe0*y);@gmkDD@^F7D`65^wr=W&C=MsC3gl4V%@>8Y}42zOOa%hQ_4t=O5{TdGewU z=X_a_<5R2|olsWkNbjEY`d!G}MqisoHJ=0+lkhr$$&=tA<2-%$6igeDm}+oKz+G$F zkQVt|5xPOn2m5cR+d*&5_}_vHbkyFPgA0wpN4NBdwJGx8{Q0Ww$zr!7u{Q!&TYsC; zA#sPO-%h4<*W0jAd43C}el)hQRI|fe20f)J8&_ItuRORG`^T$)nh_N~0c0J>=8{ww zOf@5EgZ=+PDE7r7jfYP{XjCKW=?&!nXNNCM2!y})z_!saJ=Af|5v9+3dR!mB)8tKT7cOy4ltNy={F)mV_5_dbdp4y7GZv&knwM=_uwjnv1!W zH+fSl`*gXM67(C_&M!ou?hOo3*;E?qN)aJtBgwb76JKAp?4mOc^!Mw#n1oYy#GtcY zYud<;>?cbMg%us>V&1!iuqx;TJZBAl-FKl^jQ--f3?4M{A6tU@Db#yzD#|0kUlBHu z2e;pFq2-zT12zrYlJo1-RpHQA_XQ4$Ip{ zrTfmlxqQTlZl7X0lyB!rvnI8|XW;u7=J{m$C;+~Xp-VhWK7ORm?`K`X0=&J>@aH4= zvcFvENXg~JejUy>qb3dC_9v|e8NcxJE2+JUJK^8UcTTz&20wP4+XSy9<~`mM&n!_! zZd-zBUYMsJp39tLZ=3w!!!e5*AM~S`O>(A@g8n47t6!t_9r6cl=lknC(4RlC|Ir@_ z@Cyf@Jm{SV?rd1^()-1i^o7^H+JoJZed*A!i zL?7^sg-fK5!bdIP%{9}DJhG_vE7y9@B3HeMt$`2y_{;q32OH8nNOf68w7jk-6%^>{ ziIqcFET~wfx&*wI?Jpxg)XCF6-5Or#XKMWG=NtxpV+$Se?gOtSc=&nWYy$EyO!jI& zM*U``H)44feA%<^=g-28fMdD7%vNJAB&VX#qOVGr2QW$#Ki_$fPQ}%g|Ie3yy_sce z95ZzKdCB(r@#wGfn{zAufzGM;yNLf$A9`@^a<3TrNY(?)nNf+*PZ+x9=))IsYam&z zc7q==|1jM@3BQ2Vxr^>$13olV7P(=~I^grk+O2c(;60E3V0obKOI)iQ{0l#Ucl?rd z-v<2Omm9SC=_#l|mlk?2Ucv8e1D&)jfv0bkU7gE2;ziurhxl$nkLvq5Av&xWIdEb_ z(L-yXOMf=5ws8aU1LnFEpPdKp-t)an75Ft=kJ0a#l^2~pvBskMBd+@;O|@$9Nul>f z1cMg5DEjIh-L3aAH};PD67`eNDJ+|=_S^#?(?Ewem??^jsU+W zJ(v%SL;d`BXIW_`UMG9*&jfTziw<3kU4I(ay|&GfY2K3z%l!0?f52Q+$z90cL!O=e zgB1bD@e96XGJaPOb06r(7!x1z^H|e&b10*){LN~19P28baW;uJ5BODNW?z*&`sn@( zE7t>O`J_oQ#GOL8I(f=Bp#BBQqnzWN*8 z54J#0AEtD0h0_bnkrfMMbZmidK(_9<;7aJ^UFZ84k=Lgrwmjx;1J?0vt1<3f@I&mV z`<;pYx0JqqAC#u=k@O)$^WC*-VkC43ly8CGwB{|}~x zgj`g>e9Q`eU6WzV75L=#c^W)`NcY%In;V`K!?xX83g@jI-A8lul{MlDt=Wg556I5c zIS<`JuFQW-QwPvz-*}D1qt}DhCrFy7y@mgWqJh;vV^8!XD)X$7#ZeoSX ziC3sw{=|2Q>|Tc4MYqv-5#%WZ{Zs2W4;_$~RA;^2GB3LKs;*oax;C!1brOHaCfv4?KO zHO+Qv8-3WbaBD-RE%KSG-|s*!P@uKv)JNdqm8BZFN4EKsO5q#X4Ws(Rx1ZjS;_60u@k_w)jIkF9-)PT<#u^pZ+S>Y$r(o4Gd(-3_OP zm!ccinV4IQTO*!d`-gN?x&)E`c%qzl$P@YWab6ZVcZK=pCqx)JC#&CjuLT!g>#rf%s|@Jj40){-aiTrYe1 zkkwuUyhOh6yd&<%lJq6X|DO*eKA&j6D9oE4hwcCM5bI|v&iC6<_-KBICUApCdh_Ff zw&ejd~`wSKSG^09~<28&6yZ$43kn zCE(54Gq-$Azhorm9xWoXuF!15BDLu~AF`V+VtVurdO5FiCN-EdCFGI%RD8b)4Ltg6{)3qhx%>9} zpB3{oHO;m#u^fb-eBR^c9wliKnGl_A8dsxPj(uNOuS9>CxncFY%VLy1opp5eZhrJ9 zPvsm-mLQRgosmyC)iBr2=ZLBn<^Z0R&HVs>yU3!Nw0#odL~pmoukBn-A~NMW%Wo~C z&^^j;jA?D0)KLKm#a`Qe@fmaC(LmEd$JF(L7Nu`#I&!{Gi$*s}lq|l1e)KXojVLSl`hA&O7@@CD=o-%*JPbXyl8Bn( zYY`G@>%3mpEkf>(^2xLVx_CWayXLL%3rGw8`MDW5o}=?98-qLzsPrnOc}bId9=Cbu zX5gf&150lHlBPE$)r01T(O0cevp(7iygc-}XhubjO7wXKECXanXFX5nFA38_m3SY#y>bue7c)#CSKMqF9kX37gh-ADxmAwA9^ZafliWq&w{3!wR^!DXM ztPN2lwuQlR1qpd#D9SMzW&{tR_bPSu?$y*J6CExkN+W@1>{FJ^t>*7o)^8P}*juo$jZ#=aAzc=f&se6QBy}J_h6uG{o)9K2X z@67ggtXzg3OV4k7G$KJVXQX-OTaou*mMvzSqDqs>78{}}p(hwu*JiW8T)GeOo?jCc z$nn5a>rdCjsZ!B)#l(6#Qba5N_g>KP3ty(D>WVJo2*9*RpJ_oHd1@Jd-Ozx;oUqw!!Qlm%( zvn08%KXyb9I*eM5oCk3!;H#t-WpSp66T{IrJIF8HcF<;VN?vNH zEzkqM%Qen8B&H%i@4`VsNHn-8ThvW ziT(2B$TOJQS~;}_yoa)w(vpADB=~Dgaao-T4Vqs$t(~h*o$m_N_)S$QVP5~`ZEwsS zINL8&1z(JnzxXGPZh7Koymm^=UYwflSO?dM%OX#ti_8Vz>ZHwZeb5Vv&xCN?K| z;G7M@F{e~0D>o=s>5(x#wLJOsUH>-n=A6Daux$q!a=f2j=Yaj8z~GzWpjUaDV%@!*6~e7p8+HqiqlJP+O@zya3B+PM4rJ4(?#$T54C)K2>h%tKbOvX z3jKdg*>UOfz7*%!zr$b{{pIXC`70DKSLwNUw$eohs{N~(r)azpe!1k|BG8A3EVawL zH#}=3@#awOAw_|vhx=kPmP)K@`VsZs`Idkv`BfGC`WS73=a1$`o}z7JE9k6z{HQ%8 z8(wAP*SDvXr2o9%(N^)wWA-gW1CdlD)9+}T`F1-Oz}xc zFXMVb=upi`_mHO{wCUgUtI$6|wC5NrWBmX7%S$U;!h}6(--Aew*e5P@OjRwdH_Dk_ z^r?EC5_TtdeV&{F^hIiw?xa-Cpl)#wEq`4%o+*7rl|HMc=8%q^MW{`cdzf-}hcXzS4!06Wr)S2neM5-UENo zwa$`*Z<80j$o1C_~tUU&7N4w`g!)$+fv;>yX0$s zY^hU|zjOYe1D$ixliB{sxxoq+{n|9cV*5$a<@A(Vx$qp zv}qy+zBLnt9s4oo6gm-W#&kVeVA$6ZqD-{0ex20Lq;(V}^DsJB(u|@`mfNTv*i4#5 zG4JD$OW4n%bL>g18=VmQB*pR%{jfg%)yGYIY1Yl*AuD0N(?h=|dFZ%#4zrp|gAdpm z_LBY2E9f3~Ux`dMK>s#pn}BQ)=Joo1N_poE9r&Ep86W5fsTbi(Nvtd>De<8L&D@IZOg@yYnP-3H z8sw*!Jq0A)25~lKI>Ke9Uj!Rohzi?THf-ax3PviSwFq#u!s$-Bj10?wXp z=RbqL@p93-@fz#Ei^ta+j~h z-e~BX7krME0uLS9JSf};-Eei{5BL4(|6i-zqNAV+eR}3lz*F!I`np`qA;2-W%Zx5Z z%pzw-;-k(A>`PxS9QpC14Y>hc%q-Cv!0B?I*7HUJF9|p9VHL$md|pTc0aE zICur??03uE5jNAUP^JB zJ^1tTM;2Nio_L{-+_)`!8*(p7SH^_mdzFnm5PXC6Je7RIaS0Fbzp|fwRU7!Wh|QLl zPkE6L6T8Dp@CLb2y&K=6FOQI6#v3@kqoI#VSFD4c$2lf-@-p-_*Rp%KY(2?yLwmhp zICB2JMay+t0q=%Nwx=X{(19@jkHXM#J@VeyRzKxIJDj?{iGtVVJ2&sZCIkH6b-1?< zyoAWr-CBR}{`E<#3>?^TpQRRYeF2WG8VmjNO$c-C&aB_LA^q3|8rWm z)Pr(&bh51jKVQ3r`Y#Q+Q`M=@%8euL&>6M;3<1v=HqoUVH49zD_n6v&eAFKzf<|kf zc~Ed<(eI=vclvwnMeyi756qVgWp)A{7J8qP|9`yIHSK)e@{>CiXtw6RVs@mgxY|$a zFIkfvzf$}P4qK`Y?esOCcOu@SY+^iySid4VZyk3+_n)tm(Q5%7u2_jT7`*y3dC?!Q zaU3r0b8Rf(M`yP^bYWf#Ud!(W-$~q8mu%-u+i|~f)Kp6fVSR+(+Md>R567LtB0qBt z>to^P%LZIezXspOCvYAQE;OAo|KvgXMaCNDIA8ziAGdo6ezUXT${AlgA7^-1XETg= zQq*-Voior)9H`uRVz2@HNx#Og56ze-@!mU}r_7rwn9?ls8R1`B)VPD$9sc}ZmIl6| zSa;9kEtE~MzprBX*oXR|_Tk3!nU&rY*4XCN>j|Ag{_eQ;lXxzFHT>Q%>4|;sdHXol z%^}wfZxw*^ABR<&%YH(iKV}_g>SoNX^uBt$*#>iiELR0abc0vx?;2g2gt?kQudIp| zA!pTZPjE5^d`F+|pV$GOW_QQg^n_95|JyKnGQPw8Eg*Eep$PqQmORP#;04;6N=LqQ zLRWEvQTp#X)R#r4PW9pX=4d{wioxgB>r0%Q3xb}}@b1lBoTz6ddqze+c+-_cK7nn} zFJ2S+Rp=D~zHq6aU4}4t-}kIsS3A7WPc%I#4_>Xs_R-cx^r<%e-LpI#`;^~bC$k=$ zpC~`;=596Qr0`|ec=4f5S{?a74EKlC)#GJpcF@l((pcL89>MHKUuO z>7Vwm`Di?!^e0R*?!WS;#hI%vx%%UIB^ja1jpM(W`17$H_!Vc5;WqE(zQo|V=xMtf z{9>l9$)R__ca%8@diO!^(qU7tLybb$MQ||Q04|#AWlzmgq^QLi<7Ohz_4Cx&JoVzI0cno# z?bCuT9C1AC3iFP^BrgoSK)a@R=V!USGRdj6_WRb)qzd;1B5c ziZQ5eZ%~|j{I7!0{8%$pU+({0N!)D^hm=7{nW!ribogVhhA*^ zs32aGcr@%UKG9Yq$Cp*!$Lf%?cS85du%9&P+{m=biGknx=g@3jm?U%srPiz7|3{%K zZa+KwTZobw{DO9LqR*e$YWMWMG6iQ=7IZp5S8W!myLJcW=J_4iwhVYYN;>9(PcI6+ z8P%vUVO1(jf3~f1g)~))6MO4!%pIs=ue>*d;||w-rvF)jbYAPZ=R@Z{d!?4&Pe+B4 zxhx7_)+^J1>}Q)?QAL`1(NN3 zdNaZNwqh^v*>)z~>pUVj73RAlO=K6XXNHT4_n-2jGXutd3vno z3go`l`J%78C^dEJoVA)0#k{;bxAa|QscFQPy+KQ!LJy@M2|fZIz)|;QBmDiL-;aua zea1^oMV~FJTYno_?dAA3!m^T*i~8JK%auq!wemym8Q|c}O?L(tAwQmBTyD7nbPEE* zLkEzrIJNO+Pe+nC75bLEZRM4v^=D6X-(I3dD(B4`MuoMg*d*n$xi#_|Br+o>Ly(j3 zSF|+B0X$Ipx|x7i$dBM>-xKX1M}0{gVZJADzQi9troYI^n=tobd?ZTQ0s%>?OEFJC z#`1IE7iHouzPZ|3OPy%v_K#WmnxwHbonfj%gE*NZ+SO|?_b#@Pg||kD{EZ&8JZ4rR zmC?_gfrnL)>u_u5x5v<>aE-|8zCo@Z^Q-I9PjKA%PAOgrqEwQvD6nW5bSFAvA5M0u zQTa`eoUc|IG#LCkHSC}o^7%IJ&A$p>=x5mn-$`josC_K;CXk0zY+Bh{`-Ca#r%)#I zS1Ee1l|A$gvkG}%IOmj|s7iw~T%uFQ)M!|JTg1GjD*RMiYvLy`$Kk<8u25I3w}r)Egp_hqA#radHn&IGQ~HK4d`n!BRsp;%9#Jq1H};xR-=3 z={3;6yo#$I899+>S&+D=)dot@gc#BH!Uv4LS;iCw&x$NkGIfTt6 zA-k+Gx8Sw;hYL2CD|wASM@K+{+;8>;an1{oh1HMUKN@9-yJe!h$_4AJ{SdF^)M{cF zzw9j%qfT7u@h5^9H_{>J2p`{i2lx!ylQJCLY2Lm>bOW0=@e2N!xC1>^oA|RegO$Mb zkM#{dG~hWKF}rRzKlTf=Rmc4`k@xa*-9a7b1g=IhM`kvH-#iq(;~nrs)YNz558Hfc zU2~ki*-z*KS`rm|(f=x!5_)Sh`G39e$>pAVF)!}=;V-vEprv>v(HT+DyJLl4qar&7kx z+!XchtEQqLe^arR;+`$0OPb_Y&i0$z%TZ!ztHya-Gt!+-Vn4LVnwBU3@;)YJNAYX< z1rHsup}P+!57=5*l4iMA|N6SMq?o!=w(R6}3)&k{UAef` zoW4jLdoyjcjhvROojiHWf#ejIwI1Yxj=A)_L{m0!$I4`H#%$yUx7ePqxEe(Lk7a#* z3wP4CO#|neyLM9c@$b8EEKG%bq~Lzsfl+6Z?+~|F!go*w=z$ zn){3|!+I{mJb{F5KBuNpe@WRt(X!e=TQWr+rxj|Ech!yaUQUatvSaWE+x`!CqdtvG zGPJLx5-)k(Z!-$yCh;ezo?V-=#5^s(v>MWdXREtyju3r4EK;S-YXUuZtx=Vq85Ljd zsZ7X5?!)efJ*hH|)Vwy$ZP96W3W+(kN*(pnYPnt8$_kO&yM15H??mXjlbyd00l)pH z@-%x5>c)2W+P5}-(7SwVI+vAWisXE%GPL&-ltbd4l`_3+>sEL_aFiyX`Rg5jk<+1n*st@uS##)@N(r=c!8_TsV!K zK{kiaCo>2?%a+)xLRTooe)n`1dpU zU(jO*XPZj^MfU0P3`7P{uyVFrn{fbrT|D~x$bEmBXB16&3ZLQ`&4H#L;Hi9-m3x!D zz)Ki;2e$wx&n#AFI*;ds*&>x7ZbSIi|8e4?7kTGP9_Vs_&%O6`nt%j! z0oOj|HbJjo;kkVOJ$3xvkt=P*KKPya)?HFZAFWEf>a~KlC$aZcX1oE8h}_rgIl3Qt zrHd;pxNts|`<{rpbNW)P5YN-#2jDdm4wW(b`p_At)5i@%p@Yrj2(5;nicd27kpr_I zxl8Rg%X^R9z?}t>-`#!5G_CrExIOAWx34Y1Y`(-R$Gke_3;3GJfb4oDKlp?{*Zhh1 zLw=@|_;>h1`8z@{1~mcy3vYHv<@Be(0~>^X9DIIBDp{s9A*jrzZ z^HEfOLlC;t?xmbn^9qKN0; z9L3rJbrlX=w}h)|tJIJ?e^mG6@CN9wliZm~Y=O&z@((QEjq{!&AX)@m|8@H7+$VkP z6OvbsalJyWTyS~DSP%NvYt$B1#KVu#-x{tb3tnM^71Ig)zI!}pIBF~AmwgcHpUVI~ zIpHx99}8WQ(4A|XXL0?F{-iiP@S=|YW|S2MJ*o9t-SVvEc%AA2@6xT{k0K*A|4E~7 zE@9E-0~}qq_1crB)yTi&JXF5Z5q-i*{b#y_Jc04}xVN5|OVFcn{{M3gxPAq3JptYm z(OxWkM#7Vl-740n0EecqIu$Z|dyv)=+qavMKmXs$`9+-KXB*2gS zz_E(s)#$%RNga9n+W@%vn5Uc&@Z5UF)&BSQcoLV+5m9A)PyHwHac_Vp+T$(eAK!s5 zV)NgIZCJNoWZ5%ptgqPWS(2HMfH!1}&SMfB<>7f76uVuBC8-}hVd**NEKj32SDXtDtQyhPj z1-n>}2dzBr^{nx+JMHTdNOpoBPqgCpg)f}YrB#?TEF|E3*?KG4uEn}+vyFKcjhs-{ z;Dax*5BIH15A}6JE?{V_Me&BsTEPF7OH=Lmz(*w>wf)mejTfVm7oS zEI;JKZtQDnN3v~Qx0CPFRl4j1zT<2G*ER6N`JXSwNSXRlOOls$x-)VWKHbXEEcPIl zU5Zgb;Aafk_jXI%@T8|D>=&bf_osa(8Oq^XQlH*kT`%lGQt!P>UaSSq-*~Fj7rCeJ zj#ef5U|)YV`ciy&gB$g1owVk%b|+V@!xf1;;Y+F=d9!;O{dBDZ=Q_`N5yKOv@WEq1br3vjhgE>WzpAG;5?Xh-<#6uv-2TG;OwlQr5#S_ z-!J-p#YGZwhaQO^aduVS3ngFfN(_OLqm zO9TcUPq>3W(AL*+`mB%ngi0(LPw;#&{v4#zC+bal=dyCX6?>5|TjxI`oR|ChXmUgE z6Yy2jb!{2u58n4LzVr`uX5_!v_x#AoAN8?#gt|m#?Z2ba*f$Tk>T$OOf}h!Rw{0pN z{UJtCw~&?KQB<$irUFMxEPJZ+Lk#mw+g6E)ZU=t%;jI*B_MwCm!K027=x_X0b8&(W z_2RbEhFhDl57e`({;2{k*N$)Z*yK%{U)u1??eeCN&IJe4BEcWz7FG-6xI!N(D?I7O z`D$m}_652IE>>-J34Fd%#igO}P;aV9jn{r84L)Hc=8O3t<{~r3vor6(zQj3bY4QjA zK8ILse}ZcL6;C!q2oLj!M z-mm`LR@C32-+G0;6Wxhle6;ZKa(jy1@0Z1xVoGBv`p^36WQc()>gC)7LlXnvt6huk zJ~s-jXh>02M}IoZ^7cPtJ&G!blbh9EOFWJLTBd;K3+HrxuDS&rm#yL_6D&egLhFtU zlt>bTb!F8=q$-uH+@0EgK#QE`YT3^-BTsC#j@-;XB}(6z&Gb43_)enfT>l>#=;;e` z_F>-G|0ufdc&hp^E_-EVC42Aem3R`eviEjvsZ^AZQHUaihA6UELXwe43MC_wlr4LP zjHvf{|MF4ya-4h4@BE(cjP&9Q^P)kYz@hJr7q@tz{O!!)_`{e7Aiepf?6@>MxL2U_ z9(&wE z9sMWTpRND)3L`LbfjPuE!IabBQO2B+{{K@0&2c)TkOk2pMU>$ z=n3>|dt8z9Y6x<^z^XEha1zVgFm9 zzuOZ(%)3{VsNi?UenS&B@hQ}C2UcJH?ub72LLS9;xySi|XztRN-v?Nr{9ld)$#W(k z((^NN6*>sr2}de(<n#UWJr*}12ZA~Id{ecfN~~Za+wVI zs!t`#@rYN%)zWvSU@lyi*_9oA0U?+%X-NMSC<1Ut%Eo<760%}QomDN{@r98OHj`@hs zd!)uWAt0dR;vG-ahlJb}tQNq0!h1h|?_5BC1gqD9#mk4G#_2}$?^D>5DD5wFN9L55MO}cQ_IP~- z_5{-FCb6uuLjV`edZ`8KHfW>x&$nW}<5$)KR}Dc}sWOzB{D3+L{L2}lQ4I*0|_da*2!bO3nT%X*`K-V?-Ypbpk%u!#8+#JNdU0rR#72KbCd1=#8 zZ{z&W%T@RO9_pVn=FofC0fFFr_8a})HGD# zn;Xvg<4f-oZ=+v}vG9I{9Ok2n{24qr<^kEScMs1NBR<`2WV3<$%%FHx$1darz5nd5 z=*NAtmia-t1FYU~F=exz9(~5We+GtTjZyzbR~{op;|ThVC1cE^rm!)i+sH3?3U50rht6OTo5;=dFw-t+oQ6(`uOqMvIFr!DDItks{&_ z7EgX3IwPVB9q;u>lO)XGQf2mZ|501GrD{z7J;)UliQW6wTTv%>d?zv2&j-G&70}mU z{y%?EfMmrte;`r6&sj%;^M8AtywEd0a44%Qmcse%m~AMXWd`P+XANzB33P(dn*&By zum_-A>G@w0BGiXj{`QSU9_BZ7%D&Zd^t}!l^-9p<^QPyLs2(%&mc!0p-#o>9XW7dR zq?M>&{X(k|Am9PVshzLB#OLhA`m`C&BdEV4p&AIejQjHNqdY%x|4`?WuO+tQ3UX}? z+p{$;Kuq(IPtV>N&il1KsQ&H%wCS9+_1CR|z3tkFY_2(MTMTU!XPIH%;W+h`ddZ0k ziJL^}hV3uSkbyd7=z6}B2;u|Wo=aa8A@*2d5tE??I4QioV3ef^f(A`8!)5>%-r5>D zm;h{dQ=1mE=t7uzbf(8Xb0Er^VjbM)00%O8qMC7k|9O9BcR2FKj{3Z5>v+9qZR=EA zp2z2Uwah{`&h?Yr5q)gmk)Kj#O!|bpi>0ULoB{5~G^*~9m9Ao+mx*drTd6x7;k+kD zas}t0#K62#oLeiC$-fh$-m#;8Us8K8>IAFSH9}UAPYw*?8^*cv#2F3don6Fn>Uaj% zhY&Y9+o;)rdK=BusAet12|A-reo{sKKfe-#1 z0frTr3vl4ac{3YdCZGY)2IeqXzWjI_dFxlY4cEnRAG&o+N#Hxqp;Mw}|J=S1 zfTT)4!tEaNvg+lJp5eT+7n~VRgLCjh9RS9SFqP(y{KOXnSo`!xsRkjPL^Nx(Qqpw14t;w6`5(aR)?d2hN+_D$_I>T>Uzd?_fZ!u4Vz+Nuim6OjeUuQL(94dICGJAvo-=vH0H-S>HOEU6eb(=v9wDNmo>XV;ibB*9|X)R`I8^Z--tPuBQ_y-4iG@x)nO!z zga9&84103fZeaYuME(});wLiJ9GsevuRmz+!-@F8FUlYDMjizC9Ibxr*CgudpZg|~ z2_haMUyl-@Kjn{+x4byc?ee5@Ad{B~u zdH|_xdEKTpJZ^vUr~M8%_t!{zscN{vV?)($6Vw4Dcrl!aWJ29T2_txNqVFBTB?jvV za8f14^miHo)ELgzUl73OUHgxcw3CPzPc9i>vvI>-%7p9f;h0lO?O$b6i@Ab~Hly?A z?l93uQA+BJI8E2bq!)HB_}ob8c_-%vn<^wt*AQ3KsIjEH(TVx-e|2B|)j)mvsLZB~ zk3EdPF*y@YWeLQJ+QAYI=0GSpav~zq8al_;GUZHMVUpc)j~n@8v)jC{_RipZO0T8Q zh&gSp9V5@Tu^^zPkCxmGt3!gf^}i`oD*bKTZJCF;|%XpC7itou9ySFLg3m#pImKP z`%Eof4>AVJi^T-!Q#BbQjd26sPua5;!frs>7{B!`4|{_?{<6FjfclRK)rBC$KV^q@ z`o7|Q5b%?uX_X4`(B(gYrz%hv)8W16#EU(D@2md2MZRB(Qoo=8@o#Gf)9yETKNYV; z+x$Y@$48ZNepZSDicd0O$16lKQ{P)sgqVe{RJOb&5eJ zdgwRo@w_UfxP&7P(UN|PSTGiIjQHxENKt?ED0BGOs}AgSwf$8vjO*K+ZaWbv9!E1< zY=>Yw;=@L>ZNvDzd~~R6WCi+Y%tfvb<8ySHFILVB*Du$7={ExrN7Q_^)Vhhf1CiiQ zg_o=_-+7+H*|V9zlNsS8*592M@^N>$dYrL_THl zw~7&kC#dQvG%<2}f?!Lxg**P-pbxbEhVmZJbhnD9qSgakgsdEdIsSbUz=v~P?u+RyZwUz2U9r*i z6#`e=quJ|Uk>BT-;JT-ZbM?=)O5suD$35d@iO`Q-lW!BSUM>wa^Zz_*eqmqx--#Ui z3)qL3mzBS0fUj4-UGp5jXZPxret|rF8)utqmNp-Z5_jcqP+(5s?zLM%d#DG<3P`?n zUlJra3O`w+Zkjn}MnK0v4*c`RQrzF8p5Xl{Rbia_;Y*mW(Jb=$x^x!h$)Zp=B|Ca@ z2=f7|=(b-XZyYckYc`M4S03uT6_}sfvZ*#>yd-ZsJDMJ zv-ph@^ek8B3!WnnTpAjcDJ%(19Yd!$wy-xZYU1eKSzchDQI@%Vix+01hYuZkDg?Gp zn;Gq+=s?L8;_sI zoD0e8FW4JD^e^C<9qJea%nt7hItUM@#ZGspqEF%?XBugaBt&jSh|npZUVenG-@pp> z{?6miP1t$B_0LnS5N$?is-Y{sqsIZ1CvV&(ZWVz^SsgwP6*&;hUL@0M$9#dmW|tDA zP^bR+#njbh)VoKd$?LD+=SCZM_+bb7G+eIUDP%_ffA)HK#u(;7RMF=f86Sq*fupR& zx~Ma_C9v67CIt)kXKiS|$Uy>g`r{*Xm=o!KD&zBYc~Ce1Q2Y>mBr3F*)Sg|F!d^Ws z=1OjHaEwp&o46wjj%BC!$dj<=&t!&Dcu*chorzW_@p>7ZN--Zv!3XaG@oXTdo2A;P8>8V&naqN#2OpaOKLmcGh z)U!s^Aw)*Jw2+s>`F?3_=riU%HmwRtEmNZoA$I)L@3$flX*EBwmM8_HFEu>QZArrD z{jSckyNGw3%%WSv{D77D!RgWiqKK!3n@4i9VvglMxz#1q(|mYkTHlGdk6FxbFHO8Z zqjG<2rq4EJ<=3QMH)nz-LI}@ibso4)vap;U#sh`3h6`URd11iR+w`ji9}pE~uwxO_$?plN*^@Pt@Bd%-=!gWv zaUMbeSwGACmfe`Va2Ucsm^_R}hD$=oBX($LG^>pIRXP-s%F;sN^Z+ zHFGwOR##W-+=ho8KF+g`Tj4DvFz)#?{sb=t#(Tww6EBgXLSRxCAd&=F`#cN*<( zV}yaL3w?Zt8Jmc5U?N*pW`^K|-eXh8_mwOrZ=^f?&i9k}z=8jdw> zDlyGkfho`IlYOk%2jDj$NmH*4(z2n%^&>|itf|~CXX`k0B>4V~nli_ABkrS&l{37H zsWvQK_JBwxfn~R53A7q@b5UR zUr#A@xT*yjYW*&3e@k`2F4=#=7sxAI|avU7mdswy6IOuGNeq%Xb60mo#O)MowV=H-;`yjHo+ATRa#S3=_tB%EA5CH9y7Um$F@<>f}w~ zJU=JQUDz;G?6OCmu{yHkFwXPEDw_?Z7MKIJKiTrMDfo9WURy3P0SOPXQyq8AVDklc z(RuVu9@p~dP>!&Lwa~+p5{K;JywUS-G4{4FN1%?AEw_QbeubxGA@;!ZQsnfv$4>D0 z)?h=>)Sil4l<`mm3Vk=>Gy3Y-kHIq1ReA)O{qg1f6HsT zTy+Q{dm-2T9&0#zzx5K94T0%2O+!?SHHZ@r@hJzmfJBADr8W)pwabf&`$=G*&#WZP z^-0XXq@9ge#`)iE(`|nz`WpLgf9O@keKibI95%+eV_@_Cy)x9zobo-L$h{AHl8du6 z9!8*l{!_}U$!ZTE8qZ~Wr-lBRzovgpqdmdIB+c*KH2P7m>2BnpuRM2BM~p%ZbBt?W zbkrmNe=jr4{l)<1Igb8G71%{R|GzwS+d}NmU}JrU?SCM?rAnSOhrRSqUPMc~;JjZ< z|H8D{8#F7+Dmw9gtG|}N&tx5YNpW)#S z&aJ+8Xk?Gzb$nAiw_nm7$ka4wnP1|5wPbfa^szg*_GXvZRp6ZG(WC5#bKX6p)W?K; zT#r5q4)&oA`;KR%1UJrADyurWXYqXxF1hU~;?JLJC~prD#JSVijnDin&TCeuHGAce z*A2TM>E4QSbFFnT73ObC-#0ZcL`v(q>Co<3%vTuJy^(e!7xT08j43TYfms}nl!u;d83v$v*lFvo=K4f{{r zk4qPyIT>=t9e&>BO4Y)3X5D^_8*q+j=3N;~MBZQb`M+;e%kI!b-WRitxH4156^$ev zTz9(E1Wx23-yQYf!#wiOln?y}E^4C=!#eq_12d#J1b)O3L?8Q*{QQ)O2u z@{?I%XYaY;@n}hW<5ENafPcU(4}H|V+ZVhmAa;k)LiHQGh`$LkN;bYivA{5!smmvRf$u$!F0kiyB@i>3y7Ml&qnV`=-o83ATb=SIADvB?o{+4vLvuFAy z@|)HnynmJPIP>VpwagJ8@Em>Nfv@*p(mz+Af_ys#<%mEq0o>nZ|IovEccW-`L>Kg*oZk_aO!ueRXp~t5d=Qe{~x1KDVrv?njQ_}b2oX@mW$G%H| zl4asYt>*YVEVYWx#`!vzicgmf@et^)|L(1cc?f~b$Av$k-k-^#J6{g<0~bDJiKrnj z-pRC(g!cuJH6uO6IlQj*oYu8ar(7!iY$AgKa~-L3hxg%JuB20L(1AYuyo1lQLlGBv z^};79BS4P*N97xm_`FVq`GmQcsSJn@;t z6!DM26S>=}=vQNM4aqlk0TwYC26^-g)IB}c?1MTYiC^V?k%+gRjVGR|`h~p!C%W1m zxm~K95J_GI`*D8=Iv#CI$4x~y%04E z31?(o;bLFvdt)vq==~*T`%lIhl;)K{rtXCQz5{ljd%6Zm}-3N-obgg9zuL$H$z@c)|JTWNHK zRhFww6{wr2Tn!9k@OA^XWJBJn1K68NC^+3W;0&&_7sH94IfKKi{-8}}{CoeRq zo5nHe1IW+3{Mjju`0dwi&hnFZ{Pjh<1Vb*=;r;opeFX7=)~mb3{-}R?caoH%jvRe& zW^J*@H4w+QDyt{M=e?c)!Aoxz*E5BMN`d#Nt5VFoZubL^Yhpo!1^FCll6p3_NPG@H z>9SizyuFx3d*r4G@z0I^S@MG^xt;jG66C{e!ml6e!M?e6VfT{D zTtH-7^hL7=bJ!la@p~DGLpOobX|fFG-1xn6WoCX@xn4z0HZ2B5r>~y>bPsdcR8BCC zD5H+Rct77kQtU;4|GNCx7W&MiK8we5U=LdXZ)&s-^2Heq3*UbT!ODf<^K4EMz)1#9 zl=m^`zo34ilu{Aa6O2ma3RS=(=Fh-4S{0~ibqc=~hyHYOmp*43X$aQ3ducBlbp~P0 z+yu;R*Nfg5JmQZ!Zo9!Brqk#%n5o+SGllxkHy7if@$ON=ZS}-!E1Cv33DDhxhnDwwXV2t#B}(1ovi*iR>*P5c<= zf1=GRZ-r$=q2`0wT;(;)v-_BHUL}hcBGZV^86LqNha-m>v2z7@MUJpNL_Y$9==N>@ zLQxpF?N@HwAqYh8I?^KVVXr|>+{xh-HVBY^*Y7%a2nHH{6i=S#2R+@vB8e_MKYQHm z{x>)wE}*knL;(E=a}^Id6S=^(T(Vy=1n1@pih+HjI7eTO`SX2O4veyP^wuxPgC6zI zb_LXrklL@C3lAuPsP>*xmaYkRTp=ke^=}qHW3N*P3O3Xr4DaxL6o&UwNdYzaj)g zx5!_0$zYDa%a|X$6q2Al9~Z_GhrWS@uH-@j>P9xq$HefsBA?D{RpIrRMVZ~|Xe0%$ zcWyy!4&JxrE|$T^G5@is>FJsM0zf2l{M*w)7GQU-`o#a39|mM+mt4{BK}058vg9ZL zO@X07i5kQ(N;LWNkR?0%yySlycyht$!(r}B(LSRTL#X6A&@nV!KAD zX$-EO%Wqp1fdvW@3Wc2$F!?aK>G@e(V4cXRZ^8Y6^zwlF&r6tJJx7viZ0Q9e>!Qc+ zk)vb>QLpShPTqlfrNQ-5#vQodIjxhIDl#JAUJCLHP3FG)<04>j%XvEMjvQo=^ zJ$iw-$#voGIa4{2rUh!A%>`kOrm=XHBXp&bP&R&{XT$jfFv#iDLCr9?{{``h=} zZ}xWDQXQXTIUP5Ng^Ii}uQ%pM);HwmwnTMG4x*p7Hub1ftQ-89vGSlCwF25R$HYKL z2c|Dltf<2=c%e{t?DRoHc#&Ue_&LuC{yNY-D`#-QE3=oye9Il8e$eEJ<9VRll%AvW zMV?>$B~uf%KX829+~-4j8lo@y+@K~u1*?^e9JIDxsAv8%@%BCX7jGu+KUd)dfw#}U z|DP|{{Q2EM5P5_Acr@3LxWj&F&Tc2v-_>W&NpfuB^VH5tD~17c8@_~7Cfq_^Y?A7{ zHS$UtmFjki6PTM*@aXL3FWkrTPm6D*VBQ^8a~k0D^H^g}Y|SIoH}-Sqtd_Vy*K@uG zX>WVbnO&mq?VxT^Ck1Rnd^YM8^N|fX-W>;NwAKcBwIOT2K-HZ zu_0!b@U!p9I^m%$tWSPY|14+^c6@!qr($j4Ta=F#$paf;m3WrsuxAI-3rqg=Q%=C} z@3~q9iz|c&bQaL zjtA4Su)p{A{A?u7 z-*l&?YQGJl?$7xc7(PM0uHwpC`!MoWJQX~eXRt?uq0o1c1O3@WG@N!p-q_nc^+fEp z7l@vHl(zE}`GkeXe#23oKo|}frMiK<{wIA(k5`!cGhr1%+lKz}sV)L@2$t-D>p3(Dj~uSg^BY(AU4W0Zk;@O!6HBi1n&@UB&&+7NzCf75p!a{z^}Mn%Q_ zM7}u4Zp*(O`vW8$^9%aCL8gt`5Ouzv}qm z&M6=G{Pr%x7WP{mA@;tQWbFgNQ%p7Xs9U-Egr=ct+XqUeF4}(c$9ccqK_$b`7YfU> zYfg;$z|7pi@r%*OYeX3YHZl4D=jd=g$+kCSb#6L@rDDE8s(p6;Djv7hUC(2evENBa zXH?x7^W>Cx=DnIxcf9f7$H4;xs18vlp20aG_{&}EZt!E z3^TDc@~Y9l+7_yCPDxm#9dP|d0Aod2V@c$*RT3v<7dDZ{CCju3k4FExl8|;AANIWOj0@m%Z7xM1kI4AUDj4ihQySRZms*xEDQvCny4|$Xv0_b=8 z<)@}%?ghn{%54v#4&#Zhy6ku4@2|$auOT1ATmUzrlBE}3urfNE4z<`{^`6#&q0|$i zrx#@_n*QgLvifZYJ>k|v6_!FC)P+ze?*EN`D^7pk_aDnV;a^a45nz5x$G_LkkJG)N zqNZ1gzQ+q}X$8Wq5l8CqXDFS2s>i=(qIVt z0oV$%q$yB`;kvRKhWr2QC+)^xkr(`@I7M`b1${vu81FmddHuuOBP972`M}KAE(`d+ z?>i0y^LT&k6zn~Tz}MZXKCX2c&+nP}6PazUIM=rGul_4WUjG@R>wY~C;AQOW%hbi= zSlIeTlZrm!vR7w5J7B*6>~Q4BBc9{y_u2<>i8_wv3TiXt?LV`6e|`7AZuo9NGJcM_ z5to&nY!P25>#Qe1TxWcK>E;hg)G<@=JCEXAoUN4P9)&o+}U&korKBTPSSZ$>wnW>$D7DGDI99d4RU0I}rWOu<<(|=l=l< z6`=wAIXh&5W%BFz{IwMN5rW6f{dwRCM?B(9$+tRdEAYI%e8!`Tc&v(1;l3xBR941`fM0Yn853@ru`_7bS|DBM~{&=ICqs9FDX66d4F{FcuVL%!~?vt z*iYiWCj~JRGS47>z%UkUpo*U}Nx)D8;vV6d!Ui&=_;a)G*Sqzj&-@P8_y*!7gbu0e z%a^dyjJgz-!mGI=-~NUI9tZNR*61#pysT^ zo{vC3GN;l2H#p{z^Wf}|8%!yA{{ejcVr0+0nGdL!r#Z`6T78N^^S=$+%(Em4Mo!adJAKH~2?a@~z{#kW|{;>=6_vYs42)V#5Q^JtcunRm) ziuD(3bpi6LwvL>nE+D`-Ff#bS2|mZ)i>4iMgsfjFmpu}lK*mcw(QVfmnC5&ve{;El z5BHmE3;M3m5p?}^S%5PPJXM%u9L1c%mljDS$&S$EYTRAO>IBDLZi{PWIYV37hl}0r zu0U4!vCOa26?DYt#A|5~hv^|-iHmasu?eo{zW90FVEW!P(?x*$wO!92BffnrNxdQL_nB?BNq#DSuCodH=r^^%7Bk@wnAelcEQG32782!e+?F-W^H0P@68_IItbV^1e)cNnxEkcCQ~kfMjIOTF zK-~S8`Khq)s8bl%y5BQ{xyN_SDm5*c%^=tPrcCV>b4Y`IDlxS zT1&c+4TvtidDLLQ1-JbT!o_x30oq!u@3x_yz4>6n&mYJumQ|d6wS~Iou{4)@R!+Em zl4m~S6+djHHI;6OVlVuwj;!8Yeke@;aQ*@#FA(*SW3jv_c%0}PH~xilkeh9TKcyUK zyIipoO28cW?KbmGFIfm%V3L2Kjr_0Yn9a~-)WaXubv~7a`D;cF`9-718$Xog5j%kW zZbg=~V%v&9IahJ@lcq9M-H)NPAB0@Y zB>yJ|W zrqKkS2n1V&3Fm+q%xJ7qsw7|zpsnc*y%#uNXO?^4Iw$~zv{dQYnE#eFB_6TKBLy?= z2laF-q@n3Fk-~X#^hFS~UtMMqh1<(79v(*j_sXi$aoP>k4~Un1xEvr3k$1)$JM<)h zvOSlwvJH7|=3O1~bqN@ibMLT=L0l(fii7_mH_TiZq1##F1(kt$pYm!UXltK1PaVUL z?{n1IKPLiB@93GXCU8R&HNy+yJDA6y#>Xo(k2?Cis}3Ucs2|wp5<4%1xC!M-8Pzv= z=v&FsKmG>$8;y>Jxpm=rnN==%N`{}8c(DD4XV{}x9s7JiUIeyYmK;j>pGWsR%{EAa zb9GJzXVw+eAs9sY1$WD!f4Ike<*OWI`5F_YO2~mUZ}03FAL>(1DSKZ%DS`b3TSJGK z#G%c>zj?`33ESqFFNs2|gEJ(wI%n>ssy>)6O)55j)F zrq?%?V#=P%H}MW%<_gspYm%#u7xDazeG`Q)-oFzKq0+9EzEc_f`v-(ed9WXE?&TC` z{5KoK`Ty``Bp8BV{!He331vuLyd-b%QyI3GJ3d)u8e!-_&`U>kd*IL|Z>=Ok{%FD> zaZnWJp|vQ71L(6&t18)KL;fvzet6hk7xlf0Og`r1n0rp;tjWe{gSp2uLhOkrz-?&d zn;eH0FqQl=UNklYsR#G7hQq9}mpkccj*=^UVAQ^P7UxAOeyX6|%Ra!>+`#f|+7EoG zj(*p4_J^Dvmvbahr-AR_q7;QE_Wy|<2|J&UIL%PZga8ftAG2kN!i$`NxH@@eiQX9| z%?&^Lm!h9BDdVyGQPl0}DLg77LVeoP%-r{+_;-&GDR!e2{f?jFJ2wP{U4f(Wao(o^J1AAP<7Izu0?SXjgdbf{hw+WczZbFu0E-NY zSjvbo$N55z&Im0;-xAZDF%xyWK^-{YO_)J?sU{ zr{q-++Q9t6hncK(m>V}EJ-<@q;scsA`=VbS_W^0^g*xI|yv}R70=99k{~gXDr#0XM zDgqo=36?%^*WmG|a^&$l8*V(^AK(M>)?vja75M*6^P*vlzQAr`t>|Fq3-_4Tmfwl` zLW}sQq4=&3$ZZ-ekNEmPLMQ7bUMU~U)%~$8)P#Kn2ZCVP#Tyok3>3Uj@2*B>9uXgg zzRhfTV)8k6xIg|gZ3cNneSW=^4D7~8e%xdDjZtT*TMO*GCV|LFvksUr@Zh;*>#1yJ?jHm&)nen*)I!g zh-V)A$NJ9J zn;}p5@u6wDC=qdhYdft2hzF%ML|4^yc*C_+(l~)@|K|wgO?|ULTuJJe_UZw=o|s#I zyrRJVZ4Z%ub5{^A`gNOA%Et>J`+gauc|k*K$m6?JUhw66=T`PS<}2K(IQtNF6;uAw zJ0_SLqIQ_B_I!^gFlP^iefB`#?D>)<+wV9x@<}Y#IiPOdyLa`-VLVUD363y``UvOk zqz5jz5A~)A;X~fLj!`w>Ci2G8*C5_(68++TsowhGT=(%oE9pEP^43x8^D;R1yUnMZ zeqo6DV8+;>h(DgBZ3Y6?=PZyvqxS4=okD$llQpBt z1DuERHwZsiROGDG?>PtV$C5-BO5l=(VLggC(M-+-G`>_IqtGC5rrdH5}D8BJ>Z zeBQes4P(an;WN+QnDdBZs2blcdhZT)G+XO;9%DbFTzuLMWyH5WnoBt0d60Sf?4hSK ze$SeBlAQ{39SAe-DLvQ&cdBMnKo)i03iZe1yigCH(MVM0gr7%AM_|7Pp6^dp-z{#S z4}!?LGGr6+Gf4~9uki%%%_bZB@`C_RlR~HC@VOY_V&d6<8ToaF-2|yJ%ul@Fq@h%T zy#6maNv~Uo7d&MWUm3>paGdm>9G-74@r6r*c%Cm!4_wNk#@x8SMw~=1a86E7e-w!L zxsXlXg$dOEe{fp2_e5X7PNcYC^hp9-{=!5iTZQv|%dBM9142IWn9`?3+)KqC2fnugM4y~M^dSTD z={I)J%2wtuJCAv{Pt{jU1fAjg{>uu>!RTvy8*xFf&oyLa0f)dWa zb<{&@i`)gcwIz;No<@G)#f2sQ9tVhQ=H0VB<^UcCe`HezIe?a59?@K*Bh=j6*qS@w z0^)nl{BgZ5m_H)Be{{_qX$)-{87ouvKa- z;yK?&Dp>JzdCPN2z8vp^uttTfJE%)pIidP03Fmilt*RI*Ih>a}ziN*D#DAanCRLfi z9Kuaw?wg2T)op#VS-pdKtb|4WNxT2`^R#o{Qt^$W+66wjX;Hqx>w|k*|Nc!ZV(L>oNs-QMT=A4{(k==)#TbquZ3Ks6FZt zw1c*@Mh{``!5m$fZ?8LKO*j*KxnrKe@|B%GRGuJT)GF>2>j`d$577U##^;ts!i^Z* z7p`lzia2y&ZZ-`$gE-FpCfEF(9ThyF?%xZ?oH|dqyZ?Ya-5}=i926GcL;P0}=8hP> z^@9BoEU`M-c%AcIyF5RIxf9Ngd*2xiF#l$6oj6AhT-R*V#>nrd5eRU9Ay=iri*xqskychwXo`EC z+M9_w@y#1A|H)xqfE3yD8|ea=OT+BtPRt8g4Enq+wtP@iSSZ=aAOMkxi^m!=P$w|v znQ^ci`QXbT9TtQ9FcX={}2{@NaUzEQ7LK2wW zQiKMM%Rtkh($9OFE^iQ96($;TOe5_#Gh-=vWAIeD0zC$7$Q!}oJr9$+2Ed5MV$vz#!e;GqRu3FhRj z1UjTiMxf5V;yYW*Rs6bnzo80q`D9*ppe^7;YvI}C(oX=L>%f&blaVhm3e zA!~oJRd>HEEO;39Ur&^WSD7n6i|jEcE?Q0F(VhUTcqqJ7sNulAhd&w=r0f9U+V;~& zIbnc#_!!A&KH&8TmAZ2izrQ;_eN>$f2J*hf1xxT@KETB}ei<=n8%Xg!PKC#{6B`nT zJ$YMlvu`9v5x3Zel@I4}UJv3bslJT546YTf3e3ZXC9l-em=iZibGOG~pBzx;C@b4J zDZ+}mv31@x1*q!E{1R|m2G~_>R0N7ev2X6v=lc7|b0_SpsF@1IIl*(BqE`jrolL_jc- z`SS%`%y(2Y-q+0v| zMD^VEm$YsQU>P-_K}U>z1H6ml$IY=9!B6G4j~oj$^@LoxaGMG9)8{m~Fi&!@y2z?r zP#4m?^96?VtbupqZ9Ge&D{v{jAN~9YaZ3B@n*qpQ7LOLBpI=5^SpCa>cU<56m}|%s zZLt68xbf-kqxd}JI|q}VsE>O3mC+mL4!d&|b?%v-@ILrmt3#kC{0-L4``v*0WI|J! z`5n}k=A=Jf?n0irxcuhiS&Vpb9dlB`If!-mu~EFK7x2zCq>bR*6P)hcAur+wAwE$W zgZ6&l^`x@zPYCK?9Z36<&LH0salm%wi4FX?Lq}r=L|2M;VPr|NwI^tKd=f( z46k;Dos_C+OWemj3q9FL#(=pprwNy~Q3udp9Iz7g8uNLjzjpku$30xpyyc1e$~xUA z@?TIF>tY})x`4c3tibG>v#FjinLu-+a6jhLvj!VX%i(kTcU58%<|;j&XLLJCaD?=P z2ko?iHW1~@uGU~^0o88?8+BvM!08ghsXB9Ws4Pk)zfoWT!c9SAsSm9|XZ#ZLQ!0B1 z2vucq6>~ydn2Y=XjWckz&cbf86a4t3X>l#Z5qNWM_RgB)KIqoVdnWBJV4OE;{t$hg zmY$nz&FXkv?C)?8!TGE1RBFE};vcV?UOaxokGVLqo1?V8dQhFxqAbrQ4{+e((QO`D zaIGoVp;seqn)yt7nkox>a>Qqq&FAG|)qPAc567q4hKQ4#Iyz8W6)k@1qb_jp1wEm0 zJPtPOw4asLbfHw|+WXdnW+0u+e9Ypa19YnkXnezY#BGGwSV_zqj_jC4UZnMf{*a3& zh&y~h!uDuVIQrX(cvq1ckJsc@K&66^nuF}7g!~qAr5dLA?zc*KY%`O zE?y7&fqqPXE)Ma4S((mtFu}R&UyzZA67HWEIkYN#Klf|K~YMW z308f>gMO}}Ibv_n`Xu9Ei8z3=1I7JDe#9ke-M-{9c){PUfp6=JUf91z^h*4xH;5HG zcFnDLL%8$D)&=DG4bpVluBG_EOXBF<%<7>^VsX?dh(#mYj5!Qv&a#HctG15iaEM!PiXq^nd2X>o1E=5%rpy_ z8xbezWGsdH&n{L*Yy5mPt%{cC|9Jte`0MKnd|qIg79i}djs5`{vr8M8r(#u!hEZt!W+s()mtK# zz2M^yIIZ4?dL`p0uKZSbpLbuStikQ+y&3CV%ZggXYN3sc2t#6 zfV{kgs-z0eTQYV95pyUPem)IxfTzn2!=bvMagqvM~DYFAs-lJ;k1`wE0o(r-(;uSr7G}L!OR_YN(eL z{li6BTYlxJOL*Ti5q!=ao>OLpJ>^IK_P{c&VhrLD_jqJd!!h5_>;30RoF`j~bKf;F z5zs%?^z!4d8@$eWdrP6g4I*XxzJIE6gA38V!h+9HPm@Yk3Co3W$h|I)B0aN9;v z3vngoOC+IUkI)ZKQ+|jyp8$pfqjx-TE`3b%H+BraHveMdvtmd8x%KzGR3qfe2kr{? z<8|5B-~K3&0^cvUZTbh-@xMNY&#@z}(CSQ8B-~1XwEXodNz6}pd&i~GOc8YoUQ%vX zrwK5p>|t}g9eH(6IxauY_n%We@gOJn|J;5z*KM5RJrZl_uHm|#QxW?x2Kn59B)QMUS_IT*?C&-@ zhy5|Tm;Ns5BK{S&!tsh0dl4dJ0>g8Vw~x&*5^6?WxS=Z56MRmm7@ie=a0`78-f`0m z=-25ek7w3y!Fj#7|3UpB#D%0=DF)aPzj1%QDiw!6H?5s^@jr^LJD#fl51WyZk)6G> zS9W>ZC3|l!u011Pq!MK(BqS>&QX(Tsh>VcPtR$35Mkta>zxVI2UKRJ=bM85x^Ld{4 zGblYEX;$m5C7$=L{@|G@JkQD&O1|c(+rRYejzj(hJZ}$WB$~7F{mdC3Y9rs`zI^vA z5#MKyTYhdo5zjY2hxT1=^e6OO;0dEg|9@}lTvsIlCKS1r0`a{6{5?r%UB#Y7&f$~4 zJuydeJCpCzY5cyI+tn3cVm@HY_0`kcZXoONef>A`idt(2b}rRxTZo??SuDymx^hWP5syMa18F(Y=&8QcZN z!$bI;;Umq#fXZfP5G5v6>~*_$8gU{z1qva)n_c4#+*B`nsi0cIpsWg8; z{2OXT^?M!fUlIPj{_F>c%YO=*TljdwVIJb0Ov z^`hgQ%x$uF$QN4f`^NnUUuPp(`}OAA90|;;`#A4%2w$)3(R_41=EJuy%2KDvLabX^xhDF^ zqgZCJ;&Hg|4FuO3@IecgLVvrfDC`Q{&oU>@&?+Nr{s}yIkGXB=$_olXs z6Ws^ypGl9@r}KchY@+V&3x4eRZCS74MLtFCz`1kpkzcuW%d&!t7gR5BNLrep&SJ{* z`m%@=#O0mg{^@~p`~+!jzFX)^Af@kfN4-MkGft{P7EzdU->cVPK%ASbyhV$+m1EN~ zGuJ{M__b_`B|MaYr6;?sI#m@INvMk!J}F~vOP^D0ixPaf>R(m)T^jh+#N=dqk!Q%6 z6P?2x`js%wwFK;wpNl(mxt|$(?#rEoh`iV<7bztjavpsPV$^~*cky%k-|YFYz=t}H z|1Lij6^G-I=T=@mkVT(<@=!49IM#Vz2+Q0?|3xd4a?K~?nWpPUY*%oeo#q}hr!EB4 zC7%q-+{DnQ(#jOEiv0=4E4Smj5$A;*{Yk$q4Z7P9%ugCm9qdk%N9`xU*lCcbq;P1bdRaiTZ{($}Jheq`20AacS$FhtNe5GNjc^*%Jx;t#-sk-Kgs@Dofx&tG`pl{Ro=JSCv?9C4B4vz^$Ui4L5f)nOXmp+=lN&W}>$%jfW3a0wN zr)~1(NP8b3wbMQ}ALIiCY0|7t6uvMU4FO^3V+!x-YWX{WbH-D1y+ipvP}W1ns$Gb< zXjOAY5OG4|;B~Wek^Ugrv@2n>i#cMm>MDl+-!BW0MA`=vfbogqB`qUc$b1;Gk7dOG zsF}jfT2kUV7v+%4pnj+m`u}V(1<7`XvR~A6vwfJq&lLajl*<0_vA7P4hl#z}?Sr=O;lMRP~n>a@(w6woAT> z{Xfj>Y4T~Jx`F3O$t2bJr4J0$E8LC5JS{qMm8L&9hpjeg|Hwy;{s_z2^i((0F9tUz zE!Nn>0nOki4VTP-Y(hR^liCP4+CJVsW^VznX#Cjt&pAML`wgyM0n7tlZKN4PeE$2- zG3$L+zTmaPlW;xWA3BAvn7ot-1lEbN?tXzF@QWt9>y!}ysvd0ujF_w5SYcQ}^8xde zb#xuZDO{m|S2d!{+XcGfTurZJV}207L^F*Z&XZD^(#(+O&MYS0CNK8Fxl8Ze$CpvR znj~je$BsSg`K;EVKTwZ);>G*y2-HQ2Ig+QI@q*(C%l5+c=y%J`ORq9Qe%z}`;^zYH zzkf;39l(7Wg}Pd4V~Y#?7!hgd`ep~8bW=Y4*JlMHMGPE5Ojgi$Vp-SZfi+~*&0ySt zEj*v#`C2*P0Qa-qHFddM;O#x;=1T!?u*p1kn_3I`sEdDTB0}78pCdn)anc<|;;!G! z8*l?fdq&SuD|g6zAfKgUiSwHG;&LRW=)-MZBTc%9`@Q22sM@m#Ao=w9>e9F~ocCs0*60!!C z!@}t4Y@2i<2qZFAy}|v)^TNP^;ltS1eTkD-QW^L2z`4eD196i`b$=D^m$*ltXr4m7 zp~jMq3g;&;pw*xzIWdU)4Z73|mFnIgJovP}AN2zwq^9CM=v(Ez|JuVEuiKdg%Di4r z#F>9zZ;UZ{BkoLB@Y+1gSALO0(E1^Wk1-(l8o4WnTD;zE0P=A4ckNMcU)Zq)R++6clyiqssMtkN5 z`Uqewq2vdtFXXhU(=SB%0*9R+WvrJEsNPl@G`NYmb^97S|KBgQeq+Sz^##mP<9_#D z?W-H~QVxjLOW+*u!AWj%astHs%Hbtvz#>>GD=;nn zI)x4Sp5u}8z5%EU3ApXAIzt4K*CsCKJH4UrWM_~dw=d>y7V?)?`2yF!c7@k?es}FP zOQmsrEiz$#AAov}S)IZr-jhBMJggDkcnGhTgwyK1c>FE8btVlB=$p?>A0PONd0_eM z$9UZ_*Ns`X_wGT=*y=^6$;zjo%%%-(6tbF{gW z`w#if=UdHjYKUh8S6#2m`4Vuy@9D>Z>xgdVSatRo0ftLy>v;cQe%_m!cwJTeyn6C1 zR;WLT=x^_{M0`BD?06wq0`(83?@iZPJb>iJkFOdhJb=?&)8vw{2hfw4E zdk1l?xnp24-v0``R6z>SnA7&}c>4E0*aP;j@5!ht>H%0bqJ-_~ z=en(1uZFDu!{^u;|91iS`DO?H^l-Of9z7xS=k8+yB>pv<%tAbFReogZL9_?dJ}-?g z2RvSNb}!Ko4_Gr5sQnc00a`!(w({`&gcy^G)8ky2IVqXQX@R^*Hs7@*b`Kz(4`2KE zn*gOJ?kKzy@qmU}x9@`Lc)YCF$s$})U%*{)wK@rV4T-$2LP2ntmhUhYO+z?9&So1!x25B$m>r8wXLzAKi0-drcZecgNa%+m>Q^ibRUe&knn%9tBn zE_uLa;Mi$R)O9RowyBw;K7MZ_=kEmahJUXy_h}zRAAZ}yjq6_coP2rj-}6c$I5G-I zGwI`gNyw1yjI9Imc}IDEs35<6Qa^#@uL)e}^O@*hvw#c93{>>Zj&P$pD05<~Y4_bjeZM4cRVAw%+*SCn_1M@ImcD5Z@Ugo9 z|E~h)2PH1RqQf|8+2aa{NsP~V(XSBF;G>o8?F!qfAMPzhyFvD|{EFBc?yxZX!0q%| z+_#ke3Js+~zQ|(mzk8SQzIgsB=FdIcN0{tNF)|{q7yEeRX(Z}#Uh0KPiQ~TVno3|E zu9Jc1!{ZwcU@ySiiZjXIv2V1z>~lEsg;`&ZA zB7VMN?mE^{;{|aG3b&1~VQ=DAvU^_zrX4nSF|Xq+tegbo|Xl>2$YE8nSK z2MREUa!oXB2Yb@R# z2B|0!LA!CetpjyhF?PiN2E~Xl$bCn>brt(i=o%{C_Id&5XZ^G%OGMDOZ~S-*aliB@ zeM8?_?D@Og{{3nX@(5Iw^om)?8>%lGCP_KMW=wka_=YhQ-ksGBcUA@W12v&DL`HxU zid;8~H#$N`w!X&A^TCSsgChbsw=6xH@P$Z$x#8dRqN-nrLZ?b`Rl625_Os8lDo+h{ z%qZW%&uH zk4~)ok`f{WjDwcUu6n3{cgp+{Q-FDB@#69NLWs{@Zw~Ptkc86K1?HQG(^Yqtug$_p3qt0vG@o}1$VWWak-yA= zbLo!r^A97%Aa1W;mS0vzW;$1$Y zA=IT09ngI}k2!bBTCo?sMX;|v#r$?96@)%6dY5L%3UQp@)Ki=eLY(%C#ogODhr0Ua zPW@ee;D0Se9jqe@asIjwSE;d2?)-!4fqKO21zJC|{4vj6#hyq}DuI3rt2Zo-nB&;D zO56*?Ji6@jVL_LWAF1G&tH_lDe&Lt9bB9F0_ePZiaZv#C<7=D-Y_WImFe@)tfiR4m zvP{rHKZV>c6)V3&?3;T(Y+KBwf;}eOp>A2qu+Ddd^wl3laHnJEf1-u`32C$U&*FKm z+i&$BeTpPFAIzp1VwcCB;FborFK&1Jn97X=)+U*hM`*?lZ`@MQ9 zi+X;VtbXep^c}F;j2SpfK)%7utdNup@c%vXGS3pPquq%tF*OD3N1?1G9m77!X|3U5 za#4^gTr8LuM*Ke1bo%u{%+chQo#m9n_hD&}Ry4t!%j;JbI)5obRIv>CEcW#EyZ!ga zBoXfuvfA4^%h)^cd4(8{_rpqM*P70v925rsQ+l3@d6?S%KTH2ef>%Z5FjFA%A1n!* z&yu8|kz`Bc7y1b9lCJ6<62W;Uo5=SAw3wqow#rRNM;*h4X%?;b0pK?|+hWkUAL?Gc zkT5W8_Ogx&%3W}+*%Cyry@X)i^`n5Q=s?Fmw+qTbf+ z!)o_r8v0jn@jcm7aO;IAklHjt`PP5ujzTaS=xOe z@m9apuM@tYc4YDFX;ohstDmtN1z#vnFDRa+_JvZp=gt}EXPtaWtv`mkR%2<&j5Ex> zAV^oYlWXAzLLo;d1nm5Q-KHXt{)iu3W;+s3ehhoSx>mV$8r`t>NqZHOYms+7Kcc{_ zhq;}Y*lMJy)qiIWk0{Iz zv~Hs=PxIpk#{?G$d9c+;C1eXh+!?`lTnvH#?G3tw7s`+k;bR@-rHy?yQ^Mc=vxa=- z+x!);F&`(VC+PECBBY)kO_`N|?aI0_?e;2j6sdfE?~omdn@|pzm`N6%v>i zd~q)G&O;w~dp3b__?;h+P8QubSrP!(E&P4k9|Z!lQ~_i7;Q(MY{VaCM+8c4-M%j-I z#3OlKbC=wmajrtjTXw<>PX9SdVN;k|D*u!3*7i^_Umc8lEFnM327L?wP@_2I%v>8mJf=K>+Tz z3zymUIl$&>bgklfBgniv!I*7{ykRTN8EFRYPII&DwDHe8onPW)^b8C+ATWq#AQ|)j z{NLGa=lbZu6xET)#hdz2VKGiPzIqf!+J7_%+M|C-qE(fDA3(1w2ZuL>1&n|G8k2O^ z8ID&JNSC6Hkvr;~Cq43APu0HL4)&oA!0tHD^Rwt@87^>5?)L%3KZY6OWa#5InX4Ky zMSb<7_;E#g+&>vr`B;B;biX0rafg+O z!v*!wfiq8-Ry@JIh~`!}&L570+E}k75w?fwn^>%gFhM`ROOZr`T?t(Rk7R$hz3s|v0|^q58iVu zw4%Pizoy)DJ=_<}xP2}4b9|xgjHzzUSzlmkP_Sz?=ovgI|NQd_YO;mF{x|UsxiG)1+JS zffz5M8G9n?8ZHz*X(GjZg~Z_^O(|~(V>ZhCY)OO*BnEAs=tC7}@O*I54EK@w1Y?&E zxW5fQGh*}J3+K(NpO+eOZr>^(mLcv9Rd2jM(QJ4FHQ_?pm>%*cPBHXdowy!9eG~5W z9CH@eyW%xRe8DM<1Wsa~f_l2mdy40Os5Q4n|SD$NN?)l;cJdbKVJ62$h-92LR zwRD`TDpSLman$vysBQi*!#?^pW6NfJ^t~!{Javpkowy@y#TNd2^y-xTxnk6v+ehT? zokG1>aqpKueG;foph)@T5{>V-(pml~ z_!;K=eOl@yFrj}T|8!I%1L|Zd&iph*T%l7)IDEMa^%z@McJD1AU#b3m?L6`kO@@9O zEtio$@NRvqi+C4qRecP5h5qJ(OcG)N0UYmH*YF`;bDmM`Sggmq`%6C)`*3bucQjEh ziwAjw%h1%0pWoBqr+Xmc+f!#wes`8fJ-pF>G3|o*ddc5rCU9L`^3A;1gY(bAXW}j) z+Nk@ld?`7G=XH^l)Fa*)=j1hq+iP(y9j<*)_Es1HR6cZ*&&3d6{YYt78S0s0XhQdv zkT>uXTS;TX_p9Wej7z1%b$f~HKrbu$#NL~IQ$jvvlPBI|vjyj>Uo#~{kl$e339LBT zjPrT2m_C6-JinjMK8kU{-DN#R(K81e-C5I!({}e}!+m|5TPabA(iNijFyF5+j@wkmf z2=HC(o&EuD4{-B-M%YB%L)xt96NYVkuEdZ<+-C8F_okSULLqeL@NHv6o*v z&iA3O&*hl>!6T@bD6OOa%;^B!mRl}gr4j#g3LHMmZ3bdNzlwImtw5giqQ(Nw;h*Y% zBDeTKfO5B1Ruz1%a>a79XA8MNuF)F%B)0>UFL-I@o_2)v;$9*Pw+pm)j|IjHx_@#v>M&Nxr|xqe9n`Gj8yJXsO0&{(*%6-RKx9>_CEbpN@+ zFxh?%hbd=}c@dKxv*HXfac>&iJze1Z>|Da5P!~vVG7Ejt>jGTQ**~g=Mja>?%VGLJ$2sm5+1m}cpzS@MnS~+u^gQU z^41()!h;PsmrC4Ed5;eDS)wg=j}NGN0g67ciWYly{a2nm*TwsO+wNa8`WN4dy8MlL zf%pBz{G5$H=zsJy%9_28^L(Q1)P6_wO^xZ#yn083r?*Mmd|HS={^qazLDUgwhR}#V zFhKo4>PzxcU!2pcsvRmsygyK#sv)$8`B)LgO?x@0Z+(^UZlwqP2>D&>q%Segg?ln1 z9(4qy9NM`wE;tVo&eCZ=iFrWz9ND2b*P#nKyv>83KTj;Hx*Gp|n!{@*YmXZ*%?yxe{jv=8;=}J-?%6KPS9jPE`cv9u2?FXqN!-H)LPWUqJjd616CAjrsNEGzOA+ zh{w?!e>4^I{X`b%>TYA-oWJ*pXH=LU-#;CH&>nTr7fx&VDGLEfe8zNM2KwQ9 zg86-%;$_-==v&Z>vit zRTcS%F1`C@&&445#-k{)dORPOldM0SM;&-tyy+D#DR5u8G{bd30!Rd=0{WbB{u^&{ z$%0B6^R#)M^hwBreF?`EvX6)x_qnn6zC}I!40o6BY^xTy9ru#UJb*d+qYbiFTrjN= zX66(q1kWOlHr1ENKnp2rx9<9 zUrn^Rk9l%V`cI2l72(I}RVUv71%R8|M~5PDzRgOj^65N3)SbTcqUn$@_Bn8K3Emd~ z^XG0UQsDwn)kz*AMIsG!*@16DF^5o2XaDE3C$NV>e7Q{!bNaa1l4Q59Du8>c>!&v< z5?~(r_x%_L@*m$f{U}0_U&+}=_|b@dfS&Evo#(=+13XbAFe{0C{mbzOs&X*xk#L`k zLIyb4Rt!lb6kw>xMND}DeFd?9rds)r!1&qM-WlHz2j7e+IfHukk*NPJ%P`>IkCzav zWMtt>T+Fa2>NciZNR+$L=h1n7sphh=0_J8PVbiQrglSfWouOBXKpha??$jp_kV<`r z^OrR8GDmVN66Jt`#JE`RBK_oXp+Ao2}spDXG;{H$(s@5(@bhMY>WIPwa!a^3A&s9!mFP0YMX21@5& z+WqE2A4%5AcnBb$7WeV}>Da>%@t8dMholS`+pBX{lpud1qJDCqP!;s-*zBG1QC~rx z`Tkju3KV8a+H8^>0rAfYFWJ)3&(b^iod-W}3#)QgO0gn*TDaBFDku zG9UWfT3OBk`AMTG`IwWjH$ATTJJ$&K{o0tS5Dz_W(nx1+$GO!R$;i_z=u>*c=1H9g2Qq9{ai4>zFsTqZ2#5&ksID_`cwh@PXOfgy(U2zN!VIh(iK@ho#aXej3c)xmLRF2V6pIAERdipo;!7-TFo#Fg1&acJT#3I{O}F zJ^CmjHT>iEp?+~E_Tq|9j}v@3lc(f^`v9FG)}Q$}51o$CM_Y#n^awWk{>$@(HZ|+F zY_B{pm(!T#l?>`ym%o1}N?~8&Twd5iYRm_|^{l$o9dnbl6o_PE==<=yDK&|>iE^|GwFU-*>9WQFYv7ht z&RmqVhd=rhyhi(-K^n;ylo( z!Fi#>6?MJ}6t3TbUEwqb`vGb;OL+FkNF!DDD3DbA-IPD`T&wCt|7uDnf2Z6=-={Vj z3d|S#BZ)pKG0fX z5G028VZ>FEn2Ky~uxb9Suz$%LveqLgUsI!woNn1?o*DH#4jV@A6|rC7h3=Qai#|Ym zKF3=ReJPHA{|TPG;SFzSMk>pCyn)QNMiTeA4YuqtMEu*G5*eNB6_N>#`YtllY`^vT7(gV1Ag*#zV}*X~WE<32I_HC6c6 zaxWl>{(HRI9DPTjGURfb*pKzGfy|d3{Q!@vFO3x-&v2mZ-@Kj=D0^8kZqxfhTGskT zI`%X)ir%lDU-to%v!djx`+R}9BE@$K&s(pc%mNvm4|GN;1zkRc`2^1`y8-v31~Giw zVd#slrXN>2wShV6pAOysfY+Hl&6Ust@u&|!ETSGuL_hc*-RDzLxSuXPQIUNPd8jli zWvV_;%;O+GI697g`W~HcQ|~aZ??v797rb6DeegEt0`8|JjJpi_ZlUg9TD|_s2h?Hg zYZ-rtWT*1rN_VwYs@kFj=#EUr8nUkHKPn$%Z zV0-x14SwWN9`k*>jh`bkvxZsiz6a#@&{#}%Anq4j-WEjO@Ek?BLMEjLyy&>Rnzw*{ z{?a?^4LFxnrXq>E-++1n0UHVi{QZI|ZyRS^AC*6!DQmg*V+})UoqDT=|7O6w{)Gkt+-4see9_(Z%Kg zl>2!qKjJ+5f?9#91^)h%OtX%kZoe@(3jB??&*t&-{4e!8LrYd+N|_?RsE7 zVoJgdDl^n;{8BYzHN<(Tf<>uaA?gaelQwJ>aeXKITcG9c0sg{@V+BV&-~)r9LI|$M zV!yR!CXg2q(DJ%y^bd0Z_B~0w%7ytC(z*!`M1)=^h+#ya{h-uL;Vm1m=I-n=dsNIUY|1D?K|{{HMB z`UYZs?aqJ19QMUp=J{D;~qqm(=$j)~#EjF$)e!o<_xEchIG@MQ2H>g8C3i9M?L z^SxjGV;x~70;k*Qb{b8|7Y*c~-#NkJ<|nTbZfE%0?)zfN))}5xNb{%sbb`C_lQ|*EINw(| zce@nz07K@>`JE?RK*{5;E!8mQ8G1ze93wh|H;Mayd4evmbLE&df3*wTS1b?z+35nC zBu{h47+pbOf7H%f6E|>sIC6~{`wO2vtDv1i{+{siMQ$1DqAUd-+)2wuzC*HveHQtk z*bCEA{M?vdBSEFOM2B;PIG2Y`&v4$}kZ_Q$k_fBhg~l|aIIlOd@~}l7kF{XVsu1<@ zlnr#4^^fbi27`F~NAw->R6Wd)#QdRHOS<|ixQ=l0%~KcQK6Uupm0IKt#8z)z6L-bl zDYjebIhn{SOj4(uKwcpz>xGr{|JTu}QqAu(USPe++byk&c}7^ca;ujJZX~;(sd2uM zS;6pm1^>Uj?+iny2KJXq71NjCe2h_2_VG0CduaQ3RJ(r?!LE?@b6GtR8a^!ZhwjJR zK7Rw3Z@-a0omo9xwS}K!|Nd|ldGvL8?l116Btnp5Y>OuT++4uLy)-T&Bpe%a=vXBJ zS=+)J*H7r%yJ9*wuIU3c$9lA-J`w@GNcIONApf<|`Qb;DBaqa{U-OzY2JxTQHMRMb zA@o0EUNUw@=%g#0{A)?m>ArTT{^$@q?UAiez#d>iiFs zPqJkpUiW)%WN;hj>S9v&buc$??$Z1-zB0_q`;s*5zlQpK!vu+QR}gpW@YzvVq8|IR zwORXR0f@^HW=dS+LchTT`|HcRz%P9;kgkIZMk2oWchhl!TnNXUgAONrDRqgo^mjfkZ`KQ0S<6Df;Tie^(H&e{Uyj-Tm$*dF*X3k$a9l zg6Yw#mQ~Wi5PGcI*4j@TgeAV)hvEFapTv%^UWz^gd6^fQ40ybc#D9G=rvQHau6yCX z4niGA*_@)qA&7I#7_ayt4vn@KcNA=u;YZ#|J)O2D_%4RZUj2jpjH2rS-!Z3=WbRe0 zrM(;^x5SiB@MBN>%LQqPKJ---Mz{6NNJHG6=d#=^$dk~iuLRU%{v5YL5lBmb{hq{o zZx+l=s6MG{{|@Kf&MGBhp0dzrSY*h{k9cLbS^b15Q+52r^-u{IT_0b=&havsg z=M`yXuy&g6I4Gk8IimiBqxa1=P>dMc6twW4`=fuiEqyUYIkk z_U62gbM56#Hx@J0t*5?V?wCPb-xDy+8iL26r2k2?K@rUVPtR%dgkbrx4lLrgcFE z7|AkHh8Lv4dY$d^`G-=N3t1Fhv+ppNZ&?%x1tLE-u`$+FgY$f)6Qp)cs59{>EIjY6 z44oOJ<867^PjK_>z>}>baB;zzqOSw>0G=NV>Gfrx?zM!uHUs)|2A`0Zwkg7!Zo{ar zZm7ShAN^U@BnETutIKIgP;V0)#M8=zIvbXwBC@2y@MUd^ZE#Wm_=#5>V`jM_ZbD3A zdT~LE%y+Qt(fvda?_E3*LdOW)24S(N>*ZjhL?8gF^ISohD6Bv(@w_U`3YaJbi?T21) zVE;~XM-k=;_FcI(tbx3!UN4{WQG6Z6n5U%3C#-xl7O9W+0fofhPQ!>>#?0k25(?d+ zOa3Os^Hm$<-HeFmWKKYf`I5?zo(h;_2fSef7ku$`n3CrZ?%bIjAzyqW(Fqj0#G7S5 zwL1JmcWQ>p1rLJehYxNEZ^+-Y96nl~_q&Eon; zS-SSfD}TL1fxf!QUY?jToLil=z8?U{2bcU?_1UrXhxq7jNXZF=pMS)4c=LiFS?j7? zW8*x)j6Z4&2wsMI(Jt$9uGP zHyig=5!q&6{}FH=G;QYCU55R`bf+GB#N%9GYJ>bF`UGoTC>hhj@b}U@t;TVFv?ZP1 zClcia%PZ%<74RWX-UCTm#n{`s#5lrw5^R zkMI&3Fm`GZ@mjEl7bFL4HYA;3b$(H1_KFKox4t{|{(&1D*)Q8*hWmM#Ar3pkc}4Vd+q-T7$^59x z-5eIRLtSiqORW$?3Fh%J%N!PubB8C!ag522Y``w5W6Jb_K4|_oz~M?R3?#j4?rZAo zo&0rLOfTctJ4~DSF4vIB!`Bag^bYZAL-8M``J1P8pzNN0=)9ad^1!>T8aJdNpL}(- zkpy#R2J=-GgLNUDNyVb~z9q!y2PI2yx3&Xc=2u5yUq+4L(e{put_!JOC$Eu5D;U_9-qK8pGR>GHKXA=HmwdFXf%ufwqB z&FwuF^aD{pbaH0(0S0I7zYCaq|NY~+SmqDtckn#qeMJHBCxJ@T0DTa}-3c4lAsUGkKpDS7~DB^G(j_{c+#CcJi z*<}|Xb)BUG{iaQAvO=i;Ac<@dKiY)6 z-jvBkDDr%5{l|(lW^vwLRGDw7hxk&0+qB6D=V*?6njwhqcT~Q{K1xSF%9#8!ALOyv z_5O{Oqu>7Gf9%X>n7yEugUp5r=k2FRl=GIhF<)&-)`x8ddjJjvGdD`14?Rt%^cbGk zd>wvvtvK|%uQ8u`7>K#D4yqltsRaalpD=>lWtcEoOvn;CwZ5PjmJAG68Io{aOQ&m(1r3jOWJhWrZ<;|Mi?F z%q@7xe`ZAglUB!B{Q^(0mZ`p2fxL$K_v^7t-ULXWkr1HXc86E=x6PIE(dSV^&VL5+ zcU{bQx4)xZr20HPh_L6N>j3Y9OvAnV#iv);kvfkESXW>kMnQeLlJd& z{fW~t>s8|QXw_G9LZ2G_cY%3hd#G=sp&K*kAHe>@ys{6jhMjhP4d!1$UW0GETkAW{+2cRgWQQW}<<0lI+Z1`Rj+azXh%1H$h1Zw=;QL$Ns^UI| z^Z%@qthva8F)eFf9iv3u#mgsKN&JxqT;Z7N~(%lncQd=2sc5LrUhS6aNjcIJm4>v{sw!67&~2=gGuSIOM)bzd-;?e(yNA40yxU4Q@(0qVIbKI2uN?n2Duo#94y79GI6okO z;Fj{flrg;SdRzCy7b1LH%Q36_it7W$?5Cjre=WWDwDW#TIHlz9J$}Rl##IO}n9o_j zTZ%>tIevS1_B7ztokBP8qJQ|6_MR)OekS1@6>uEAOlf<_jFT8tcj62s`WI4}y?C$g<+x zY7BM)5%1saW-X4O;b^8mFW?BrF5FM|V{!soZPE``N1d@(l_a_*!v(l!&d_Vfx`K#i zpS-FY_U?8cbUwM@3g+?ua#e5-cJpbq3KRAf&}&2v9o=w)w;!1gXWexN)jSWG?o~XG zVPa`RUY>BTOYl3VqZf=jx>zj85#jl%%#NkQsBa25G~tdpd`k6;{%6|o`qKwQ zdO>Vj?dx|%0=s;b9+rsj$7ZJw2%=AA- zdxM(WI`bmC4_tA!aOsQihEoRlUTx@uxG=EZWWM7HZoC(!9~4=^S^8kB$wk0Exa$3z zL%aYYTm1RAes_%Q$!0ERGj_Vy@rV(UNITtqEqNWNctJe(K{ZL60{Zs`j^$Y%fzCi_ zXRb~qfOOlpXK_wjm;E1wn4}nx=xnRe zEB@`s3F`(l!3Q?Qp=xpNNfY)7)ICgoE7pX$^9ACjr~J@wfAk}_cp~c2kMVSt797SN zWiIllXl`J1?XNkUiM;{pb_u=vxu8=sX}G(Y6*`S*j4oTU!`wcub7cQ8yd18Tpdm|cme0ruT6x`6w5-ord`W5M#R^nX%n0WF|Yo{eYvN(sJ|W>6#97* z`{uq?1l%^}#hd~f_a~f~Pw#oHTJ|gA;&*0AgjOZYsb0&zjyVE_lVKdE?#sh7{tU_a zR7K43`&`;3DGjBgWr_jQ*l+my#Nnzp0%IEamHk>r;P`H4 zn+xJh^M~XgGa@Amb?#ZJ%?5j@> zDv2g@#=JUm6C`~azBP1@AP4A zVwgJRTO0iSFD>_8#$xaNZ)1C#Gjfp=~_?Y?BKjIMT2{azR-1vZgbv?tMfkx=VFuFowLyh?hpFe*O zKZJNTOYMVG1>)!1agB4M+i_8{EurtS){!JVCwC)2Y_YtpiM2Cr{u_=N3V|^EztCC>; zNw8ImANe5e;mEiM)Vn<8%JuC*9;DDK`c~gz)QPmV@6sY~#dpATJ%tx`$XzR&%`ksK zETyRl^D2`mQ(BlT$VMI@a!AQ*E0&@KyCkK=T4bC z6i|{c{>Gk8dyN!B3G@@>i#qE4e)j)dgww~O)cB!O?>s@*mKSp)0}S1xID!ARPK|R2 zEyS5$V7&Tsz9Y^qg92l&}JPYOY%Yr?I5H5B>=$?WtsBKgn9?f%y?N3Hc z8o1t?+;%)?M}|IBhtU*cT$hAJ0$7)4F_(oyUMh>|0hWK8-mGsBpu&A*-*4p6Uzl6l z_6&Leac6`5DDLNi_`B<5EO4%qed;6AH0BA@P5tC(_k=#%1$Ipi?2%pz7q}&jdgw^9 zi-AGN-|rR<(mCS386ZBlv$EIxHX=oq|t@?>ti#uUQ%|CM=TPavzvSj0(Hod1>2mb$B8f9r0_4Eqsp@Xw$m zRmFXH%fQt&f-CX?i#&^FxXu@(R@r`CaYuZ2UNz&09gGA?Uv#c9hT&#qC-F8BZX81_!ik9LlS~H{>hhDNx0nL4teJ`H6;Ox zQltuBvf%t*uoa(&_#8fGdo}+B^6#gl_DSM%>W@T{U0pN!{|4U1l&QGFRko{Tt%LUP z$|vRSrK2`LQ5{ipqss&|v| zMSlVV4WG0-6taF5^~O1zo!|I^bQ$_It$lyrxrlh#$I$#xDgn+i@IQ!mafifmiK%ly;zOp&JswDB_^PBsuLiL#_f<5Fv`}|7n_)Ym0kJ(~ zvF%#q^|?-7 z8Q9451#^)~!Gd+{aXWQWX*UM((M=Y&juCgz(;i6HaYEi@F=4;p4;Q!qX1Q_`i2Lh< zc!DDdQ1#SJ_V*~>H`X+d&dXu`^v?vHcSjKqjJ}*$X-2>Hk4wkSigVGOb5?W6a!KC)}xogeX zL!igb#YF8597lUI69c`0|9>1^cRZEt8%LsO2-$n@JS?`=r{M+UalklfbNI4h(i>vyjlGH zn+V?&e}y^JU70a&i{d||Ofy}-4eyN8k2-k0&FvIt+l+D*0Bj|GWfKrEZ| z`HuQe+T62gpHZ)FapP+x;sC}!V+QHhagGS*Sv{A5^UI)TbP@7^F3fK|nToI<^YN70 zCayaY#R}xS8m?gV?c&A_z8Xn?i_}J|AseoW;C_HGjGu zIT{am^(ZW&rUd&Mu87L%|8NJ2_G_q=F-~sw_z^pSZlba3=w{gKkn+rb(Q49 zY#=M@FoY|a*Ol8b=Y_cWbvPV71_-9H)B+h@)hhv53pH?v6NlIsQvft`}-ikN53UBzDV63^vU z8!4mD(7&%3em@5Jx@BsyJ`XaS+oQ<|A;rjp@7Zi*yMp}o(ybVaM4T5Jbc#MrVeb5I zJ_}!JH{d^X!QbSKcV60Ho^JLJ|R1>%OB?i2e0O|D%25p3;c|u!rcC? zcd9zdxL$M_Zyr8?I)#UmhRcQ6+i>a+g$fzY1?^#tu+I%v&mCd=5$g(y-yLOU5eGea zYO(i(pEI0q`10-)>Y-XAH#_tioPq0ugy$7moHIRd5A5Q;*GgWNKtAOHS~aD&1#!-8 z-*irx@y9&EnEtH0dvPxQq_%y$#u>^3-|EVsj_EynfY+;Q&LHx%H82{#riJ_v-HW>N z)z>mhYg5i}*&vANU4sj*r%j8(`22A6z7@&F_a&1`$>RMBafW)11%KQRa(*?u3O#$i6mPp*b^Hf5~QMzc!c@0$TFO-TlBJ52JCU3 zA4#I(sKA~LYTM^VsQV`?dMF+f=mL@~eQuM86OdfxZ0;*@fqQpyxQ=|qf2Ww!&V=jQ zw$u+`F~GdW`N&J1c>f4x9sK{{Z@0SKr=;*XnTYx+Q}_&h|0O-Azah_GU80=QfjXVS zC|;Ix75F^(HPjJsUn+2Y@FMCCUauXk0B>2mp3*sFWpu8v$NjhW=3dm9-OP)!wgQ1ev=S?r(|3fl?q|M| zBZMEeWDWJVfpFHj=NzvrL6f;FA{6~_uRB;wR3>(?q}2|`0SydS?HJd zD_fv-T;b3CU<(CN(PwUuI5Qt;2j4j3`65akVCkV@&L>(&2x`3m{g_`sCc%zLh&&unf6A0?1O-Qa1AYHYMswMz&oFIJ{r2sr%?rU@##q;N( z7P2yV+zv-Cd@P{;HFgUzTNJp9MoBGj^gu zdJXma|9ny3?!0*ygX`WH^FQ0Gh!c$O-1#E?3Ugxuj%9zFasv-{>FA&;JSUw@nqh21 z9H76I?pvW7gk>?6Xd-{&$n3t*ABeobN0AqOxDQ877xmX{5h0B7T z-kW(hnwi}OVlH1Vy7U=+i$`1;b^1}??ICtnxs%9{y<{7!x5Qo!8)aT$yA?VK`(wKhClT^~~HlifMW{CmoM02$qz9(UwRE*B6C> z_)h|a{n(Soo7Ud6h;x|EbEoUNLID1R?$R>kU2pf^QvJXQ(IYl1LPDHC*ns#fZDFW> zYU5f>#JPXefv!be7W)M5&V|@u58e2YrHB%F2w;t{mug0SJEQR+d5RcZpdU&0wvYnN zm4%X5JMu96&YFtfS_$~3FWRMBD+6D}p4FoZGC+tv^EujI5Odug)8?KMfW~=JuGw=q z=aHFL(uZSSLEHRU1N438F%PTOML?y^3Z+uY z0oQHaTh;mUU~W_DRY!$9aZyuYgFEWT!+5J#Td=?SFbf}9Ao>(;6GkU_xS%We3pw*N z7nCLSZXfDL-G;@u)Ji!oL<`pOkYaBGm$>ayZtS&oyWYd~*H{`_3*^%|axoYF5C3A= zm;|`Jcq6Q%APomp_>d3Z#09*;IW-djG)z&hQ>J$e4ab{pc9-tPNyZ zeOZ{_&)@aFy@du^6O_aHa#z%8oDF0fh%|_EjIV2*LcPT7tCMblIJXA-*U6kjo;#%N zowGCIEDD?-^s2?7^>gnpCr-?tWOz@k-DSqU;GO-o_l40%Y_XPSj=tPeAI6qUBp``y z&G;Dh-L(sH>~Y<%~}_QB_AcFhzazeM1=BiA?{I8SP)YYC0bI}QV@_TJ86nJl%pnH0|9H;pJ2D^=}yH3LO~Z*eQt=s^Riem$>GqY4|spiOGMkoVhD*XDZ{Ba)NShpbl$z}!6$`cHt6o3t-J)IIh_?#LGP_%^$ffB<#nUqRC zsNRZD?l9-Tyn~tVD~~y#@86bh_E}z_Dc$#*Bm?s{AIS76EThh#aF+b*I6h~YYG?G> z_<`wika9)|>UQ2}Dw>2aLv#l>-R{E;^=Q%3o#3F^mT0waIo>~M0Y3MLhz}@2Pvpsr zR~m+(9sS|qXt^ysJs{OB`%Q1+&D#SPf* z+?OZAxyVZ3W_N@Z=ArSKRZdN!f6}m=|C5|8$R?Cfn93NyAsVirjZp;%WjFv4BU}*h z&#ITy=pc}2ZI77kA5=;rIFZ*C(`Kky@T?8P|o`m6!zKQ8fs1?RFm$GzGG^`krUMqwcMF_}xU*BU$$f%Aw)Y2=#XB_f=qCv|Voz}%MT98I4< zYY_Ng(w^CL8Z0uFLeKc?LczdoH{X0?cwIzqrGC;Hl=^zGnQutxy3$eeh?mvh4F|o}k{;HQV6uK`` z@08d>0Tq3yzLY(jai~yV=OaKB`GL-7h~s!L_^AojxPVj(yXTe&@@`CIA{D0CXT2Ft zo90D8{Gn1!Djf3yPR^PBoOOmh-{)C9dQcB-*zleP?^E)Lw~MKt(7$)6beZHm;s_0V zRy&c-aHnZ8_#2*E*8bj)xLjflr^y%(KB~aEUq)S{#LfbGIyEEyVou)MgTG(*l-q!# z==+$eJGLOWI-hU=b%(mVzwHy`9YDAs_qyFTM=0+eFyF68fN;OBH~g+6-+E}_<=KbW z{~X+r%8NRO_u7lvTK$;s?)g?Y@F4aZW(*WIO5)EoF?0MvU1{UPzkN^BvA>|m|6&Br z1%JyY;)5mZK}M7OvyrDMOy2vovPrKAw@H;Mh8B5%t(IeWNQ1t0l*%V|-rU=I82-d$T$ZfemAV` z>)eg=m`3^p7y2o+3{xKq4WQ1yB`!Erj0m@)&dje1VE*6o>@^N|%!$aVtYVEN!YS3p z^_4l)vq}i`S+k>lze2cKoYDgrqADnz89adO%+UFBoT$h7>7^5i|1NCYIC`wX9UfY` z(kgZ#Ut@LBh^o&WMtbV>NnW`Ff76~$sSS6KY%Tflik1kxrs2QF)=@XBIugP84s-e* z73wPXVn6c`H)9Cu9vzBu^+!A~-;QbY^(({|sMe*vuc2Qe|IVOU;CaN+>UQQs&fy%J zOzR+lIt543RI?k+$XAyw-?TpD0jwNvn$AD-fUCMDx^w6g;1O+S&d9~jOP-Nb!447L z#vWt}zKi-wf6{?Sd(2zT*KIP!`LbO7+Tyh%INx7RsB>$_9J1`64wrELA&_U*gd#6| z)BC(nQm`AG)K2k^N8RT@>U7aV{C9dW;Wsn95ijHS@HWaof6DKVd;~FP@ctX2bn_YF zZn`V|D>#SgCiie1*+t!`MYQ=VD!lFw2(|A&6M>k~zx0UO1E%x{aphg;7Yd#^=AT4_ zoR?3VR0GlfIYe^RI*tg%_bF!r711Zr(kn%0LxeWZkEL%gk0qyiR2&0^Ac(9pQ5fg- zB8D%iw)p!rWjZWorcqyTaeXoe{r|L9MxMf$ClF=u=VBT1{6e2pi|z6HE@XRL@8Q7f z^h2_;5UW+T7xaXG+qrWxyUTD%&}2J5%Bc zzhxu^G!f4tFIfpYgSf9_YN5sVcdp>6XWC7Ub5viClulnU=3lL!mge@ubwWbzHZ`sr zghSjL*Uq?tdL=FQ8sK?)E8zVw;)(B7=@*HMsQcy!ol>a8d6U{uH4Nv;sX#5wSa0kF z^tf8Cf#1*Oo5=mwTgn#5RX_F=^Jm}C_;z*R9H+~3EBq(sg*}m0jEX_MH~l0vB@6Zq zbPf3)#Pj-Np4=||2K1}x-OH&(++y%yL**Id2WeAGJww^Bf9u>9vGo<=JKbF(_InXe z+q{^x%#M0;t{Z&idt5*+p=={p1^Wp0+uIn0U|w7?VX}A$^Ep)c)-T}KV4m6YH#<=u zA2{cflYnzSVRicuuJ@OJ)IV3~bOuVDERPvC%nST(OWN(^47st?e_C;!)!iVWzQ=(6 zf(f!=Zv6k+HzNuo5m)*by+AIB`jjV*{O+HFu#cs_!;uZ=lz`W%4l9=tPcO}nWI}zt zeIu{F8@^t)>|32T<}r7#LR`ZS=cPCcF49xht{{KN$y_1|^#s35Cn*pIoqyQkAZ>}f z`_hwE+9UY2n5^vFDEi_571YY|A&-5$^57#p57aX=?({uE{{{4@+}J?8BXZ=($r-#3 z$sZ?H@%KE{^1T=kh}YkiL+G9@>iEq>O%w6{vAm$q=tlg)M^tw>4S(NKjZsJdsS7Mm zJ@<(&K;ItoJ+7S&%ttH?Xvji5K!p06I4kM~GHlA!wonI=H??uh1wV(ik7rmFgzz~F z{yb;8gZ}>P4f)528`!5kr!Vp_AMusJzz_ZU*p4IijDRF|h2x9>f6% zMVa$P<2F!EPj|rLrxgtK4+pv5vVmJKPK!=d*`rP)n%Nh1`5ZJ)l9Oa`&KDk^w3f03 zuGsRdJG8c#i+hhll^=cnA5&^CcZ-vHgRUJlOx5fw(Mb}fig=R|e!BM#uld;B4VvJ>k0j!@<2 zVLw2Fy<<~|BhXWsB=yfYLWYi0Xh8x2a;|pG&`)B%MdacK*)mT+``VY4%bI}xx#^+($CQHeL z9eY5zrkW1KqtB(&qfQy|%4*30s{V2}@Xl%bQIGhoV){~rJK_r8quY8@77;g?YE|_v z!gW3NFH`haHz<9SWJ$pF((@ZP%SnPeRCOLNS;2jN^;OtV*H1SHf0xuqcMtOp5^mr6 zf%~_@RW1<=FT?|UgD9x&F?TR!mp?k02p9JBp3dgL+`l-}OmSR~4jpuOeetgYyy!V9 z)$eKsZetXICsj0nggK7O{@6jBE5;Sv?GLw-Xh()wv^{ERJ$i3oK!Y6M6A9HI`hH1# z8~jWRHr1=Cxoe|KSpZgkE4}+C3)ZgQKP*#=EkRS_O;v@6$ZF}^V*+7$ot==?YVMH6rx#ncuToZ z=RNjOdhaCWlgq>^oM*-y^3PmG0&?OoN_COuNhvQZMa$j0?T>wQwk5qaYM8G^Gj781 zOc41>^`ZLT$oraJ^@u@zeUA1Hq7E#Wc*rCGooa_@l;;`TrRfEra}sgEX~E8*!q(qVb8Z zVwx;i=like3Suss+y%j>9H?8@;ysR;)v&SfPePdy{S*aF6;DaIA;4?ydFmGC&y&a5 zf9n%M-O=Qsy%8cnlK$(`aV2p8&t%f0jY7b5T#A&#Q2^(_tFLWupx^o2Z8h_D>K9eg4D>MaxWac(2KN&MXoR#_bUDR2m z?UPkN-@R190j=LZ6hVkXJVvcm6&@v-bdIZO00(oR-m?M#p%b5af6XaF=xO78?nX)I za$F3|KFd{>zzu!$+|4G2c;DzvvWBPm0l2dR%tbM;;`E2& z_BjC{oc`!+x`?>UZL=*J7R<-s5PjV_jQ6`NJjLXv1VGJ=tgzdN6P12{;8QM`R3h@HrQYeE#6Fn53S@(1--Ur49oeeKh2mp_n`}e?lO<*${ycm^d1_~jH z{ACWPGnSUjAY(>-szx`T0rG2_6+PU~JUt+2OZlFqCK0MypWb17guU;qZchwRw<#yN z>v>=b^+=hA)7=XZSAQTP33whXx)<~JKc1mhejwQm*Hev$r=&7Vk>5{xsj-FnyRLUx zmg>0vk+n?)mgD(LH|{%6aux2+M)dXCs4w_u&gEf&x+ydBA&RDfDIz0d?Dsa?s}QY<&SBDa@!t#fsa;TH1zD@SJbc7UWvWIgSiMok0@XB zD0#pkr+_^_+&zK#ozq)L#S0=Dh8muRd%@nFlXQQcBhT0H;G=;O@-w_<{UraaK`*J| z-i)IG;_vJ&nu$6 zXZ&5!+=#}OatzoWN*4mMb-?%@Ti0Afpy8&ZTuhT$2@-5}Bo>m7q zL$@4_*z*PlC~nypXG5KThQa&GR2vqsu*EJvA8Y{`^uIwxA9aoj6}OaQY@nvtMnd48 zEj*6>6cKy`^M+k3~JeQN2|P z%>9cCbo~AB3<0i^#8{BV62NWW@@j*WGh_yCgCWk(KNz?|m;RxSR3o!Q-4*w5m#2-7 zWCFj^f6;h=4W-|DCK#!)pw&DQhu>bv6K7+dNaKmJoQk>8CcSSC)V;)hR z%2WPi^kJv9T6sR^#CiQN`R$NdoQLg&L${GPAKJ5-6Nftdt7i&M6)55S-6ldyo8u0x zoAV!kqOZR+ed+~QE)nRXdz0Abi7?Gr;IM8$1iKqF%=IUTV7T02@m>z`wU?RsO2`k7 z@0b({pFp2}(@b7)fN^dnFD1{OvjiBGb{|;@@C;ZnOe>_d>2eUaZ7( z@TMa9qcZH9XLZr{xrF!znc1mD)B_ZnlHRq)?-Orn34AcXuOE&VtfBwFS8+k`B0J_E zH5t*1%(%gm=$~zpcJ8pj>A3qBeMiMbb_?>|n8!5s(KZ3`wOqQxp`wTrWL4W|r;?z) z{h%uARZ7$Wm{!=6uo2(JBTo|LFg_s_JExqGnuy0m_M+OtCNb#1I%mQYxOdt zFM;-c*xzk8$Yr_a^9av#nll!yH*g(dDa$>o&xgFHN&XMVW5}OUnOwBO^JmEcg5)Hw zf2N{$4>uq`W%-8h;L{q^4{XYenBp9BfudDBz7c!K(`y97rwL#+(H8R!dEUKI{-alM zZY?WkTHBY0_vJB*TPETb>9z_zo1&P5=oeJk!0G`pBQ-S|^*E=qvuq_v6CtGQ{va97 z-xUFJFT1S}kI^irh(-L9iLb0i5WhMyF_=cHV_#!Fg&svGUWbyOQGcJ|eIyVgyF zrqsigE6<4_b%C{RoEFysc9W_r1P>_m8CkQ@@ZUkUtKK5W?QBfkkOEqLc!cBkqKGIG zH`vHB=2LV)zw!9G?=M_W#Tjo%(p0&@`;#XsRuK=XTVTF6UF{0dH|9IjDX?Eq=U#ND zoC{3v85fX5e+^yQIkOKt&d?qdZy+y$?^8B^a`(UY?Yd{U0_T!npDGzH{=$6zh1w_2 zf1poy>c#K!I_&ZDXdG@v+_b9QvX_8*f^ILmJbia($ofmBcwOHa{kP8a&eYCuZSWVX z;RR>7;#7L5M*-*KRI>Xlh?^@{x~d(0i}UTyxyQ7xa8AnqwB}`wI7E7}z}yRGST3xg zVSb7|7s2;q82%!jTc9xQXoWd0&6rR-iF$++-0JeEub}YuJFu9KxI1}#!xX^YiOz~`LZNw)iEaGe&aE_*seQV5(xZ~2nXh&P*)n%UZ{%*jz{_)IK%h(F`=~bTk z?uq}sIlIVGuN(1=xnIXh(MPtfL=$SRg}#@v>56MVok2{gFXlspGw4NSUTnFeb*aTa0=Hh7a5VcTiWr?MrtWzdmH8BTnN;^6pC`eovuie|{79v-=Gy zNj<}e`wIAUZX=E%ZLXW!8HIj?sbIHZZOlKUtSfT9fVqs!4746cU19g_Uw!Hc^gXa# zIb>O1&G*y z)OM+4Gm{OTCl3GNi?D-Ag>z%0DGne?H`Njl)rBizGff}S9R-2 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%0DThcw+7Dgc!7~rv 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

nfJ9b1zbNMVMss}%^^)!2kC}AdLsIMsFc5i0 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

HAhOY7Sz?(eBV!dAty7!Y;H%60K#JV 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

oFk6Y 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%0DPs1I1IHo7k12T@0Zo_Nk-ZjrNt-osE5 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%0Dg2SH5Vc$L8G4{XzQg`%5 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

Jh<4e`@ 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

4K48(h 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 literal 0 HcmV?d00001 diff --git a/skimage/deconvolution/test/camera_wiener.npy b/skimage/deconvolution/test/camera_wiener.npy new file mode 100644 index 0000000000000000000000000000000000000000..f095ff8c4ed022dcb2dcdbff7d93e320826f493d GIT binary patch literal 2097232 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

J4`NRi`XQeSYbkdQ})#{|io+tANJ~ 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

crSpt@vaG@$l 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%0D;t#Bp<8#1-oEiUGdIqCS5ST()hgnSS3m)^2s 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

5xBoz# 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

L#nL>fc9wHnn_&Y5? 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 z±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≥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 ji0w;Q`61>FPsLz` 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

~Wc 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

(T*{Hkk?0O}Zh4(QVR!%@& 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

#WzesRa3{4-zL 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%0DQk?L0ggekq@E9W^N7$#(j2+ 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%0DbJi>$#WJZ2)iN9?FmnibS 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�E~nO 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≷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

    TRAng4WQ@P^YydnDfrhg-D3!NdGo?DX-sA( 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 z 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%0A7-Pr;MKE)0Km$)7g= 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