
    -i              	       ^   S SK rS SK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  \R                  R                   r\R                  R"                  r\" 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SS9S 5       r\" SS/SS9\" SSS9\R                  R7                  S/ SQ5      \R                  R7                  SSS/5      \R                  R7                  SS S/5      S! 5       5       5       5       5       r\" SS/SS9S" 5       r\" SS#S9S$ 5       rg)%    N)is_cupyis_numpyxp_assert_closexp_assert_equalassert_array_almost_equal)raises)ndimage   )typesT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SS9S 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S 5       r\" SSS9\" SSS9\R                  R                  S\5      S 5       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S! 5       r\" S	SS9S" 5       r\" S	S#S9S$ 5       r\" S	S#S9S% 5       r\" S	S#S9S& 5       r\" S	S#S9S' 5       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S0S9S1 5       5       r(\R                  R                  S\5      S2 5       r)\R                  R                  S\5      S3 5       r*\R                  R                  S\5      S4 5       r+\R                  R                  S\5      S5 5       r,\R                  R                  S\5      S6 5       r-\R                  R                  S\5      S7 5       r.\R                  R                  S\5      S8 5       r/\R                  R                  S\5      S9 5       r0\R                  R                  S\5      S: 5       r1\R                  R                  S\5      S; 5       r2\R                  R                  S\5      S< 5       r3\R                  R                  S\5      S= 5       r4\R                  R                  S\5      S> 5       r5\R                  R                  S\5      S? 5       r6\R                  R                  S\5      S@ 5       r7\R                  R                  S\5      SA 5       r8\R                  R                  S\5      SB 5       r9\R                  R                  S\5      SC 5       r:\R                  R                  S\5      SD 5       r;\R                  R                  S\5      SE 5       r<\R                  R                  S\5      SF 5       r=\" SSGS9SH 5       r>\" S	S/SISJ9\" SSKS9SL 5       5       r?\" SSGS9SM 5       r@\" S	S/SISJ9\" SSKS9SN 5       5       rA\" S	S/SISJ9SO 5       rB\" SSKS9SP 5       rC\" SSKS9SQ 5       rDSR rE\" S	S/SISJ9SS 5       rF\" SSKS9ST 5       rG\" S	S/SISJ9\" SSKS9SU 5       5       rHSV rI\" S	S/SISJ9\" SSKS9SW 5       5       rJ\" S	S/SISJ9\" SSKS9SX 5       5       rK\R                  R                  S\5      SY 5       rL\R                  R                  S\5      SZ 5       rM\R                  R                  S\5      S[ 5       rN\R                  R                  S\5      S\ 5       rO\R                  R                  S\5      S] 5       rP\R                  R                  S\5      S^ 5       rQ\R                  R                  S\5      S_ 5       rR\R                  R                  S\5      S` 5       rS\R                  R                  S\5      Sa 5       rT\R                  R                  S\5      Sb 5       rU\R                  R                  S\5      Sc 5       rV\R                  R                  S\5      Sd 5       rW\R                  R                  S\5      Se 5       rX\R                  R                  S\5      Sf 5       rY\R                  R                  S\5      Sg 5       rZ\R                  R                  S\5      Sh 5       r[\R                  R                  S\5      Si 5       r\\R                  R                  S\5      Sj 5       r]\R                  R                  S\5      Sk 5       r^\R                  R                  S\5      Sl 5       r_\R                  R                  S\5      Sm 5       r`\R                  R                  S\5      Sn 5       ra\R                  R                  S\5      So 5       rb\R                  R                  S\5      Sp 5       rc\R                  R                  S\5      Sq 5       rd\R                  R                  S\5      Sr 5       re\R                  R                  S\5      Ss 5       rf\R                  R                  S\5      St 5       rg\R                  R                  S\5      Su 5       rh\" SSKS9Sv 5       ri\" S	S/SwSJ9\" SSKS9Sx 5       5       rj\" SSKS9Sy 5       rk\" S	S/SwSJ9\" SSKS9Sz 5       5       rl\" SSKS9S{ 5       rm\" S	S/S|SJ9\" SSKS9S} 5       5       rn\R                  R                  S\5      S~ 5       roS rpS rqS rrS rs\R                  R                  S\5      S 5       rt\R                  R                  S\5      S 5       ru\R                  R                  S\5      S 5       rv\R                  R                  S\5      S 5       rwS rxS ryS rz\" S	S9\" SSS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       r{S r|\" SSS9\" SSS9\" SSS9S 5       5       5       r}S r~S rS rS rS rS rS rS rS r\" S	SwS9S 5       rS r\" S	SwS9S 5       rS r\" SSS9\" SSS9S 5       5       rS r\" SSS9S 5       r\" SSS9\" SSS9S 5       5       r\" SSS9\" SSS9S 5       5       rS r\" SSS9S 5       r\" SSS9\" SSS9S 5       5       r\" S	S9\" SSS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\" S	S/SSJ9\R                  R                  S\5      S 5       5       r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       rSrg)TestNdimageMorphology   r   z)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[	        XV5        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)   r+   r,   r-   r.   r/   	r   r
   r
   r
   r   r*   r*   r*   r!   r2   r6   s          r=   test_distance_transform_bf022TestNdimageMorphology.test_distance_transform_bf02F   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'!"/r@   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   rC   r"   r#   )	r%   r%   r   r   r   r   r   r%   r%   )	r   r   r)   r'   r'   r'   r)   r   r   r(   r+   r,   r-   r.   	r   r
   r   r   r)   r'   r'   r*   r!   	r   r
   r
   r   r'   r'   r*   r*   r!   )	r   r
   r
   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   r6   s          r=   test_distance_transform_bf032TestNdimageMorphology.test_distance_transform_bf03x   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'!"/r@   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rR   r   indicesrP   r   r   rT   rP   r   rT   )r3   r4   r	   r5   zerosshapefloat64appendnprT   int32r   
