
    9i?                     	   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Jr  S SKJr  S SKJrJr  S SKJrJrJr  S SKJrJr  \R4                  S	 5       r\R4                  S
 5       r\R:                  \R<                  \R>                  \R@                  \RB                  \RD                  4r# " S S5      r$ " S S5      r%\R:                  \R<                  \R>                  \R@                  \RB                  \RD                  /r&\RN                  RQ                  S\&5      S 5       r)S r*\R@                  \R>                  /r+\RN                  RQ                  S\+5      S 5       r,S r-S r.S r/\R`                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      r1\R`                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      r2\R`                  " / S Q/ S!Q/ S"Q/ S#Q/ S$Q/5      r3\R`                  " / S%Q/ S&Q/ S'Q/ S(Q/ S)Q/5      r4\R`                  " / S*Q/ S Q/ S+Q/ S,Q/ S-Q/5      r5S. r6S/ r7S0 r8S1 r9\RN                  RQ                  S/ S2Q5      \RN                  RQ                  S3/ S4Q5      \RN                  RQ                  S5/ S4Q5      \RN                  RQ                  S6S7S8/5      S9 5       5       5       5       r:\RN                  RQ                  S/ S2Q5      \RN                  RQ                  S:S;5      \RN                  RQ                  S6S8/5      S< 5       5       5       r;\RN                  RQ                  S/ S2Q5      \RN                  RQ                  S=S>5      \RN                  RQ                  S?S@5      \RN                  RQ                  S6S8/5      \RN                  Ry                  SA5      SB 5       5       5       5       5       r=\RN                  RQ                  S/ S2Q5      \RN                  RQ                  SCSDSE/5      \RN                  RQ                  S6S7S8/5      SF 5       5       5       r>\RN                  RQ                  S/ S2Q5      \RN                  RQ                  S:SG5      \RN                  RQ                  S6S8/5      SH 5       5       5       r?\RN                  RQ                  SI\R:                  \R<                  /5      \RN                  RQ                  SJSKSL/5      \RN                  RQ                  SM/ SNQ5      SO 5       5       5       r@g)P    N)ndimage)assert_allcloseassert_array_equalassert_equal)colordata	transform)expected_warnings)fetchassert_stacklevel)gray
