
    9i.                        S SK rS SKrS SKJrJr  S SKJr  S SK	J
r
JrJr  S SKJr  S SKJrJrJrJr  \R(                  " \
R*                  " 5       5      r\S:  rS rS	 rS
 rS rS rS rS rS5S jr\R@                  RC                  S/ SQ5      \R@                  RC                  SS5      \R@                  RC                  SS5      \R@                  RC                  SSS/5      S 5       5       5       5       r"\R@                  RC                  S/ SQ5      \R@                  RC                  SS5      \R@                  RC                  SS5      \R@                  RC                  SS/5      \R@                  RG                  S5      S 5       5       5       5       5       r$\R@                  RC                  S/ SQ5      \R@                  RC                  SS5      \R@                  RC                  SS/5      S  5       5       5       r%\R@                  RC                  S/ SQ5      \R@                  RC                  S!S"S#/5      \R@                  RC                  SSS/5      \R@                  RG                  S5      S$ 5       5       5       5       r&\R@                  RC                  S/ SQ5      \R@                  RC                  SS%5      \R@                  RC                  SS/5      S& 5       5       5       r'S' r(S( r)\RT                  \RV                  \RX                  \RZ                  /r.\R@                  RC                  S)\.5      \R@                  RC                  S*/ S+Q5      S, 5       5       r/\R@                  RC                  S)\.5      \R@                  RC                  S*/ S-Q5      S. 5       5       r0\R@                  RC                  S\.5      S/ 5       r1S0 r2\RX                  \RZ                  /r3\R@                  RC                  S\35      S1 5       r4S2 r5S3 r6S4 r7g)6    N)assert_array_equalassert_equal)ndimage)datacolor
morphology)img_as_bool)binary
footprintsgrayfootprint_rectangleg?c                      [        S5      n [        R                  " [        S S2S S24   U 5      n[	        [
        R                  " [        S S2S S24   U 5      5      n[        X5        g )N   r   d      r   r
   binary_erosionbw_imgr	   r   erosionr   	footprint
binary_resgray_ress      d/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/morphology/tests/test_binary.pytest_non_square_imager      s]    #F+I&&vdsdDSDj'99EJ4<<ttTcTz(:IFGHz,    c                      [        S5      n [        R                  " [        U 5      n[	        [
        R                  " [        U 5      5      n[        X5        g Nr   r   r   s      r   test_binary_erosionr       ;    #F+I&&vy9J4<<	:;Hz,r   c                      [        S5      n [        R                  " [        U 5      n[	        [
        R                  " [        U 5      5      n[        X5        g r   )r   r
   binary_dilationr   r	   r   dilationr   r   s      r   test_binary_dilationr%      s;    #F+I''	:J4==;<Hz,r   c                      [        S5      n [        R                  " [        U 5      n[	        [
        R                  " [        U 5      5      n[        X5        g r   )r   r
   binary_closingr   r	   r   closingr   r   s      r   test_binary_closingr)   $   r!   r   c                  8   [         R                  " / SQ/ SQ/ SQ/5      n [        R                  " [        U S9n[         R
                  " U[        :  5      (       d   e[        R                  " [        U SS9n[         R
                  " U[        :  5      (       a   eg )Nr   r      r   r,   r,   r,   r,   r,   r   minr   mode)nparrayr
   r'   r   allimg)r   result_default
result_mins      r   test_binary_closing_extensiver9   +   sv    )Y	:;I**6YGN66.F*++++ &&sieLJvvjF*+++++r   c                      [        S5      n [        R                  " [        U 5      n[	        [
        R                  " [        U 5      5      n[        X5        g r   )r   r
   binary_openingr   r	   r   openingr   r   s      r   test_binary_openingr=   6   r!   r   c                  8   [         R                  " / SQ/ SQ/ SQ/5      n [        R                  " [        U S9n[         R
                  " U[        :*  5      (       d   e[        R                  " [        U SS9n[         R
                  " U[        :*  5      (       a   eg )Nr+   r-   r.   r/   maxr1   )r3   r4   r
   r;   r   r5   )r   r7   
result_maxs      r   "test_binary_opening_anti_extensiverA   =   sv    )Y	:;I**6YGN66.F*++++ &&vOJvvjF*+++++r   c                     U S:X  a-  [         R                  " SU-  [         R                  S9nSUS'   U$ U S:X  a-  [         R                  " SU-  [         R                  S9nSUS'   U$ [        R
                  " SUSS	9nU$ )
Nr   )   dtyper   )   rF   r#   r,       )n_dimrng)r3   onesuint8zerosr   binary_blobs)functionndimr6   s      r   _get_decomp_test_datarP   H   s    ##ggedl"((3D	 J 
&	&hhut|2884D	 J $A6Jr   rN   )r   r#   r'   r;   nrows)r         ncolsdecomposition	separablesequencec                     [        X4SS9n[        X4US9n[        U 5      n[        [        U 5      nU" XdS9nU" XeS9n	[	        X5        glValidate footprint decomposition for various shapes.

comparison is made to the case without decomposition.
NrU   r/   r   rP   getattrr
   r   )
rN   rQ   rT   rU   footprint_ndarrayr   r6   funcexpectedouts
             r   test_rectangle_decompositionrb   T   sS     ,UN$O#UN-PI

)C68$DC5H
s
(Cx%r   m)r   r,      r         nzFignore:.*falling back to decomposition='separable':UserWarning:skimagec                 h   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 5      nU" XdS9nU" XeS9n	[        X5        g! , (       d  f       g= f)rZ   r   r[   Nr/   )	pytestraises
ValueErrorr   octagonrP   r]   r
   r   )
rN   rc   rg   rU   r^   r   r6   r_   r`   ra   s
             r   test_octagon_decompositionrm   i   s     	Av!q&]]:&q=A '& '..q4H&&q=I	#H-vx(93,8) '&s   B##
B1radius)r,   rd   rf   c                     [         R                  " USS9n[         R                  " XS9n[        U 5      n[        [        U 5      nU" XSS9nU" XTS9n[        Xx5        grY   )r   diamondrP   r]   r
   r   	rN   rn   rU   r^   r   r6   r_   r`   ra   s	            r   test_diamond_decompositionrr      sY     #**6F""6GI

)C68$DC5H
s
(Cx%r   shaper   r   r   )r   re   rf   c                     [        USS9n[        XS9n[        U SS9n[        [        U 5      nU" XSS9nU" XTS9n[	        Xx5        grZ   Nr[   r   )rO   r/   r\   )	rN   rs   rU   r^   r   r6   r_   r`   ra   s	            r   test_cube_decompositionrw      sO     ,EF#EGI
q
1C68$DC5H
s
(Cx%r   )r,   rd   r   c                     [         R                  " USS9n[         R                  " XS9n[        U SS9n[        [        U 5      nU" XSS9nU" XTS9n[        Xx5        grv   )r   
octahedronrP   r]   r
   r   rq   s	            r   test_octahedron_decompositionrz      s[     #--fDI%%fJI
q
1C68$DC5H
s
(Cx%r   c                     [         R                  " S[         R                  S9n [         R                  " S[        S9nSUSS2SS24'   [
        R                  " X5      n[        [        R                  " X5      5      n[        X#5        g )N)rC   rC   rD   )   r|   Trd      )r3   rJ   rK   rL   boolr
   r   r	   r   r   r   )r   r6   r   r   s       r   test_footprint_overflowr      sf    1I
((84
(CC"ad
O&&s6J4<<78Hz,r   c                  ~   [         R                  [         R                  4 H  n [        R                  " S[        R
                  S9n[        R                  " S5      n[        R                  " U5      nUR                  5       nU " X!US9  [        R                  " X4:g  5      (       d   e[        X0" X!5      5        M     g )Nr   rD   
   r   ra   )
r
   r   r#   r3   rJ   rK   
zeros_likecopyanyr   )r_   r   r6   ra   	out_saveds        r   test_out_argumentr      s    &&(>(>?GGF"((3	gghmmC HHJ	S%vvc&''''3S 45 @r   r_   r2   )r?   r0   ignorec                 B    [         R                  " S[        S9nU " X!S9  g )Nr   rD   r2   )r3   rJ   r~   r_   r2   r6   s      r   test_supported_moder      s     ''($
'Cr   )reflectr   Nc                     [         R                  " S5      n[        R                  " [        SS9   U " X!S9  S S S 5        g ! , (       d  f       g = f)Nr   zunsupported mode)matchr   )r3   rJ   ri   rj   rk   r   s      r   test_unsupported_moder      s5     ''(
C	z);	<S 
=	<	<s   A  
Ac                     [         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,   )rn   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r,   r,   r,   r,   r,   r,   r   r   )
r   r   r,   r,   r,   r   r   r,   r   r   )r   rp   r3   r4   rK   r   )rN   r   imageim_expectedim_tests        r   test_default_footprintr      sr    ""!,I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rR   rR   rR   r,   rd   rD   r   rf   )r3   rL   r~   r
   r;   ndigenerate_binary_structurer   )r   openedimage_expecteds      r   "test_3d_fallback_default_footprintr   	  s    HHY%EE!B$"ad
""5)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,   rd   r   rt   rD   )r3   rL   r~   rJ   rK   r   )rN   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[         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    @  rd   r      r     re   re   r,   )	structure)	r3   rL   uint16r
   r;   r'   r   r   r   )r   
bin_opened
bin_closedr   ndimage_openedndimage_closeds         r   test_2d_ndimage_equivalencer   %  s    HHVRYY'EE!B$"*E!B$"*E$K&&u-J&&u-J--a3I''CN''CNz2z2r   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                  " U [         R                  S
9n[         R                  " U [         R                  S
9n[        R                  " XS9  [        R
                  " XS9  [        UR                  [        5        [        UR                  [        5        [        UR                  [         R                  5        [        UR                  [         R                  5        g )Nr   r   rd   r   r   r   r   r   r   rD   r   r3   rL   r   r
   r;   r'   
empty_likerK   r   rE   r~   r   r   r   
int_opened
int_closeds        r   test_binary_output_2dr   6  s    HHVRYY'EE!B$"*E!B$"*E$K&&u-J&&u-JuBHH5JuBHH5J
%0
%0!!4(!!4(!!288,!!288,r   c                     [         R                  " S[         R                  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	'   [        R                  " U 5      n[        R
                  " U 5      n[         R                  " U [         R                  S
9n[         R                  " U [         R                  S
9n[        R                  " XS9  [        R
                  " XS9  [        UR                  [        5        [        UR                  [        5        [        UR                  [         R                  5        [        UR                  [         R                  5        g )N)r   r   r   r   rd   r   r   r   r   r   )re   re   re   rD   r   r   r   s        r   test_binary_output_3dr   K  s   HHY		*E#E!B$"ad
#E!B$"ad
E'N&&u-J&&u-JuBHH5JuBHH5J
%0
%0!!4(!!4(!!288,!!288,r   )rd   )8numpyr3   ri   numpy.testingr   r   scipyr   r   skimager   r   r   skimage.utilr	   skimage.morphologyr
   r   r   r   rgb2gray	astronautr6   r   r   r    r%   r)   r9   r=   rA   rP   markparametrizerb   filterwarningsrm   rr   rw   rz   r   r   r   r#   r;   r'   binary_functionsr   r   r   r   binary_3d_fallback_functionsr   r   r   r    r   r   <module>r      s     :   + + $ L L nnT^^%&	{	----,-,	 M *-*-;
*CD& E . .	& M 0101:,7L* 8 2 2	*$ M 9-:,7& 8 .	& M 9i"89;
*CDL& E :	& M 9-:,7& 8 .	&-6 


	  !12!9: ; 3
 !12!56 7 3 %56- 7-2
/ !' 5 5v7L7LM  %AB) C)3"-*-r   