r7   r   r8   r9   tdttftdtsftsdtr;   s
             r=   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. r@   z(CuPy does not have distance_transform_bfc                    [        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   ri       ri   r   r   r   r"   r#   r$   r&   r(   r+   r,   r-   r.   r/   r0   r1   r2   r6   s          r=   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'!"/r@   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
   rg   )	r   r   r   r
   r   r
   r   r   r   r    )	r   r   r
   r   	   r   r
   r   r   r"   )	r   r   r   r   r   r   r   r   r   )	r%   r%   r%   r%   r   r%   r%   r%   r%   )	r   r   r   r   r   r   r   r   r   )	r)   r)   r)   r)   r'   r)   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   )	r   r
   r
   r
   r*   r*   r*   r*   r!   r/   r2   r6   s          r=   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'!"/r@   c                     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   FrQ   )r4   assert_raisesRuntimeErrorr	   r5   )r7   r8   r9   s      r=   test_distance_transform_bf072TestNdimageMorphology.test_distance_transform_bf07B  s]     zz6666666668 9 <())uU )((s   A
A*)CuPy does not have distance_transform_cdtc                    [        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[        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   rB   Tr   r"   	r   r   r   r
   r
   r
   r   r   r   )	r%   r%   r   r
   r
   r
   r   r%   r%   )	r   r   r   r   r
   r   r   r   r   )	r)   r)   r)   r)   r*   r*   r'   r)   r)   	r'   r'   r'   r'   r*   r*   r'   r'   r'   r,   r-   r.   rD   )	r   r
   r
   r
   r   r)   r'   r*   r!   )	r   r
   r   r   r   r)   r'   r*   r!   r3   r4   r	   distance_transform_cdtr5   r   r7   r   r8   r9   r:   r;   bfr<   s           r=   test_distance_transform_cdt013TestNdimageMorphology.test_distance_transform_cdt01S  s     " 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'!"/r@   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[        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   rH   Tr   r"   rx   )	r%   r%   r   r   r
   r   r   r%   r%   )	r   r   r%   r   r   r   r%   r   r   )	r)   r)   r   r'   r*   r'   r   r)   r)   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'   r*   r*   r!   rJ   rI   rz   r|   s           r=   test_distance_transform_cdt023TestNdimageMorphology.test_distance_transform_cdt02|  s     "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'!"/r@   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   rO   FrQ   rS   rU   rV   rW   )r3   r4   r	   r{   rX   rY   r]   r[   r\   rT   r   r^   s
             r=   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. r@   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   TFrS   )	r4   rX   ndimrY   r]   rr   rs   r	   r5   )r7   r8   r9   indices_outs       r=   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torchzint overflowc                     [        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UR                  S5      n[        R                  " X4S9nUR                  U5      S:X  d   eg )Nr   r   r   r   r%   r%   metrici)r3   r4   onesr	   r{   sum)r7   r   r8   r9   
metric_argactuals         r=   test_distance_transform_cdt053TestNdimageMorphology.test_distance_transform_cdt05  s     " zz6666666668 @E  F WWV_
//Hvvf~$$$r@   c                 x   [        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[        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 )Nr   r   r   r   Tr   r   r
   r   axis)r3   r4   r	   distance_transform_edtr5   r   r\   rT   rY   r   astyperZ   multiplyaddreducesqrt)	r7   r   r8   r9   r:   r;   r}   np_ftrc   s	            r=   test_distance_transform_edt013TestNdimageMorphology.test_distance_transform_edt01  s    " 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^!")r@   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   rO   r   rQ   FrS   rU   rV   rW   )r3   r4   r	   r   rX   rY   rZ   r[   r\   rT   r]   r   r^   s
             r=   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. r@   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9n[        R                  " USS/S9n[        XT5        g )Nr   r   r   r   r   r   rh   r3   r4   r	   r5   r   r   r7   r   r8   r9   refr:   s         r=   test_distance_transform_edt033TestNdimageMorphology.test_distance_transform_edt03a       "zz6666666668 @E  F ++D+AO,,TQFC!#+r@   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9n[        R                  " USS/S9n[        XT5        g )	Nr   r   r   r   r   r   r
   r   r   r   s         r=   test_distance_transform_edt42TestNdimageMorphology.test_distance_transform_edt4s  r   r@   z8Only 2D and 3D distance transforms are supported in CuPyc                     [         R                  " UR                  S5      5      n[        X!R                  S/5      5        g )NF        )r	   r   r4   r   )r7   r8   r:   s      r=   test_distance_transform_edt52TestNdimageMorphology.test_distance_transform_edt5  s0    
 ,,RZZ->?!#zz2$'78r@   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   rR   rP   )r4   rX   rY   rZ   rr   rs   r	   r5   )r7   r8   r9   distances_outs       r=   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z8generate_binary_structure always generates numpy objectsc                 B    [         R                  " SS5      nUS:X  d   eg )Nr   r
   )r	   generate_binary_structurer7   r8   structs      r=   test_generate_structure01/TestNdimageMorphology.test_generate_structure01  s"     221a8{{r@   c                 N    [         R                  " SS5      n[        U/ SQ5        g )Nr
   r
   r
   r
   r	   r   r   r   s      r=   test_generate_structure02/TestNdimageMorphology.test_generate_structure02  s      221a8!&)4r@   c                 \    [         R                  " SS5      n[        U/ SQ/ SQ/ SQ/5        g )Nr   r
   r   r
   r   r   r   r   s      r=   test_generate_structure03/TestNdimageMorphology.test_generate_structure03  -     221a8!&9+4+4+6 	7r@   c                 \    [         R                  " SS5      n[        U/ SQ/ SQ/ SQ/5        g )Nr   r   r   r   s      r=   test_generate_structure04/TestNdimageMorphology.test_generate_structure04  r   r@   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   r4   r	   iterate_structurer\   boolr   r7   r8   r   r:   r<   s        r=   test_iterate_structure01.TestNdimageMorphology.test_iterate_structure01  sr     F#''2::....	0 8<	=
 ::h'!#0r@   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        r=   test_iterate_structure02.TestNdimageMorphology.test_iterate_structure02  s~    a&a&a& F#''2::y((((	* 26	7
 ::h'!#0r@   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        r=   test_iterate_structure03.TestNdimageMorphology.test_iterate_structure03  s     F#''15#####	%
 ::hd3::h'!#a&(31v!Qr@   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
   r3   r   r	   binary_erosionr4   r   r7   r   r8   r9   r:   s        r=   test_binary_erosion01+TestNdimageMorphology.test_binary_erosion01  sK    "wwrw'$$T*jj#))j4444r@   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        r=   test_binary_erosion02+TestNdimageMorphology.test_binary_erosion02  sM    "wwrw'$$T:jj#))j4444r@   c                     [        X!5      nUR                  S/US9n[        R                  " U5      n[	        XBR                  S/5      5        g Nr
   r   r   r3   r   r	   r   r   r4   r   s        r=   test_binary_erosion03+TestNdimageMorphology.test_binary_erosion03  sB    "wws%w($$T*!#zz1#7r@   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        r=   test_binary_erosion04+TestNdimageMorphology.test_binary_erosion04  sD    "wws%w($$T:!#zz1#7r@   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        r=   test_binary_erosion05+TestNdimageMorphology.test_binary_erosion05	  sA    "wws%w($$T*!#zz)'<=r@   z(https://github.com/cupy/cupy/issues/8912c                     [        X!5      nUR                  SUS9nUR                  US5      n[        R                  " U5      n[        XBR                  / SQ5      5        g )Nr
   r   r%   r   )r3   r   broadcast_tor	   r   r   r4   r   s        r=   !test_binary_erosion05_broadcasted7TestNdimageMorphology.test_binary_erosion05_broadcasted  sQ     "wwuEw*tU+$$T*!#zz)'<=r@   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        r=   test_binary_erosion06+TestNdimageMorphology.test_binary_erosion06  sC    "wws%w($$T:!#zz)'<=r@   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        r=   test_binary_erosion07+TestNdimageMorphology.test_binary_erosion07   sA    "wws%w($$T*!#zz/'BCr@   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        r=   test_binary_erosion08+TestNdimageMorphology.test_binary_erosion08'  sC    "wws%w($$T:!#zz/'BCr@   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\   r   r4   r	   r   r   r   s        r=   test_binary_erosion09+TestNdimageMorphology.test_binary_erosion09.  sL    wws%(Qzz$$$T*!#zz/'BCr@   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        r=   test_binary_erosion10+TestNdimageMorphology.test_binary_erosion106  sN    wws%(Qzz$$$T:!#zz/'BCr@   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  r7   r   r8   r9   r   r:   s         r=   test_binary_erosion11+TestNdimageMorphology.test_binary_erosion11>  s\    wws%(Qzz$I&$$TB!#zz/'BCr@   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         r=   test_binary_erosion12+TestNdimageMorphology.test_binary_erosion12G  s^    wws%(Qzz$I&$$T"M!#zz/'BCr@   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         r=   test_binary_erosion13+TestNdimageMorphology.test_binary_erosion13P  s^    wws%(Qzz$I&$$T!L!#zz/'BCr@   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         r=   test_binary_erosion14+TestNdimageMorphology.test_binary_erosion14Y  s`    wws%(Qzz$QF#$$TB!#zz/'BCr@   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         r=   test_binary_erosion15+TestNdimageMorphology.test_binary_erosion15b  sb    wws%(Qzz$QF#$$T"M!#zz/'BCr@   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        r=   test_binary_erosion16+TestNdimageMorphology.test_binary_erosion16k  sI    "ww1vUw+$$T:!#zzA3%'89r@   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        r=   test_binary_erosion17+TestNdimageMorphology.test_binary_erosion17r  sG    "ww1vUw+$$T*!#zzA3%'89r@   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        r=   test_binary_erosion18+TestNdimageMorphology.test_binary_erosion18y  sE    "ww1vUw+$$T*!#zz9+'>?r@   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        r=   test_binary_erosion19+TestNdimageMorphology.test_binary_erosion19  sG    "ww1vUw+$$T:!#zz9+'>?r@   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        r=   test_binary_erosion20+TestNdimageMorphology.test_binary_erosion20  sS    "ww1vUw+$$T*!#zz93<3<3> (? 	@r@   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        r=   test_binary_erosion21+TestNdimageMorphology.test_binary_erosion21  sU    "ww1vUw+$$T:!#zz93<3<3> (? 	@r@   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   r3   r4   r	   r   r   r7   r   r8   r<   r9   r:   s         r=   test_binary_erosion22+TestNdimageMorphology.test_binary_erosion22  s    ",,,,,,,,. ::h'zz333333335 =B  C $$T:!#0r@   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   r7  r9  r;  r<  r=  r>  r?  r@  r   r
   r   )r3   r	   r   r4   r   r   r7   r   r8   r   r<   r9   r:   s          r=   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!#0r@   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
   r7  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  rF  s          r=   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!#0r@   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  r7  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
   r   r@  r   r
   r   rA  rF  s          r=   test_binary_erosion25+TestNdimageMorphology.test_binary_erosion25  s    " F#,,,,,,,,. ::h'zz333333335 =B  C $$TB!#0r@   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  r7  r   r   r   r   r   r   r   r
   r   r   r   r   r
   r   r   r
   r   r   r
   r   r   r   r   r   r   r
   r   r   r
   r   r   r   r;  r<  rN  rO  rP  r@  r   r
   r  r  r  rA  rF  s          r=   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!#0r@   5CuPy: NotImplementedError: only brute_force iterationc           
      L   / 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   r   r   r   r   r   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r4   r\   r   r	   r   r   r7   r8   r   r<   r9   r:   s         r=   test_binary_erosion27+TestNdimageMorphology.test_binary_erosion27  s      F#)))))))+ ::h'zz00000002 :>? zz$$$T013!#0r@   z)inplace out= arguments are numpy-specificrM   r   r   /NotImplementedError: only brute_force iterationc           
         / 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   r`  ra  r
   r   r   rc  outputr4   r\   r   rX   rY   r	   r   r   re  s         r=   test_binary_erosion28+TestNdimageMorphology.test_binary_erosion285  s    
  F#)))))))+ ::hd3::h'zz00000002 :>? zz$hhtzz.jjot!*+C	9!#0r@   c           
      L   / 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  r
   r
   r
   r
   r
   r
   r
   r   r
   r%   rb  rd  re  s         r=   test_binary_erosion29+TestNdimageMorphology.test_binary_erosion29U  s      F#)))))))+ ::h'zz00000002 :>? zz$$$T23C!#0r@   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9  [        XS5        [
        R                  " XBS	S
US9  [        XC5        g )Nr   r   r^  r_  r   r`  ra  rq  r
   r%   rk  rm  re  s         r=   test_binary_erosion30+TestNdimageMorphology.test_binary_erosion30q  s    
  F#)))))))+ ::hd3::h'zz00000002 :>? zz$hhtzz.jjot!*+C	9!#0 	t!*+D	:!$1r@   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_  r`  ra  rq  r
   rX  )r   rc  rl  r  rm  re  s         r=   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!#0r@   c           
      L   / 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]  rd  re  s         r=   test_binary_erosion32+TestNdimageMorphology.test_binary_erosion32  s      F#)))))))+ ::h'zz00000002 :>? zz$$$T23C!#0r@   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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   rq  )r   r   r   r
   r   r   r
   r`  r_  r   r
   r  )r   maskrc  rd  r7   r8   r   r<   r  r9   r:   s          r=   test_binary_erosion33+TestNdimageMorphology.test_binary_erosion33  s      F#)))))))+ ::h'%%%%%%%' zz$zz00000002 :>? zz$$$T23$2O!#0r@   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_  ra  r`  r   r   r
   r   r
   r   r   r   r
   )r   r  rd  r  s          r=   test_binary_erosion34+TestNdimageMorphology.test_binary_erosion34  s     F#)))))))+ ::h'%%%%%%%' zz$zz00000002 :>? zz$$$T23$@!#0r@   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^  r`  r  r   r_  ra  rq  rx  ry  rz  r{  r
   rX  )r   rc  rl  r  r  )r4   r\   r   logical_andlogical_not
