
    doi                    h   S SK rS SKJrJrJrJrJrJrJ	r	  S SK
r
S SK
Jr  S SKJr  SSKJr  \
R"                  R$                  r\
R"                  R&                  r " S S5      r\" \R*                  \R,                  5       " S	 S
5      5       r\" \R0                  \R2                  5       " S S5      5       r\" \R6                  5      S 5       r\" \R*                  5      S 5       r\" \R0                  5      S 5       r\" \R2                  5      S 5       r\" SSS9\" \R6                  5      S 5       5       r \" SS/SS9\" SSS9\
R"                  RC                  S\	" \R6                  5      \	" \R*                  5      \	" \R0                  5      \	" \R2                  5      /5      \
R"                  RC                  SSS/5      \
R"                  RC                  SSS/5      S 5       5       5       5       5       r"\" SS/SS9\" \RF                  5      S 5       5       r$\" \RJ                  5      S  5       r&g)!    N)is_cupyis_numpyxp_assert_closexp_assert_equalassert_array_almost_equalmake_xp_test_casemake_xp_pytest_param)raises)ndimage   )typesc                   8   \ rS rSr\" \R                  5      \R                  R                  S\
5      S 5       5       r\" \R                  5      \R                  R                  S\
5      S 5       5       r\" \R                  5      \R                  R                  S\
5      S 5       5       r\" SSS9\" \R                  5      \R                  R                  S\
5      S	 5       5       5       r\" S
SS9\" \R                  5      \R                  R                  S\
5      S 5       5       5       r\" \R                  5      \R                  R                  S\
5      S 5       5       r\" \R                  5      S 5       r\" \R                  \R(                  5      \R                  R                  S\
5      S 5       5       r\" \R                  \R(                  5      \R                  R                  S\
5      S 5       5       r\" SSS9\" \R(                  5      \R                  R                  S\
5      S 5       5       5       r\" SSS9\" \R(                  5      S 5       5       r\" SSS9\" \R(                  5      \R                  R                  S\
5      S 5       5       5       r\" S
SS9\" \R4                  \R                  5      \R                  R                  S\
5      S 5       5       5       r\" SSS9\" \R4                  \R                  5      \R                  R                  S\
5      S 5       5       5       r\" \R4                  \R                  5      \R                  R                  S\
5      S 5       5       r\" \R4                  \R                  5      \R                  R                  S\
5      S 5       5       r\" S
SS9\" \R4                  5      S 5       5       r\" SSS9\" \R4                  5      S  5       5       r \" \RB                  5      S! 5       r"\" \RB                  5      S" 5       r#\" \RB                  5      S# 5       r$\" \RB                  5      S$ 5       r%\" \RL                  5      S% 5       r'\" \RL                  5      S& 5       r(\" \RL                  5      S' 5       r)\" \RT                  5      \R                  R                  S\
5      S( 5       5       r+\" \RT                  5      \R                  R                  S\
5      S) 5       5       r,\" \RT                  5      \R                  R                  S\
5      S* 5       5       r-\" \RT                  5      \R                  R                  S\
5      S+ 5       5       r.\" \RT                  5      \R                  R                  S\
5      S, 5       5       r/\" S
S-S9\" \RT                  5      \R                  R                  S\
5      S. 5       5       5       r0\" \RT                  5      \R                  R                  S\
5      S/ 5       5       r1\" \RT                  5      \R                  R                  S\
5      S0 5       5       r2\" \RT                  5      \R                  R                  S\
5      S1 5       5       r3\" \RT                  5      \R                  R                  S\
5      S2 5       5       r4\" \RT                  5      \R                  R                  S\
5      S3 5       5       r5\" \RT                  5      \R                  R                  S\
5      S4 5       5       r6\" \RT                  5      \R                  R                  S\
5      S5 5       5       r7\" \RT                  5      \R                  R                  S\
5      S6 5       5       r8\" \RT                  5      \R                  R                  S\
5      S7 5       5       r9\" \RT                  5      \R                  R                  S\
5      S8 5       5       r:\" \RT                  5      \R                  R                  S\
5      S9 5       5       r;\" \RT                  5      \R                  R                  S\
5      S: 5       5       r<\" \RT                  5      \R                  R                  S\
5      S; 5       5       r=\" \RT                  5      \R                  R                  S\
5      S< 5       5       r>\" \RT                  5      \R                  R                  S\
5      S= 5       5       r?\" \RT                  5      \R                  R                  S\
5      S> 5       5       r@\" \RT                  5      \R                  R                  S\
5      S? 5       5       rA\" \RT                  5      \R                  R                  S\
5      S@ 5       5       rB\" \RT                  5      \R                  R                  S\
5      SA 5       5       rC\" \RT                  5      \R                  R                  S\
5      SB 5       5       rD\" \RT                  5      \R                  R                  S\
5      SC 5       5       rE\" S
SDS9\" \RT                  5      SE 5       5       rF\" SS
/SFSG9\" S
SHS9\" \RT                  5      SI 5       5       5       rG\" S
SDS9\" \RT                  5      SJ 5       5       rH\" SS
/SFSG9\" S
SHS9\" \RT                  5      SK 5       5       5       rI\" SS
/SFSG9\" \RT                  5      SL 5       5       rJ\" S
SHS9\" \RT                  5      SM 5       5       rK\" S
SHS9\" \RT                  5      SN 5       5       rL\" \RT                  5      SO 5       rM\" SS
/SFSG9\" \RT                  5      SP 5       5       rN\" S
SHS9\" \RT                  5      SQ 5       5       rO\" SS
/SFSG9\" S
SHS9\" \RT                  5      SR 5       5       5       rP\" \RT                  5      SS 5       rQ\" SS
/SFSG9\" S
SHS9\" \RT                  5      ST 5       5       5       rR\" SS
/SFSG9\" S
SHS9\" \RT                  5      SU 5       5       5       rS\R                  R                  S\
5      \" \R                  5      SV 5       5       rU\R                  R                  S\
5      \" \R                  5      SW 5       5       rV\R                  R                  S\
5      \" \R                  5      SX 5       5       rW\R                  R                  S\
5      \" \R                  5      SY 5       5       rX\R                  R                  S\
5      \" \R                  5      SZ 5       5       rY\R                  R                  S\
5      \" \R                  5      S[ 5       5       rZ\R                  R                  S\
5      \" \R                  5      S\ 5       5       r[\R                  R                  S\
5      \" \R                  5      S] 5       5       r\\R                  R                  S\
5      \" \R                  5      S^ 5       5       r]\R                  R                  S\
5      \" \R                  5      S_ 5       5       r^\R                  R                  S\
5      \" \R                  5      S` 5       5       r_\R                  R                  S\
5      \" \R                  5      Sa 5       5       r`\R                  R                  S\
5      \" \R                  5      Sb 5       5       ra\R                  R                  S\
5      \" \R                  5      Sc 5       5       rb\R                  R                  S\
5      \" \R                  5      Sd 5       5       rc\R                  R                  S\
5      \" \R                  5      Se 5       5       rd\R                  R                  S\
5      \" \R                  5      Sf 5       5       re\R                  R                  S\
5      \" \R                  5      Sg 5       5       rf\R                  R                  S\
5      \" \R                  5      Sh 5       5       rg\R                  R                  S\
5      \" \R                  5      Si 5       5       rh\R                  R                  S\
5      \" \R                  5      Sj 5       5       ri\R                  R                  S\
5      \" \R                  5      Sk 5       5       rj\R                  R                  S\
5      \" \R                  5      Sl 5       5       rk\R                  R                  S\
5      \" \R                  5      Sm 5       5       rl\R                  R                  S\
5      \" \R                  5      Sn 5       5       rm\R                  R                  S\
5      \" \R                  5      So 5       5       rn\R                  R                  S\
5      \" \R                  5      Sp 5       5       ro\R                  R                  S\
5      \" \R                  5      Sq 5       5       rp\R                  R                  S\
5      \" \R                  5      Sr 5       5       rq\" S
SHS9\" \R                  5      Ss 5       5       rr\" SS
/StSG9\" S
SHS9\" \R                  5      Su 5       5       5       rs\" S
SHS9\" \R                  5      Sv 5       5       rt\" SS
/StSG9\" S
SHS9\" \R                  5      Sw 5       5       5       ru\" S
SHS9\" \R                  5      Sx 5       5       rv\" SS
/SySG9\" S
SHS9\" \R                  5      Sz 5       5       5       rw\R                  R                  S\
5      \" \R                  5      S{ 5       5       rx\" \R                  5      S| 5       ry\" \R                  5      S} 5       r{\" \R                  5      S~ 5       r|\" \R                  5      S 5       r}\" \R                  5      \R                  R                  S\
5      S 5       5       r\" \R                  5      \R                  R                  S\
5      S 5       5       r\R                  R                  S\
5      \" \GR                  5      S 5       5       r\R                  R                  S\
5      \" \GR                  5      S 5       5       r\" \GR                  5      S 5       r\" \GR                  5      S 5       r\" \GR                  5      S 5       r\" SS9\" S
SS9\" SSS9\R                  R                  SSS/5      \R                  R                  SSS/5      \R                  R                  S/ SQ5      \R                  R                  S\" \RT                  5      \" \R                  5      \" \R                  5      \" \GR                  5      \" \GR                  5      \" \R                  5      \" \GR                  5      /5      S 5       5       5       5       5       5       5       r\" \GR                  5      S 5       r\" SSS9\" SSS9\" S
SS9\" \GR                  5      S 5       5       5       5       r\" \GR                  5      S 5       r\" \GR                  5      S 5       r\" \GR                   5      S 5       r\" \GR                   5      S 5       r\" \GR                   5      S 5       r\" \GR(                  5      S 5       r\" \GR(                  5      S 5       r\" \GR.                  5      S 5       r\" \GR.                  5      S 5       r\" SStS9\" \GR                   \GR                  \GR4                  5      S 5       5       r\" \GR                   \GR                  \GR4                  5      S 5       r\" SStS9\" \GR                   \GR                  \GR:                  5      S 5       5       r\" \GR                   \GR                  \GR:                  5      S 5       r\" SSS9\" SSS9\" \GR(                  \GR@                  5      S 5       5       5       r\" \GR(                  \GR@                  5      S 5       r\" S
SS9\" \GR@                  5      S 5       5       r\" SSS9\" SSS9\" \GR@                  5      S 5       5       5       r\" SSS9\" SSS9\" \GR.                  \GRJ                  5      S 5       5       5       r\" \GR.                  \GRJ                  5      S 5       r\" S
SS9\" \GRJ                  5      S 5       5       r\" SSS9\" SSS9\" \GRJ                  5      S 5       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\" \GR                  5      \" \GR                   5      \" \GR(                  5      \" \GR.                  5      \" \GR:                  5      \" \GR4                  5      \" \GR@                  5      \" \GRJ                  5      /5      S 5       5       5       5       5       5       5       5       r\" SS
/SSG9\" \GR                  5      \R                  R                  S\
5      S 5       5       5       r\" \GR                  5      \R                  R                  S\
5      S 5       5       r\" \GR                  5      \R                  R                  S\
5      S 5       5       rSrg)TestNdimageMorphology   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          _/var/www/html/land-ocr/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   r.   r2   s          r9   test_distance_transform_bf022TestNdimageMorphology.test_distance_transform_bf02G   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   r?   r   r   )	r!   r!   r   r   r   r   r   r!   r!   )	r   r   r%   r#   r#   r#   r%   r   r   r$   r'   r(   r)   r*   	r   r   r   r   r%   r#   r#   r&   r   	r   r   r   r   r#   r#   r&   r&   r   )	r   r   r   r   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   s          r9   test_distance_transform_bf032TestNdimageMorphology.test_distance_transform_bf03y   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_onlyreasonc                 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rO   r   indicesrM   r   r   rQ   rM   r   rQ   )r/   r0   r   r1   zerosshapefloat64appendnprQ   int32r   
r3   r   r4   r5   tdttftdtsftsdtr7   s
             r9   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<   cupyz(CuPy does not have distance_transform_bfrJ   c                    [        X!5      nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	US9n[        R                  " USSSS/S9u  pE/ SQ/ SQ/ S	Q/ S
Q/ SQ/ S
Q/ S	Q/ SQ/ SQ/	nUR                  U5      n[	        XD-  U5        / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	/nUR                  U5      n[	        XV5        g )Nr   r   r   r   r   Tr   r   sampling)	r   r   r   r   r   r   r   r   r   )	r   r   r   r      r   r   r   r   )	r   r   r   rh       rh   r   r   r   r   r   r    r"   r$   r'   r(   r)   r*   r+   r,   r-   r.   r2   s          r9   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   rf   )	r   r   r   r   r   r   r   r   r   r   )	r   r   r   r   	   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r!   r!   r!   r!   r   r!   r!   r!   r!   )	r   r   r   r   r   r   r   r   r   )	r%   r%   r%   r%   r#   r%   r%   r%   r%   )	r#   r#   r#   r#   r&   r#   r#   r#   r#   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   s          r9   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   FrN   )r0   assert_raisesRuntimeErrorr   r1   )r3   r4   r5   s      r9   test_distance_transform_bf072TestNdimageMorphology.test_distance_transform_bf07F  s]     zz6666666668 9 <())uU )((s   A
A*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   r>   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*   r@   )	r   r   r   r   r   r%   r#   r&   r   )	r   r   r   r   r   r%   r#   r&   r   r/   r0   r   distance_transform_cdtr1   r   r3   r   r4   r5   r6   r7   bfr8   s           r9   test_distance_transform_cdt013TestNdimageMorphology.test_distance_transform_cdt01W  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   rD   Tr   r   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%   rw   r(   r)   r*   )	r   r   r   r   r!   r   r#   r&   r   )	r   r   r   r   r   r#   r#   r&   r   )	r   r   r   r   r   r#   r&   r&   r   rF   rE   rx   rz   s           r9   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   rL   FrN   rP   rR   rS   rT   )r/   r0   r   ry   rU   rV   rZ   rX   rY   rQ   r   r[   s
             r9   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   TFrP   )	r0   rU   ndimrV   rZ   rq   rr   r   r1   )r3   r4   r5   indices_outs       r9   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)r/   r0   onesr   ry   sum)r3   r   r4   r5   