footprintsfootprint_rectangle)img_as_uintimg_as_ubytec                  j    SSK Jn   [        R                  " U R                  " 5       SS2SS24   5      $ )Nr   r   @   p   `   )skimager   npascontiguousarraycamerar   s    b/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/morphology/tests/test_gray.py	cam_imager      s-    bfbem <==    c                  r    SSK Jn   [        R                  " U R                  " 5       SS2SSS2SS24   5      $ )Nr   r      0      $       )r   r   r   r   cells3dr   s    r   cell3d_imager%      s6    r"uaB2/E FGGr   c                   H   \ rS rSrS rS rS rS r\R                  R                  S\5      \R                  R                  S\R                  5      S 5       5       r\R                  R                  S\5      \R                  R                  S/ S	Q5      S
 5       5       rSrg)TestMorphology%   c           	         S nU[         R                  [         R                  [         R                  4n[	        [
        R                  " [        R                  " [        R                  " 5       5      S5      5      n0 n[        SS5       HG  nU H>  n[         H1  nUR                   SU SUR                   3nU" X6" U5      5      XH'   M3     M@     MI     U$ )Nc                     [        X 45      $ N)r   )ns    r   square5TestMorphology._build_expected_output.<locals>.square/   s    &v..r   )r!   r!         _)r   diamonddiskstarr   r	   downscale_local_meanr   rgb2grayr   coffeerangegray_morphology_funcs__name__)	selfr-   footprints_2Dimageoutputr,   strelfunckeys	            r   _build_expected_output%TestMorphology._build_expected_output.   s    	/ OOOO	
 **5>>$++-+H(S
 q!A&1D"^^,AaS$--AC"&ueAh"7FK 2 '  r   c                     [        [        R                  " [        S5      5      5      nU R	                  5       n[        X5        g )Nzdata/gray_morph_output.npz)dictr   loadr   rB   r   )r;   expected
calculateds      r   test_gray_morphology#TestMorphology.test_gray_morphologyF   s1    &B CDE002
X*r   c                 :   [         R                  " 5       n[        R                  " / SQ/ SQ/ SQ/5      n[        R
                  " XS9n[        R                  " X1:  5      (       a   e[        R
                  " XSS9n[        R                  " XA:  5      (       d   eg N)r   r   r/   )r   r/   r/   )r/   r/   r/   	footprintignore)rN   mode)r   coinsr   arrayr   closingall)r;   imgrN   result_defaultresults        r   test_gray_closing_extensive*TestMorphology.test_gray_closing_extensiveK   sq    jjlHHiI>?	 c?66./0000cXFvvfm$$$$r   c                 :   [         R                  " 5       n[        R                  " / SQ/ SQ/ SQ/5      n[        R
                  " XS9n[        R                  " X1:*  5      (       a   e[        R
                  " XSS9n[        R                  " XA:*  5      (       d   eg rL   )r   rQ   r   rR   r   openingrT   )r;   rU   rN   rV   result_ignores        r    test_gray_opening_anti_extensive/TestMorphology.test_gray_opening_anti_extensiveV   sr    jjlHHiI>?	 c?66./0000SHMvvm*++++r   r@   rP   c                 <    [         R                  " S5      nU" X2S9  g )N
   ra   rP   )r   onesr;   r@   rP   rU   s       r   test_supported_mode"TestMorphology.test_supported_modea   s     gghSr   ) 	symmetric   Nc                     [         R                  " S5      n[        R                  " [        SS9   U" X2S9  S S S 5        g ! , (       d  f       g = f)Nr`   zunsupported modematchrb   )r   rc   pytestraises