logical_orrX   rY   r	   r   r   )r7   r8   r   r  r9   tmpr<   r:   s           r=   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	; 	"#0r@   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/ 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  r7  r   r   r
   r
   r
   r   r   r   )r   r   r
   r   r
   r   r   r   r   rT  rU  rV  rW  r;  r<  rN  rO  rP  r@  r
   rX  )r  r   r  )	r4   r\   r   r  r  r  r	   r   r   )r7   r8   r   r  r  r9   r<   r:   s           r=   test_binary_erosion36+TestNdimageMorphology.test_binary_erosion36>  s8     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!#0r@   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)	structurerl  rc  r   brute_force)r  rc  r   )r\   r4   r   
zeros_liker	   r   r   )r7   r8   abr:   s        r=   test_binary_erosion37+TestNdimageMorphology.test_binary_erosion37i  s    
 JJ	!!#*.0 JJqMMM!$$QA!26DJxx""1a046	r@   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       @rc  )r\   r4   r   rr   	TypeErrorr	   r   )r7   r8   r9   rc  _s        r=   test_binary_erosion38+TestNdimageMorphology.test_binary_erosion38{  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   r`  ra  rq  r
   rk  )	r\   r]   r4   r   rX   rY   r	   r   r   r7   r8   rc  r   r<   r9   r:   s          r=   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!#0r@   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  )	r\   int64r4   r   rX   rY   r	   r   r   r  s          r=   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!#0r@   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   )r3   r   r	   binary_dilationr4   r   r   s        r=   test_binary_dilation01,TestNdimageMorphology.test_binary_dilation01  sK    "wwrw'%%d+jj#))j4444r@   c                     [        X!5      nUR                  / US9n[        R                  " U5      nXBR	                  S5      :X  d   eg )Nr   F)r3   rX   r	   r  r4   r   s        r=   test_binary_dilation02,TestNdimageMorphology.test_binary_dilation02  sC    "xx%x(%%d+jj''''r@   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   )r3   r   r	   r  r   r4   r   r   s        r=   test_binary_dilation03,TestNdimageMorphology.test_binary_dilation03  sK    "wws%w(%%d+!#zz1#SYYz'GHr@   c                     [        X!5      nUR                  S/US9n[        R                  " U5      n[	        XBR                  S/5      5        g r   r3   rX   r	   r  r   r4   r   s        r=   test_binary_dilation04,TestNdimageMorphology.test_binary_dilation04  sB    "xx5x)%%d+!#zz1#7r@   c                     [        X!5      nUR                  S/US9n[        R                  " U5      n[	        XBR                  / SQ5      5        g Nr%   r   r   r3   r   r	   r  r   r4   r   s        r=   test_binary_dilation05,TestNdimageMorphology.test_binary_dilation05  sA    "wws%w(%%d+!#zz)'<=r@   c                     [        X!5      nUR                  SUS9nUR                  US5      n[        R                  " U5      n[        XBR                  / SQ5      5        g )Nr   r   r   r   )r3   r   r   r	   r  r   r4   r   s        r=   "test_binary_dilation05_broadcasted8TestNdimageMorphology.test_binary_dilation05_broadcasted  sO    "wwuEw*tT*%%d+!#zz)'<=r@   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        r=   test_binary_dilation06,TestNdimageMorphology.test_binary_dilation06  sA    "xx5x)%%d+!#zz)'<=r@   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\   rX   r4   r	   r  r   r   s        r=   test_binary_dilation07,TestNdimageMorphology.test_binary_dilation07  sL    xx5)Qzz$%%d+!#zz)'<=r@   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        r=   test_binary_dilation08,TestNdimageMorphology.test_binary_dilation08   sU    xx5)QQzz$%%d+!#zz/'BCr@   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        r=   test_binary_dilation09,TestNdimageMorphology.test_binary_dilation09	  sL    xx5)Qzz$%%d+!#zz/'BCr@   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        r=   test_binary_dilation10,TestNdimageMorphology.test_binary_dilation10  sN    xx5)Qzz$%%d26!#zz/'BCr@   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        r=   test_binary_dilation11,TestNdimageMorphology.test_binary_dilation11  sN    xx5)Qzz$%%d15!#zz/'BCr@   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         r=   test_binary_dilation12,TestNdimageMorphology.test_binary_dilation12!  sZ    xx5)Qzz$I&%%d3!#zz/'BCr@   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         r=   test_binary_dilation13,TestNdimageMorphology.test_binary_dilation13*  s\    xx5)Qzz$I&%%dC!#zz/'BCr@   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         r=   test_binary_dilation14,TestNdimageMorphology.test_binary_dilation143  s\    xx5)Qzz$I&%%d2>!#zz/'BCr@   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         r=   test_binary_dilation15,TestNdimageMorphology.test_binary_dilation15<  sb    xx5)Qzz$I&%%d-/aA!#zz/'BCr@   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        r=   test_binary_dilation16,TestNdimageMorphology.test_binary_dilation16F  sG    "ww1vUw+%%d+!#zzA3%'89r@   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        r=   test_binary_dilation17,TestNdimageMorphology.test_binary_dilation17M  sG    "xxAex,%%d+!#zzA3%'89r@   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        r=   test_binary_dilation18,TestNdimageMorphology.test_binary_dilation18T  sE    "ww1vUw+%%d+!#zz9+'>?r@   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        r=   test_binary_dilation19,TestNdimageMorphology.test_binary_dilation19[  sS    "ww1vUw+%%d+!#zz93<3<3> (? 	@r@   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        r=   test_binary_dilation20,TestNdimageMorphology.test_binary_dilation20d  s^    xxAe,T