metric_argactuals         r9   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)r/   r0   r   distance_transform_edtr1   r   rY   rQ   rV   r   astyperW   multiplyaddreducesqrt)	r3   r   r4   r5   r6   r7   r{   np_ftr`   s	            r9   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   rL   r   rN   FrP   rR   rS   rT   )r/   r0   r   r   rU   rV   rW   rX   rY   rQ   rZ   r   r[   s
             r9   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   rg   r/   r0   r   r1   r   r   r3   r   r4   r5   refr6   s         r9   test_distance_transform_edt033TestNdimageMorphology.test_distance_transform_edt03m       "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         r9   test_distance_transform_edt42TestNdimageMorphology.test_distance_transform_edt4  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   r0   r   )r3   r4   r6   s      r9   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   rO   rM   )r0   rU   rV   rW   rq   rr   r   r1   )r3   r4   r5   distances_outs       r9   test_distance_transform_edt62TestNdimageMorphology.test_distance_transform_edt6  s|     zz6666666668 9 2::><())#!&'	 )((s    B
Bc                 B    [         R                  " SS5      nUS:X  d   eg )Nr   r   )r   generate_binary_structurer3   r4   structs      r9   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      r9   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      r9   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      r9   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   r0   r   iterate_structurerY   boolr   r3   r4   r   r6   r8   s        r9   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        r9   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        r9   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   r/   r   r   binary_erosionr0   r   r3   r   r4   r5   r6   s        r9   test_binary_erosion01+TestNdimageMorphology.test_binary_erosion01  sM     "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        r9   test_binary_erosion02+TestNdimageMorphology.test_binary_erosion02  sO     "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   r/   r   r   r   r   r0   r   s        r9   test_binary_erosion03+TestNdimageMorphology.test_binary_erosion03  sD     "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        r9   test_binary_erosion04+TestNdimageMorphology.test_binary_erosion04  sF     "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        r9   test_binary_erosion05+TestNdimageMorphology.test_binary_erosion05  sC     "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   )r/   r   broadcast_tor   r   r   r0   r   s        r9   !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        r9   test_binary_erosion06+TestNdimageMorphology.test_binary_erosion06/  sE     "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        r9   test_binary_erosion07+TestNdimageMorphology.test_binary_erosion077  sC     "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        r9   test_binary_erosion08+TestNdimageMorphology.test_binary_erosion08?  sE     "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   rY   r   r0   r   r   r   r   s        r9   test_binary_erosion09+TestNdimageMorphology.test_binary_erosion09G  sN     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        r9   test_binary_erosion10+TestNdimageMorphology.test_binary_erosion10P  sP     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  r3   r   r4   r5   r   r6   s         r9   test_binary_erosion11+TestNdimageMorphology.test_binary_erosion11Y  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         r9   test_binary_erosion12+TestNdimageMorphology.test_binary_erosion12c  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         r9   test_binary_erosion13+TestNdimageMorphology.test_binary_erosion13m  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         r9   test_binary_erosion14+TestNdimageMorphology.test_binary_erosion14w  sb     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         r9   test_binary_erosion15+TestNdimageMorphology.test_binary_erosion15  sd     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        r9   test_binary_erosion16+TestNdimageMorphology.test_binary_erosion16  sK     "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        r9   test_binary_erosion17+TestNdimageMorphology.test_binary_erosion17  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Q/5      5        g )Nr   r!   r   r   r   r   r   r   s        r9   test_binary_erosion18+TestNdimageMorphology.test_binary_erosion18  sG     "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        r9   test_binary_erosion19+TestNdimageMorphology.test_binary_erosion19  sI     "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        r9   test_binary_erosion20+TestNdimageMorphology.test_binary_erosion20  sU     "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        r9   test_binary_erosion21+TestNdimageMorphology.test_binary_erosion21  sW     "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   r/   r0   r   r   r   r3   r   r4   r8   r5   r6   s         r9   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   r5  r7  r9  r:  r;  r<  r=  r>  r   r   r   )r/   r   r   r0   r   r   r3   r   r4   r   r8   r5   r6   s          r9   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   r5  r:  r   r   r   r   r   r   r   r   r<  )r   r   r   r   r   r   r   r   r9  r;  r=  r>  r   r   r?  rD  s          r9   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  r5  r6  )r   r   r   r   r   r   r   r   r8  r9  r:  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r>  r   r   r   r?  rD  s          r9   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  r5  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9  r:  rL  rM  rN  r>  r   r   r  r  r  r?  rD  s          r9   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r0   rY   r   r   r   r   r3   r4   r   r8   r5   r6   s         r9   test_binary_erosion27+TestNdimageMorphology.test_binary_erosion27D  s    
  F#)))))))+ ::h'zz00000002 :>? zz$$$T013!#0r<   z)inplace out= arguments are numpy-specificrI   
exceptionsrJ   /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^  r_  r   r   r   ra  outputr0   rY   r   rU   rV   r   r   r   rc  s         r9   test_binary_erosion28+TestNdimageMorphology.test_binary_erosion28a  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^  r_  r   r   r   r   r   r   r   r   r   r!   r`  rb  rc  s         r9   test_binary_erosion29+TestNdimageMorphology.test_binary_erosion29  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^  r_  rp  r   r!   rj  rl  rc  s         r9   test_binary_erosion30+TestNdimageMorphology.test_binary_erosion30  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^  r_  rp  r   rV  )r   ra  rk  r  rl  rc  s         r9   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[  rb  rc  s         r9   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   rp  )r   r   r   r   r   r   r   r^  r]  r   r   r  )r   maskra  rb  r3   r4   r   r8   r  r5   r6   s          r9   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]  r_  r^  r   r   r   r   r   r   r   r   r   )r   r  rb  r  s          r9   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]  r_  rp  rw  rx  ry  rz  r   rV  )r   ra  rk  r  r  )r0   rY   r   logical_andlogical_not
logical_orrU   rV   r   r   r   )r3   r4   r   r  r5   tmpr8   r6   s           r9   test_binary_erosion35+TestNdimageMorphology.test_binary_erosion35F  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  r5  r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   rR  rS  rT  rU  r9  r:  rL  rM  rN  r>  r   rV  )r  r   r  )	r0   rY   r   r  r  r  r   r   r   )r3   r4   r   r  r  r5   r8   r6   s           r9   test_binary_erosion36+TestNdimageMorphology.test_binary_erosion36r  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)	structurerk  ra  r   brute_force)r  ra  r   )rY   r0   r   
zeros_liker   r   r   )r3   r4   abr6   s        r9   test_binary_erosion37+TestNdimageMorphology.test_binary_erosion37  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       @ra  )rY   r0   r   rq   	TypeErrorr   r   )r3   r4   r5   ra  _s        r9   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^  r_  rp  r   rj  )	rY   rZ   r0   r   rU   rV   r   r   r   r3   r4   ra  r   r8   r5   r6   s          r9   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  )	rY   int64r0   r   rU   rV   r   r   r   r  s          r9   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   )r/   r   r   binary_dilationr0   r   r   s        r9   test_binary_dilation01,TestNdimageMorphology.test_binary_dilation01  sM     "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)r/   rU   r   r  r0   r   s        r9   test_binary_dilation02,TestNdimageMorphology.test_binary_dilation02  sE     "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   )r/   r   r   r  r   r0   r   r   s        r9   test_binary_dilation03,TestNdimageMorphology.test_binary_dilation03  sM     "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   r/   rU   r   r  r   r0   r   s        r9   test_binary_dilation04,TestNdimageMorphology.test_binary_dilation04  sD     "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   r/   r   r   r  r   r0   r   s        r9   test_binary_dilation05,TestNdimageMorphology.test_binary_dilation05  sC     "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   )r/   r   r   r   r  r   r0   r   s        r9   "test_binary_dilation05_broadcasted8TestNdimageMorphology.test_binary_dilation05_broadcasted'  sQ     "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        r9   test_binary_dilation06,TestNdimageMorphology.test_binary_dilation060  sC     "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   rY   rU   r0   r   r  r   r   s        r9   test_binary_dilation07,TestNdimageMorphology.test_binary_dilation078  sN     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        r9   test_binary_dilation08,TestNdimageMorphology.test_binary_dilation08A  sW     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        r9   test_binary_dilation09,TestNdimageMorphology.test_binary_dilation09K  sN     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        r9   test_binary_dilation10,TestNdimageMorphology.test_binary_dilation10T  sP     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        r9   test_binary_dilation11,TestNdimageMorphology.test_binary_dilation11]  sP     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         r9   test_binary_dilation12,TestNdimageMorphology.test_binary_dilation12f  s\     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         r9   test_binary_dilation13,TestNdimageMorphology.test_binary_dilation13p  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         r9   test_binary_dilation14,TestNdimageMorphology.test_binary_dilation14z  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         r9   test_binary_dilation15,TestNdimageMorphology.test_binary_dilation15  sd     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        r9   test_binary_dilation16,TestNdimageMorphology.test_binary_dilation16  sI     "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        r9   test_binary_dilation17,TestNdimageMorphology.test_binary_dilation17  sI     "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        r9   test_binary_dilation18,TestNdimageMorphology.test_binary_dilation18  sG     "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        r9   test_binary_dilation19,TestNdimageMorphology.test_binary_dilation19  sU     "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        r9   test_binary_dilation20,TestNdimageMorphology.test_binary_dilation20  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   r0   rY   rU   r  r   )r3   r   r4   r   r5   r6   s         r9   test_binary_dilation21,TestNdimageMorphology.test_binary_dilation21  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 )Nr9  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r<  r=  r8  r5  r6  r7  r   r/   r0   r   r  r   r@  s         r9   test_binary_dilation22,TestNdimageMorphology.test_binary_dilation22  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   r5  r9  r6  r7  r8  r   r   r   r  r@  s         r9   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   rU  r5  r9  r6  r7  r8  r   r  r  r  r@  s         r9   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   r5  r9  r6  r7  r8  r   r  r   r  r  r@  s         r9   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=  r5  r9  r6  r7  r8  r   )r/   r   r   r0   r  r   rD  s          r9   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   r9  r  r6  rH  r<  r   r   r   r   r   r   r   r   r5  r7  r8  r   r  rD  s          r9   test_binary_dilation27,TestNdimageMorphology.test_binary_dilation27C  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  r@  s         r9   test_binary_dilation28,TestNdimageMorphology.test_binary_dilation28^  su     "    " ::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  r0   rY   r   r   r  r   rc  s         r9   test_binary_dilation29,TestNdimageMorphology.test_binary_dilation29n       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   ra  rk  )r0   r   rY   rU   rV   r   r  r   rc  s         r9   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  rc  s         r9   test_binary_dilation31,TestNdimageMorphology.test_binary_dilation31  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#  r0   rY   r   rU   rV   r   r  r   rc  s         r9   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   r9  r5  r   r   r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   r  r   ra  r  r   r  r  s          r9   test_binary_dilation33,TestNdimageMorphology.test_binary_dilation33  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   r9  r   r   r   r   r   r   r   r   rT  r5  r6  r7  r8  r   r  r   r1  r+  r  s          r9   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  r5  r9  r6  r7  r8  r<  r   r  r   )r  r  r   )
r/   rY   r0   r   r  r  r  r   r  r   )r3   r   r4   r  r5   r  r8   r6   s           r9   test_binary_dilation35,TestNdimageMorphology.test_binary_dilation35  s7    "'''''''') 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)rY   rU   r   r0   r   r  )r3   r4   r5   r6   s       r9   test_binary_dilation36,TestNdimageMorphology.test_binary_dilation36I  sI     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   r9  r5  r/  r  r  r   r0  r   r  r   )r0   rY   r   r   binary_propagationr   r  s          r9   test_binary_propagation01/TestNdimageMorphology.test_binary_propagation01Q  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   r9  r5  rT  r5  r6  r7  r8  r   r   r?  )r0   rY   r   rU   rV   r   r@  r   r  s          r9   test_binary_propagation02/TestNdimageMorphology.test_binary_propagation02v  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   )r0   rY   rU   r   r   r@  )r3   r4   r5   r8   r6   s        r9   test_binary_propagation03/TestNdimageMorphology.test_binary_propagation03  sP     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 )Nr9  r  r  r   r   r   r   r   r   r   r   r8  r=  r5  r  r   r   r   r   r   r   r   r   r   )r/   r0   r   binary_openingr   r@  s         r9   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  r5  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r=  r   )r/   r   r   r0   rL  r   rD  s          r9   test_binary_opening02+TestNdimageMorphology.test_binary_opening02       "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 )Nr5  r5  )r   r   r   r   r   r   r   r   r  r<  r=  r8  r9  r  r  r  rK  r   )r/   r0   r   binary_closingr   r@  s         r9   test_binary_closing01+TestNdimageMorphology.test_binary_closing01  rO  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   r5  r5  r=  r  rQ  r  rR  r   )r/   r   r   r0   rW  r   rD  s          r9   test_binary_closing02+TestNdimageMorphology.test_binary_closing02  rU  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 )Nr5  r<  r   r8  rY   r0   r   r   binary_fill_holesr   r3   r4   r8   r5   r6   s        r9   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 )Nr5  r7  r<  r   r8  r^  r`  s        r9   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 )Nr5  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`  s        r9   test_binary_fill_holes03.TestNdimageMorphology.test_binary_fill_holes03,	  rf  r<   )cpu_onlyz2these filters do not yet have axes support in CuPyz	jax.numpyz.these filters are not implemented in JAX.numpyr   r   r   r  )r   r   )r  r   expand_axisr   r   r   funcc           
         UR                   n[        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  XYS'   OUS:w  a  [
        R                  " S5        U" X4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" X4XS.U	D6  OU" X4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   binary_hit_or_miss)origin1origin2r  )ro  r_  r   r   z-border_value !=0 unsupported by this functionr%   r   rl  rk  axesrs  )__name__rY   r0   r   dictpytestskipstackremover   r   rU   rV   r   )r3   r4   rm  rk  r  r   	func_namer   r5   kwargsborder_supportedr8   n_repsrs  r6   s                  r9   test_binary_axes&TestNdimageMorphology.test_binary_axesA	  s   ( MM	Y&&()-/ F#zz00000002 489 zz$,,&9F(F$ -B B%1>"QKKGH// 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#   rm   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   r0   r   grey_erosionr   r3   r4   arrayr  rk  s        r9   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  rk  r  r  r  r  )r3   r4   r  r  s       r9   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  r3   r4   r  r  r  rk  s         r9   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         r9   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&   rm   rm   r%   r&   rm   r   rm   r&   r   r   r   r&   r&   r0   r   grey_dilationr   r  s        r9   test_grey_dilation01*TestNdimageMorphology.test_grey_dilation01	  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         r9   test_grey_dilation02*TestNdimageMorphology.test_grey_dilation02	  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  rm   r  r   )rm   rm   rm   r   r   r  r  s         r9   test_grey_dilation03*TestNdimageMorphology.test_grey_dilation03	  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  r0   r   r  r  grey_openingr   r3   r4   r  r  r  r8   rk  s          r9   test_grey_opening01)TestNdimageMorphology.test_grey_opening01	  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  r3   r4   r  r  r  r  r8   rk  s           r9   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  r0   r   r  r  grey_closingr   r  s          r9   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           r9   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  rk  )	r0   r   r  r  rU   rV   r   morphological_gradientr   	r3   r4   r  r  r  tmp1tmp2r8   rk  s	            r9   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  )r0   r   r  r  r  r   r  s	            r9   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  )	r0   r   r  r  rU   rV   r   morphological_laplacer   r  s	            r9   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   )r0   r   r  r  r  r   r  s	            r9   test_morphological_laplace022TestNdimageMorphology.test_morphological_laplace02Q
  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  )r0   r   r  rU   rV   r   white_tophatr   r  s           r9   test_white_tophat01)TestNdimageMorphology.test_white_tophat01b
  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  )r0   r   r  r  r   r  s           r9   test_white_tophat02)TestNdimageMorphology.test_white_tophat02s
  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   r_  r   r   r   r   r   r   r   r  r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   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   r0   r   r   r   r  r   r3   r4   r  r  r8   rk  s         r9   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  rk  )	rY   eyer   r   r0   
