From d7d1faec4689faf803c835c6a512a067a272fdbb Mon Sep 17 00:00:00 2001 From: Neil Yager Date: Mon, 20 Aug 2012 21:56:10 +0100 Subject: [PATCH] Fix bug in skeletonize LUT --- skimage/data/bw_text_skeleton.npy | Bin 171908 -> 171908 bytes skimage/morphology/_skeletonize.py | 4 ++-- skimage/morphology/tests/test_skeletonize.py | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/skimage/data/bw_text_skeleton.npy b/skimage/data/bw_text_skeleton.npy index 9492cb647a5c5b9401c3526d4e9632ad416cba04..2933c48462db42b4eaa34a3832337fac75c9321c 100644 GIT binary patch delta 1410 zcmb7EU1(cn7~XqiS(7H`oVIHlrA@Q`jR{-NYF$bjZRkdacC{H!EZU1RL1k9DxYD2? z_KfX9bgfNa=sSi=rZ7|_WDR=2F%}VJ7YYF3HrUjg+%I}nEWu*~S15;Op>6-wR5d|c|TmVAy{GWNh- zMXIlzQ+>*MM3yHgC<7Mx+4?%jWlJxl`u^Div#Y=xoPYHjcBa0Ql@=|q&;z#;-3Pf;N?9oe4>FSgVqEhBbrV zt88OCy;Wunt%`4~)}q>w6mOEw^M`#L?T-|0On>j^se^S~JozX;e#uyJuC*cEFz^I$ zgo_t$%Uik@&e%cRpInn4`ndQRtu@oMCR6r@Ha0U^NPHUJ>Pdn;nfunORhPs^s3NG9ToZr)zlr_t2t7)t*d}9Z0;Au94KwWGuw1czHUAdqh%8Sf1xOS25U3 zn__oRqpF0X`FLTj^4xC3zW~I59e}H7(wMP(agHpWr5S9t3uhB(1;W6GZnlXge5&Pu zl+)znflEFa|C^qNGJ@!S$)6(}jyFoFg|1^9a`6SU1lR?i{aVIWtq)=ph%>gT zbW*-Xt(+Lpr5x7ujIGLPMLAVm_ihs>yVu9?n73awxn14`Pp(%LFVXkOWGmk+#U&if zcs0L0q_g!0G@WF)P^b1_I8VWOA8>%3k$NfqLIE!Sb_xPTZ1t-9VASuTs4kDjYDk+j zy|mEt|AqDIqY-N-b{PGE9#MJDgB2t7oVXfC9>pRxwqw8u@VR2q_Du#Wu~8_Z>(TCh z4yhBJ5Y7SkmHvySSfDyq*4_`*zR^?Vn!Vr4h1YSf`_RUCN|Pl_D5kiun@hLuy;rde z?G(fjPG0m$wvAN6GY`-f;*;s^?m1JNRy2BAz1C0gFD*UjS_ie8Bu+@fvhEn5P_3KT IuN@fw7xyMCR{#J2 delta 1328 zcmb_cO=w(I6!yHf$xLQ4@8xe2Z89C&PKDMqLx?scqaD)_C^2TzHg?oNuP$2JruHEw z8?kw6Ko@P2mxCUtMMp(Y>d$i?GGGfGannT?v&h0t$?OV7BoZhU7xla8ObuBnxcGSQ zedpYJ?)RN@-|UUL*&B7ex;Vx^ftLY5?7}i7S{seeL=O0sQ@oe zg+ax{&coj7;<*)*t!YbCf?9DxljB~>pIdpU(^a=obe`O0jLh{qA)Gkh*!t6~2aQ>*2@(`fL z!UZ!y9Z6RmtN0MXx-(dR6wi~|vlh1Qo1DHm3gR3viQo}DPi+oP{{O+0l$U6qtM+1R zjZuiS*jj0l3{g<-C*ZA>+Es8~p`rcXt2-oi2f?**-Mg=$sFCmz6YC@D;nJ6Shz8bY zhc9IBZj8L3BW%B}9bfww0mtq^)=nI!QGV~Hka*wH4k^x4t(4y(Ou=P(x_Vc%qdNPz zKD@-Qpl?a9LyCF4Sg8=dKNR8QABgNBvw*M-C1>=xhXH+!``~zg0Zw!g&t#w5%=Xga z8w3BD)DCU0Zv1JNtL7>LuvZUZGdm+KXnG1+oya=rDqO4VNY&q2d_*_q=wWysWE@xV zfg7&cUA20Cb9MpQ=e3yDjeBS|N3J@6bTne5S<;{32a+_6cU|>xzB^FiBJS`fmeF3w jS;l$TwbkHE+T?|y!HNi5GKw13C)atcv5-Dw3{LzFg?0!P diff --git a/skimage/morphology/_skeletonize.py b/skimage/morphology/_skeletonize.py index 58842c6d..04a65da6 100644 --- a/skimage/morphology/_skeletonize.py +++ b/skimage/morphology/_skeletonize.py @@ -85,10 +85,10 @@ def skeletonize(image): # combinations of 8 binary neighbours. 1's, 2's and 3's are candidates # for removal at each iteration of the algorithm. lut = [ 0,0,0,1,0,0,1,3,0,0,3,1,1,0,1,3,0,0,0,0,0,0,0,0,2,0,2,0,3,0,3,3, - 0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,3,0,2,2, + 0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,2,2, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 2,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,3,0,2,0, - 0,1,3,1,0,0,1,3,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,3,1,0,0,1,3,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, 3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 2,3,1,3,0,0,1,3,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 2,3,0,1,0,0,0,1,0,0,0,0,0,0,0,0,3,3,0,1,0,0,0,0,2,2,0,0,2,0,0,0] diff --git a/skimage/morphology/tests/test_skeletonize.py b/skimage/morphology/tests/test_skeletonize.py index 2f9d046e..c9cdbc24 100644 --- a/skimage/morphology/tests/test_skeletonize.py +++ b/skimage/morphology/tests/test_skeletonize.py @@ -92,6 +92,23 @@ class TestSkeletonize(): blocks = correlate(result, mask, mode='constant') assert not numpy.any(blocks == 4) + def test_lut_fix(self): + im = np.zeros((6, 6), np.uint8) + im[1, 2] = 1 + im[2, 2] = 1 + im[2, 3] = 1 + im[3, 3] = 1 + im[3, 4] = 1 + im[4, 4] = 1 + im[4, 5] = 1 + result = skeletonize(im) + expected = np.array([[0, 0, 0, 0, 0, 0], + [0, 0, 1, 0, 0, 0], + [0, 0, 0, 1, 0, 0], + [0, 0, 0, 0, 1, 0], + [0, 0, 0, 0, 0, 1], + [0, 0, 0, 0, 0, 0]], dtype=np.uint8) + assert np.all(result == expected) class TestMedialAxis(): def test_00_00_zeros(self):