zz$%%d+!#zz93<3<3> (? 	@r@   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   r4   r\   rX   r  r   )r7   r   r8   r   r9   r:   s         r=   test_binary_dilation21,TestNdimageMorphology.test_binary_dilation21n  s~    221a8F#xxAe,T
zz$%%d3!#zz93<3<3> (? 	@r@   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:  r7  r8  r9  r   r3   r4   r	   r  r   rB  s         r=   test_binary_dilation22,TestNdimageMorphology.test_binary_dilation22z  s    ",,,,,,,,. ::h'zz333333335 =B  C %%d+!#0r@   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
   r7  r;  r8  r9  r:  r   r
   r   r  rB  s         r=   test_binary_dilation23,TestNdimageMorphology.test_binary_dilation23  s    ",,,,,,,,. ::h'zz333333335 =B  C %%d;!#0r@   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   rW  r7  r;  r8  r9  r:  r   r  r  r  rB  s         r=   test_binary_dilation24,TestNdimageMorphology.test_binary_dilation24  s    ",,,,,,,,. ::h'zz333333335 =B  C %%d6:!#0r@   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
   r7  r;  r8  r9  r:  r   r  r
   r  r  rB  s         r=   test_binary_dilation25,TestNdimageMorphology.test_binary_dilation25  s    ",,,,,,,,. ::h'zz333333335 =B  C %%d6J!#0r@   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?  r7  r;  r8  r9  r:  r   )r3   r	   r   r4   r  r   rF  s          r=   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!#0r@   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  r8  rJ  r>  r   r
   r
   r   r
   r
   r   r   r7  r9  r:  r   r  rF  s          r=   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!#0r@   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  rB  s         r=   test_binary_dilation28,TestNdimageMorphology.test_binary_dilation28	  ss    "    " ::h'zz<''') 16  7 %%d;!#0r@   c                 ,   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  r4   r\   r   r	   r  r   re  s         r=   test_binary_dilation29,TestNdimageMorphology.test_binary_dilation29       a&a&#####	%
 F#::h'zz?****	, 48	9
 zz$%%dqA!#0r@   z!output= arrays are numpy-specificc                    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   rc  rl  )r4   r   r\   rX   rY   r	   r  r   re  s         r=   test_binary_dilation30,TestNdimageMorphology.test_binary_dilation30-  s    
 a&a&#####	%
 F#::h'zz?****	, 48	  9
 zz$hhtzz.jjo3G!#0r@   c                 ,   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  re  s         r=   test_binary_dilation31,TestNdimageMorphology.test_binary_dilation31F  r"  r@   c                    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$  r4   r\   r   rX   rY   r	   r  r   re  s         r=   test_binary_dilation32,TestNdimageMorphology.test_binary_dilation32[  s    
 a&a&#####	%
 F#::h'zz?****	, 48	9
 zz$hhtzz.jjo3G!#0r@   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                  " XRS