empty_likerW   r   r  r3   r4   r  r  rk  s        r9   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  )r0   r   r  rU   rV   r   black_tophatr   r  s           r9   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  )r0   r   r  r  r   r  s           r9   test_black_tophat02)TestNdimageMorphology.test_black_tophat02
  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  r_  r  r  r   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   r0   r   r   r   r  r   r  s         r9   test_black_tophat03)TestNdimageMorphology.test_black_tophat03
  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  )	r0   rY   r  r   r   r  rW   r   r  r  s        r9   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  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" 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   rm   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  )r0   ru  	ones_likerx  ry  r   r   rU   rV   r   r   )r3   r4   rm  rk  r  r  r  r5   r{  r8   r}  rs  r6   s                r9   test_grey_axes$TestNdimageMorphology.test_grey_axes
  s6   4 zz00000002 3 V/V##F6N"$**i-C"DF;[("$,,vk/B"CF;'' 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   rk  )	r/   r0   rY   rU   rV   r   r   ro  r   rD  s          r9   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   r5  r9  r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   rN  r   r/   r0   r   ro  r   rD  s          r9   test_hit_or_miss02(TestNdimageMorphology.test_hit_or_miss02H  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   r6  r5  rT  r  r  rN  r  rR  rJ  r=  r   r  )r3   r   r4   struct1struct2r8   r5   r6   s           r9   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)rt  
