
    9i:H                        S SK Jr  S SKrS SKrS SKJr  S SKJrJ	r	J
r
  S SKJrJr  S SKJr  \" 5       S 5       rS rS	 rS
 rS&S jrS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S r'\RP                  RS                  S/ S Q5      S! 5       r*S" r+S# r,\RP                  RS                  S$\RZ                  * \RZ                  /5      S% 5       r.g)'    )productN)assert_equal)datafiltersimg_as_float)run_in_parallelexpected_warnings)slicc                  j   [         R                  R                  S5      n [         R                  " S5      nSUS S2S S2S4'   SUSS 2S S2S4'   SUSS 2SS 2S4'   USU R	                  UR
                  S9-  -  nSXS:  '   SXS:  '   [        USSS	SS
9n[        [        [         R                  " U5      5      S5        [        UR
                  UR
                  S S 5        [        US S2S S24   S5        [        USS 2S S24   S5        [        US S2SS 24   S5        [        USS 2SS 24   S5        g )Nr               
      {Gz?size   F)
n_segmentssigmaenforce_connectivitystart_labelr   
nprandomdefault_rngzerosnormalshaper
   r   lenuniquerngimgsegs      d/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/segmentation/tests/test_slic.pytest_color_2dr*      s>   
))


"C
((;
CCSbS!CSbS!CRS!4#**#))*,,,CCaLCaL
sqST
UC RYYs^$a(CIIcrN+SbS#2#X"RS#2#X"SbS"#X"RS"#X"    c                     [         R                  R                  S5      n [         R                  " S5      nSUS S2S S2SS24'   SUS S2SS 2SS24'   SUSS 2S S2SS24'   SUSS 2SS 2SS24'   US	U R	                  UR
                  S
9-  -  n[         R                  " USSUS9n[        USSSS9n[        [        [         R                  " U5      5      S5        [        UR
                  UR
                  S S 5        [        US S2S S24   S5        [        USS 2S S24   S5        [        US S2SS 24   S5        [        USS 2SS 24   S5        g )Nr   r   r      r   r   r   r      r.   r   r   outF)r   r   r   r   r   r   r   r   r    r!   r"   clipr
   r   r#   r$   r%   s      r)   test_multichannel_2dr4   !   s_   
))


"C
((;
CCSbS!A#CRS!A#CSbS!A#CRS!A#4#**#))*,,,C
''#q!
%C
squ!
LC RYYs^$a(CIIcrN+SbS#2#X"RS#2#X"SbS"#X"RS"#X"r+   c            
      b   [         R                  R                  S5      n [         R                  " S5      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'   USU R	                  UR
                  S9-  -  nS	XS	:  '   SXS:  '   [        USS
S	S SSS9n[        [        [         R                  " U5      5      S
5        [        UR
                  UR
                  5        [        US S2S S24   S5        [        USS 2S S24   S5        [        US S2SS 24   S	5        [        USS 2SS 24   S5        g )Nr   r   r   Q?r   q=
ףp?      ?F%uk?r   r   r   Fr   r   compactnesschannel_axisconvert2labr   r   r   r   r%   s      r)   test_gray_2dr?   5   s;   
))


"C
((8
CCSbSMCSbSMCRSM6CJJCIIJ...CCaLCaL
C RYYs^$a(CII&SbS#2#X"RS#2#X"SbS"#X"RS"#X"r+   c                      [         R                  " S5      n SU S S2S S24'   [        R                  " [        SS9   [        U 5        S S S 5        [        U S S9  g ! , (       d  f       N= f)Nr6   r7   r   z&channel_axis=-1 indicates multichannel)matchr=   )r   r    pytestraises
ValueErrorr
   r'   s    r)    test_gray2d_default_channel_axisrG   P   sU    
((8
CCSbSM	z)Q	RS	 
S4  
S	Rs   A
A(c                 `    U R                   n[        R                  " X:g  5      nXC-  U:  d   eg )N)r   r   sum)seg1seg2allowed_mismatch_ratior   ndiffs        r)   _check_segment_labelsrN   X   s,    99DFF4< EL2222r+   c                  \   [         R                  " 5       S S2S S24   n SU R                  [        R                  5      -  n[        U 5      nX"R                  5       -  nUS-   n[        U 5      n[        U5      n[        U5      n[        U5      n[        U5      n	[        R                  R                  XV5        [        R                  R                  XW5        [        R                  R                  X5        UR                  5       n
UR                  5       n[        X-
  5      U
-  S:  d   eg )N      i  g      ?)r   catastyper   uint16r   maxr
   testingassert_array_equalabs)	img_uint8
img_uint16img_float32img_float32_normimg_float32_offsetrJ   rK   seg3seg4seg5n_seg1n_seg4s               r)   ,test_slic_consistency_across_image_magnituderc   ^   s     
4C4#:&Iy''		22Jy)K"__%66$t+	?D
DD !D"#DJJ!!$-JJ!!$-JJ!!$-
 XXZFXXZFv&(3...r+   c                     [         R                  R                  S5      n [         R                  " S5      n/ nUR                  S S  H/  nUS-  nUR                  [        S U5      [        US 5      45        M1     [        [        U6 5      n[        [        SS/4S-  6 5      n[        X%5       H	  u  pgXqU'   M     USU R                  UR                  S9-  -  nSXS:  '   SXS:  '   [        USS	SS
9n[        [        [         R                  " U5      5      S	5        [        U[        S	5      5       H  u  pg[        X   U5        M     g )Nr   r   r      r   r   r   r   r   r   r   r.   )r   r   r   )r   r   r   r    r"   appendslicelistr   zipr!   r
   r   r#   r$   range)	r&   r'   slicesdim_sizemidpointcolorsscr(   s	            r)   test_color_3drr   z   s%   
))


"C
((?
#CFIIcrNq=uT8,eHd.CDE # '6"#F'aVIM+,FF#A $4#**#))*,,,CCaLCaL
s!q
9CRYYs^$a(FE!H%SVQ &r+   c            
         [         R                  R                  S5      n [         R                  " S5      n/ nUR                   H/  nUS-  nUR                  [        S U5      [        US 5      45        M1     [        [        U6 5      n[         R                  " SSS5      n[        X%5       H	  u  pgXqU'   M     USU R                  UR                  S9-  -  nSXS:  '   SXS:  '   [        USS	SS S
SS9n[        [        [         R                  " U5      5      S	5        [        U[!        S	5      5       H  u  pi[        X   U	5        M     g )Nr   r   r   rf   r   gzo ?g$I$I?MbP?r   r   r.   Fr;   )r   r   r   r    r"   rg   rh   ri   r   arangerj   r!   r
   r   r#   r$   rk   )
r&   r'   rl   rm   rn   shadesrp   shr(   rq   s
             r)   test_gray_3dry      s)   
))


"C
((<
 CFIIq=uT8,eHd.CDE  '6"#FYYq(G,FV$A %53::399:---CCaLCaL
C RYYs^$a(FE!H%SVQ &r+   c            	         [         R                  R                  S5      n [         R                  " / SQ/ SQ/[        5      nUSU R                  UR                  S9-  -  n[         R                  " / SQ/ SQ/[        5      n[        S/5         [        US/ SQS SS	9nS S S 5        [        WU5        g ! , (       d  f       N= f)
Nr   r   r   r   r   r   r   r   r   r   r   r   r   皙?r   z5Input image is 2D: sigma number of elements must be 2r   )r   2   r   )r   r   r=   r   )r   r   r   arrayfloatr!   r"   intr	   r
   r   )r&   r'   result_sigma	seg_sigmas       r)   test_list_sigmar      s    
))


"C
((&(:;U
CC3+++C88/1CDcJL		CD
 AZdPQ
	
 L)
 
s   B22
C c            
         [         R                  R                  S5      n [         R                  " / SQ/ SQ/[        5      n[         R                  " / SQ/ SQ/[
        5      n[         R                  " / SQ/ SQ/[
        5      nUSU R                  UR                  S	9-  -  n[        US
SS SSS9n[        US
SSS/SS SS9n[        XB5        [        XS5        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   r   )r   r   r   r   r   r}   r   r   r9   )r   r   r=   r<   r     r   )r   r   spacingr<   r=   r   )
r   r   r   r   r   r   r!   r"   r
   r   )r&   r'   result_non_spacedresult_spacedseg_non_spaced
seg_spaceds         r)   test_spacingr      s    
))


"C
((O_5u
=C/?!CSIHHo?EM3+++C3TUN aJ 3+r+   c                      [         R                  " / SQ/ SQ/[        5      S-   n [        R                  " [
        5         [        U SSSS9  S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   Tr   )r=   r>   r   )r   r   r   rC   rD   rE   r
   rF   s    r)   test_invalid_lab_conversionr      sB    
((O_5u
=
AC	z	"SrtC 
#	"	"s   A
A#c                  z   [         R                  " / SQ/ SQ/ SQ/[        5      n [        U SSSSSS S	9n[        U SSSSSS S	9n[        U SSSSS
SS S9n[         R                  " / SQ/ SQ/ SQ/[        5      n[         R                  " / SQ/ SQ/ SQ/[        5      n[	        X5        [	        X%5        [	        X45        g )Nr|   r   r   r   r   r   r   r   r   r   r   r   r   r   -C6?TFr   )r<   r   r>   r   r=   皙?)r<   r   r>   max_size_factorr   r=   )r   r   r   r
   r   )r'   segments_connectedsegments_disconnectedsegments_connected_low_maxresult_connectedresult_disconnecteds         r)   test_enforce_connectivityr      s    
((&(:<NOQV
WC	! !	" "&	!	" xx	/1CDe ((	/1CDe #6&<+>r+   c                  j   [         R                  R                  S5      n [         R                  " S5      nSUS S2S S2S4'   SUSS 2S S2S4'   SUSS 2SS 2S4'   USU R	                  UR
                  S9-  -  nSXS:  '   SXS:  '   [        USSS	SS
9n[        [        [         R                  " U5      5      S5        [        UR
                  UR
                  S S 5        [        US S2S S24   S5        [        USS 2S S24   S5        [        US S2SS 24   S5        [        USS 2SS 24   S5        g )Nr   r   r   r   r   r   r   r   T)r   r   	slic_zeror   r   r   r   r%   s      r)   test_slic_zeror     s=   
))


"C
((;
CCSbS!CSbS!CRS!4#**#))*,,,CCaLCaL
sqTq
IC RYYs^$a(CIIcrN+SbS#2#X"RS#2#X"SbS"#X"RS"#X"r+   c            
         [         R                  R                  S5      n [         R                  " S5      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'   USU R	                  UR
                  S9-  -  nS	XS	:  '   SXS:  '   [        USS
S	S SSS9n[         R                  " UR                  5       [         R                  " UR                  5      :H  5      (       d   eg )Nr   r6   r7   r   r8   r9   r:   r   r   r   Fr;   )r   r   r   r    r!   r"   r
   allravelrv   r   r%   s      r)   test_more_segments_than_pixelsr     s    
))


"C
((8
CCSbSMCSbSMCRSM6CJJCIIJ...CCaLCaL
C 66#))+388!445555r+   c                  f   [         R                  R                  S5      n [         R                  " S5      nSUSS2SS24'   [         R                  " S5      nSUS S2S S2S4'   SUSS 2S S2S4'   SUSS 2SS 2S4'   USU R	                  UR
                  S	9-  -  n[         R                  " USSUS
9  [        USSSUS9n[        [        [         R                  " U5      5      S5        [        UR
                  UR
                  S S 5        [        USS2SS24   S5        [        USS2SS24   S5        [        USS2SS24   S5        [        USS2SS24   S5        [        US S2S S 24   S5        [        USS 2S S 24   S5        [        US S 2S S24   S5        [        US S 2SS 24   S5        g )Nr   r6   r   r   r   r   r   r   r0   r   F)r   r   r   mask   r   r   r2   r&   mskr'   r(   s       r)   test_color_2d_maskr   0  s   
))


"C
((8
CC"ad
O
((;
CCSbS!CSbS!CRS!4#**#))*,,,CGGCA3
sqC
PC RYYs^$a(CIIcrN+QrT1R4Z!$RUAbD[!1%QrT2b5[!1%RUBrE\"A&RaRUQRS!Va QUQQVa r+   c                     [         R                  R                  S5      n [         R                  " S5      nSUSS2SS24'   [         R                  " S5      nSUS S2S S2SS24'   SUS S2SS 2SS24'   SUSS 2S S2SS	24'   SUSS 2SS 2S	S
24'   USU R	                  UR
                  S9-  -  n[         R                  " USSUS9  [        USSUS9n[        [        [         R                  " U5      5      S5        [        UR
                  UR
                  S S 5        [        USS2SS24   S5        [        USS2SS24   S5        [        USS2SS24   S5        [        USS2SS24   S5        [        US S2S S 24   S5        [        USS 2S S 24   S5        [        US S 2S S24   S5        [        US S 2SS 24   S5        g )Nr   )r   r   r   r   r   r-   r   r   r/   r.   r   r   r0   F)r   r   r   r   r   r   r2   r   s       r)   test_multichannel_2d_maskr   K  s   
))


"C
((8
CC"ad
O
((;
CCSbS!A#CRS!A#CSbS!A#CRS!A#4#**#))*,,,CGGCA3
squ3
GC RYYs^$a(CIIcrN+QrT1R4Z!$QrT2b5[!1%RUAbD[!1%RUBrE\"A&RaRUQRS!Va QUQQVa r+   c            
      ^   [         R                  R                  S5      n [         R                  " S5      nSUSS2SS24'   [         R                  " S5      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'   US
U R	                  UR
                  S9-  -  n[         R                  " USSUS9  [        USSSS SUS9n[        [        [         R                  " U5      5      S5        [        UR
                  UR
                  5        [        USS2SS24   S5        [        USS2SS24   S5        [        USS2SS24   S5        [        USS2SS24   S5        [        US S2S S 24   S5        [        USS 2S S 24   S5        [        US S 2S S24   S5        [        US S 2SS 24   S5        g )Nr   r6   r   r   r   r7   r   r8   r9   r:   r   r0   r   Fr   r   r<   r=   r>   r   r   r   r2   r   s       r)   test_gray_2d_maskr   g  s   
))


"C
((8
CC"ad
O
((8
CCSbSMCSbSMCRSM6CJJCIIJ...CGGCA3
C RYYs^$a(CII&QrT1R4Z!$QrT2b5[!1%RUAbD[!1%RUBrE\"A&RaRUQRS!Va QUQQVa r+   c                  z   [         R                  R                  S5      n [         R                  " S5      nSUS S 2SS24'   [         R                  " / SQ/ SQ/[
        5      nUSU R                  UR                  S9-  -  n[         R                  " / S	Q/ S	Q/[        5      n[        US
SS/S US9n[        XC5        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    r   r   r!   r"   r   r
   r   )r&   r   r'   r   r   s        r)   test_list_sigma_maskr     s    
))


"C
((6
CC1R4L
((&(:;U
CC3+++C88/1CDcJLSQr1gDsSI)r+   c            
         [         R                  R                  S5      n [         R                  " S5      nSUS S 2SS24'   [         R                  " / SQ/ SQ/[
        5      n[         R                  " / SQ/ SQ/[        5      n[         R                  " / S	Q/ S
Q/[        5      nUSU R                  UR                  S9-  -  n[        USSS SUS9n[        USSSS/SS US9n[        XS5        [        Xd5        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   r   r   r}   r   r   r9   )r   r   r=   r<   r   r~   )r   r   r   r<   r=   r   )r   r   r   r    r   r   r   r!   r"   r
   r   )r&   r   r'   r   r   r   r   s          r)   test_spacing_maskr     s    
))


"C
((6
CC1R4L
((O_5u
=C/?!CSIHHo?EM3+++C3SN QJ 3+r+   c                     [         R                  " S5      n SU S S 2SS24'   [         R                  " / SQ/ SQ/ SQ/[        5      n[	        USSS	S
U S S9n[	        USSS
S
U S S9n[	        USSS	S
SU S S9n[         R                  " / SQ/ SQ/ SQ/[        5      n[         R                  " / SQ/ SQ/ SQ/[        5      n[        X%5        [        X65        [        XE5        g )N)r   r/   r   r   r|   r   r   r   r   TF)r<   r   r>   r   r=   r   )r<   r   r>   r   r   r=   r   )r   r    r   r   r
   r   )r   r'   r   r   r   r   r   s          r)   test_enforce_connectivity_maskr     s    
((6
CC1R4L
((&(:<NOQV
WC	! !	" "&	!	" xx	/1CDe ((	/1CDe #6&<+>r+   c                  f   [         R                  R                  S5      n [         R                  " S5      nSUSS2SS24'   [         R                  " S5      nSUS S2S S2S4'   SUSS 2S S2S4'   SUSS 2SS 2S4'   USU R	                  UR
                  S	9-  -  n[         R                  " USSUS
9  [        USSSUS9n[        [        [         R                  " U5      5      S5        [        UR
                  UR
                  S S 5        [        USS2SS24   S5        [        USS2SS24   S5        [        USS2SS24   S5        [        USS2SS24   S5        [        US S2S S 24   S5        [        USS 2S S 24   S5        [        US S 2S S24   S5        [        US S 2SS 24   S5        g )Nr   r6   r   r   r   r   r   r   r   r0   r   T)r   r   r   r   r   r   r   r2   r   s       r)   test_slic_zero_maskr     s   
))


"C
((8
CC"ad
O
((;
CCSbS!CSbS!CRS!4#**#))*,,,CGGCA3
sqT
DC RYYs^$a(CIIcrN+QrT1R4Z!$QrT2b5[!1%RUAbD[!1%RUBrE\"A&RaRUQRS!Va QUQQVa r+   c            
      B   [         R                  R                  S5      n [         R                  " S5      nSUSS2SS24'   [         R                  " S5      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'   US
U R	                  UR
                  S9-  -  n[         R                  " USSUS9  [        USSSS SUS9n[         R                  " USS2SS24   R                  5      S-   n[         R                  " USS2SS24   R                  5       U:H  5      (       d   eg )Nr   r6   r   r   r   r7   r   r8   r9   r:   r   r0   r   Fr   )r   r   r   r    r!   r"   r3   r
   rv   r   r   r   )r&   r   r'   r(   expecteds        r)   #test_more_segments_than_pixels_maskr     s-   
))


"C
((8
CC"ad
O
((8
CCSbSMCSbSMCRSM6CJJCIIJ...CGGCA3
C yyQrT1R4Z--.2H66#adAbDj/'')X56666r+   c                      [         R                  " S5      n SU SS2SS2SS24'   [         R                  R                  S5      n[         R                  " S5      n/ nU R                   H/  nUS-  nUR                  [        S U5      [        US 5      45        M1     [        [        U6 5      n[        [        SS/4S-  6 5      n[        X65       H	  u  pxXU'   M     USUR                  UR                  S	9-  -  n[         R                  " USSUS
9  [        USSU S9n	[        [        [         R                  " U	5      5      S5        [        U[!        SS5      5       H  u  px[        X   SS2SS2SS24   U5        M!     g )Nrt   r   r   r   r   re   r   r   r   r0   r.   )r   r   r   	   )r   r    r   r   r"   rg   rh   ri   r   rj   r!   r3   r
   r   r#   r$   rk   )
r   r&   r'   rl   rm   rn   ro   rp   rq   r(   s
             r)   test_color_3d_maskr     sb   
((<
 CC"adAbD
))


"C
((?
#CFIIq=uT8,eHd.CDE  '6"#F'aVIM+,FF#A $4#**#))*,,,CGGCA3
s!
4C RYYs^$a(FE!QK(SVAbD!B$",-q1 )r+   c            	         [         R                  " S5      n SU SS2SS2SS24'   [         R                  R                  S5      n[         R                  " S5      n/ nUR                   H/  nUS-  nUR                  [        S U5      [        US 5      45        M1     [        [        U6 5      n[         R                  " SSS5      n[        X65       H	  u  pxXU'   M     USUR                  UR                  S9-  -  n[         R                  " USSUS	9  [        USSS S
U S9n	[        [        [         R                   " U	5      5      S5        [        U[#        SS5      5       H  u  pz[        X   SS2SS2SS24   U
5        M!     g )Nrt   r   r   r   r   r.   ru   r   r0   F)r   r   r=   r>   r   r   )r   r    r   r   r"   rg   rh   ri   r   linspacerj   r!   r3   r
   r   r#   r$   rk   )r   r&   r'   rl   rm   rn   rw   rp   rx   r(   rq   s              r)   test_gray_3d_maskr   *  sb   
((<
 CC"adAbD
))


"C
((<
 CFIIq=uT8,eHd.CDE  '6"#F[[Aq!FV$A %53::399:---CGGCA3
15sC
 RYYs^$a(FE!QK(SVAbD!B$",-q1 )r+   dtype)float16float32float64uint8r   c                 x    [         R                  R                  SS5      R                  U 5      n[	        USS S9  g )N   r   )r   r=   )r   r   randrS   r
   )r   r'   s     r)   test_dtype_supportr   D  s/    
))..R
 
'
'
.C 	!$/r+   c            
          [         R                  R                  S5      n U R                  S5      S:  n[        R
                  " USS9nSn[        UUSSSS	S
S9nUR                  5       U:X  d   eg)a  Tests the fix for a bug producing a label < start_label (gh-6240).

For the v0.19.1 release, the `img` and `slic` call as below result in two
non-contiguous regions with value 0 despite `start_label=1`. We verify that
the minimum label is now `start_label` as expected.
r   )r.      r   r   )r   Nr/   r   Tr   )r   r=   r   r<   r   max_num_iter)r   r   r   standard_normalr   gaussianr
   min)r&   r'   r   superps       r)   test_start_label_fixr   L  sy     ))


"C


g
&
*C


3a
(CK!F ::<;&&&r+   c                     [         R                  " S[        S9n [         R                  U S'   [        R
                  " [        5         [        U S S9  S S S 5        [         R                  " U 5      ) n[        XS S9  g ! , (       d  f       N0= fN)r   r   )r   )r   r   rB   )r   r=   )	r   r    r   nanrC   rD   rE   r
   isnan)r'   r   s     r)   'test_raises_ValueError_if_input_has_NaNr   f  s^    
((6
'CCI	z	"St$ 
# HHSM>Dd+	 
#	"s   A<<
B
infc                     [         R                  " S[        S9nXS'   [        R                  " [
        5         [        US S9  S S S 5        [         R                  " U5      n[        XS S9  g ! , (       d  f       N/= fr   )r   r    r   rC   rD   rE   r
   isfinite)r   r'   r   s      r)   'test_raises_ValueError_if_input_has_infr   p  sW    
((6
'CI	z	"St$ 
# ;;sDd+	 
#	"s   A,,
A:)r}   )/	itertoolsr   numpyr   rC   numpy.testingr   skimager   r   r   skimage._shared.testingr   r	   skimage.segmentationr
   r*   r4   r?   rG   rN   rc   rr   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r   r   r   r    r+   r)   <module>r      s      & / / F % # #(#(#6!3/8 * :*,,D-?`#*6*!6!8!D*,0/?d!6702224 "ST0 U0'4, "&&"&& 12, 3,r+   