USS9n[        Xc5        g )Nr   r   r;  r7  r   r   r   r   r
   r
   r   r   r  r  r   r   r   r   r   r   r   r
   r   r  r   rc  r  r   r  r  s          r=   test_binary_dilation33,TestNdimageMorphology.test_binary_dilation33t  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$%%dr+/aA!#0r@   z)inplace output= arrays 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/ 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   rV  r7  r8  r9  r:  r   r  r
   r2  r,  r  s          r=   test_binary_dilation34,TestNdimageMorphology.test_binary_dilation34  s    
  F#,,,,,,,,. zz333333335 =AB zz$xx

$/zz$%%dr+/aA!#0r@   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  r7  r;  r8  r9  r:  r>  r   r  r
   )r  r  r   )
r3   r\   r4   r   r  r  r  r	   r  r   )r7   r   r8   r  r9   r  r<   r:   s           r=   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!#0r@   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)r\   rX   r   r4   r	   r  )r7   r8   r9   r:   s       r=   test_binary_dilation36,TestNdimageMorphology.test_binary_dilation36  sG    xx$'zz$%%dr:jj''''r@   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;  r7  r0  r  r  r   r1  r   r  r   )r4   r\   r   r	   binary_propagationr   r  s          r=   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!#0r@   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;  r6  rV  r7  r8  r9  r:  r   r
   r@  )r4   r\   r   rX   rY   r	   rA  r   r  s          r=   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!#0r@   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   )r4   r\   rX   r   r	   rA  )r7   r8   r9   r<   r:   s        r=   test_binary_propagation03/TestNdimageMorphology.test_binary_propagation034  sN    zz"((2T23::bhhr67((.r@   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?  r7  r  r   r   r
   r
   r   r
   r   r   r   )r3   r4   r	   binary_openingr   rB  s         r=   test_binary_opening01+TestNdimageMorphology.test_binary_opening01;      ",,,,,,,,. ::h'zz333333335 =B  C $$T*!#0r@   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  r7  )r   r
   r
   r
   r   r   r   r   r
   r
   r
   r
   r
   r
   r
   r   r  r   r
   r
   r
   r   r
   r
   r   r?  r   )r3   r	   r   r4   rM  r   rF  s          r=   test_binary_opening02+TestNdimageMorphology.test_binary_opening02R      "221a8,,,,,,,,. ::h'F#zz333333335 =B  C $$T2!#0r@   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 )Nr7  r6  )r   r
   r
   r
   r   r
   r   r   r  r>  r?  r:  r;  r  r  r  rL  r   )r3   r4   r	   binary_closingr   rB  s         r=   test_binary_closing01+TestNdimageMorphology.test_binary_closing01k  rP  r@   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   r7  r6  r?  r  rR  r  rS  r   )r3   r	   r   r4   rX  r   rF  s          r=   test_binary_closing02+TestNdimageMorphology.test_binary_closing02  rV  r@   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 )Nr7  r>  r   r:  r\   r4   r   r	   binary_fill_holesr   r7   r8   r<   r9   r:   s        r=   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$''-!#0r@   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 )Nr7  r9  r>  r   r:  r_  ra  s        r=   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$''-!#0r@   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 )Nr7  rV  )r   r
   r
   r
   r   r
   r
   r
   )r   r   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  s        r=   test_binary_fill_holes03.TestNdimageMorphology.test_binary_fill_holes03  rg  r@   )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  rM  rX  binary_hit_or_missrA  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
   ra  )r   r   r
   r
   r   r   r   rn  )origin1origin2r  )rn  r`  r   r   z-border_value !=0 unsupported by this functionr)   r   rl  rl  axesrs  )r\   r4   r   dictpytestskipr3   r	   stackremover   r   rX   rY   r   )r7   r8   rm  rk  r  r   r   r9   kwargsborder_supportedfuncr<   n_repsrs  r:   s                  r=   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&r@   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'   rn   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
   r4   r	   grey_erosionr   r7   r8   arrayr  rl  s        r=   test_grey_erosion01)TestNdimageMorphology.test_grey_erosion01	  sg    

O++- . JJ	956	%%eA!&"$**o.=.=.? #@	Ar@   z!output=array requires buffer viewz
dask.arrayz(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  rl  r  r  r  r  )r7   r8   r  r  s       r=   test_grey_erosion01_overlap1TestNdimageMorphology.test_grey_erosion01_overlap	  sh    
 

O++- . JJ	956	UF!%"$**o.=.=.? #@	
r@   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  r7   r8   r  r  r  rl  s         r=   test_grey_erosion02)TestNdimageMorphology.test_grey_erosion02.	  ~    

O++- . JJ	956	JJ	956	%%e09;!&"$**o.=.=.? #@	
r@   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         r=   test_grey_erosion03)TestNdimageMorphology.test_grey_erosion03<	  r  r@   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*   rn   rn   r)   r*   rn   r!   rn   r*   r!   r!   r!   r*   r*   r4   r	   grey_dilationr   r  s        r=   test_grey_dilation01*TestNdimageMorphology.test_grey_dilation01J	  sf    

O++- . JJ	956	&&uB!&"$**o.=.=.? #@	
r@   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         r=   test_grey_dilation02*TestNdimageMorphology.test_grey_dilation02V	  s~    

O++- . JJ	956	JJ	956	&&u1:<!&"$**o.=.=.? #@	
r@   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  rn   r  r!   )rn   rn   rn   r!   r!   r  r  s         r=   test_grey_dilation03*TestNdimageMorphology.test_grey_dilation03d	  s    

O++- . JJ	956	JJ	956	&&u1:<!&"$**.?.?.=.? #@	
r@   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  r4   r	   r  r  grey_openingr   r7   r8   r  r  r  r<   rl  s          r=   test_grey_opening01)TestNdimageMorphology.test_grey_opening01r	  sj    

O++- . JJ	956	""5>((B%%eA!&3r@   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  r7   r8   r  r  r  r  r<   rl  s           r=   test_grey_opening02)TestNdimageMorphology.test_grey_opening02|	  s    

O++- . JJ	956	JJ	956	""5-68((3<>%%e09;!&3r@   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 r  r4   r	   r  r  grey_closingr   r  s          r=   test_grey_closing01)TestNdimageMorphology.test_grey_closing01	  sj    

O++- . JJ	956	##E?''A%%eA!&3r@   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 r  r  r  s           r=   test_grey_closing02)TestNdimageMorphology.test_grey_closing02	  s    

O++- . JJ	956	JJ	956	##E.79''2;=%%e09;!&3r@   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  [        X5        g 
Nr  r  r  r  r  r*  r  r   r  r  rl  )	r4   r	   r  r  rX   rY   r   morphological_gradientr   	r7   r8   r  r  r  tmp1tmp2r<   rl  s	            r=   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!&3r@   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[        X5        g r  )r4   r	   r  r  r  r   r  s	            r=   test_morphological_gradient023TestNdimageMorphology.test_morphological_gradient02	  s    

O++- . JJ	956	JJ	956	$$U/8:##E.79;//:CE!&3r@   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  [        X5        g )Nr  r  r  r  r  r*  r  r   r   r  )	r4   r	   r  r  rX   rY   r   morphological_laplacer   r  s	            r=   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!&3r@   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[        X5        g )	Nr  r  r  r  r  r*  r  r   )r4   r	   r  r  r  r   r  s	            r=   test_morphological_laplace022TestNdimageMorphology.test_morphological_laplace02	  s    

O++- . JJ	956	JJ	956	$$U/8:##E.79;U*..u9BD!&3r@   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  [        Xv5        g r  )r4   r	   r  rX   rY   r   white_tophatr   r  s           r=   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!&3r@   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[	        Xv5        g r  )r4   r	   r  r  r   r  s           r=   test_white_tophat02)TestNdimageMorphology.test_white_tophat02	  s~    

O++- . JJ	956	JJ	956	""5-68;%%e09;!&3r@   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[        XT5        g )Nr
   r   r   r   r   r   r   ra  r   r
   r
   r
   r   r
   r   r  r   r   )r   r
   r
   r   r   r   r   )r
   r   r   r
   r
   r
   r   )r   r
   r
   r   r   r   r
   )r   r
   r
   r   r
   r   r
   )r   r   r   r
   r
   r
   r
   r  )r\   r4   r   r   r	   r  r   r7   r8   r  r  r<   rl  s         r=   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)r@   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  rl  )	r\   eyer   r   r4   
empty_likerZ   r	   r  r7   r8   r  r  rl  s        r=   test_white_tophat04)TestNdimageMorphology.test_white_tophat04
  sf     q%GGF$/	

5!JJy)	 uJJ7UGr@   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  [        Xv5        g r  )r4   r	   r  rX   rY   r   black_tophatr   r  s           r=   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!&3r@   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[	        Xv5        g r  )r4   r	   r  r  r   r  s           r=   test_black_tophat02)TestNdimageMorphology.test_black_tophat025
  s~    

O++- . JJ	956	JJ	956	""5-68;%%e09;!&3r@   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[        XT5        g )Nr  ra  r  r  r   r   )r   r
   r
   r
   r
   r
   r
   )r
   r   r   r   r   r   r
   )r
   r   r   r   r
   r   r
   r  r  )r\   r4   r   r   r	   r  r   r  s         r=   test_black_tophat03)TestNdimageMorphology.test_black_tophat03B
  r  r@   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  )	r4   r\   r  r   r   r  rZ   r	   r  r  s        r=   test_black_tophat04)TestNdimageMorphology.test_black_tophat04[
  s\     

266!401JJrwwvT:;	 uJJ7UGr@   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   rn   r%   r   r   r   )r   r   r   r   r   r   r   )r  r  r  )r   r%   r  r  r  r  r)   r   rl  r   rr  rs  )r4   rt  	ones_liker3   r	   rw  rx  r   r   rX   rY   r   r   )r7   r8   rm  rk  r  r  r  r9   ry  r{  r<   r|  rs  r:   s                 r=   test_grey_axes$TestNdimageMorphology.test_grey_axese
  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&r@   !inplace output= is numpy-specificc                    [        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  [        Xd5        g )Nr   r   r  )r   r
   r   r   r   r  r  )r   r   r
   r
   r
   r   )r   r
   r
   r
   r
   r   rl  )	r3   r4   r\   rX   rY   r   r	   rn  r   rF  s          r=   test_hit_or_miss01(TestNdimageMorphology.test_hit_or_miss01
  s     " F#########% ::h'zz?*******, 49  : jj$**D9:""4<!#0r@   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[	        Xd5        g )	Nr   r   r7  r;  r   r
   r   r   r
   r
   r
   r   )r
   r
   r
   r   r   r
   r   r   rP  r   r3   r4   r	   rn  r   rF  s          r=   test_hit_or_miss02(TestNdimageMorphology.test_hit_or_miss02
  s    " -,,,. F#::h'zz33335 =B  C ((6!#0r@   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[	        Xu5        g )Nr*  r   r8  r7  rV  r  r  rP  r  rS  rK  r?  r   r  )r7   r   r8   struct1struct2r<   r9   r:   s           r=   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 ((@!#0r@    N)__name__
__module____qualname____firstlineno__xfail_xp_backendsru  markparametrizer   r>   rE   rK   skip_xp_backendsrd   rk   ro   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.  r1  r4  rC  rG  rK  rQ  rY  rf  rn  rr  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)  r-  r3  r7  r:  r=  rB  rE  rH  rN  rT  rY  r\  rb  re  ri  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  __static_attributes__r  r@   r=   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&PQ[[We,-0 - R-0^ v&PQ[[We,-0 - R-0^ v&PQ R  v&QR[[We,%0 - S%0N v&QR[[We,#0 - S#0J I [[We,// -//b R( v&QRw~6[[We,% - 7 S%" v&PQ[[We,* - R*8 D [[We,:/ -:/x v&PQ[[We,, - R,  v&PQ[[We,, - R,  Q99
 R( dWYY dWY5Y5 dWY7Y7 dWY7Y711   [[We,5 -5 [[We,5 -5 [[We,8 -8 [[We,8 -8 [[We,> -> [[We,v&PQ> R -> [[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 N112 dxHJvOQ1QJ18 N112 dxHJvOQ2QJ2B dxHJ1J18 vOQ1Q12 vOQ1Q1B1B dxHJ'1J'1R vOQ'1Q'1R dxHJvOQQJD dxHJvOQ1QJ1: dxHJvOQ1QJ1: [[We,5 -5 [[We,( -( [[We,I -I [[We,8 -8 [[We,> -> [[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 vOQ1Q1& dx@BvOQ1QB1* vOQ1Q1& dx@BvOQ1QB1* vOQ#1Q#1J dxHJvOQ1QJ18 [[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*MNl+NOv&PQ
 R P O






4444 d+NO4 P4 4 d+NO4 P4 4 k*MNl+NO4 P O44 vk2* 3*0 k*MNl+NO	H P O	H k*MNl+NO4 P O44 v&67* 8*0 k*MNl+NOH P OH t$KMLN[[X'89[[]I6[[V &8 9[[- 0= >[[[ +; <#'<>9 7 :NM %&#'J dx@B[[We,1 -B16 [[We,1 -1$ [[We,1 -1r@   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R                  X!R                  5      U l	        g )Nr  r  r  r   r   r  )r4   uint8r  r   sq3x3r	   r  r   view
dilated3x3r   )r7   r8   r  s      r=   _setupTestDilateFix._setup
  s    ZZ!0!0!0!0	!2 :<	   C
 WWV_
,,TZZ4::N
B<<(oobhh7DO ii
HH=DOr@   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  r7   r8   results      r=   test_dilation_square_structure,TestDilateFix.test_dilation_square_structure  s8    B&&tzzTZZH!&//A*=>r@   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      r=   test_dilation_scalar_size'TestDilateFix.test_dilation_scalar_size  s/    B&&tzz:!&//:r@   )r  r  r  N)r  r  r  r  r   r%  r(  r  r  r@   r=   r  r  
  s    > ?;r@   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   )r\   rX   r   r4   r  r   r  r	   rM  
opened_oldrX  
closed_old)r7   r8   r  s      r=   r   TestBinaryOpeningClosing._setup  s    HHV4(!A#qs($ZZ]
WWV_
!00TZZ12D!=!00TZZ12D!=r@   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	   rM  r  r  r   r.  )r7   r8   
opened_news      r=   test_opening_new_arguments3TestBinaryOpeningClosing.test_opening_new_arguments  B    B++DJJ

At,-tQ?

OO4r@   c           
          U R                  U5        [        R                  " U R                  U R                  SS SS SS5      n[        X R                  5        g r2  )r   r	   rX  r  r  r   r/  )r7   r8   
closed_news      r=   test_closing_new_arguments3TestBinaryOpeningClosing.test_closing_new_arguments!  r6  r@   )r  r/  r.  r  N)r  r  r  r  r   r4  r9  r  r  r@   r=   r+  r+    s    	=55r@   r+  c                     U R                  S/5      n[        [        [        R                  USS9  [        [        [        R                  USS9  g Nr
   g      ?r        ?)r   rr   r  r	   r   r8   r9   s     r=   )test_binary_erosion_noninteger_iterationsr?  (  ;     77A3<D)W33TcJ)W33TcJr@   c                     U R                  S/5      n[        [        [        R                  USS9  [        [        [        R                  USS9  g r<  )r   rr   r  r	   r  r>  s     r=   *test_binary_dilation_noninteger_iterationsrB  0  s;     77A3<D)W44dsK)W44dsKr@   c                     U R                  S/5      n[        [        [        R                  USS9  [        [        [        R                  USS9  g r<  )r   rr   r  r	   rM  r>  s     r=   )test_binary_opening_noninteger_iterationsrD  8  r@  r@   c                     U R                  S/5      n[        [        [        R                  USS9  [        [        [        R                  USS9  g r<  )r   rr   r  r	   rX  r>  s     r=   )test_binary_closing_noninteger_iterationsrF  @  r@  r@   r[  r   c           
         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=  )rc  r  r   )r   r   r	   r   r   r>  s     r=   ;test_binary_closing_noninteger_brute_force_passes_when_truerH  H  su    
 77A3<DG**4A3O**4A4PS9U G**4A3O**4A4PS9Ur@   r   rh  ri  function)r   r  rM  rX  rc  r)   r  Fc                 4   [         R                  R                  S5      nUR                  SSSS9R	                  [
        5      nUR                  U5      n[        [        U 5      nUR                  5       nU" XRUS9n[        XW5        U" XRXS9  [        XX5        g )N{   r   r   d   lowhighr  )r  rc  )r  rc  rl  )r\   randomRandomStaterandintr   r   r4   r3   r	   copyr   )	rI  rc  r  r8   rstater9   ndi_func	data_origr<   s	            r=   test_binary_input_as_outputrW  V  s     YY""3'F>>aac>299$?D::dDw)H 		I*MHD$ TzOD#r@   c                 L   [         R                  R                  S5      nUR                  SSSS9R	                  [
        5      nU R                  U5      nUR                  5       n[        R                  " U5      n[        X#5        [        R                  " X"S9  [        X$5        g )NrK  r   r   rL  rM  r  )r\   rP  rQ  rR  r   r   r4   rS  r	   rn  r   )r8   rT  r9   rV  r<   s        r=   'test_binary_hit_or_miss_input_as_outputrY  o  s     YY""3'F>>aac>299$?D::dD 		I))$/HD$ t1D#r@   rv   c                     Sn[         R                  " [        US9   [        R                  " U R                  S5      SS9  S S S 5        g ! , (       d  f       g = f)Nzinvalid metric provided)matchr-  garbager   )ru  r   
ValueErrorr	   r{   r   )r8   msgs     r=   *test_distance_transform_cdt_invalid_metricr_    s>     $C	z	-&&rwwv.7	9 
.	-	-s   %A


A)numpyr\   scipy._lib._array_apir   r   r   r   r   ru  r   rr   scipyr	    r   r  r  r  
pytestmarkr   r  r+  r?  rB  rD  rF  rH  r  rW  rY  r_  r  r@   r=   <module>re     s|      *  ;;// KK11 &+9NOP
Y+1 Y+1xV; ;@5 54KLKK 
J $F8<>6"STM 1v.6$ 7 /	 U>$  $F8<>$>$ 6EG9G9r@   