__module____qualname____firstlineno__r   r   r1   rv  markparametrizer   r:   rA   rG   skip_xp_backendsra   xfail_xp_backendsrj   rn   rs   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   r   r  r  r  r  r  r  r  r"  r%  r)  r,  r/  r2  rA  rE  rI  rO  rW  rd  rm  rq  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  r  r  r  r$  r(  r,  r2  r6  r9  r<  r@  rA  rD  rG  rL  rM  rS  rW  rX  r[  r_  ra  rd  rh  r	   ro  r~  r  r  r  r  r  r  r  r  r  r  r  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<   r9   r   r      s   w445[[We,.0 - 6.0` w445[[We,.0 - 6.0` w445[[We,.0 - 6.0b K w445[[We,0/ - 6
0/d v&PQw445[[We,-0 - 6 R-0^ w445[[We,-0 - 6-0^ w445 6  w44557[[We,%0 -7%0N w44557[[We,#0 -7#0J I w556[[We,// - 7
//b R w556 7( w~6w556[[We,% - 7 7%" f%OPw55446[[We,* -6 Q*8 D w55446[[We,:/ -6:/x w55446[[We,, -6,  w55446[[We,, -6,  Q w5569 79
 R w556 7( w889 : w8895 :5 w8897 :7 w8897 :7 w0011 21 w0011 21 w001  2   w--.[[We,5 - /5 w--.[[We,5 - /5 w--.[[We,8 - /8 w--.[[We,8 - /8 w--.[[We,> - /> v&PQw--.[[We,> - / R> w--.[[We,> - /> w--.[[We,D - /D w--.[[We,D - /D w--.[[We,D - /D w--.[[We,D - /D w--.[[We,D - /D w--.[[We,D - /D w--.[[We,D - /D w--.[[We,D - /D w--.[[We,D - /D w--.[[We,: - /: w--.[[We,: - /: w--.[[We,@ - /@ w--.[[We,@ - /@ w--.[[We,@ - /@ w--.[[We,@ - /@ w--.[[We,1 - /1, w--.[[We,1 - /10 w--.[[We,1 - /10 w--.[[We,1 - /14 w--.[[We,1 - /16 N w--.1 /12 dxHJvOQw--.1 /QJ
18 N w--.1 /12 dxHJvOQw--.2 /QJ
2B dxHJw--.1 /J18 vOQw--.1 /Q12 vOQw--.1 /Q1B w--.1 /1B dxHJw--.'1 /J'1R vOQw--.'1 /Q'1R dxHJvOQw--. /QJ
 w--.D /D dxHJvOQw--.1 /QJ
1: dxHJvOQw--.1 /QJ
1: [[We,w../5 0 -5 [[We,w../( 0 -( [[We,w../I 0 -I [[We,w../8 0 -8 [[We,w../> 0 -> [[We,w../> 0 -> [[We,w../> 0 -> [[We,w../> 0 -> [[We,w../D 0 -D [[We,w../D 0 -D [[We,w../D 0 -D [[We,w../D 0 -D [[We,w../D 0 -D [[We,w../D 0 -D [[We,w../D 0 -D [[We,w../D 0 -D [[We,w../: 0 -: [[We,w../: 0 -: [[We,w../@ 0 -@ [[We,w../@ 0 -@ [[We,w../@ 0 -@ [[We,w../	@ 0 -	@ [[We,w../1 0 -1, [[We,w../1 0 -1, [[We,w../1 0 -1, [[We,w../1 0 -1, [[We,w../1 0 -10 [[We,w../1 0 -12 [[We,w../1 0 -1 vOQw../1 0Q1& dx@BvOQw../1 0QB
1* vOQw../1 0Q1& dx@BvOQw../1 0QB
1* vOQw../#1 0Q#1J dxHJvOQw../1 0QJ
18 [[We,w../.1 0 -.1` w../( 0( w112"1 3"1H w1121 31: w112 3 w--.[[We,1 - /1, w--.[[We,1 - /10 [[We,w--.1 / -1, [[We,w--.1 / -10 w0011 21, w0011 21( w0011 21( t$KMLN[[^QF3[[X'89[[]I6[[ !7!78 !8!89 !7!78 !7!78 !;!;< !;!;< !:!:;

*'
 7 : 4NM %&*'X w++,	A -	A k*MNl+NOv&PQw++,
 - R P O
 w++,
 -
 w++,
 -
 w,,-

 .

 w,,-
 .
 w,,-
 .
 w++,4 -4 w++,4 -4 w++,4 -4 w++,4 -4 d+NOw,,g.B.B55747 P4  w,,g.B.B557474 d+NOw,,g.B.B44646 P4  w,,g.B.B446464 k*MNl+NOw++W-A-AB4 C P O4 w++W-A-AB4 C4 vk2w++,* - 3*0 k*MNl+NOw++,	H - P O	H k*MNl+NOw++W-A-AB4 C P O4 w++W-A-AB4 C4 v&67w++,* - 8*0 k*MNl+NOw++,H - P OH t$KMLN[[X'89[[]I6[[V &8 9[[- 0= >[[ !5!56 !6!67 !5!56 !5!56 !>!>? !?!?@ !5!56 !5!56		
"'>9 7 :NM %0"'H dx@Bw112[[We,1 - 3B16 w112[[We,1 - 31$ w112[[We,1 - 3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  )r0   uint8r  r   sq3x3r   r  r   view
dilated3x3r   )r3   r4   r  s      r9   _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  r3   r4   results      r9   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      r9   test_dilation_scalar_size'TestDilateFix.test_dilation_scalar_size  s/    B&&tzz:!&//:r<   )r  r  r  N)rt  r  r  r  r   r%  r(  r  r  r<   r9   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   )rY   rU   r   r0   r  r   r  r   rL  
opened_oldrW  
closed_old)r3   r4   r  s      r9   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   rL  r  r  r   r.  )r3   r4   
opened_news      r9   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   rW  r  r  r   r/  )r3   r4   
closed_news      r9   test_closing_new_arguments3TestBinaryOpeningClosing.test_closing_new_arguments  r6  r<   )r  r/  r.  r  N)rt  r  r  r  r   r4  r9  r  r  r<   r9   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   rq   r  r   r   r4   r5   s     r9   )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   rq   r  r   r  r>  s     r9   *test_binary_dilation_noninteger_iterationsrB    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   rq   r  r   rL  r>  s     r9   )test_binary_opening_noninteger_iterationsrD    r@  r<   c                     U R                  S/5      n[        [        [        R                  USS9  [        [        [        R                  USS9  g r<  )r   rq   r  r   rW  r>  s     r9   )test_binary_closing_noninteger_iterationsrF    r@  r<   rc   rY  rd   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=  )ra  r  r   )r   r   r   r   r   r>  s     r9   ;test_binary_closing_noninteger_brute_force_passes_when_truerH    su     77A3<DG**4A3O**4A4PS9U G**4A3O**4A4PS9Ur<   Tr  rf  rh  rm  ra  r%   r  Fc                    [         R                  R                  S5      nUR                  SSSS9R	                  [
        5      nUR                  U5      nUR                  5       nU " XRUS9n[        XV5        U " XRXS9  [        XW5        g )N{   r   r   d   lowhighr  )r  ra  )r  ra  rk  )	rY   randomRandomStaterandintr   r   r0   copyr   )rm  ra  r  r4   rstater5   	data_origr8   s           r9   test_binary_input_as_outputrU    sz     YY""3'F>>aac>299$?D::dD 		IDjIHD$ 	:K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 )NrJ  r   r   rK  rL  r  )rY   rO  rP  rQ  r   r   r0   rR  r   ro  r   )r4   rS  r5   rT  r8   s        r9   'test_binary_hit_or_miss_input_as_outputrW  
  s     YY""3'F>>aac>299$?D::dD 		I))$/HD$ t1D#r<   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   )rv  r
   
ValueErrorr   ry   r   )r4   msgs     r9   *test_distance_transform_cdt_invalid_metricr]    s<    
#C	z	-&&rwwv.7	9 
.	-	-s   %A


A)'numpyrY   scipy._lib._array_apir   r   r   r   r   r   r	   rv  r
   rq   scipyr    r   r  r  r  r   r  r  r  rL  rW  r+  r   r?  rB  rD  rF  rH  r  rU  ro  rW  ry   r]  r  r<   r9   <module>rb     s       *  ;;// KK11 g-1 g-1T[ 7**G,A,AB; ; C;B 7))7+A+AB5 5 C54 7))*K +K 7**+L ,L 7))*K +K 7))*K +K 
J 7))* + $F8<>6"ST
W334W445W334W334	 1v.6$ 7 / U>$ $F8<>7--.$ />$ 71129 39r<   