
    9ip5                         S SK rS SKrS SKJr  S SKJr  S SKJ	r	J
r
  S SKJr  S SKJr  S SKJrJrJr  S SKJrJrJr   " S S	5      r " S
 S5      r " S S5      rg)    N)assert_array_equal)iodraw)fetch)binary_blobs)medial_axisskeletonizethin)G123_LUT	G123P_LUT_generate_thin_lutsc                   T   \ rS rSr\R
                  R                  SSS/5      S 5       r\R
                  R                  S/ SQ5      S 5       rS	 r	\R
                  R                  SSS/5      S
 5       r
\R
                  R                  SSS/5      S 5       r\R
                  R                  SSS/5      S 5       r\R
                  R                  SSS/5      S 5       rS r\R
                  R                  SSS/5      \R
                  R                  S\\\/5      S 5       5       rS r\R
                  R                  S/ SQ5      \R
                  R                  S\\R*                  /5      S 5       5       r\R
                  R                  SSS/5      S 5       rS rS rSrg)TestSkeletonize   methodzhangleec                     [         R                  " S5      n[        X!S9n[        U[         R                  " S5      5        g )N   r   r   )npzerosr	   r   selfr   imageresults       i/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/morphology/tests/test_skeletonize.pytest_no_foreground"TestSkeletonize.test_no_foreground   s-     U26288F#34    zndim,method))   r   )   r   )r"   r   )   r   c                     [         R                  " SU-  [        S9n[        R                  " [
        5         [        X2S9  S S S 5        g ! , (       d  f       g = f)N)r   dtyper   )r   r   boolpytestraises
ValueErrorr	   )r   ndimr   r   s       r   test_wrong_ndimTestSkeletonize.test_wrong_ndim   s8     D1]]:&- '&&s   
A


Ac                     [         R                  " S[        S9n[        R                  " [
        5         [        USS9  S S S 5        g ! , (       d  f       g = f)Nr   r&   foor   )r   onesr(   r)   r*   r+   r	   r   r   s     r   test_wrong_method!TestSkeletonize.test_wrong_method   s4    d+]]:&e, '&&s   A
