
    (ph                    p   S SK rS SKJrJrJrJrJrJrJ	r	  S SK
r
S SK
Jr  S SKJr  SSKJr  S SKJr  \
R&                  R(                  r\
R&                  R*                  r\\
R&                  R-                  S5      \
R&                  R-                  S	5      \" S
SS/S9/r " S S5      r " S S5      r " S S5      rS rS rS rS rS r\
R&                  RA                  S/ SQ5      \
R&                  RA                  SSS/5      \
R&                  RA                  SSS
/5      S 5       5       5       r!S  r"S! r#g)"    N)is_cupyis_numpyis_torcharray_namespacexp_assert_closexp_assert_equalassert_array_almost_equal)raises)ndimage   )types)array_api_compatibleskip_xp_backendsxfail_xp_backendsTcupy	jax.numpy)cpu_only
exceptionsc                      \ rS rSr\" SSS9\R                  R                  S\5      S 5       5       r	\" SSS9\R                  R                  S\5      S 5       5       r
\" SSS9\R                  R                  S\5      S 5       5       r\" S	S
S9\R                  R                  S\5      S 5       5       r\" SSS9\R                  R                  S\5      S 5       5       r\" SSS9\R                  R                  S\5      S 5       5       rS r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       r\" S	SS9\R                  R                  S\5      S 5       5       r\" S	SS9S 5       r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       r\" S	SS9\R                  R                  S\5      S 5       5       r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       rS r\" S	SS9S 5       rS rS rS  rS! rS" r S# r!S$ r"\R                  R                  S\5      S% 5       r#\R                  R                  S\5      S& 5       r$\R                  R                  S\5      S' 5       r%\R                  R                  S\5      S( 5       r&\R                  R                  S\5      S) 5       r'\R                  R                  S\5      S* 5       r(\R                  R                  S\5      S+ 5       r)\R                  R                  S\5      S, 5       r*\R                  R                  S\5      S- 5       r+\R                  R                  S\5      S. 5       r,\R                  R                  S\5      S/ 5       r-\R                  R                  S\5      S0 5       r.\R                  R                  S\5      S1 5       r/\R                  R                  S\5      S2 5       r0\R                  R                  S\5      S3 5       r1\R                  R                  S\5      S4 5       r2\R                  R                  S\5      S5 5       r3\R                  R                  S\5      S6 5       r4\R                  R                  S\5      S7 5       r5\R                  R                  S\5      S8 5       r6\R                  R                  S\5      S9 5       r7\R                  R                  S\5      S: 5       r8\R                  R                  S\5      S; 5       r9\R                  R                  S\5      S< 5       r:\R                  R                  S\5      S= 5       r;\R                  R                  S\5      S> 5       r<S? r=\" S	S@S9SA 5       r>SB r?\" S	S@S9SC 5       r@\" S	S@S9SD 5       rASE rBSF rCSG rD\" S	S@S9SH 5       rESI rF\" S	S@S9SJ 5       rGSK rH\" S	S@S9SL 5       rI\" S	S@S9SM 5       rJ\R                  R                  S\5      SN 5       rK\R                  R                  S\5      SO 5       rL\R                  R                  S\5      SP 5       rM\R                  R                  S\5      SQ 5       rN\R                  R                  S\5      SR 5       rO\R                  R                  S\5      SS 5       rP\R                  R                  S\5      ST 5       rQ\R                  R                  S\5      SU 5       rR\R                  R                  S\5      SV 5       rS\R                  R                  S\5      SW 5       rT\R                  R                  S\5      SX 5       rU\R                  R                  S\5      SY 5       rV\R                  R                  S\5      SZ 5       rW\R                  R                  S\5      S[ 5       rX\R                  R                  S\5      S\ 5       rY\R                  R                  S\5      S] 5       rZ\R                  R                  S\5      S^ 5       r[\R                  R                  S\5      S_ 5       r\\R                  R                  S\5      S` 5       r]\R                  R                  S\5      Sa 5       r^\R                  R                  S\5      Sb 5       r_\R                  R                  S\5      Sc 5       r`\R                  R                  S\5      Sd 5       ra\R                  R                  S\5      Se 5       rb\R                  R                  S\5      Sf 5       rc\R                  R                  S\5      Sg 5       rd\R                  R                  S\5      Sh 5       re\R                  R                  S\5      Si 5       rfSj rg\" S	SkS9Sl 5       rhSm ri\" S	SkS9Sn 5       rjSo rk\" S	SpS9Sq 5       rl\R                  R                  S\5      Sr 5       rmSs rnSt roSu rpSv rq\R                  R                  S\5      Sw 5       rr\R                  R                  S\5      Sx 5       rs\R                  R                  S\5      Sy 5       rt\R                  R                  S\5      Sz 5       ruS{ rvS| rwS} rx\" S	S~9\" SSS9\" SSS9\R                  R                  SSS/5      \R                  R                  SSS/5      \R                  R                  S/ SQ5      \R                  R                  S/ SQ5      S 5       5       5       5       5       5       5       ryS rz\" SSS9\" SSS9S 5       5       r{S r|S r}S r~S rS rS rS rS rS r\" S	SkS9S 5       rS r\" S	SkS9S 5       rS r\" SSS9S 5       rS r\" SSS9S 5       r\" SSS9S 5       r\" SSS9S 5       rS r\" SSS9S 5       r\" SSS9S 5       r\" S	S~9\" SSS9\" SSS9\R                  R                  SSS/5      \R                  R                  S/ SQ5      \R                  R                  S/ SQ5      \R                  R                  S/ SQ5      \R                  R                  S/ SQ5      S 5       5       5       5       5       5       5       5       r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       rSrg)TestNdimageMorphology   r   )CuPy does not have distance_transform_bf.)reasondtypec                    [        X!5      nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	US9n[        R                  " USSS9u  pE/ SQ/ SQ/ SQ/ SQ/ S	Q/ SQ/ SQ/ SQ/ SQ/	nUR                  U5      n[	        XD-  U5        / 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Q/ SQ/ SQ/ SQ/	/nUR                  U5      n[	        XV5        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   	euclideanTreturn_indices)	r   r   r         r#   r   r   r   	r   r   r   r$      r$   r   r   r   	r   r   r   r   r   r   r   r   r   	r#   r#   r#   r#   r   r#   r#   r#   r#   	   r*   r*   r#   r   r#   r*   r*   r*   	r$   r$   r$   r$      r$   r$   r$   r$   	   r.   r,   r,      r,   r,   r.   r.   	r,   r,   r,   r/   r/   r/   r,   r,   r,   	r/   r/   r/   r/   r/   r/   r/   r/   r/   	r&   r&   r&   r&   r&   r&   r&   r&   r&   	r   r   r#   r*   r$   r.   r,   r/   r&   	r   r   r#   r#   r$   r,   r,   r/   r&   	r   r   r   r#   r$   r,   r/   r/   r&   	r   r   r   r   r,   r/   r/   r/   r&   getattrasarrayr   distance_transform_bfr	   selfr   xpdataoutftexpecteds          V/var/www/html/venv/lib/python3.13/site-packages/scipy/ndimage/tests/test_morphology.pytest_distance_transform_bf012TestNdimageMorphology.test_distance_transform_bf01   s    " zz6666666668 @E  F //k?CE/////////1 ::h'!#)X60000000002 10000000023$ ::h'!"/    c                    [        X!5      nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	US9n[        R                  " USSS9u  pE/ SQ/ SQ/ SQ/ SQ/ S	Q/ SQ/ SQ/ SQ/ SQ/	nUR                  U5      n[	        XF5        / 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Q/ SQ/ SQ/ SQ/	/nUR                  U5      n[	        Xe5        g )Nr   r   r   r   	cityblockTr!   	r   r   r   r#   r#   r#   r   r   r   )	r   r   r   r#   r*   r#   r   r   r   r'   r(   )	r*   r*   r*   r*   r   r*   r*   r*   r*   )	r$   r$   r$   r$   r/   r$   r$   r$   r$   )	r.   r.   r,   r/   r/   r/   r,   r.   r.   r0   r1   r2   r3   r4   	r   r   r   r   r$   r/   r/   r/   r&   r7   r;   s          rB   test_distance_transform_bf022TestNdimageMorphology.test_distance_transform_bf02I   s    "zz6666666668 @E  F //k?CE 0////////1 ::h'!#00000000002 10000000023$ ::h'!(/rE   c                    [        X!5      nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	US9n[        R                  " USSS9u  pE/ SQ/ SQ/ SQ/ SQ/ S	Q/ SQ/ SQ/ SQ/ SQ/	nUR                  U5      n[	        XF5        / 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Q/ SQ/ SQ/ SQ/	/nUR                  U5      n[	        XV5        g )Nr   r   r   r   
chessboardTr!   )	r   r   r   r   r#   r   r   r   r   rH   r'   r(   )	r*   r*   r$   r#   r#   r#   r$   r*   r*   )	r$   r$   r.   r,   r,   r,   r.   r$   r$   r-   r0   r1   r2   r3   	r   r   r#   r#   r.   r,   r,   r/   r&   	r   r   r   r#   r,   r,   r/   r/   r&   )	r   r   r   r#   r,   r/   r/   r/   r&   )	r   r   r#   r#   r,   r,   r/   r/   r&   )	r   r   r#   r$   r.   r,   r,   r/   r&   r7   r;   s          rB   test_distance_transform_bf032TestNdimageMorphology.test_distance_transform_bf03{   s    "zz6666666668 @E  F //l?CE 0////////1 ::h'!#00000000002 10000000023$ ::h'!"/rE   Tz,inplace distances= arrays are numpy-specific)np_onlyr   c                 l   [        X!5      nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	US9n[        R                  " USS9u  pE/ n/ nUR	                  UR
                  UR                  S9n[        R                  " X8S9  UR                  U5        [        R                  " USSS	9n	UR                  U	5        [        R                  " UR
                  UR                  S9n	[        R                  " USS
U	S9  UR                  U	5        [        R                  " USS9u  pUR                  U5        UR                  U	5        UR	                  UR
                  UR                  S9n[        R                  " X8S
S9n	UR                  U5        UR                  U	5        [        R                  " UR
                  UR                  S9n	[        R                  " US
U	S9nUR                  U5        UR                  U	5        UR	                  UR
                  UR                  S9n[        R                  " UR
                  UR                  S9n	[        R                  " X8S
U	S9  UR                  U5        UR                  U	5        U H  n[        XH5        M     U H  n	[        XY5        M     g )Nr   r   r   r   r   r!   	distancesFreturn_distancesr"   TrW   r"   indicesrU   r"   r"   rY   rU   r"   rY   )r8   r9   r   r:   zerosshapefloat64appendnprY   int32r	   
r<   r   r=   r>   tdttftdtsftsdtr@   s
             rB   test_distance_transform_bf042TestNdimageMorphology.test_distance_transform_bf04   s2   
 "zz6666666668 @E  F 00aHXXdjj

X3%%d9

2**5<

2ZZ

"((3%%5r	K

2..$

2

2XXdjj

X3**t5

2

2ZZ

"((3**r3

2

2XXdjj

X3ZZ

"((3%%tR	A

2

2B%c. B%c. rE   c                    [        X!5      nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	US9n[        R                  " USSSS/S9u  pE/ SQ/ SQ/ S	Q/ S
Q/ SQ/ S
Q/ S	Q/ SQ/ SQ/	nUR                  U5      n[	        XD-  U5        / 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Q/ SQ/ SQ/ SQ/	/nUR                  U5      n[	        XV5        g )Nr   r   r   r   r    Tr#   r"   sampling)	r   r   r   r$   r$   r$   r   r   r   )	r   r   r$   r&      r&   r$   r   r   )	r   r   r$   rn       rn   r$   r   r   r'   r(   r)   r+   r-   r0   r1   r2   r3   r4   r5   r6   r7   r;   s          rB   test_distance_transform_bf052TestNdimageMorphology.test_distance_transform_bf05   s
    "zz6666666668 @E  F //+daVE///020///1 ::h'!#)X60000000002 10000000023$ ::h'!"/rE   c                    [        X!5      nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	US9n[        R                  " USSSS/S	9u  pE/ SQ/ SQ/ S
Q/ SQ/ SQ/ SQ/ S
Q/ SQ/ SQ/	nUR                  U5      n[	        XD-  U5        / 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Q/ SQ/ SQ/ SQ/	/nUR                  U5      n[	        XV5        g )Nr   r   r   r   r    Tr#   r   rl   )	r   r   r   r   r$   r   r   r   r   r%   )	r   r   r   r$   	   r$   r   r   r   r'   )	r#   r#   r#   r#   r#   r#   r#   r#   r#   )	r*   r*   r*   r*   r#   r*   r*   r*   r*   )	r$   r$   r$   r$   r$   r$   r$   r$   r$   )	r.   r.   r.   r.   r,   r.   r.   r.   r.   )	r,   r,   r,   r,   r/   r,   r,   r,   r,   r1   r2   r3   )	r   r   r#   r#   r,   r,   r,   r/   r&   r6   )	r   r   r   r   r/   r/   r/   r/   r&   r4   r7   r;   s          rB   test_distance_transform_bf062TestNdimageMorphology.test_distance_transform_bf06  s
    "zz6666666668 @E  F //+daVE/////////1 ::h'!#)X60000000002 10000000023$ ::h'!"/rE   c                 &   [        U5      (       a  [        R                  " S5        UR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	5      n[	        [
        5         [        R                  " USSS9  S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   FrV   )r   pytestxfailr9   assert_raisesRuntimeErrorr   r:   )r<   r=   r>   s      rB   test_distance_transform_bf072TestNdimageMorphology.test_distance_transform_bf07E  ss    2;;LLDE zz6666666668 9 <())uU )((s   "B
Bc                    [        X!5      n[        U5      (       a  [        R                  " S5        UR	                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	US9n[
        R                  " USSS9u  pE[
        R                  " US5      n[        Xd5        / 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Q/ SQ/ SQ/ SQ/	/nUR	                  U5      n[        XW5        g )N*CuPy does not have distance_transform_cdt.r   r   r   r   rG   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,   r1   r2   r3   rI   )	r   r   r   r   r$   r.   r,   r/   r&   )	r   r   r#   r#   r$   r.   r,   r/   r&   	r8   r   rw   rx   r9   r   distance_transform_cdtr:   r	   r<   r   r=   r>   r?   r@   bfrA   s           rB   test_distance_transform_cdt013TestNdimageMorphology.test_distance_transform_cdt01X  s    "2;;LLEF zz6666666668 @E  F 00+d4**4=!"*0000000002 10000000023$ ::h'!"/rE   c                    [        X!5      n[        U5      (       a  [        R                  " S5        UR	                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	US9n[
        R                  " USSS9u  pE[
        R                  " US5      n[        Xd5        / 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Q/ SQ/ SQ/ SQ/	/nUR	                  U5      n[        XW5        g )Nr~   r   r   r   r   rM   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   r1   r2   r3   )	r   r   r#   r#   r*   r$   r,   r/   r&   )	r   r   r   r#   r#   r,   r,   r/   r&   )	r   r   r   r   r#   r,   r/   r/   r&   rO   rN   r   r   s           rB   test_distance_transform_cdt023TestNdimageMorphology.test_distance_transform_cdt02  s    "2;;LLEFzz6666666668 @E  F 00|@DF**4>!"*0000000002 10000000023$ ::h'!"/rE   z*inplace indices= arrays are numpy-specificc                    [        X!5      nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	US9n[        R                  " USS9u  pE/ n/ nUR	                  UR
                  UR                  S9n[        R                  " X8S9  UR                  U5        [        R                  " USSS	9n	UR                  U	5        UR                  [        R                  " UR
                  [        R                  S95      n	[        R                  " USSU	S
9  UR                  U	5        [        R                  " USS9u  pUR                  U5        UR                  U	5        UR	                  UR
                  UR                  S9n[        R                  " X8SS9n	UR                  U5        UR                  U	5        UR                  [        R                  " UR
                  [        R                  S95      n	[        R                  " USU	S9nUR                  U5        UR                  U	5        UR	                  UR
                  UR                  S9nUR                  [        R                  " UR
                  [        R                  S95      n	[        R                  " X8SU	S9  UR                  U5        UR                  U	5        U H  n[        XH5        M     U H  n	[        XY5        M     g )Nr   r   r   r   Tr!   rT   FrV   rX   rZ   r[   r\   )r8   r9   r   r   r]   r^   rb   r`   ra   rY   r	   rc   s
             rB   test_distance_transform_cdt033TestNdimageMorphology.test_distance_transform_cdt03  sM   
 "zz6666666668 @E  F 11$tLXXdjjX1&&t:

2++5?

2ZZ

4::RXX>?&&5r	K

2//'

2

2XXdjjX1++t5

2

2ZZ

4::RXX>?++r3

2

2XXdjjX1ZZ

4::RXX>?&&t6:B	H

2

2B%c. B%c. rE   z3XXX: does not raise unless indices is a numpy arrayc                 @   UR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	5      nUR                  UR                  4UR                  -   UR                  S9n[        [        5         [        R                  " USSUS9  S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   TFrX   )	r9   r]   ndimr^   rb   ry   rz   r   r:   )r<   r=   r>   indices_outs       rB   test_distance_transform_cdt043TestNdimageMorphology.test_distance_transform_cdt04  s    
 zz6666666668 9 hh		|djj8hI<())!%$#	 )((s   .B
Bc                    [        X!5      n[        U5      (       a  [        R                  " S5        O&[	        U5      (       a  [        R                  " S5        UR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	US9nUR                  S5      n[        R                  " X4S9nUR                  U5      S	:X  d   eg )
Nr~   zint overflowr   r   r   r   r*   r*   metrici)
r8   r   rw   rx   r   r9   onesr   r   sum)r<   r   r=   r>   
metric_argactuals         rB   test_distance_transform_cdt053TestNdimageMorphology.test_distance_transform_cdt05  s    "2;;LLEFb\\LL( zz6666666668 @E  F WWV_
//Hvvf~$$$rE   c                    [        X!5      n[        U5      (       a  [        R                  " S5        UR	                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	US9n[
        R                  " USS9u  pE[
        R                  " US5      n[        Xd5        [        R                  " U5      nU[        R                  " UR                  S	S  UR                  S9-
  nUR                  [        R                  5      n[        R                  " XU5        [        R                   R#                  US
S9n[        R$                  " X5        UR	                  U5      n[        Xh5        g )N(CuPy does not have distance_transform_bfr   r   r   r   Tr!   r    r   r   axis)r8   r   rw   rx   r9   r   distance_transform_edtr:   r	   ra   rY   r^   r   astyper_   multiplyaddreducesqrt)	r<   r   r=   r>   r?   r@   r   np_ftrh   s	            rB   test_distance_transform_edt013TestNdimageMorphology.test_distance_transform_edt01  s   "2;;LLCD zz6666666668 @E  F 00dK**4=!"* 

2RZZABu{{CCYYrzz"
BBVV]]2A]&
ZZ^!")rE   z%inplace distances= are numpy-specificc                    [        X!5      nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	US9n[        R                  " USS9u  pE/ n/ nUR	                  UR
                  UR                  S9n[        R                  " X8S9  UR                  U5        [        R                  " USSS	9n	UR                  U	5        [        R                  " UR
                  UR                  S9n	UR                  U	5      n	[        R                  " US
SU	S9  UR                  U	5        [        R                  " USS9u  pUR                  U5        UR                  U	5        UR	                  UR
                  UR                  S9n[        R                  " X8SS9n	UR                  U5        UR                  U	5        [        R                  " UR
                  UR                  S9n	UR                  U	5      n	[        R                  " USU	S9nUR                  U5        UR                  U	5        UR	                  UR
                  UR                  S9n[        R                  " UR
                  UR                  S9n	UR                  U	5      n	[        R                  " X8SU	S9  UR                  U5        UR                  U	5        U H  n[        XH5        M     U H  n	[        XY5        M     g )Nr   r   r   r   Tr!   rT   r   rV   FrX   rZ   r[   r\   )r8   r9   r   r   r]   r^   r_   r`   ra   rY   rb   r	   rc   s
             rB   test_distance_transform_edt023TestNdimageMorphology.test_distance_transform_edt02,  sY   
 "zz6666666668 @E  F 11$tLXXdjj

X3&&t:

2++1T;

2ZZ

"((3ZZ^&&5r	K

2//'

2

2XXdjj

X3++t5

2

2ZZ

"((3ZZ^++r3

2

2XXdjj

X3ZZ

"((3ZZ^&&tR	A

2

2B%c. B%c. rE   c                 0   [        X!5      n[        U5      (       a  [        R                  " S5        UR	                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	US9n[
        R                  " USSS/S9n[
        R                  " USS/S9n[        XE5        g )	Nr   r   r   r   r   r    r#   rm   	r8   r   rw   rx   r9   r   r:   r   r	   r<   r   r=   r>   refr?   s         rB   test_distance_transform_edt033TestNdimageMorphology.test_distance_transform_edt03l      "2;;LLCDzz6666666668 @E  F ++D+AO,,TQFC!#+rE   c                 0   [        X!5      n[        U5      (       a  [        R                  " S5        UR	                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	US9n[
        R                  " USSS/S	9n[
        R                  " USS/S	9n[        XE5        g )
Nr   r   r   r   r   r    r#   r   r   r   r   s         rB   test_distance_transform_edt42TestNdimageMorphology.test_distance_transform_edt4  r   rE   c                 J    [         R                  " S5      n[        US/5        g )NF        )r   r   r	   )r<   r=   r?   s      rB   test_distance_transform_edt52TestNdimageMorphology.test_distance_transform_edt5  s    ,,U3!#t,rE   c                 $   UR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	5      nUR                  UR                  UR                  S9n[	        [
        5         [        R                  " USSUS9  S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   TF)r"   rW   rU   )r9   r]   r^   r_   ry   rz   r   r:   )r<   r=   r>   distances_outs       rB   test_distance_transform_edt62TestNdimageMorphology.test_distance_transform_edt6  s|    
 zz6666666668 9 2::><())#!&'	 )((s    B
Bc                 B    [         R                  " SS5      nUS:X  d   eg )Nr   r   )r   generate_binary_structurer<   r=   structs      rB   test_generate_structure01/TestNdimageMorphology.test_generate_structure01  s     221a8{{rE   c                 N    [         R                  " SS5      n[        U/ SQ5        g )Nr   r   r   r   r   r   r	   r   s      rB   test_generate_structure02/TestNdimageMorphology.test_generate_structure02  s    221a8!&)4rE   c                 \    [         R                  " SS5      n[        U/ SQ/ SQ/ SQ/5        g )Nr#   r   r   r   r   r   r   r   s      rB   test_generate_structure03/TestNdimageMorphology.test_generate_structure03  +    221a8!&9+4+4+6 	7rE   c                 \    [         R                  " SS5      n[        U/ SQ/ SQ/ SQ/5        g )Nr#   r   r   r   s      rB   test_generate_structure04/TestNdimageMorphology.test_generate_structure04  r   rE   c                     / SQ/ SQ/ SQ/nUR                  U5      n[        R                  " US5      n[        R                   " / SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[        X45        g )Nr   r   r#   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   r   iterate_structurera   boolr	   r<   r=   r   r?   rA   s        rB   test_iterate_structure01.TestNdimageMorphology.test_iterate_structure01  sr     F#''2::....	0 8<	=
 ::h'!#0rE   c                     SS/SS/SS//nUR                  U5      n[        R                  " US5      n[        R                   " / SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[        X45        g )Nr   r   r#   )r   r   r   r   r   r   r   r   r   r   s        rB   test_iterate_structure02.TestNdimageMorphology.test_iterate_structure02  s~    a&a&a& F#''2::y((((	* 26	7
 ::h'!#0rE   c                    / SQ/ SQ/ SQ/nUR                  U5      n[        R                  " USS5      n/ SQ/ SQ/ SQ/ SQ/ SQ/n[        R                   " U[        S9nUR                  U5      n[        US	   U5        US   SS/:X  d   eg )
Nr   r   r#   r   r   r   r   r   r   r   r   s        rB   test_iterate_structure03.TestNdimageMorphology.test_iterate_structure03  s     F#''15#####	%
 ::hd3::h'!#a&(31v!QrE   c                     [        X!5      nUR                  / US9n[        R                  " U5      nXBR	                  SUR
                  S9:X  d   eg Nr   r   r8   r   r   binary_erosionr9   r   r<   r   r=   r>   r?   s        rB   test_binary_erosion01+TestNdimageMorphology.test_binary_erosion01  sK    "wwrw'$$T*jj#))j4444rE   c                     [        X!5      nUR                  / US9n[        R                  " USS9nXBR	                  SUR
                  S9:X  d   eg )Nr   r   border_valuer   r   s        rB   test_binary_erosion02+TestNdimageMorphology.test_binary_erosion02  sM    "wwrw'$$T:jj#))j4444rE   c                     [        X!5      nUR                  S/US9n[        R                  " U5      n[	        XBR                  S/5      5        g Nr   r   r   r8   r   r   r   r	   r9   r   s        rB   test_binary_erosion03+TestNdimageMorphology.test_binary_erosion03  sB    "wws%w($$T*!#zz1#7rE   c                     [        X!5      nUR                  S/US9n[        R                  " USS9n[	        XBR                  S/5      5        g Nr   r   r   r   r   s        rB   test_binary_erosion04+TestNdimageMorphology.test_binary_erosion04  sD    "wws%w($$T:!#zz1#7rE   c                     [        X!5      nUR                  S/US9n[        R                  " U5      n[	        XBR                  / SQ5      5        g )Nr*   r   r   r   r   s        rB   test_binary_erosion05+TestNdimageMorphology.test_binary_erosion05  sA    "wws%w($$T*!#zz)'<=rE   c                     [        X!5      nUR                  S/US9n[        R                  " USS9n[	        XBR                  / SQ5      5        g Nr*   r   r   r   r   r   r   s        rB   test_binary_erosion06+TestNdimageMorphology.test_binary_erosion06  sC    "wws%w($$T:!#zz)'<=rE   c                     [        X!5      nUR                  S/US9n[        R                  " U5      n[	        XBR                  / SQ5      5        g )Nr.   r   r   r   r   s        rB   test_binary_erosion07+TestNdimageMorphology.test_binary_erosion07  sA    "wws%w($$T*!#zz/'BCrE   c                     [        X!5      nUR                  S/US9n[        R                  " USS9n[	        XBR                  / SQ5      5        g )Nr.   r   r   r   r   r   r   s        rB   test_binary_erosion08+TestNdimageMorphology.test_binary_erosion08   sC    "wws%w($$T:!#zz/'BCrE   c                     [         R                  " S/US9nSUS'   UR                  U5      n[        R                  " U5      n[        XBR                  / SQ5      5        g )Nr.   r   r   r#   r   r   r   r   r   ra   r   r9   r   r   r	   r   s        rB   test_binary_erosion09+TestNdimageMorphology.test_binary_erosion09'  sL    wws%(Qzz$$$T*!#zz/'BCrE   c                     [         R                  " S/US9nSUS'   UR                  U5      n[        R                  " USS9n[        XBR                  / SQ5      5        g )Nr.   r   r   r#   r   r   )r   r   r   r   r   r  r   s        rB   test_binary_erosion10+TestNdimageMorphology.test_binary_erosion10/  sN    wws%(Qzz$$$T:!#zz/'BCrE   c                     [         R                  " S/US9nSUS'   UR                  U5      nUR                  / SQ5      n[        R                  " X4SS9n[        XRR                  / SQ5      5        g )	Nr.   r   r   r#   r   r   r   r   r   r   r   r   r   r   r  r<   r   r=   r>   r   r?   s         rB   test_binary_erosion11+TestNdimageMorphology.test_binary_erosion117  s\    wws%(Qzz$I&$$TB!#zz/'BCrE   c                     [         R                  " S/US9nSUS'   UR                  U5      nUR                  / SQ5      n[        R                  " X4SSS9n[        XRR                  / S	Q5      5        g )
Nr.   r   r   r#   r  r   r   originr   r   r   r   r   r  r  s         rB   test_binary_erosion12+TestNdimageMorphology.test_binary_erosion12@  s^    wws%(Qzz$I&$$T"M!#zz/'BCrE   c                     [         R                  " S/US9nSUS'   UR                  U5      nUR                  / SQ5      n[        R                  " X4SSS9n[        XRR                  / SQ5      5        g )	Nr.   r   r   r#   r  r   r  r   r   r   r   r   r  r  s         rB   test_binary_erosion13+TestNdimageMorphology.test_binary_erosion13I  s^    wws%(Qzz$I&$$T!L!#zz/'BCrE   c                     [         R                  " S/US9nSUS'   UR                  U5      nUR                  SS/5      n[        R                  " X4SS9n[        XRR                  / SQ5      5        g )Nr.   r   r   r#   r   r   )r   r   r   r   r   r  r  s         rB   test_binary_erosion14+TestNdimageMorphology.test_binary_erosion14R  s`    wws%(Qzz$QF#$$TB!#zz/'BCrE   c                     [         R                  " S/US9nSUS'   UR                  U5      nUR                  SS/5      n[        R                  " X4SSS9n[        XRR                  / SQ5      5        g )	Nr.   r   r   r#   r   r  r  )r   r   r   r   r   r  r  s         rB   test_binary_erosion15+TestNdimageMorphology.test_binary_erosion15[  sb    wws%(Qzz$QF#$$T"M!#zz/'BCrE   c                     [        X!5      nUR                  SS/US9n[        R                  " USS9n[	        XBR                  S//5      5        g r   r   r   s        rB   test_binary_erosion16+TestNdimageMorphology.test_binary_erosion16d  sI    "ww1vUw+$$T:!#zzA3%'89rE   c                     [        X!5      nUR                  SS/US9n[        R                  " U5      n[	        XBR                  S//5      5        g r   r   r   s        rB   test_binary_erosion17+TestNdimageMorphology.test_binary_erosion17k  sG    "ww1vUw+$$T*!#zzA3%'89rE   c                     [        X!5      nUR                  SS/US9n[        R                  " U5      n[	        XBR                  / SQ/5      5        g )Nr   r*   r   r   r   r   r   r   s        rB   test_binary_erosion18+TestNdimageMorphology.test_binary_erosion18r  sE    "ww1vUw+$$T*!#zz9+'>?rE   c                     [        X!5      nUR                  SS/US9n[        R                  " USS9n[	        XBR                  / SQ/5      5        g )Nr   r*   r   r   r   r   r   s        rB   test_binary_erosion19+TestNdimageMorphology.test_binary_erosion19y  sG    "ww1vUw+$$T:!#zz9+'>?rE   c           	          [        X!5      nUR                  SS/US9n[        R                  " U5      n[	        XBR                  / SQ/ SQ/ SQ/5      5        g )Nr*   r   r+  r   r   r   s        rB   test_binary_erosion20+TestNdimageMorphology.test_binary_erosion20  sS    "ww1vUw+$$T*!#zz93<3<3> (? 	@rE   c           	          [        X!5      nUR                  SS/US9n[        R                  " USS9n[	        XBR                  / SQ/ SQ/ SQ/5      5        g r   r   r   s        rB   test_binary_erosion21+TestNdimageMorphology.test_binary_erosion21  sU    "ww1vUw+$$T:!#zz93<3<3> (? 	@rE   c                     [        X!5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/US9n[        R                  " USS9n[	        XS5        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   r8   r9   r   r   r	   r<   r   r=   rA   r>   r?   s         rB   test_binary_erosion22+TestNdimageMorphology.test_binary_erosion22  s    ",,,,,,,,. ::h'zz333333335 =B  C $$T:!#0rE   c                 P   [        X!5      n[        R                  " SS5      nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ SQ/US
9n[        R                  " XSSS9n[        Xd5        g )Nr#   r8  r:  r<  r=  r>  r?  r@  rA  r   r   r   )r8   r   r   r9   r   r	   r<   r   r=   r   rA   r>   r?   s          rB   test_binary_erosion23+TestNdimageMorphology.test_binary_erosion23  s    "221a8F#,,,,,,,,. ::h'zz333333335 =B  C $$TB!#0rE   c                 .   [        X!5      nUR                  SS/SS//5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  / SQ/ SQ/ SQ/ S	Q/ SQ/ S
Q/ SQ/ SQ/US9n[        R                  " XSSS9n[	        Xd5        g )Nr   r   r8  r=  r   r   r   r   r   r   r   r   r?  )r   r   r   r   r   r   r   r   r<  r>  r@  rA  r   r   rB  rG  s          rB   test_binary_erosion24+TestNdimageMorphology.test_binary_erosion24  s    "aVV% &,,,,,,,,. ::h'zz333333335 =B  C $$TB!#0rE   c                 8   [        X!5      n/ SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  / SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/US9n[        R                  " XSSS9n[	        Xd5        g )Nr   r  r8  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   r   r   r   r   r   rA  r   r   r   rB  rG  s          rB   test_binary_erosion25+TestNdimageMorphology.test_binary_erosion25  s    " F#,,,,,,,,. ::h'zz333333335 =B  C $$TB!#0rE   c                 :   [        X!5      n/ SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  / SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/US9n[        R                  " XSSSS9n[	        Xd5        g )Nr   r  r8  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r<  r=  rO  rP  rQ  rA  r   r   r  r  r  rB  rG  s          rB   test_binary_erosion26+TestNdimageMorphology.test_binary_erosion26  s    " F#,,,,,,,,. ::h'zz333333335 =B  C $$T,46!#0rE   c           
         [        U5      (       a  [        R                  " S5        / SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[
        S9nUR                  U5      n[        R                  " XBS	S
S9n[        XS5        g N5CuPy: NotImplementedError: only brute_force iterationr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r   
iterations	r   rw   rx   r9   ra   r   r   r   r	   r<   r=   r   rA   r>   r?   s         rB   test_binary_erosion27+TestNdimageMorphology.test_binary_erosion27  s    2;;LLPQ F#)))))))+ ::h'zz00000002 :>? zz$$$T013!#0rE   z)inplace out= arguments are numpy-specificc           
         / SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[        R                   " U[        S9nUR                  U5      n[        R                   " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[        R                  " UR                  [        S9nUR                  U5      n[
        R                  " XBSS	US
9  [        XS5        g )Nr   r   r_  r`  r   ra  rb  r   r#   r   rd  outputr9   ra   r   r]   r^   r   r   r	   rf  s         rB   test_binary_erosion28+TestNdimageMorphology.test_binary_erosion28.  s      F#)))))))+ ::hd3::h'zz00000002 :>? zz$hhtzz.jjot!*+C	9!#0rE   c           
         [        U5      (       a  [        R                  " S5        / SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[
        S	9nUR                  U5      n[        R                  " XBS
SS9n[        XS5        g )Nr^  r   r   r_  r`  ra  rb  r   r   r   r   r   r   r   r   r   r*   rc  re  rf  s         rB   test_binary_erosion29+TestNdimageMorphology.test_binary_erosion29M      2;;LLPQ F#)))))))+ ::h'zz00000002 :>? zz$$$T23C!#0rE   c           
      x   [        U5      (       a  [        R                  " S5        / SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[        R                  " U[
        S9nUR                  U5      n[        R                  " / SQ/ SQ/ SQ/ S	Q/ SQ/ SQ/ SQ/[
        S9nUR                  U5      n[        R                  " UR                  [
        S9nUR                  U5      n[        R                  " XBS
SUS9  [        XS5        [        R                  " XBS
SUS9  [        XC5        g )Nr^  r   r   r_  r`  r   ra  rb  rp  r   r*   rj  )r   rw   rx   r9   ra   r   r]   r^   r   r   r	   rf  s         rB   test_binary_erosion30+TestNdimageMorphology.test_binary_erosion30i  s    2;;LLPQ F#)))))))+ ::hd3::h'zz00000002 :>? zz$hhtzz.jjot!*+C	9!#0 	t!*+D	:!$1rE   c           
         / SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[        R                   " U[        S9nUR                  U5      n[        R                   " / S	Q/ S
Q/ SQ/ SQ/ SQ/ S
Q/ S	Q/[        S9nUR                  U5      n[        R                  " UR                  [        S9nUR                  U5      n[
        R                  " XBSSUSS9  [        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`  ra  rb  rp  r   rY  )r   rd  rk  r  rl  rf  s         rB   test_binary_erosion31+TestNdimageMorphology.test_binary_erosion31  s      F#)))))))+ ::hd3::h'zz00000002 :>? zz$hhtzz.jjot!*+C	J!#0rE   c           
         [        U5      (       a  [        R                  " S5        / SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[
        S9nUR                  U5      n[        R                  " XBS	S
S9n[        XS5        g r]  re  rf  s         rB   test_binary_erosion32+TestNdimageMorphology.test_binary_erosion32  rs  rE   c           
         [        U5      (       a  [        R                  " S5        / SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ S	Q/ S	Q/ S	Q/ S	Q/ S	Q/nUR                  U5      n[        R                  " / SQ/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/[
        S9nUR                  U5      n[        R                  " XRSUS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   rp  )r   r   r   r   r   r   r   ra  r`  r   r   r  )r   maskrd  re  r<   r=   r   rA   r  r>   r?   s          rB   test_binary_erosion33+TestNdimageMorphology.test_binary_erosion33  s    2;;LLPQ F#)))))))+ ::h'%%%%%%%' zz$zz00000002 :>? zz$$$T23$2O!#0rE   c           
         / SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      n[        R                   " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[        R                  " XRS	US
9n[        Xc5        g )Nr   r   r_  r`  rb  ra  r   r   r   r   r   r   r   r   r   )r   r  )r9   ra   r   r   r   r	   r  s          rB   test_binary_erosion34+TestNdimageMorphology.test_binary_erosion34  s     F#)))))))+ ::h'%%%%%%%' zz$zz00000002 :>? zz$$$T23$@!#0rE   c           
         / SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[        R                   " U[        S9nUR                  U5      n[        R                   " / SQ/ SQ/ SQ/ S	Q/ SQ/ SQ/ SQ/[        S9nUR                  U5      n/ S
Q/ SQ/ SQ/ SQ/ S
Q/ SQ/ SQ/n[        R                   " U[        S9nUR                  U5      nUR                  XS5      nUR                  XAR	                  U5      5      nUR                  Xe5      n[        R                  " UR                  [        S9nUR                  U5      n[        R                  " XBSSUSUS9  [        Xv5        g )Nr   r   r_  ra  r  r   r`  rb  rp  rx  ry  rz  r{  r   rY  )r   rd  rk  r  r  )r9   ra   r   logical_andlogical_not
logical_orr]   r^   r   r   r	   )r<   r=   r   r  r>   tmprA   r?   s           rB   test_binary_erosion35+TestNdimageMorphology.test_binary_erosion35  sR     F#%%%%%%%' zz$d+zz$zz00000002 :>? zz$$$$$$$$& jjD)jjo>>#,nnT>>$#78==/hhtzz.jjot!*+C&.T	; 	"#0rE   c                    [        U5      (       a  [        R                  " S5        / SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[        R                  " U[
        S9nUR                  U5      n/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/n[        R                  " U[
        S9nUR                  U5      n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[
        S9nUR                  U5      nUR                  XC5      nUR                  XQR                  U5      5      nUR                  Xd5      n[        R                  " XRUSSS9n[        Xv5        g )Nr^  r   r  r8  r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   rU  rV  rW  rX  r<  r=  rO  rP  rQ  rA  r   rY  )r  r   r  )r   rw   rx   r9   ra   r   r  r  r  r   r   r	   )r<   r=   r   r  r  r>   rA   r?   s           rB   test_binary_erosion36+TestNdimageMorphology.test_binary_erosion36<  sL   2;;LLPQ F#((((((((* zz$d+zz$'''''''') jjD)jjozz344444446 >BC zz$>>#,nnT>>$#78==/$$T23HF!#0rE   c           	         [         R                  " / SQ/ SQ/ SQ/[        S9nUR                  U5      nUR                  U5      n[        R
                  " X"USSSS9nXCL d   e[        [        R
                  " X"SSS9U5        g )Nr  r   r   r   T)	structurerk  rd  r   brute_force)r  rd  r   )ra   r9   r   
zeros_liker   r   r   )r<   r=   abr?   s        rB   test_binary_erosion37+TestNdimageMorphology.test_binary_erosion37h  s     JJ	!!#*.0 JJqMMM!$$QA!26DJxx""1a046	rE   c                     [         R                  " / SQ/ SQ/ SQ/[        S9nUR                  U5      nSn[        [        5         [
        R                  " X#S9nS S S 5        g ! , (       d  f       g = f)Nr  r   r   g       @rd  )ra   r9   r   ry   	TypeErrorr   r   )r<   r=   r>   rd  _s        rB   test_binary_erosion38+TestNdimageMorphology.test_binary_erosion38y  sY    zz9$$&-13 zz$
9%&&tCA &%%s   A##
A1c           
         [         R                  " S5      n/ SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U[        S9nUR                  U5      n[         R                  " / SQ/ SQ/ SQ/ S	Q/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[         R                  " UR
                  [        S9nUR                  U5      n[        R                  " XSS
X&S9  [        Xd5        g Nr*   r   r   r_  r`  r   ra  rb  rp  r   rj  )	ra   rb   r9   r   r]   r^   r   r   r	   r<   r=   rd  r   rA   r>   r?   s          rB   test_binary_erosion39+TestNdimageMorphology.test_binary_erosion39  s     XXa[
 F#)))))))+ ::hd:3::h'zz00000002 :>? zz$hhtzz.jjot!*4	B!#0rE   c           
         [         R                  " S5      n/ SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[         R                  " U[        S9nUR                  U5      n[         R                  " / SQ/ SQ/ SQ/ S	Q/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[         R                  " UR
                  [        S9nUR                  U5      n[        R                  " XSS
X&S9  [        Xd5        g r  )	ra   int64r9   r   r]   r^   r   r   r	   r  s          rB   test_binary_erosion40+TestNdimageMorphology.test_binary_erosion40  s     XXa[
 F#)))))))+ ::hd3::h'zz00000002 :>? zz$hhtzz.jjot!*4	B!#0rE   c                     [        X!5      nUR                  / US9n[        R                  " U5      nXBR	                  SUR
                  S9:X  d   eg r   )r8   r   r   binary_dilationr9   r   r   s        rB   test_binary_dilation01,TestNdimageMorphology.test_binary_dilation01  sK    "wwrw'%%d+jj#))j4444rE   c                     [        X!5      nUR                  / US9n[        R                  " U5      nXBR	                  S5      :X  d   eg )Nr   F)r8   r]   r   r  r9   r   s        rB   test_binary_dilation02,TestNdimageMorphology.test_binary_dilation02  sC    "xx%x(%%d+jj''''rE   c                     [        X!5      nUR                  S/US9n[        R                  " U5      n[	        XBR                  S/UR                  S95        g Nr   r   )r8   r   r   r  r	   r9   r   r   s        rB   test_binary_dilation03,TestNdimageMorphology.test_binary_dilation03  sK    "wws%w(%%d+!#zz1#SYYz'GHrE   c                     [        X!5      nUR                  S/US9n[        R                  " U5      n[	        XBR                  S/5      5        g r   r8   r]   r   r  r	   r9   r   s        rB   test_binary_dilation04,TestNdimageMorphology.test_binary_dilation04  sB    "xx5x)%%d+!#zz1#7rE   c                     [        X!5      nUR                  S/US9n[        R                  " U5      n[	        XBR                  / SQ5      5        g Nr*   r   r   r8   r   r   r  r	   r9   r   s        rB   test_binary_dilation05,TestNdimageMorphology.test_binary_dilation05  sA    "wws%w(%%d+!#zz)'<=rE   c                     [        X!5      nUR                  S/US9n[        R                  " U5      n[	        XBR                  / SQ5      5        g )Nr*   r   r+  r  r   s        rB   test_binary_dilation06,TestNdimageMorphology.test_binary_dilation06  sA    "xx5x)%%d+!#zz)'<=rE   c                     [         R                  " S/US9nSUS'   UR                  U5      n[        R                  " U5      n[        XBR                  / SQ5      5        g )Nr*   r   r   r   ra   r]   r9   r   r  r	   r   s        rB   test_binary_dilation07,TestNdimageMorphology.test_binary_dilation07  sL    xx5)Qzz$%%d+!#zz)'<=rE   c                     [         R                  " S/US9nSUS'   SUS'   UR                  U5      n[        R                  " U5      n[        XBR                  / SQ5      5        g )Nr.   r   r   r*   r   r  r   s        rB   test_binary_dilation08,TestNdimageMorphology.test_binary_dilation08  sU    xx5)QQzz$%%d+!#zz/'BCrE   c                     [         R                  " S/US9nSUS'   UR                  U5      n[        R                  " U5      n[        XBR                  / SQ5      5        g )Nr.   r   r   r   r   r   r   r   r  r   s        rB   test_binary_dilation09,TestNdimageMorphology.test_binary_dilation09  sL    xx5)Qzz$%%d+!#zz/'BCrE   c                     [         R                  " S/US9nSUS'   UR                  U5      n[        R                  " USS9n[        XBR                  / SQ5      5        g )Nr.   r   r   r  r  r   r  r   s        rB   test_binary_dilation10,TestNdimageMorphology.test_binary_dilation10  sN    xx5)Qzz$%%d26!#zz/'BCrE   c                     [         R                  " S/US9nSUS'   UR                  U5      n[        R                  " USS9n[        XBR                  / SQ5      5        g )Nr.   r   r   r  r   r   r   r   r   r  r   s        rB   test_binary_dilation11,TestNdimageMorphology.test_binary_dilation11  sN    xx5)Qzz$%%d15!#zz/'BCrE   c                     [         R                  " S/US9nSUS'   UR                  U5      nUR                  / SQ5      n[        R                  " X45      n[        XRR                  / SQ5      5        g )Nr.   r   r   r  )r   r   r   r   r   r  r  s         rB   test_binary_dilation12,TestNdimageMorphology.test_binary_dilation12  sZ    xx5)Qzz$I&%%d3!#zz/'BCrE   c                     [         R                  " S/US9nSUS'   UR                  U5      nUR                  / SQ5      n[        R                  " X4SS9n[        XRR                  / SQ5      5        g )Nr.   r   r   r  r   r  r  r  s         rB   test_binary_dilation13,TestNdimageMorphology.test_binary_dilation13  s\    xx5)Qzz$I&%%dC!#zz/'BCrE   c                     [         R                  " S/US9nSUS'   UR                  U5      nUR                  / SQ5      n[        R                  " X4SS9n[        XRR                  / SQ5      5        g )Nr.   r   r   r  r  r  )r   r   r   r   r   r  r  s         rB   test_binary_dilation14,TestNdimageMorphology.test_binary_dilation14'  s\    xx5)Qzz$I&%%d2>!#zz/'BCrE   c                     [         R                  " S/US9nSUS'   UR                  U5      nUR                  / SQ5      n[        R                  " X4SSS9n[        XRR                  / SQ5      5        g )Nr.   r   r   r  r  r  r   r  r  r  s         rB   test_binary_dilation15,TestNdimageMorphology.test_binary_dilation150  sb    xx5)Qzz$I&%%d-/aA!#zz/'BCrE   c                     [        X!5      nUR                  SS/US9n[        R                  " U5      n[	        XBR                  S//5      5        g r  r  r   s        rB   test_binary_dilation16,TestNdimageMorphology.test_binary_dilation16:  sG    "ww1vUw+%%d+!#zzA3%'89rE   c                     [        X!5      nUR                  SS/US9n[        R                  " U5      n[	        XBR                  S//5      5        g r   r  r   s        rB   test_binary_dilation17,TestNdimageMorphology.test_binary_dilation17A  sG    "xxAex,%%d+!#zzA3%'89rE   c                     [        X!5      nUR                  SS/US9n[        R                  " U5      n[	        XBR                  / SQ/5      5        g )Nr   r*   r   r   r  r   s        rB   test_binary_dilation18,TestNdimageMorphology.test_binary_dilation18H  sE    "ww1vUw+%%d+!#zz9+'>?rE   c           	          [        X!5      nUR                  SS/US9n[        R                  " U5      n[	        XBR                  / SQ/ SQ/ SQ/5      5        g r  r  r   s        rB   test_binary_dilation19,TestNdimageMorphology.test_binary_dilation19O  sS    "ww1vUw+%%d+!#zz93<3<3> (? 	@rE   c           	          [         R                  " SS/US9nSUS'   UR                  U5      n[        R                  " U5      n[        XBR                  / SQ/ SQ/ SQ/5      5        g )Nr*   r   r   r   r   r   r   r  r   s        rB   test_binary_dilation20,TestNdimageMorphology.test_binary_dilation20X  s^    xxAe,T
zz$%%d+!#zz93<3<3> (? 	@rE   c           	          [         R                  " SS5      nUR                  U5      n[        R                  " SS/US9nSUS'   UR                  U5      n[         R
                  " XC5      n[        XRR                  / SQ/ SQ/ SQ/5      5        g )Nr#   r*   r   r   r  r   )r   r   r9   ra   r]   r  r	   )r<   r   r=   r   r>   r?   s         rB   test_binary_dilation21,TestNdimageMorphology.test_binary_dilation21b  s~    221a8F#xxAe,T
zz$%%d3!#zz93<3<3> (? 	@rE   c                    [        X!5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  / SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/US9n[        R                  " U5      n[	        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;  r8  r9  r:  r   r8   r9   r   r  r	   rC  s         rB   test_binary_dilation22,TestNdimageMorphology.test_binary_dilation22n  s    ",,,,,,,,. ::h'zz333333335 =B  C %%d+!#0rE   c                     [        X!5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  / SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/US9n[        R                  " USS9n[	        XS5        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   r8  r<  r9  r:  r;  r   r   r   r  rC  s         rB   test_binary_dilation23,TestNdimageMorphology.test_binary_dilation23  s    ",,,,,,,,. ::h'zz333333335 =B  C %%d;!#0rE   c                     [        X!5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  / SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/US9n[        R                  " USS9n[	        XS5        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   rX  r8  r<  r9  r:  r;  r   r  r  r  rC  s         rB   test_binary_dilation24,TestNdimageMorphology.test_binary_dilation24  s    ",,,,,,,,. ::h'zz333333335 =B  C %%d6:!#0rE   c                    [        X!5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  / SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/US9n[        R                  " USSS9n[	        XS5        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   r8  r<  r9  r:  r;  r   r  r   r  r  rC  s         rB   test_binary_dilation25,TestNdimageMorphology.test_binary_dilation25  s    ",,,,,,,,. ::h'zz333333335 =B  C %%d6J!#0rE   c                 R   [        X!5      n[        R                  " SS5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  U5      nUR                  / SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/US9n[        R                  " XS5      n[        Xd5        g )Nr#   r  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r@  r8  r<  r9  r:  r;  r   )r8   r   r   r9   r  r	   rG  s          rB   test_binary_dilation26,TestNdimageMorphology.test_binary_dilation26  s    "221a8,,,,,,,,. F#::h'zz333333335 =B  C %%d3!#0rE   c                 4   [        X!5      nSS/SS//n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S	Q/nUR                  U5      nUR                  U5      nUR                  / S	Q/ SQ/ S	Q/ SQ/ S
Q/ SQ/ S	Q/ S	Q/US9n[        R                  " XS5      n[	        Xd5        g )Nr   r   r<  r  r9  rK  r?  r   r   r   r   r   r   r   r   r8  r:  r;  r   r  rG  s          rB   test_binary_dilation27,TestNdimageMorphology.test_binary_dilation27  s    "a&a&,,,,,,,,. F#::h'zz333333335 =B  C %%d3!#0rE   c                     [        X!5      n/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  / SQ/ SQ/ SQ/ SQ/US9n[        R                  " USS9n[	        XS5        g )N)r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r  rC  s         rB   test_binary_dilation28,TestNdimageMorphology.test_binary_dilation28  ss    "    " ::h'zz<''') 16  7 %%d;!#0rE   c                 x   [        U5      (       a  [        R                  " S5        SS/SS//n/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  U5      n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[
        S9nUR                  U5      n[        R                  " XBS	S
9n[        XS5        g )Nr^  r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r#   r  	r   rw   rx   r9   ra   r   r   r  r	   rf  s         rB   test_binary_dilation29,TestNdimageMorphology.test_binary_dilation29      2;;LLPQa&a&#####	%
 F#::h'zz?****	, 48	9
 zz$%%dqA!#0rE   z!output= arrays are numpy-specificc                    [        U5      (       a  [        R                  " S5        SS/SS//n/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  U5      nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[
        R                  " UR                  [        S9nUR                  U5      n[        R                  " XBS	US
9  [        XS5        g )Nr^  r   r   r  r  r  r   r   r#   rd  rk  )r   rw   rx   r9   r   ra   r]   r^   r   r  r	   rf  s         rB   test_binary_dilation30,TestNdimageMorphology.test_binary_dilation30"  s    2;;LLPQa&a&#####	%
 F#::h'zz?****	, 48	  9
 zz$hhtzz.jjo3G!#0rE   c                 x   [        U5      (       a  [        R                  " S5        SS/SS//n/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  U5      n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[
        S	9nUR                  U5      n[        R                  " XBS
S9n[        XS5        g )Nr^  r   r   r  r  r   r   r   r   r   r   r  r   r*   r  r  rf  s         rB   test_binary_dilation31,TestNdimageMorphology.test_binary_dilation31:  r  rE   c                    [        U5      (       a  [        R                  " S5        SS/SS//n/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  U5      n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[
        S	9nUR                  U5      n[        R                  " UR                  [
        S	9nUR                  U5      n[        R                  " XBS
US9  [        XS5        g )Nr^  r   r   r  r  r   r%  r  r   r*   r!  r   rw   rx   r9   ra   r   r]   r^   r   r  r	   rf  s         rB   test_binary_dilation32,TestNdimageMorphology.test_binary_dilation32P  s    2;;LLPQa&a&#####	%
 F#::h'zz?****	, 48	9
 zz$hhtzz.jjo3G!#0rE   c                 X   [        U5      (       a  [        R                  " S5        / SQ/ SQ/ SQ/nUR                  U5      n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[
        S	9nUR                  U5      n[        R                  " / SQ/ SQ/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/[
        S	9nUR                  U5      n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[
        S	9nUR                  U5      n[        R                  " XRSUSS9n[        Xc5        g )Nr^  r   r   r<  r8  r   r   r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   r  r   rd  r  r   r  r  s          rB   test_binary_dilation33,TestNdimageMorphology.test_binary_dilation33i  s!   2;;LLPQ F#::777777779 AEF ::h'zz333333335 =AB zz$zz333333335 =AB zz$%%dr+/aA!#0rE   z)inplace output= arrays are numpy-specificc                    [        U5      (       a  [        R                  " S5        / SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[        R                  " / SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/[
        S9nUR                  U5      n[        R                  " UR                  [
        S9nUR                  U5      n[        R                  " XRSUSS9n[        Xc5        g )Nr^  r   r   r<  r   r   r   r   r   r   r   r   rW  r8  r9  r:  r;  r   r  r   r/  r)  r  s          rB   test_binary_dilation34,TestNdimageMorphology.test_binary_dilation34  s     2;;LLPQ F#,,,,,,,,. zz333333335 =AB zz$xx

$/zz$%%dr+/aA!#0rE   c                    [        X!5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[        R                  " / SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[        R                  " U[        S9n[        R                  " X55      n[        R                  " U[        R
                  " U5      5      n[        R                  " Xc5      nUR                  U5      nUR                  U5      nUR                  / SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/US9n[        R                  " XESSS9n[        Xv5        g )Nr  r	  r>  r
  r   r  r8  r<  r9  r:  r;  r?  r   r  r   )r  r  r   )
r8   ra   r9   r   r  r  r  r   r  r	   )r<   r   r=   r  r>   r  rA   r?   s           rB   test_binary_dilation35,TestNdimageMorphology.test_binary_dilation35  s5   "'''''''') zz333333335 6 )(((((((* zz$d+>>#,nnT2>>$#78==/zz$::h'zz333333335 =B  C %%d-3!E!#0rE   c                     [         R                  " / [        S9nUR                  U5      n[        R
                  " USS9nX1R                  S5      :X  d   eg )Nr   r  r  F)ra   r]   r   r9   r   r  )r<   r=   r>   r?   s       rB   test_binary_dilation36,TestNdimageMorphology.test_binary_dilation36  sG    xx$'zz$%%dr:jj''''rE   c                 
   / SQ/ SQ/ SQ/nUR                  U5      n[        R                   " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[        R                   " / SQ/ SQ/ S	Q/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[        R                   " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[        R                  " XRUS
S9n[        Xc5        g )Nr   r   r<  r8  r-  r  r  r   r.  r   r  r   )r9   ra   r   r   binary_propagationr	   r  s          rB   test_binary_propagation01/TestNdimageMorphology.test_binary_propagation01  s	    F#::777777779 AEF ::h'zz333333335 =AB zz$zz333333335 =AB zz$((.2D!#0rE   c                    / SQ/ SQ/ SQ/n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  U5      n[        R                   " / SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ SQ/ SQ/[        S
9nUR                  U5      n[        R                  " UR                  [        S
9nUR                  U5      n[
        R                  " XRUSS9n[        Xc5        g )Nr   r   r<  r3  rW  r8  r9  r:  r;  r   r   r=  )r9   ra   r   r]   r^   r   r>  r	   r  s          rB   test_binary_propagation02/TestNdimageMorphology.test_binary_propagation02  s     -,,,,,,,. ::h'F#zz333333335 =AB zz$xx

$/zz$((.2D!#0rE   c                     UR                  [        R                  " / [        S95      nUR                  [        R                  " / [        S95      n[        R
                  " U5      nXC:X  d   eg )Nr   )r9   ra   r]   r   r   r>  )r<   r=   r>   rA   r?   s        rB   test_binary_propagation03/TestNdimageMorphology.test_binary_propagation03+  sN    zz"((2T23::bhhr67((.rE   c                    [        X!5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  / SQ/ SQ/ SQ/ SQ/ S	Q/ SQ/ SQ/ SQ/US
9n[        R                  " U5      n[	        XS5        g )Nr<  r  r  r   r   r   r   r   r   r   r   r;  r@  r8  r  r   r   r   r   r   r   r   r   r   )r8   r9   r   binary_openingr	   rC  s         rB   test_binary_opening01+TestNdimageMorphology.test_binary_opening012      ",,,,,,,,. ::h'zz333333335 =B  C $$T*!#0rE   c                 R   [        X!5      n[        R                  " SS5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  U5      nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/US	9n[        R                  " XS5      n[        Xd5        g )
Nr#   r  r8  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r@  r   )r8   r   r   r9   rJ  r	   rG  s          rB   test_binary_opening02+TestNdimageMorphology.test_binary_opening02I      "221a8,,,,,,,,. ::h'F#zz333333335 =B  C $$T2!#0rE   c                    [        X!5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  / SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/US9n[        R                  " U5      n[	        XS5        g )Nr8  r3  )r   r   r   r   r   r   r   r   r  r?  r@  r;  r<  r  r  r  rI  r   )r8   r9   r   binary_closingr	   rC  s         rB   test_binary_closing01+TestNdimageMorphology.test_binary_closing01b  rM  rE   c                 R   [        X!5      n[        R                  " SS5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  U5      nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/US	9n[        R                  " XS5      n[        Xd5        g )
Nr#   r8  r3  r@  r  rO  r  rP  r   )r8   r   r   r9   rU  r	   rG  s          rB   test_binary_closing02+TestNdimageMorphology.test_binary_closing02y  rS  rE   c           
      B   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[        R                  " U5      n[        XB5        g )Nr8  r?  r   r;  ra   r9   r   r   binary_fill_holesr	   r<   r=   rA   r>   r?   s        rB   test_binary_fill_holes01.TestNdimageMorphology.test_binary_fill_holes01  s    ::77777779 AEF ::h'zz33333335 =AB zz$''-!#0rE   c           
      B   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[        R                  " U5      n[        XB5        g )Nr8  r:  r?  r   r;  r\  r^  s        rB   test_binary_fill_holes02.TestNdimageMorphology.test_binary_fill_holes02      ::77777779 AEF ::h'zz33333335 =AB zz$''-!#0rE   c           
      B   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[        R                  " U5      n[        XB5        g )Nr8  rW  )r   r   r   r   r   r   r   r   )r   r   r   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        rB   test_binary_fill_holes03.TestNdimageMorphology.test_binary_fill_holes03  rd  rE   )r   z2these filters do not yet have axes support in CuPyr   z.these filters are not implemented in JAX.numpyr   r   r   r  )r   r   )r  r   expand_axisr   r   r#   	func_name)r   r  rJ  rU  binary_hit_or_missr>  r]  c           
         [         R                  " / SQ/ SQ/ SQ/[        5      nUR                  U5      n[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        5      nUR                  U5      nUS:X  a
  [        XDS	9nO	[        US
9nUS;  n	U	(       a  XXS'   OUS:w  a  [        R
                  " S5        [        [        U5      n
U
" Xv40 UD6nSnUR                  U/U-  US9nUR                  U/U-  US9n/ SQnUR                  U5        [        U5      (       d  [        U5      (       a@  UR                  [         R                  " UR                  [        5      5      nU
" Xv4XS.UD6  OU
" Xv4SU0UD6n[        X5        g )Nr   r   r`  )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   rb  )r   r   r   r   r   r   r   rk  )origin1origin2r  )rk  r]  r   r   z-border_value !=0 unsupported by this functionr.   r   ri  rk  axesrp  )ra   r9   r   dictrw   skipr8   r   stackremover   r   r]   r^   r   )r<   r=   rj  rh  r  r   r   r>   kwargsborder_supportedfuncrA   n_repsrp  r?   s                  rB   test_binary_axes&TestNdimageMorphology.test_binary_axes  s     Y&&()-/ F#zz00000002 489 zz$,,&9F(F$ -B B%1>"QKKGHw	*// 88XJ/k8Bxxkx: K B<<72;;**RXXdjj$78C?c?? t9$9&9C&rE   c           	          UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#S9n[        UUR                  / SQ/ SQ/ S	Q/5      5        g )
Nr*   r#   r.   r   r$   r/   r,   rs   r*   r.   r.   r&   r*   r/   r   r  r   r   r   	footprintr#   r#   r   r   r   r#   r*   r   r*   r   r.   r.   r*   r*   r   r9   r   grey_erosionr	   r<   r=   arrayr  rk  s        rB   test_grey_erosion01)TestNdimageMorphology.test_grey_erosion01
	  sg    

O++- . JJ	956	%%eA!&"$**o.=.=.? #@	ArE   zoutput array is read-only.z(https://github.com/cupy/cupy/issues/8398c           	          UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#US9  [        UUR                  / SQ/ SQ/ S	Q/5      5        g )
Nr|  r}  r~  r  r  )r  rk  r  r  r  r  )r<   r=   r  r  s       rB   test_grey_erosion01_overlap1TestNdimageMorphology.test_grey_erosion01_overlap	  sh     

O++- . JJ	956	UF!%"$**o.=.=.? #@	
rE   c           	         UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#US9n[        UUR                  / SQ/ S	Q/ S
Q/5      5        g )Nr|  r}  r~  r  r  r+  r  r  r  r  r  r  r<   r=   r  r  r  rk  s         rB   test_grey_erosion02)TestNdimageMorphology.test_grey_erosion02$	  ~    

O++- . JJ	956	JJ	956	%%e09;!&"$**o.=.=.? #@	
rE   c           	         UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#US9n[        UUR                  / SQ/ S	Q/ S
Q/5      5        g )Nr|  r}  r~  r  r  r   r  r  )r   r#   r   r#   r   )r$   r$   r#   r#   r   r  r  s         rB   test_grey_erosion03)TestNdimageMorphology.test_grey_erosion032	  r  rE   c           	          UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#S9n[        UUR                  / SQ/ SQ/ S	Q/5      5        g )
Nr|  r}  r~  r   r  r  r/   r/   rs   rs   r.   r/   rs   r&   rs   r/   r&   r&   r&   r/   r/   r9   r   grey_dilationr	   r  s        rB   test_grey_dilation01*TestNdimageMorphology.test_grey_dilation01@	  sf    

O++- . JJ	956	&&uB!&"$**o.=.=.? #@	
rE   c           	         UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#US9n[        UUR                  / SQ/ S	Q/ S
Q/5      5        g )Nr|  r}  r~  r   r  r+  r  r  r  r  r  r  s         rB   test_grey_dilation02*TestNdimageMorphology.test_grey_dilation02L	  s~    

O++- . JJ	956	JJ	956	&&u1:<!&"$**o.=.=.? #@	
rE   c           	         UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#US9n[        UUR                  / SQ/ S	Q/ S
Q/5      5        g )Nr|  r}  r~  r   r  r   r  )r&   r&   
   r  r,   )r&   r  rs   r  r&   )rs   rs   rs   r&   r&   r  r  s         rB   test_grey_dilation03*TestNdimageMorphology.test_grey_dilation03Z	  s    

O++- . JJ	956	JJ	956	&&u1:<!&"$**.?.?.=.? #@	
rE   c                     UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#S9n[        R                  " XCS9n[        R                  " X#S9n[        Xe5        g Nr|  r}  r~  r  r  r  r9   r   r  r  grey_openingr	   r<   r=   r  r  r  rA   rk  s          rB   test_grey_opening01)TestNdimageMorphology.test_grey_opening01h	  sj    

O++- . JJ	956	""5>((B%%eA!&3rE   c                 (   UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#US9n[        R                  " XSUS9n[        R                  " X#US9n[        Xv5        g Nr|  r}  r~  r  r  r+  r  r  r<   r=   r  r  r  r  rA   rk  s           rB   test_grey_opening02)TestNdimageMorphology.test_grey_opening02r	  s    

O++- . JJ	956	JJ	956	""5-68((3<>%%e09;!&3rE   c                     UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#S9n[        R                  " XCS9n[        R                  " X#S9n[        XV5        g r  r9   r   r  r  grey_closingr	   r  s          rB   test_grey_closing01)TestNdimageMorphology.test_grey_closing01	  sj    

O++- . JJ	956	##E?''A%%eA!(3rE   c                 (   UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#US9n[        R                  " XSUS9n[        R                  " X#US9n[        Xg5        g r  r  r  s           rB   test_grey_closing02)TestNdimageMorphology.test_grey_closing02	  s    

O++- . JJ	956	JJ	956	##E.79''2;=%%e09;!(3rE   c                 x   UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#US9n[        R                  " X#US9nXV-
  nUR	                  UR
                  UR                  S9n[        R                  " X#XHS	9  [        Xx5        g 
Nr|  r}  r~  r  r  r+  r  r   r  r  rk  )	r9   r   r  r  r]   r^   r   morphological_gradientr	   	r<   r=   r  r  r  tmp1tmp2rA   rk  s	            rB   test_morphological_gradient013TestNdimageMorphology.test_morphological_gradient01	  s    

O++- . JJ	956	JJ	956	$$U/8:##E.79;%++U[[9&&u1:	K!(3rE   c                 0   UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#US9n[        R                  " X#US9nXV-
  n[        R                  " X#US9n[        Xx5        g r  )r9   r   r  r  r  r	   r  s	            rB   test_morphological_gradient023TestNdimageMorphology.test_morphological_gradient02	  s    

O++- . JJ	956	JJ	956	$$U/8:##E.79;//:CE!(3rE   c                    UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#US9n[        R                  " X#US9nXV-   SU-  -
  nUR	                  UR
                  UR                  S	9n[        R                  " X#XHS
9  [        Xx5        g )Nr|  r}  r~  r  r  r+  r  r#   r   r  )	r9   r   r  r  r]   r^   r   morphological_laplacer	   r  s	            rB   test_morphological_laplace012TestNdimageMorphology.test_morphological_laplace01	  s    

O++- . JJ	956	JJ	956	$$U/8:##E.79;U*%++U[[9%%e09	J!(3rE   c                 <   UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#US9n[        R                  " X#US9nXV-   SU-  -
  n[        R                  " X#US9n[        Xx5        g )	Nr|  r}  r~  r  r  r+  r  r#   )r9   r   r  r  r  r	   r  s	            rB   test_morphological_laplace022TestNdimageMorphology.test_morphological_laplace02	  s    

O++- . JJ	956	JJ	956	$$U/8:##E.79;U*..u9BD!(3rE   c                 N   UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#US9nX%-
  nUR                  UR                  UR
                  S9n[        R                  " X#XGS	9  [        Xg5        g r  )r9   r   r  r]   r^   r   white_tophatr	   r  s           rB   test_white_tophat01)TestNdimageMorphology.test_white_tophat01	  s    

O++- . JJ	956	JJ	956	""5-68;%++U[[9U'0	A!(3rE   c                    UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#US9nX%-
  n[        R                  " X#US9n[	        Xg5        g r  )r9   r   r  r  r	   r  s           rB   test_white_tophat02)TestNdimageMorphology.test_white_tophat02	  s~    

O++- . JJ	956	JJ	956	""5-68;%%e09;!(3rE   z	cupy#8399c           
         [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[         R                  " S[        S9nUR                  U5      n[         R                  " / SQ/ SQ/ SQ/ S	Q/ S
Q/ S	Q/ SQ/[        S9nUR                  U5      n[        R
                  " X#S9n[        XE5        g )Nr   r   r   r   r   r   r   rb  r   r   r   r   r   r   r   r  r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   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   r9   r   r   r   r  r   r<   r=   r  r  rA   rk  s         rB   test_white_tophat03)TestNdimageMorphology.test_white_tophat03	       

11111113 ;?@ 

5!GGF$/	JJy)	::44444446 >BC ::h'%%eA)rE   c                    [         R                  " S[        S9n[         R                  " S[        S9nUR	                  U5      nUR	                  U5      nUR                  X!R                  S9n[        R                  " X#US9  g Nr.   r   r   )r  rk  )	ra   eyer   r   r9   
empty_liker_   r   r  r<   r=   r  r  rk  s        rB   test_white_tophat04)TestNdimageMorphology.test_white_tophat04
  sd    q%GGF$/	

5!JJy)	 uJJ7UGrE   c                 N   UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#US9nXR-
  nUR                  UR                  UR
                  S9n[        R                  " X#XGS	9  [        Xg5        g r  )r9   r   r  r]   r^   r   black_tophatr	   r  s           rB   test_black_tophat01)TestNdimageMorphology.test_black_tophat01
  s    

O++- . JJ	956	JJ	956	""5-68;%++U[[9U'0	A!(3rE   c                    UR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        R                  " X#US9nXR-
  n[        R                  " X#US9n[	        Xg5        g r  )r9   r   r  r  r	   r  s           rB   test_black_tophat02)TestNdimageMorphology.test_black_tophat02(
  s~    

O++- . JJ	956	JJ	956	""5-68;%%e09;!(3rE   zcupy/cupy#8399c           
         [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUR                  U5      n[         R                  " S[        S9nUR                  U5      n[         R                  " / SQ/ SQ/ SQ/ SQ/ S	Q/ SQ/ S
Q/[        S9nUR                  U5      n[        R
                  " X#S9n[        XE5        g )Nr  rb  r  r  r   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   r9   r   r   r   r  r   r  s         rB   test_black_tophat03)TestNdimageMorphology.test_black_tophat035
  r  rE   c                     UR                  [        R                  " S[        S95      nUR                  [        R                  " S[        S95      nUR                  X!R                  S9n[        R                  " X#US9  g r  )	r9   ra   r  r   r   r  r_   r   r  r  s        rB   test_black_tophat04)TestNdimageMorphology.test_black_tophat04N
  sZ    

266!401JJrwwvT:;	 uJJ7UGrE   mode)reflectconstantnearestmirrorwrapfootprint_mode)sizer  r  )r  r  r  r  r  r  r  r  c           
      d   UR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        XFS9nUS	:X  a  S
US	'   OUR                  / SQ/ SQ/5      US'   US:X  a  UR                  US   5      US'   [        [        U5      n	U	" U40 UD6n
SnUR                  U
/U-  US9n
UR                  U/U-  US9n/ SQnUR                  U5        [        U5      (       d  [        U5      (       a0  UR                  U
R                  U
R                  S9nU	" U4XS.UD6  OU	" U4SU0UD6n[        X5        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   rs   r*   r   r   r   )r   r   r   r#   r   r   r   )r  r  r  )r#   r*   r  r  r  r  r.   r   ri  r   ro  rp  )r9   rq  	ones_liker8   r   rs  rt  r   r   r]   r^   r   r   )r<   r=   rj  rh  r  r  r  r>   ru  rw  rA   rx  rp  r?   s                 rB   test_grey_axes$TestNdimageMorphology.test_grey_axesW
  sB   , zz00000002 3 V/V##F6N"$**i-C"DF;[("$,,vk/B"CF;w	*'' 88XJ/k8Bxxkx: K B<<72;;((8>>(@C7c77 t1$1&1C&rE   c                    [        U5      (       d&  [        U5      (       d  [        R                  " S5        [	        X!5      n/ SQ/ SQ/ SQ/nUR                  U5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  / SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ S
Q/ SQ/US9nUR                  [        R                  " UR                  [        S95      n[        R                  " XSUS9  [        XF5        g )N!inplace output= is numpy-specificr   r   r  )r   r   r   r   r   r  r  )r   r   r   r   r   r   )r   r   r   r   r   r   rk  )r   r   rw   rx   r8   r9   ra   r]   r^   r   r   rk  r	   rG  s          rB   test_hit_or_miss01(TestNdimageMorphology.test_hit_or_miss01
  s    LL<=" F#########% ::h'zz?*******, 49  : jj$**D9:""4<!(0rE   c                 
   [        X!5      n/ SQ/ SQ/ SQ/n/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  U5      nUR                  / SQ/ SQ/ SQ/ SQ/US9n[        R                  " XS5      n[	        XF5        g )	Nr   r   r8  r<  r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   rQ  r   r8   r9   r   rk  r	   rG  s          rB   test_hit_or_miss02(TestNdimageMorphology.test_hit_or_miss02
  s    " -,,,. F#::h'zz33335 =B  C ((6!(0rE   c                 t   [        X!5      n/ SQ/ SQ/ SQ/n/ SQ/ SQ/ SQ/n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nUR                  U5      nUR                  U5      nUR                  U5      nUR                  / SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/US9n[        R                  " XcU5      n[	        XW5        g )Nr+  r   r9  r8  rW  r  r  rQ  r  rP  rH  r@  r   r  )r<   r   r=   struct1struct2rA   r>   r?   s           rB   test_hit_or_miss03(TestNdimageMorphology.test_hit_or_miss03
  s    "  -,,,,,,,. **W%**W%::h'zz333333335 =B  C ((@!(0rE    N)__name__
__module____qualname____firstlineno__r   rw   markparametrizer   rC   rJ   rP   r   ri   rp   rt   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   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  r5  rD  rH  rL  rR  rZ  rg  rm  rq  ru  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r&  r*  r0  r4  r7  r:  r?  rB  rE  rK  rQ  rV  rY  r_  rb  rf  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  __static_attributes__r  rE   rB   r   r      s   v&QR[[We,.0 - S.0` v&QR[[We,.0 - S.0` v&QR[[We,.0 - S.0` K [[We,0/ -0/d v&QR[[We,-0 - S-0^ v&QR[[We,-0 - S-0^& [[We,'0 -'0R [[We,&0 -&0P I [[We,// -//b R( [[We,% -%* [[We,* -*< D [[We,:/ -:/x [[We,, -,$ [[We,, -,$-
 R(57711   [[We,5 -5 [[We,5 -5 [[We,8 -8 [[We,8 -8 [[We,> -> [[We,> -> [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,: -: [[We,: -: [[We,@ -@ [[We,@ -@ [[We,@ -@ [[We,@ -@ [[We,1 -1, [[We,1 -10 [[We,1 -10 [[We,1 -14 [[We,1 -1618 H11818 H"2"2H H11818"1H1B H'1'1R*1X HD H11: H11: [[We,5 -5 [[We,( -( [[We,I -I [[We,8 -8 [[We,> -> [[We,> -> [[We,> -> [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,: -: [[We,: -: [[We,@ -@ [[We,@ -@ [[We,@ -@ [[We,	@ -	@ [[We,1 -1, [[We,1 -1, [[We,1 -1, [[We,1 -1, [[We,1 -10 [[We,1 -12 [[We,1 -11, d+NO1 P1.1, d+NO1 P10%1N H11> [[We,.1 -.1`("1H1: [[We,1 -1, [[We,1 -10 [[We,1 -1, [[We,1 -101,1(1( t$KMLN[[^QF3[[X'89[[]I6[[[ +@ A)'A 7 : 4NM %)'V	A k*FGv&PQ
 R H






4444 d+NO4 P4 4 d+NO4 P4 4 k*FG4 H44 vk2* 3*0 k*FG	H H	H k*FG4 H44 v&67* 8*0 k*FGH HH t$KMLN[[X'89[[]I6[[V &8 9[[- 0= >[[[ +; <#'<>9 7 :NM %&#'J [[We,1 -1< [[We,1 -1$ [[We,1 -1rE   r   c                   &    \ rS rSrS rS rS rSrg)TestDilateFixi
  c                    UR                  / SQ/ SQ/ SQ/ SQ/ SQ/UR                  S9U l        UR                  S5      U l        [
        R                  " U R                  U R                  S9n[        U5      (       a!  UR                  UR                  5      U l	        g [        U5      R                  nU" X!R                  5      U l	        g )Nr  r  r  r   r   r  )r9   uint8r  r   sq3x3r   r  r   view
dilated3x3r   r   )r<   r=   r  r   s       rB   _setupTestDilateFix._setup
  s    ZZ!0!0!0!0	!2 :<	   C
 WWV_
,,TZZ4::N
B<<(oobhh7DO$Z077F$Z:DOrE   c                     U R                  U5        [        R                  " U R                  U R                  S9n[        X R                  S-   5        g )Nr  r   )r  r   r  r  r  r	   r  r<   r=   results      rB   test_dilation_square_structure,TestDilateFix.test_dilation_square_structure
  s8    B&&tzzTZZH!&//A*=>rE   c                     U R                  U5        [        R                  " U R                  SS9n[	        X R
                  5        g )Nr*   )r  )r  r   r  r  r	   r  r  s      rB   test_dilation_scalar_size'TestDilateFix.test_dilation_scalar_size
  s/    B&&tzz:!&//:rE   )r  r  r  N)r  r  r  r  r  r  r"  r  r  rE   rB   r  r  
  s    ;$?;rE   r  c                   &    \ rS rSrS rS rS rSrg)TestBinaryOpeningClosingi  c                 z   [         R                  " S[        S9nSUSS2SS24'   SUS'   UR                  U5      U l        UR                  S5      U l        [        R                  " U R                  U R                  SS S5      U l	        [        R                  " U R                  U R                  SS S5      U l        g )	Nr.   r.   r   Tr   r$   )r$   r$   r   r   )ra   r]   r   r9   r  r   r  r   rJ  
opened_oldrU  
closed_old)r<   r=   r  s      rB   r  TestBinaryOpeningClosing._setup  s    HHV4(!A#qs($ZZ]
WWV_
!00TZZ12D!=!00TZZ12D!=rE   c           
          U R                  U5        [        R                  " U R                  U R                  SS SS SS5      n[        X R                  5        g Nr   r   F)r  r   rJ  r  r  r   r(  )r<   r=   
opened_news      rB   test_opening_new_arguments3TestBinaryOpeningClosing.test_opening_new_arguments  B    B++DJJ

At,-tQ?

OO4rE   c           
          U R                  U5        [        R                  " U R                  U R                  SS SS SS5      n[        X R                  5        g r,  )r  r   rU  r  r  r   r)  )r<   r=   
closed_news      rB   test_closing_new_arguments3TestBinaryOpeningClosing.test_closing_new_arguments  r0  rE   )r  r)  r(  r  N)r  r  r  r  r  r.  r3  r  r  rE   rB   r%  r%    s    	=55rE   r%  c                     U R                  S/5      n[        [        [        R                  USS9  [        [        [        R                  USS9  g Nr   g      ?r        ?)r   ry   r  r   r   r=   r>   s     rB   )test_binary_erosion_noninteger_iterationsr9    ;     77A3<D)W33TcJ)W33TcJrE   c                     U R                  S/5      n[        [        [        R                  USS9  [        [        [        R                  USS9  g r6  )r   ry   r  r   r  r8  s     rB   *test_binary_dilation_noninteger_iterationsr<  %  s;     77A3<D)W44dsK)W44dsKrE   c                     U R                  S/5      n[        [        [        R                  USS9  [        [        [        R                  USS9  g r6  )r   ry   r  r   rJ  r8  s     rB   )test_binary_opening_noninteger_iterationsr>  -  r:  rE   c                     U R                  S/5      n[        [        [        R                  USS9  [        [        [        R                  USS9  g r6  )r   ry   r  r   rU  r8  s     rB   )test_binary_closing_noninteger_iterationsr@  5  r:  rE   c           
      h   [        U 5      (       a  [        R                  " S5        U R                  S/5      n[	        [
        R                  " USSS9[
        R                  " US[        S5      S95        [	        [
        R                  " USSS9[
        R                  " US[        S5      S95        g )Nr^  r   r#   r7  )rd  r  r   )r   rw   rx   r   r   r   r   r   r8  s     rB   ;test_binary_closing_noninteger_brute_force_passes_when_truerB  =  s     r{{LM77A3<DG**4A3O**4A4PS9U G**4A3O**4A4PS9UrE   function)r   r  rJ  rU  rd  r.   r  Fc                    [         R                  R                  S5      nUR                  SSSS9R	                  [
        5      n[        [        U 5      nUR                  5       nU" XRUS9n[        XW5        U" XRXS9  [        X5        g )N{   r   r#   d   lowhighr  )r  rd  )r  rd  rk  )
ra   randomRandomStaterandintr   r   r8   r   copyr   )	rC  rd  r  r=   rstater>   ndi_func	data_origrA   s	            rB   test_binary_input_as_outputrQ  M  sx     YY""3'F>>aac>299$?Dw)H 		I*MHD$ TzOH#rE   c                    [        U 5      (       d&  [        U 5      (       d  [        R                  " S5        [        R
                  R                  S5      nUR                  SSSS9R                  [        5      nUR                  5       n[        R                  " U5      n[        X#5        [        R                  " X"S9  [        XB5        g )Nr  rE  r   r#   rF  rG  r  )r   r   rw   rx   ra   rJ  rK  rL  r   r   rM  r   rk  r   )r=   rN  r>   rP  rA   s        rB   'test_binary_hit_or_miss_input_as_outputrS  b  s    RLLGBKK89YY""3'F>>aac>299$?D 		I))$/HD$ t1H#rE   c                    [        U 5      (       a  [        R                  " S5        Sn[        R                  " [        US9   [
        R                  " U R                  S5      SS9  S S S 5        g ! , (       d  f       g = f)Nz)CuPy does not have distance_transform_cdtzinvalid metric provided)matchr'  garbager   )r   rw   rx   r
   
ValueErrorr   r   r   )r=   msgs     rB   *test_distance_transform_cdt_invalid_metricrY  s  sR    r{{@A
#C	z	-&&rwwv.7	9 
.	-	-s   %A00
A>)$numpyra   scipy._lib._array_apir   r   r   r   r   r   r	   rw   r
   ry   scipyr    r   scipy.conftestr   r  r   r   usefixtures
pytestmarkr   r  r%  r9  r<  r>  r@  rB  r  rQ  rS  rY  r  rE   rB   <module>ra     s6       *   /;;// KK11 "FKK$;$;<N$Okk%%&9:&+9NPR

I+1 I+1XV; ;D5 54KLKK  M 1v.6$ 7 /	$$"9rE   