ValueErrorrd   s       r   test_unsupported_mode$TestMorphology.test_unsupported_modeg   s6     ggh]]:-?@  A@@s   A  
A N)r:   
__module____qualname____firstlineno__rB   rI   rX   r]   rm   markparametrizer9   r   _SUPPORTED_MODESre   rp   __static_attributes__rr   r   r   r'   r'   %   s    0+
	%	, [[V%:;[[VT%:%:; < < [[V%:;[[V%?@! A <!r   r'   c                   P    \ 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g) TestEccentricStructuringElementso   c                     S[         R                  " S[         R                  S9-  U l        SU R                  S'   SU R                  -
  U l        [        S5      [        S5      [        S5      /U l        g )N   )   r   dtyper   )   r   )r   r/   )r   rc   uint8black_pixelwhite_pixelr   r   )r;   s    r   setup_class,TestEccentricStructuringElements.setup_classp   sb    rxx!@@!"!1!11'''
r   c                     U R                    Hh  n[        R                  " U R                  U5      n[        R                  " U R
                  U5      n[        R                  " USU-
  :H  5      (       a  Mh   e   g Nr~   )r   r   erosionr   dilationr   r   rT   )r;   scds       r   test_dilate_erode_symmetry;TestEccentricStructuringElements.test_dilate_erode_symmetryz   sY    AT--q1Ad..2A66!a.)))) !r   c                     U R                    HM  n[        R                  " U R                  U5      n[        R
                  " X R                  :H  5      (       a  MM   e   g r+   )r   r   r[   r   r   rT   )r;   r   	gray_opens      r   test_open_black_pixel6TestEccentricStructuringElements.test_open_black_pixel   sD    AT%5%5q9I66)'7'778888 !r   c                     U R                    HM  n[        R                  " U R                  U5      n[        R
                  " X R                  :H  5      (       a  MM   e   g r+   )r   r   rS   r   r   rT   )r;   r   
gray_closes      r   test_close_white_pixel7TestEccentricStructuringElements.test_close_white_pixel   sD    Ad&6&6:J66*(8(889999 !r   c                     U R                    HB  n[        R                  " [        R                  " U R
                  U5      S:H  5      (       a  MB   e   g Nr   )r   r   rT   r   r[   r   r;   r   s     r   test_open_white_pixel6TestEccentricStructuringElements.test_open_white_pixel   s;    A66$,,t'7'7;q@AAAA !r   c                     U R                    HB  n[        R                  " [        R                  " U R
                  U5      S:H  5      (       a  MB   e   g r   )r   r   rT   r   rS   r   r   s     r   test_close_black_pixel7TestEccentricStructuringElements.test_close_black_pixel   s;    A66$,,t'7'7;sBCCCC !r   c                     U R                    HM  n[        R                  " U R                  U5      n[        R
                  " X R                  :H  5      (       a  MM   e   g r+   )r   r   white_tophatr   r   rT   r;   r   tophats      r   test_white_tophat_white_pixel>TestEccentricStructuringElements.test_white_tophat_white_pixel   F    A&&t'7'7;F66&$4$445555 !r   c                     U R                    HM  n[        R                  " U R                  U5      n[        R
                  " X R                  :H  5      (       a  MM   e   g r+   )r   r   black_tophatr   r   rT   r   r   s      r   test_black_tophat_black_pixel>TestEccentricStructuringElements.test_black_tophat_black_pixel   r   r   c                     U R                    HD  n[        R                  " U R                  U5      n[        R
                  " US:H  5      (       a  MD   e   g r   )r   r   r   r   r   rT   r   s      r   test_white_tophat_black_pixel>TestEccentricStructuringElements.test_white_tophat_black_pixel   A    A&&t'7'7;F66&A+&&&& !r   c                     U R                    HD  n[        R                  " U R                  U5      n[        R
                  " US:H  5      (       a  MD   e   g r   )r   r   r   r   r   rT   r   s      r   test_black_tophat_white_pixel>TestEccentricStructuringElements.test_black_tophat_white_pixel   r   r   )r   r   r   N)r:   rs   rt   ru   r   r   r   r   r   r   r   r   r   r   ry   rr   r   r   r{   r{   o   s6    
*9
:
BD6
6
'
'r   r{   functionc                     [         R                  " S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/[        R                  5      nU " X!5      nU " U5      n[        X45        g )Nr/   )radius)
r   r   r   r   r   r   r   r   r   r   )
r   r   r/   r/   r/   r/   r/   r/   r   r   )
r   r   r/   r/   r/   r   r   r/   r   r   )r   r2   r   rR   r   r   )r   r?   r=   im_expectedim_tests        r   test_default_footprintr      sr    a(EHH*************	
 	!E$ 5(KuoG{,r   c                     [         R                  " S[        5      n SU SS2SS2SS24'   [        R                  " U 5      n[         R                  " S[        S9n[
        R                  " SS5      USS2SS2SS24'   [        X5        g )N   r   r   r/   r   r   ri      )r   zerosboolr   r[   ndigenerate_binary_structurer   )r=   openedimage_expecteds      r   "test_3d_fallback_default_footprintr      s    HHY%EE!B$"ad
\\% F XXit4N$'$A$A!Q$GN1Q3!QqS=!v.r   c                     [         R                  " S[        5      nSUSS2SS2SS24'   [         R                  " S[         R                  S9nU " X5      n[        X15        g )Nr   r/   r   r   )ri   ri   ri   r   )r   r   r   rc   r   r   )r   r=   cube	new_images       r   test_3d_fallback_cube_footprintr      sW     HHY%EE!B$"ad
779BHH-D%Iy(r   c                     [         R                  " S[        S9n SU SSS2SS24'   SU SSS2SS24'   SU SSS2SS24'   [        S/5         [        R
                  " U 5      nS S S 5        [        R                  " SS5      n[        S/5         [        R
                  " U R                  [         R                  S9US	9nS S S 5        [        WW5        g ! , (       d  f       Nw= f! , (       d  f       N,= f)
Nr   r   r/   r   r0   ri   r   operator.*deprecated|\A\ZrM   )r   r   r   r
   r   r   r   r   viewr   r   r=   r   rN   r   s       r   test_3d_fallback_white_tophatr      s    HHYd+EE!QqS!A#+E!QqS!A#+E!QqS!A#+	89	:%%e,	 
;--a3I	89	:))JJRXXJ&)
 
; y.1 
;	: 
;	:   
C1C#
C #
C1c                     [         R                  " S[        S9n SU SSS2SS24'   SU SSS2SS24'   SU SSS2SS24'   [        S/5         [        R
                  " U 5      nS S S 5        [        R                  " SS	5      n[        S/5         [        R
                  " U R                  [         R                  S9US
9nS S S 5        [        WW5        g ! , (       d  f       Nw= f! , (       d  f       N,= f)Nr   r   r   r   r0   ri   r   r   r/   rM   )r   rc   r   r
   r   r   r   r   r   r   r   r   s       r   test_3d_fallback_black_tophatr      s    GGIT*EE!QqS!A#+E!QqS!A#+E!QqS!A#+	89	:%%e,	 
;--a3I	89	:))JJRXXJ&)
 
; y.1 
;	: 
;	:r   c                     [         R                  " S[         R                  5      n SU SS2SS24'   SU SS2SS24'   SU S	'   [        R                  " U 5      n[        R
                  " U 5      n[        R                  " SS
5      n[        R                  " XS9n[        R                  " XS9n[        X5        [        X%5        g )N)	   r      r   r      ri   r~   )r0   r0   r/   rM   )r   r   r   r   r[   rS   r   r   grey_openinggrey_closingr   )r=   r   closedrN   ndimage_openedndimage_closeds         r   test_2d_ndimage_equivalencer     s    HHVRXX&EE!B$"*E!B$"*E$K\\% F\\% F--a3I%%eAN%%eANv.v.r   )皙?
ףp=
?g333333?HzG?zG?)g?)\(?{Gz?Q?RQ?)HzG?(\?g=
ףp=?(\?Q?)
ףp=
?{Gz?(\?(\?ףp=
?)\(\?g?q=
ףp?r   Q?)r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   c                  D   [        [        R                  " [        5      [        5        [        [        R
                  " [        5      [        5        [        [        R                  " [        5      [        5        [        [        R                  " [        5      [        5        g r+   )r   r   r   imerodedr   dilatedr[   r   rS   r   rr   r   r   
test_floatr   L  sN    DLL$f-DMM"%w/DLL$f-DLL$f-r   c                  ^   [        [        [        [        [        [
        [        /5      u  pp#n[        [        R                  " U 5      U5        [        [        R                  " U 5      U5        [        [        R                  " U 5      U5        [        [        R                  " U 5      U5        g r+   )mapr   r   r   r   r   r   r   r   r   r   r[   rS   )im16eroded16	dilated16opened16closed16s        r   test_uint16r   S  sq    47b&'66:51DI DLL&1DMM$'3DLL&1DLL&1r   c                     [         R                  " / SQ/ SQ/ SQ/[         R                  5      n [         R                  " S[         R                  5      nUS S S2S S S24   n[         R                  " / SQ/ SQ/ SQ/ SQ/ S	Q/[         R                  5      n[         R                  " / S
Q/ SQ/ SQ/ SQ/ SQ/[         R                  5      n[        R
                  " XS9  [        X5        [        R                  " XS9  [        X5        g )N)r   r   r   )r   r   r   )ri   r   r/   )r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r/   )ri   r   r/   r   r/   )out)r   rR   r   r   r   r   r   r   )r=   out_array_big	out_arrayexpected_dilationexpected_erosions        r   test_discontiguous_out_arrayr  ]  s    HHiI6AEHHVRXX.Mcc3Q3h'I	
 		 xx	
 		 	MM%'}8LL&}7r   c                      [         R                  " / SQ5      n [         R                  " / SQ5      n[        R                  " U 5      n[	        X!5        g )N)r/   r   ri   r   r/   )r/   r/   r   r/   r/   )r   rR   r   r   r   )r=   rG   r   s      r   test_1d_erosionr  {  s4    HH_%Exx(H\\% Fv(r   )r   r   rS   r[   r   r   nrows)ri   r      ncolsdecomposition	separablesequencec                 ~    [        X#4SS9n[        X#4US9n[        [        U5      nU" XS9nU" XS9n	[        X5        glValidate footprint decomposition for various shapes.

comparison is made to the case without decomposition.
Nr	  rM   r   getattrr   r   )
r   r   r  r  r	  footprint_ndarrayrN   r@   rG   r   s
             r   test_rectangle_decompositionr    sI     ,UN$O#UN-PI4"DI;H
y
.Cx%r   r   )r   ri   c                     [         R                  " USS9n[         R                  " X#S9n[        [        U5      nU" XS9nU" XS9n[	        Xx5        gr  )r   r2   r  r   r   )	r   r   r   r	  r  rN   r@   rG   r   s	            r   test_diamond_decompositionr    sO     #**6F""6GI4"DI;H
y
.Cx%r   m)r   r/   ri   r   r,   )r   r/   r   ri   zFignore:.*falling back to decomposition='separable':UserWarning:skimagec                 R   US:X  a?  US:X  a9  [         R                  " [        5         [        R                  " X#US9  SSS5        g[        R                  " X#SS9n[        R                  " X#US9n[        [        U5      nU" XS9nU" XS9n	[        X5        g! , (       d  f       g= f)r  r   r  NrM   )rm   rn   ro   r   octagonr  r   r   )
r   r   r  r,   r	  r  rN   r@   rG   r   s
             r   test_octagon_decompositionr    s     	Av!q&]]:&q=A '& '..q4H&&q=I	tX&	?928) '&s   B
B&shape)r   r   r   )r   r   r   c                 x    [        USS9n[        X#S9n[        [        U5      nU" XS9nU" XS9n[        Xx5        gr  r  )	r%   r   r  r	  r  rN   r@   rG   r   s	            r   test_cube_decompositionr    sC     ,EF#EGI4"DL>H
|
1Cx%r   )ri   c                     [         R                  " USS9n[         R                  " X#S9n[        [        U5      nU" XS9nU" XS9n[	        Xx5        gr  )r   
octahedronr  r   r   )	r%   r   r   r	  r  rN   r@   rG   r   s	            r   test_octahedron_decompositionr    sO     #--fDI%%fJI4"DL>H
|
1Cx%r   r@   nameshift_xshift_yvalue)TFNc                     [         R                  " S5      nU " U5        Sn[        R                  " [        US9 nU " U40 X0D6  S S S 5        [        W5        g ! , (       d  f       N= f)Nra   z&`shift_x` and `shift_y` are deprecatedrk   )r   rc   rm   warnsFutureWarningr   )r@   r   r#  rU   regexrecords         r   test_deprecated_shiftr)    sR     ''"+CI4E	m5	1VS"TM" 
2f 
2	1s   A
A')Anumpyr   rm   scipyr   r   numpy.testingr   r   r   r   r   r   r	   skimage._shared._warningsr
   skimage._shared.testingr   r   skimage.morphologyr   r   r   skimage.utilr   r   fixturer   r%   r   r   r[   rS   r   r   r9   r'   r{   gray_functionsrv   rw   r   r   gray_3d_fallback_functionsr   r   r   r   rR   r   r   r   r   r   r   r   r  r  r  r  filterwarningsr  r  r  r)  rr   r   r   <module>r5     s       K K * * 7 < D D 2 > > H H 	LLMMLLLL G! G!T5' 5'r 	LLMMLLLL ^4- 5-2
/ #llDLL9  %?@) A)2 2 /$ XX%&&&% 
&&&&&
 ((&&&&& 
&&&&&
 
&&&&&
.28<) Q *-*-;
*CD
& E . .	
& Q 6*:,7
& 8 +	
& Q l+l+:,7L* 8 , ,	*" Q 9i"89;
*CD
& E :	
& Q 4(:,7
& 8 )	
& $,,!>?)Y!78"56 7 9 @r   