Ac                     [         R                  " S[        S9n[        X!S9nUS:X  a#  [         R                  " / SQ/ SQ/ SQ/[        S9nO"[         R                  " / SQ/ SQ/ SQ/[        S9n[        X45        g )	N)r#   r$   r&   r   r   )r   r   r"   r   )r"   r"   r   r   )r   r   r   r   )r"   r"   r"   r"   )r   r1   r(   r	   arrayr   )r   r   r   r   expecteds        r   test_skeletonize_all_foreground/TestSkeletonize.test_skeletonize_all_foreground!   s\    d+U2Wxx|\ JRVWHxx|\ JRVWH6,r!   c                 h    [         R                  " S[        S9nSUS'   [        X!S9n[	        X25        g )Nr   r&   r"   )r#   r#   r   )r   r   r(   r	   r   r   s       r   test_single_point!TestSkeletonize.test_single_point+   s-    t,dU26)r!   c                 ^    [         R                  " S[        S9n[        X!S9n[	        X25        g )N)r   r"   r&   r   )r   r1   r(   r	   r   r   s       r   test_vec_1dTestSkeletonize.test_vec_1d2   s&     d+U26)r!   c                 |    [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[        S9n[        X!S9n[	        X25        g )N)r   r   r   r   r   )r   r   r   r   r"   )r   r"   r"   r"   r   )r"   r   r   r   r   r&   r   r   r6   r(   r	   r   r   s       r   test_already_thinned$TestSkeletonize.test_already_thinned9   s=     	
 U26)r!   c                     [         R                  " [        S5      SS9nUS:H  n[        U5      n[        R
                  " [        S5      5      n[        X#5        g )Nzdata/bw_text.pngT)as_grayr   zdata/bw_text_skeleton.npy)r   imreadr   r	   r   loadr   r   r   r   r7   s       r   test_outputTestSkeletonize.test_outputH   sI    		% 23TB 
U#775!<=>6,r!   r'   c                    [         R                  " SUS9nSUSS2SS24'   SUSS2SS24'   S	USS2SS24'   [        R                  " S
SSS5      u  pE[	        S5       H  nSX4U-   U4'   M     [        R                  " SSS
S5      u  pE[	        S5       H  nSX4U-   U4'   M     [         R
                  " UR                  5      u  pxUS-
  S-  US-
  S-  -   S:  n	US-
  S-  US-
  S-  -   S:  n
SX9'   SX:'   [        X1S9R                  [         R                  5      n[         R                  " SS/SS//[         R                  5      n[        R                  " XSS9n[         R                  " US:H  5      (       a   eg )N),  rL   r&   r"   
   id      ir#         i  r$      r      i  i  r   r   constant)mode)r   r   r   linerangeindicesshaper	   astypeuint8r6   ndi	correlateany)r   r   r'   r   rscsiiriccircle1circle2r   maskblockss                 r   test_num_neighbors"TestSkeletonize.test_num_neighborsR   s    51 !"bfbfn"#d3h3"#bfd3h 3R-rA !Eq&"* 2sC-rA !Eq&"*  EKK(8/R#X!O3e;8/R#X!O3e;U299"((C xx!Q!Q("((3v*=66&A+&&&&&r!   c           	         [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9n[        U5      n[         R                  " / SQ/ SQ/ SQ/ SQ/ S	Q/ SQ/[        S9n[         R                  " X#:H  5      (       d   eg )
N)r   r   r   r   r   r   )r   r   r"   r   r   r   )r   r   r"   r"   r   r   )r   r   r   r"   r"   r   )r   r   r   r   r"   r"   r&   )r   r   r   r"   r   r   )r   r   r   r   r"   r   )r   r   r   r   r   r"   )r   r6   r(   r	   allrH   s       r   test_lut_fixTestSkeletonize.test_lut_fixr   s|    """""" 

 U#88"""""" 

 vvf())))r!   ))rO   r   )rO   r   )r#   r   c                     [         R                  " SU-  US9n[         R                  " US5      nUR                  5       n[	        XAS9n[         R
                  R                  XE5        g )N)r#   r&   r"   r   )r   r1   padcopyr	   testingr   )r   r   r,   r'   r   original_s          r   test_input_not_modified'TestSkeletonize.test_input_not_modified   sO     t51ua ::<-


%%e6r!   c                     [         R                  R                  S5      S S S2S S S24   nSX"S:  '   UR                  5       n[        X!S9nUR                  [
        :X  d   e[        X#5        g )N)   rw   rO   g        g      ?r   )r   randomrp   r	   r'   r(   r   )r   r   r   rr   r   s        r   test_input_float_conv%TestSkeletonize.test_input_float_conv   sd     		  *3Q3!84 ck::<U2||t###5+r!   c                 :   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/[        S9n[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9n[        USS9n[	        X25        g )N)r   r   r   r   r   r   r   r   r"   r   r   r   r   r   r   r   )r   r   r   r   r   r   r"   r"   r"   r"   r"   r   r   r   r   r   )r   r   r   r   r"   r"   r"   r"   r"   r"   r"   r"   r"   r   r"   r   )r   r   r"   r"   r"   r"   r"   r"   r"   r"   r"   r"   r"   r"   r"   r   )r   r"   r"   r"   r"   r   r   r"   r"   r"   r   r   r"   r"   r"   r   )r   r"   r"   r"   r   r   r   r"   r"   r"   r   r   r"   r"   r"   r   )r   r   r"   r"   r   r   r   r"   r"   r"   r   r   r"   r"   r"   r   )r   r   r"   r"   r"   r   r   r"   r"   r"   r   r   r"   r"   r"   r   )r   r   r   r"   r"   r   r   r"   r"   r"   r   r   r"   r"   r"   r   )r   r   r   r"   r"   r"   r"   r"   r"   r"   r"   r"   r"   r"   r"   r   )r   r   r   r   r"   r"   r"   r"   r"   r"   r"   r"   r"   r"   r"   r   )r   r   r   r   r   r   r"   r"   r"   r"   r"   r"   r"   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   )r   r   r   r   r   r   r"   r"   r   r"   r"   r   r   r   r   r   )r   r   r   r   r"   r"   r   r   r"   r   r   r"   r   r   r   r   )r   r   r   r"   r   r   r   r   r"   r   r   r   r"   r   r   r   )r   r   r"   r   r   r   r   r   r"   r   r   r   r   r"   r   r   )r   r   r   r"   r   r   r   r   r"   r   r   r   r   r"   r   r   )r   r   r   r   r"   r   r   r   r"   r   r   r   r   r"   r   r   )r   r   r   r   r   r"   r"   r   r"   r   r   r   r"   r   r   r   )r   r   r   r   r   r   r   r"   r   r"   r"   r"   r   r   r   r   r   r   rA   r   r   r7   r   s       r   test_two_hole_image_vs_fiji+TestSkeletonize.test_two_hole_image_vs_fiji   s    @@@@@@@@@@@@@@  #
& 88@@@@@@@@@@@@@@  #
& U516,r!   c                     [        SSSSS9nUS S2S4   n[        U5      n[        R                  " [	        S5      5      R                  [        5      n[        X#5        g )	N    g?r#   i  )n_dimrng.z data/_blobs_3d_fiji_skeleton.tif)r   r	   r   rF   r   rZ   r(   r   rH   s       r   test_3d_vs_fijiTestSkeletonize.test_3d_vs_fiji   sV     RQD9crc3hU#99U#EFGNNtT6,r!    N)__name__
__module____qualname____firstlineno__r)   markparametrizer   r-   r3   r8   r;   r>   rB   rI   r(   floatintrh   rl   r   r[   rt   ry   r}   r   __static_attributes__r   r!   r   r   r      s   [[X'785 95
 [[K..
-
 [[X'78- 9- [[X'78* 9* [[X'78* 9* [[X'78* 9*- [[X'78[[WtUC&89' : 9'<*4 [[],RS[[WtRXX&677 8 T7 [[X'78	, 9	,)-V-r!   r   c                      \ rS rSr\S 5       rS r\R                  R                  S\
\\/5      S 5       r\R                  R                  S\
\\/5      S 5       r\R                  R                  S\
\\/5      S 5       rS rS	 rS
rg)TestThin   c           
      b    [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9nU$ )Nr   r   r   r   r   r   r   )r   r"   rO   r#   r$   r   r   )r   r"   r   r"   r"   r"   r   )r   r"   r"   r"   r"   r"   r   )r      r"   r"   r"   r"   r   r&   )r   r6   r   r   iis     r   input_imageTestThin.input_image   s8     XX%%%%%%% 
 	r!   c                     [         R                  " S[        S9n[         R                  " [	        U5      S:H  5      (       d   eg N)rM   rM   r&   F)r   r   r(   rk   r
   r2   s     r   test_all_zerosTestThin.test_all_zeros   s0    .vvd5kU*++++r!   r'   c                     U R                   R                  U5      nUR                  5       n[        U5        [        R
                  R                  X#5        g)z0Ensure thinning does not modify the input image.N)r   rZ   rp   r
   r   rq   r   )r   r'   r   rr   s       r   test_thin_copies_inputTestThin.test_thin_copies_input   s>       ''.::<U


%%e6r!   c           
          U R                   R                  U5      n[        US5      R                  [        5      n[        R
                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9n[        X45        g )Nr"   r   r   r   r"   r   r   r   r   )r   r"   r   r"   r"   r   r   )r   r   r"   r"   r"   r   r   r&   r   rZ   r
   r(   r   r6   r   r   r'   r   r   r7   s        r   test_iter_1TestThin.test_iter_1   se      ''.eQ&&t,88%%%%%%% 
 	6,r!   c           
          U R                   R                  U5      n[        U5      R                  [        5      n[        R
                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9n[        X45        g )Nr   r   )r   r"   r   r"   r   r   r   r&   r   r   s        r   test_noiterTestThin.test_noiter  sc      ''.e##D)88%%%%%%% 
 	6,r!   c                     [         R                  " S[        S9[         R                  " S[        S94 H1  n[        R                  " [
        5         [        U5        S S S 5        M3     g ! , (       d  f       ME  = f)Nr#   r&   )r#   r#   r#   )r   r   r(   r)   r*   r+   r
   r   s     r   test_baddimTestThin.test_baddim  sJ    88AT*BHHYd,KLBz*R +* M**s   A))
A8	c                 \    [        5       u  p[        U[        5        [        U[        5        g )N)r   r   r   r   )r   g123g123ps      r   test_lut_generationTestThin.test_lut_generation  s     )+4*5),r!   r   N)r   r   r   r   propertyr   r   r)   r   r   r(   r   r   r   r   r   r   r   r   r   r!   r   r   r      s      , [[WtUC&897 :7 [[WtUC&89- :-" [[WtUC&89- :-"
-r!   r   c                   |    \ rS rSrS rS r\R                  R                  S\	\
\/5      S 5       rS rS rS rS	rg
)TestMedialAxisi&  c                     [        [        R                  " S[        S95      n[        R                  " US:H  5      (       d   eg r   r   r   r   r(   rk   r   r   s     r   r   TestMedialAxis.test_all_zeros'  s0    RXXhd;<vvfo&&&&r!   c                     [        [        R                  " S[        S9[        R                  " S[        S95      n[        R                  " US:H  5      (       d   eg r   r   r   s     r   test_all_zeros_masked$TestMedialAxis.test_all_zeros_masked+  sB    HHXT*BHHXT,J
 vvfo&&&&r!   r'   c                     [         R                  " SUS9nSUS S 2S4'   SUS S 2S4'   SUS S 2S4'   [         R                  " UR                  S5      nSUS S 2S4'   [	        U5      n[        XC5        g )	N)	   r   r&   r"   rO   r#   r$   FT)r   r   fullrY   r   r   )r   r'   r   r7   r   s        r   test_vertical_line!TestMedialAxis.test_vertical_line1  sn     u-adadad775;;.AU#6,r!   c                 L   [         R                  " S[        S9nSUSS2SS24'   [         R                  " / SQ/ SQ/ SQ/ S	Q/ S
Q/ S	Q/ SQ/ SQ/ SQ/	[        S9n[	        U5      n[         R
                  " X2:H  5      (       d   e[	        USS9u  p4UR                  5       S:X  d   eg )Nr      r&   Tr"   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r   r   r   r   r   r   r   r   r   r   r   r"   r   r   r   r"   r   r   r   r   r   r   r   r   r   r"   r   r   )r   r   r   r"   r   r   r   r   r   r   r   r"   r   r   r   )r   r   r   r   r"   r"   r"   r"   r"   r"   r"   r   r   r   r   )return_distancer$   )r   r   r(   r6   r   rk   max)r   r   r7   r   distances        r   test_rectangleTestMedialAxis.test_rectangle?  s    - adAbDj88=========
 
 U#vvf())))&udC||~"""r!   c                    [         R                  " S[        S9nSUSS2SS24'   SUSSS24'   [         R                  " / S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ S
Q/ S	Q/	[        S9n[	        U5      n[         R
                  " X2:H  5      (       d   eg )Nr   r&   Tr"   r   Fr$   r   r   )r   r   r"   r"   r"   r"   r"   r"   r"   r"   r"   r"   r"   r   r   r   )r   r   r(   r6   r   rk   r|   s       r   test_rectange_with_hole&TestMedialAxis.test_rectange_with_holeV  s    - adAbDja2g88=========
 
 U#vvf())))r!   c                     [         R                  " S[        S9nSUS S 2SS24'   [        U5      n[         R                  " X!:H  5      (       d   eg )N)r"   r   r&   Tr"   r   )r   r   r(   r   rk   )r   r   r   s      r   test_narrow_image TestMedialAxis.test_narrow_imagek  sD    t,a2gU#vvfo&&&&r!   r   N)r   r   r   r   r   r   r)   r   r   r(   r   r   r   r   r   r   r   r   r!   r   r   r   &  sG    '' [[WtUC&89- :-#.**'r!   r   )numpyr   r)   numpy.testingr   scipy.ndimagendimager\   skimager   r   skimage._shared.testingr   skimage.datar   skimage.morphologyr   r	   r
   skimage.morphology._skeletonizer   r   r   r   r   r   r   r!   r   <module>r      sL      ,   ) % = = T TH- H-VK- K-\J' J'r!   