
    Pi                       d dl Zd dlmZmZmZmZmZmZm	Z	 d dl
Z
d dl
mZ d dlmZ ddlmZ e
j        j        Ze
j        j        Z G d d          Z eej        ej                   G d	 d
                      Z eej        ej                   G d d                      Z eej                  d             Z eej                  d             Z eej                  d             Z eej                  d             Z edd           eej                  d                         Z  eddgd           edd          e
j        !                    d e	ej                   e	ej                   e	ej                   e	ej                  g          e
j        !                    dddg          e
j        !                    dddg          d                                                             Z" eddgd           eej#                  d                         Z$ eej%                  d              Z&dS )!    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                   (=   e Zd Z eej                  ej                            de	          d                         Z
 eej                  ej                            de	          d                         Z eej                  ej                            de	          d                         Z edd           eej                  ej                            de	          d                                     Z ed	d
           eej                  ej                            de	          d                                     Z eej                  ej                            de	          d                         Z eej                  d             Z eej        ej                  ej                            de	          d                         Z eej        ej                  ej                            de	          d                         Z edd           eej                  ej                            de	          d                                     Z edd           eej                  d                         Z edd           eej                  ej                            de	          d                                     Z ed	d
           eej        ej                  ej                            de	          d                                     Z edd           eej        ej                  ej                            de	          d                                     Z eej        ej                  ej                            de	          d                         Z eej        ej                  ej                            de	          d                         Z ed	d           eej                  d                         Z edd           eej                  d                         Z eej                   d              Z! eej                   d!             Z" eej                   d"             Z# eej                   d#             Z$ eej%                  d$             Z& eej%                  d%             Z' eej%                  d&             Z( eej)                  ej                            de	          d'                         Z* eej)                  ej                            de	          d(                         Z+ eej)                  ej                            de	          d)                         Z, eej)                  ej                            de	          d*                         Z- eej)                  ej                            de	          d+                         Z. ed	d,           eej)                  ej                            de	          d-                                     Z/ eej)                  ej                            de	          d.                         Z0 eej)                  ej                            de	          d/                         Z1 eej)                  ej                            de	          d0                         Z2 eej)                  ej                            de	          d1                         Z3 eej)                  ej                            de	          d2                         Z4 eej)                  ej                            de	          d3                         Z5 eej)                  ej                            de	          d4                         Z6 eej)                  ej                            de	          d5                         Z7 eej)                  ej                            de	          d6                         Z8 eej)                  ej                            de	          d7                         Z9 eej)                  ej                            de	          d8                         Z: eej)                  ej                            de	          d9                         Z; eej)                  ej                            de	          d:                         Z< eej)                  ej                            de	          d;                         Z= eej)                  ej                            de	          d<                         Z> eej)                  ej                            de	          d=                         Z? eej)                  ej                            de	          d>                         Z@ eej)                  ej                            de	          d?                         ZA eej)                  ej                            de	          d@                         ZB eej)                  ej                            de	          dA                         ZC eej)                  ej                            de	          dB                         ZD ed	dC           eej)                  dD                         ZE edd	gdEF           ed	dG           eej)                  dH                                     ZF ed	dC           eej)                  dI                         ZG edd	gdEF           ed	dG           eej)                  dJ                                     ZH edd	gdEF           eej)                  dK                         ZI ed	dG           eej)                  dL                         ZJ ed	dG           eej)                  dM                         ZK eej)                  dN             ZL edd	gdEF           eej)                  dO                         ZM ed	dG           eej)                  dP                         ZN edd	gdEF           ed	dG           eej)                  dQ                                     ZO eej)                  dR             ZP edd	gdEF           ed	dG           eej)                  dS                                     ZQ edd	gdEF           ed	dG           eej)                  dT                                     ZRej                            de	           eejS                  dU                         ZTej                            de	           eejS                  dV                         ZUej                            de	           eejS                  dW                         ZVej                            de	           eejS                  dX                         ZWej                            de	           eejS                  dY                         ZXej                            de	           eejS                  dZ                         ZYej                            de	           eejS                  d[                         ZZej                            de	           eejS                  d\                         Z[ej                            de	           eejS                  d]                         Z\ej                            de	           eejS                  d^                         Z]ej                            de	           eejS                  d_                         Z^ej                            de	           eejS                  d`                         Z_ej                            de	           eejS                  da                         Z`ej                            de	           eejS                  db                         Zaej                            de	           eejS                  dc                         Zbej                            de	           eejS                  dd                         Zcej                            de	           eejS                  de                         Zdej                            de	           eejS                  df                         Zeej                            de	           eejS                  dg                         Zfej                            de	           eejS                  dh                         Zgej                            de	           eejS                  di                         Zhej                            de	           eejS                  dj                         Ziej                            de	           eejS                  dk                         Zjej                            de	           eejS                  dl                         Zkej                            de	           eejS                  dm                         Zlej                            de	           eejS                  dn                         Zmej                            de	           eejS                  do                         Znej                            de	           eejS                  dp                         Zoej                            de	           eejS                  dq                         Zp ed	dG           eejS                  dr                         Zq edd	gdsF           ed	dG           eejS                  dt                                     Zr ed	dG           eejS                  du                         Zs edd	gdsF           ed	dG           eejS                  dv                                     Zt ed	dG           eejS                  dw                         Zu edd	gdxF           ed	dG           eejS                  dy                                     Zvej                            de	           eejS                  dz                         Zw eejS                  d{             Zx eejy                  d|             Zz eejy                  d}             Z{ eejy                  d~             Z| eej}                  ej                            de	          d                         Z~ eej}                  ej                            de	          d                         Zej                            de	           eej                  d                         Zej                            de	           eej                  d                         Z eej                  d             Z eej                  d             Z eej                  d             Z ed           ed	d           edd          ej                            dddg          ej                            dddg          ej                            dg d          ej                            d eej)                   eejS                   eej}                   eej                   eej                   eejy                   eej                  g          d                                                                                     Z eej                  d             Z edd           edd           ed	d           eej                  d                                                 Z eej                  d             Z eej                  d             Z eej                  d             Z eej                  d             Z eej                  d             Z eej                  d             Z eej                  d             Z eej                  d             Z eej                  d             Z edds           eej        ej        ej                  d                         Z eej        ej        ej                  d             Z edds           eej        ej        ej                  d                         Z eej        ej        ej                  d             Z edd           edd           eej        ej                  d                                     Z eej        ej                  d             Z ed	d           eej                  d                         Z edd           edd           eej                  d                                     Z edd           edd           eej        ej                  d                                     Z eej        ej                  d             Z ed	d           eej                  d                         Z edd           edd           eej                  d                                     Z ed           ed	d           edd          ej                            dddg          ej                            dg d          ej                            dg d          ej                            dg d          ej                            d eej                   eej                   eej                   eej                   eej                   eej                   eej                   eej                  g          d                                                                                                 Z edd	gdF           eej                  ej                            de	          d                                     Z eej                  ej                            de	          d                         Z eej                  ej                            de	          d                         ZdS )TestNdimageMorphologydtypec                    t          ||          }|                    g dg dg dg dg dg dg dg dg dg	|          }t          j        |dd          \  }}g dg dg dg dg d	g dg dg dg dg	}|                    |          }t	          ||z  |           g dg d
g dg dg dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}|                    |          }t	          ||           d S )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          w/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/scipy/ndimage/tests/test_morphology.pytest_distance_transform_bf01z2TestNdimageMorphology.test_distance_transform_bf01   s    E"" zz6666666666666666666666666668 @E  F F /k?CE E ER///////////////////////////1 ::h''!#)X6660000000000000000000000000002 10000000000000000000000000023$ ::h''!"h/////    c                     t          ||          }|                    g dg dg dg dg dg dg dg dg dg	|          }t          j        |dd          \  }}g dg dg dg dg d	g dg dg dg dg	}|                    |          }t	          ||           g dg d
g dg dg dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}|                    |          }t	          ||           d S )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-   r1   s          r8   test_distance_transform_bf02z2TestNdimageMorphology.test_distance_transform_bf02G   s    E""zz6666666666666666666666666668 @E  F F /k?CE E ER 0//////////////////////////1 ::h''!#x0000000000000000000000000000002 10000000000000000000000000023$ ::h''!"h/////r:   c                     t          ||          }|                    g dg dg dg dg dg dg dg dg dg	|          }t          j        |dd          \  }}g dg dg dg dg d	g dg dg dg dg	}|                    |          }t	          ||           g dg d
g dg dg dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}|                    |          }t	          ||           d S )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-   r1   s          r8   test_distance_transform_bf03z2TestNdimageMorphology.test_distance_transform_bf03y   s    E""zz6666666666666666666666666668 @E  F F /l?CE E ER 0//////////////////////////1 ::h''!#x0000000000000000000000000000002 10000000000000000000000000023$ ::h''!"h/////r:   Tz,inplace distances= arrays are numpy-specific)np_onlyreasonc                    t          ||          }|                    g dg dg dg dg dg dg dg dg dg	|          }t          j        |d          \  }}g }g }|                    |j        |j                  }t          j        ||           |                    |           t          j        |dd	          }	|                    |	           t          j	        |j        |j
                  }	t          j        |dd
|	           |                    |	           t          j        |d          \  }}	|                    |           |                    |	           |                    |j        |j                  }t          j        ||d
          }	|                    |           |                    |	           t          j	        |j        |j
                  }	t          j        |d
|	          }|                    |           |                    |	           |                    |j        |j                  }t          j	        |j        |j
                  }	t          j        ||d
|	           |                    |           |                    |	           |D ]}t          ||           |D ]}	t          ||	           d S )Nr   r   r   r   r   r   	distancesFreturn_distancesr   TrK   r   indicesrI   r   r   rM   rI   r   rM   )r.   r/   r   r0   zerosshapefloat64appendnprM   int32r   
r2   r   r3   r4   tdttftdtsftsdtr6   s
             r8   test_distance_transform_bf04z2TestNdimageMorphology.test_distance_transform_bf04   s    E""zz6666666666666666666666666668 @E  F F 0aHHHSXXdj
X33%db9999

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

2Z
"(333%5r	K 	K 	K 	K

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

2

2XXdj
X33*Bt5 5 5

2

2Z
"(333*r3 3 3

2

2XXdj
X33Z
"(333%BtR	A 	A 	A 	A

2

2 	/ 	/B%c2.... 	/ 	/B%c2....	/ 	/r:   cupyz(CuPy does not have distance_transform_bfrF   c                    t          ||          }|                    g dg dg dg dg dg dg dg dg dg	|          }t          j        |ddddg          \  }}g dg dg d	g d
g dg d
g d	g dg dg	}|                    |          }t	          ||z  |           g dg dg dg dg dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}|                    |          }t	          ||           d S )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   rc       rc   r   r   r   r   r   r   r!   r#   r&   r'   r(   r)   r*   r+   r,   r-   r1   s          r8   test_distance_transform_bf05z2TestNdimageMorphology.test_distance_transform_bf05   s    E""zz6666666666666666666666666668 @E  F F /+daVE E ER/////////000222000/////////1 ::h''!#)X6660000000000000000000000000002 10000000000000000000000000023$ ::h''!"h/////r:   c                    t          ||          }|                    g dg dg dg dg dg dg dg dg dg	|          }t          j        |ddddg	          \  }}g dg dg d
g dg dg dg d
g dg dg	}|                    |          }t	          ||z  |           g dg dg dg dg dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}|                    |          }t	          ||           d S )Nr   r   r   r   r   Tr   r   ra   )	r   r   r   r   r   r   r   r   r   r   )	r   r   r   r   	   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r    r    r    r    r   r    r    r    r    )	r   r   r   r   r   r   r   r   r   )	r$   r$   r$   r$   r"   r$   r$   r$   r$   )	r"   r"   r"   r"   r%   r"   r"   r"   r"   r'   r(   r)   )	r   r   r   r   r"   r"   r"   r%   r   r,   )	r   r   r   r   r%   r%   r%   r%   r   r*   r-   r1   s          r8   test_distance_transform_bf06z2TestNdimageMorphology.test_distance_transform_bf06  s    E""zz6666666666666666666666666668 @E  F F /+daVE E ER///////////////////////////1 ::h''!#)X6660000000000000000000000000002 10000000000000000000000000023$ ::h''!"h/////r:   c                     |                     g dg dg dg dg dg dg dg dg dg	          }t          t                    5  t          j        |dd           d d d            d S # 1 swxY w Y   d S )Nr   r   r   FrJ   )r/   assert_raisesRuntimeErrorr   r0   )r2   r3   r4   s      r8   test_distance_transform_bf07z2TestNdimageMorphology.test_distance_transform_bf07F  s    zz6666666666666666666666666668 9 9 <(( 	 	)uU   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A**A.1A.c                    t          ||          }|                    g dg dg dg dg dg dg dg dg dg	|          }t          j        |dd          \  }}t          j        |d          }t          ||           g dg dg d	g d
g dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}|                    |          }t          ||           d S )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.   r/   r   distance_transform_cdtr0   r   r2   r   r3   r4   r5   r6   bfr7   s           r8   test_distance_transform_cdt01z3TestNdimageMorphology.test_distance_transform_cdt01W  s    E"" zz6666666666666666666666666668 @E  F F 0+d4 4 4R*4==!"c***0000000000000000000000000002 10000000000000000000000000023$ ::h''!"h/////r:   c                    t          ||          }|                    g dg dg dg dg dg dg dg dg dg	|          }t          j        |dd          \  }}t          j        |d          }t          ||           g dg dg d	g d
g dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}|                    |          }t          ||           d S )Nr   r   r   r   rA   Tr   r   rn   )	r    r    r   r   r   r   r   r    r    )	r   r   r    r   r   r   r    r   r   )	r$   r$   r   r"   r%   r"   r   r$   r$   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   rC   rB   rp   rr   s           r8   test_distance_transform_cdt02z3TestNdimageMorphology.test_distance_transform_cdt02  s    E""zz6666666666666666666666666668 @E  F F 0|@DF F FR*4>>!"c***0000000000000000000000000002 10000000000000000000000000023$ ::h''!"h/////r:   z*inplace indices= arrays are numpy-specificc                 D   t          ||          }|                    g dg dg dg dg dg dg dg dg dg	|          }t          j        |d          \  }}g }g }|                    |j        |j                  }t          j        ||           |                    |           t          j        |dd	          }	|                    |	           |                    t          j	        |j        t          j                            }	t          j        |dd|	
           |                    |	           t          j        |d          \  }}	|                    |           |                    |	           |                    |j        |j                  }t          j        ||d          }	|                    |           |                    |	           |                    t          j	        |j        t          j                            }	t          j        |d|	          }|                    |           |                    |	           |                    |j        |j                  }|                    t          j	        |j        t          j                            }	t          j        ||d|	           |                    |           |                    |	           |D ]}t          ||           |D ]}	t          ||	           d S )Nr   r   r   r   Tr   rH   FrJ   rL   rN   rO   rP   )r.   r/   r   rq   rQ   rR   rV   rT   rU   rM   r   rW   s
             r8   test_distance_transform_cdt03z3TestNdimageMorphology.test_distance_transform_cdt03  s7    E""zz6666666666666666666666666668 @E  F F 1$tLLLSXXdjX11&tr::::

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

2ZZ
4:RX>>>??&5r	K 	K 	K 	K

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

2

2XXdjX11+Bt5 5 5

2

2ZZ
4:RX>>>??+r3 3 3

2

2XXdjX11ZZ
4:RX>>>??&tr6:B	H 	H 	H 	H

2

2 	/ 	/B%c2.... 	/ 	/B%c2....	/ 	/r:   z3XXX: does not raise unless indices is a numpy arrayc                 D   |                     g dg dg dg dg dg dg dg dg dg	          }|                    |j        f|j        z   |j                  }t          t                    5  t          j        |dd|           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   TFrL   )	r/   rQ   ndimrR   rV   rj   rk   r   r0   )r2   r3   r4   indices_outs       r8   test_distance_transform_cdt04z3TestNdimageMorphology.test_distance_transform_cdt04  s)    zz6666666666666666666666666668 9 9 hh	|dj8hII<(( 	 	)!%$#	   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   /BBBtorchzint overflowc                    t          ||          }|                    g dg dg dg dg dg dg dg dg dg	|          }|                    d          }t          j        ||          }|                    |          dk    sJ d S )Nr   r   r   r   r    r    metrici)r.   r/   onesr   rq   sum)r2   r   r3   r4   
metric_argactuals         r8   test_distance_transform_cdt05z3TestNdimageMorphology.test_distance_transform_cdt05  s     E"" zz6666666666666666666666666668 @E  F F WWV__
/ZHHHvvf~~$$$$$$r:   c                    t          ||          }|                    g dg dg dg dg dg dg dg dg dg	|          }t          j        |d          \  }}t          j        |d          }t          ||           t          j        |          }|t          j        |j        dd          |j	                  z
  }|
                    t          j                  }t          j        |||           t          j                            |d	
          }t          j        ||           |                    |          }t          ||           d S )Nr   r   r   r   Tr   r   r   r   axis)r.   r/   r   distance_transform_edtr0   r   rU   rM   rR   r   astyperS   multiplyaddreducesqrt)	r2   r   r3   r4   r5   r6   rs   np_ftr\   s	            r8   test_distance_transform_edt01z3TestNdimageMorphology.test_distance_transform_edt01  so   
 E"" zz6666666666666666666666666668 @E  F F 0dKKKR*4==!"c*** 
2RZABBu{CCCCYYrz""
BBV]]2A]&&
BZZ^^!"b)))))r:   z%inplace distances= are numpy-specificc                 2   t          ||          }|                    g dg dg dg dg dg dg dg dg dg	|          }t          j        |d          \  }}g }g }|                    |j        |j                  }t          j        ||           |                    |           t          j        |dd	          }	|                    |	           t          j	        |j        |j
                  }	|                    |	          }	t          j        |d
d|	           |                    |	           t          j        |d          \  }}	|                    |           |                    |	           |                    |j        |j                  }t          j        ||d          }	|                    |           |                    |	           t          j	        |j        |j
                  }	|                    |	          }	t          j        |d|	          }|                    |           |                    |	           |                    |j        |j                  }t          j	        |j        |j
                  }	|                    |	          }	t          j        ||d|	           |                    |           |                    |	           |D ]}t          ||           |D ]}	t          ||	           d S )Nr   r   r   r   Tr   rH   r   rJ   FrL   rN   rO   rP   )r.   r/   r   r   rQ   rR   rS   rT   rU   rM   rV   r   rW   s
             r8   test_distance_transform_edt02z3TestNdimageMorphology.test_distance_transform_edt02+  s@    E""zz6666666666666666666666666668 @E  F F 1$tLLLSXXdj
X33&tr::::

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

2Z
"(333ZZ^^&5r	K 	K 	K 	K

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

2

2XXdj
X33+Bt5 5 5

2

2Z
"(333ZZ^^+r3 3 3

2

2XXdj
X33Z
"(333ZZ^^&BtR	A 	A 	A 	A

2

2 	/ 	/B%c2.... 	/ 	/B%c2....	/ 	/r:   c                    t          ||          }|                    g dg dg dg dg dg dg dg dg dg	|          }t          j        |dddg          }t          j        |ddg          }t          ||           d S )Nr   r   r   r   r   r   rb   r.   r/   r   r0   r   r   r2   r   r3   r4   refr5   s         r8   test_distance_transform_edt03z3TestNdimageMorphology.test_distance_transform_edt03m       E""zz6666666666666666666666666668 @E  F F +D+AOOO,TQFCCC!#s+++++r:   c                    t          ||          }|                    g dg dg dg dg dg dg dg dg dg	|          }t          j        |dddg          }t          j        |ddg          }t          ||           d S )	Nr   r   r   r   r   r   r   r   r   r   s         r8   test_distance_transform_edt4z2TestNdimageMorphology.test_distance_transform_edt4  r   r:   z8Only 2D and 3D distance transforms are supported in CuPyc                     t          j        |                    d                    }t          ||                    dg                     d S )NF        )r   r   r/   r   )r2   r3   r5   s      r8   test_distance_transform_edt5z2TestNdimageMorphology.test_distance_transform_edt5  sD     ,RZZ->->??!#rzz2$'7'788888r:   c                 2   |                     g dg dg dg dg dg dg dg dg dg	          }|                    |j        |j                  }t	          t
                    5  t          j        |dd|           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   TF)r   rK   rI   )r/   rQ   rR   rS   rj   rk   r   r0   )r2   r3   r4   distances_outs       r8   test_distance_transform_edt6z2TestNdimageMorphology.test_distance_transform_edt6  s     zz6666666666666666666666666668 9 9 2:>><(( 	 	)#!&'	   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   &BBBc                 @    t          j        dd          }|dk    sJ d S )Nr   r   )r   generate_binary_structurer2   r3   structs      r8   test_generate_structure01z/TestNdimageMorphology.test_generate_structure01  s%    21a88{{{{{{r:   c                 T    t          j        dd          }t          |g d           d S )Nr   r   r   r   r   r   r   r   s      r8   test_generate_structure02z/TestNdimageMorphology.test_generate_structure02  s.    21a88!&)))44444r:   c                 b    t          j        dd          }t          |g dg dg dg           d S )Nr   r   r   r   r   r   r   r   s      r8   test_generate_structure03z/TestNdimageMorphology.test_generate_structure03  K    21a88!&999+499+499+6 	7 	7 	7 	7 	7r:   c                 b    t          j        dd          }t          |g dg dg dg           d S )Nr   r   r   r   s      r8   test_generate_structure04z/TestNdimageMorphology.test_generate_structure04  r   r:   c                    g dg dg dg}|                     |          }t          j        |d          }t          j         g dg dg dg dg dgt                    }|                     |          }t          ||           d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r/   r   iterate_structurerU   boolr   r2   r3   r   r5   r7   s        r8   test_iterate_structure01z.TestNdimageMorphology.test_iterate_structure01  s    )))))) F##'22:....	0 8<	= = =
 ::h''!#x00000r:   c                    ddgddgddgg}|                     |          }t          j        |d          }t          j         g dg dg dg dg dgt                    }|                     |          }t          ||           d S )Nr   r   r   )r   r   r   r   r   r   r   r   r   r   s        r8   test_iterate_structure02z.TestNdimageMorphology.test_iterate_structure02  s    a&a&a& F##'22:yyy(yy(yy(yy(yy	* 26	7 7 7
 ::h''!#x00000r:   c                 @   g dg dg dg}|                     |          }t          j        |dd          }g dg dg dg dg dg}t          j         |t                    }|                     |          }t          |d	         |           |d         ddgk    sJ d S )
Nr   r   r   r   r   r   r   r   r   r   r   s        r8   test_iterate_structure03z.TestNdimageMorphology.test_iterate_structure03  s    )))))) F##'155#OO#OO#OO#OO#OO	%
 :hd333::h''!#a&(3331v!Qr:   c                     t          ||          }|                    g |          }t          j        |          }||                    d|j                  k    sJ d S Nr   r   r.   r   r   binary_erosionr/   r   r2   r   r3   r4   r5   s        r8   test_binary_erosion01z+TestNdimageMorphology.test_binary_erosion01  sa     E""wwrw''$T**bjj#)j44444444r:   c                     t          ||          }|                    g |          }t          j        |d          }||                    d|j                  k    sJ d S )Nr   r   border_valuer   r   s        r8   test_binary_erosion02z+TestNdimageMorphology.test_binary_erosion02  sf     E""wwrw''$T:::bjj#)j44444444r:   c                     t          ||          }|                    dg|          }t          j        |          }t	          ||                    dg                     d S Nr   r   r   r.   r   r   r   r   r/   r   s        r8   test_binary_erosion03z+TestNdimageMorphology.test_binary_erosion03  s\     E""wws%w(($T**!#rzz1#77777r:   c                     t          ||          }|                    dg|          }t          j        |d          }t	          ||                    dg                     d S Nr   r   r   r   r   s        r8   test_binary_erosion04z+TestNdimageMorphology.test_binary_erosion04  sa     E""wws%w(($T:::!#rzz1#77777r:   c                     t          ||          }|                    dg|          }t          j        |          }t	          ||                    g d                     d S )Nr    r   r   r   r   s        r8   test_binary_erosion05z+TestNdimageMorphology.test_binary_erosion05  s`     E""wws%w(($T**!#rzz)))'<'<=====r:   z(https://github.com/cupy/cupy/issues/8912c                     t          ||          }|                    d|          }|                    |d          }t          j        |          }t          ||                    g d                     d S )Nr   r   r    r   )r.   r   broadcast_tor   r   r   r/   r   s        r8   !test_binary_erosion05_broadcastedz7TestNdimageMorphology.test_binary_erosion05_broadcasted%  sq     E""wwuEw**tU++$T**!#rzz)))'<'<=====r:   c                     t          ||          }|                    dg|          }t          j        |d          }t	          ||                    g d                     d S Nr    r   r   r   r   r   r   s        r8   test_binary_erosion06z+TestNdimageMorphology.test_binary_erosion06/  se     E""wws%w(($T:::!#rzz)))'<'<=====r:   c                     t          ||          }|                    dg|          }t          j        |          }t	          ||                    g d                     d S )Nr$   r   r   r   r   s        r8   test_binary_erosion07z+TestNdimageMorphology.test_binary_erosion077  s`     E""wws%w(($T**!#rzz///'B'BCCCCCr:   c                     t          ||          }|                    dg|          }t          j        |d          }t	          ||                    g d                     d S )Nr$   r   r   r   r   r   r   s        r8   test_binary_erosion08z+TestNdimageMorphology.test_binary_erosion08?  se     E""wws%w(($T:::!#rzz///'B'BCCCCCr:   c                     t          j        dg|          }d|d<   |                    |          }t          j        |          }t          ||                    g d                     d S )Nr$   r   r   r   r   r   r   r   r   rU   r   r/   r   r   r   r   s        r8   test_binary_erosion09z+TestNdimageMorphology.test_binary_erosion09G  sj     ws%(((Qzz$$T**!#rzz///'B'BCCCCCr:   c                     t          j        dg|          }d|d<   |                    |          }t          j        |d          }t          ||                    g d                     d S )Nr$   r   r   r   r   r   )r   r   r   r   r   r   r   s        r8   test_binary_erosion10z+TestNdimageMorphology.test_binary_erosion10P  so     ws%(((Qzz$$T:::!#rzz///'B'BCCCCCr:   c                    t          j        dg|          }d|d<   |                    |          }|                    g d          }t          j        ||d          }t          ||                    g d                     d S )	Nr$   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2   r   r3   r4   r   r5   s         r8   test_binary_erosion11z+TestNdimageMorphology.test_binary_erosion11Y  s     ws%(((Qzz$III&&$T6BBB!#rzz///'B'BCCCCCr:   c                    t          j        dg|          }d|d<   |                    |          }|                    g d          }t          j        ||dd          }t          ||                    g d	                     d S )
Nr$   r   r   r   r   r   r   originr   r   r   r   r   r   r   s         r8   test_binary_erosion12z+TestNdimageMorphology.test_binary_erosion12c  s     ws%(((Qzz$III&&$T6"MMM!#rzz///'B'BCCCCCr:   c                    t          j        dg|          }d|d<   |                    |          }|                    g d          }t          j        ||dd          }t          ||                    g d                     d S )	Nr$   r   r   r   r   r   r   r   r   r   r   r   r   r   s         r8   test_binary_erosion13z+TestNdimageMorphology.test_binary_erosion13m  s     ws%(((Qzz$III&&$T6!LLL!#rzz///'B'BCCCCCr:   c                    t          j        dg|          }d|d<   |                    |          }|                    ddg          }t          j        ||d          }t          ||                    g d                     d S )Nr$   r   r   r   r   r   )r   r   r   r   r   r   r   s         r8   test_binary_erosion14z+TestNdimageMorphology.test_binary_erosion14w  s     ws%(((Qzz$QF##$T6BBB!#rzz///'B'BCCCCCr:   c                    t          j        dg|          }d|d<   |                    |          }|                    ddg          }t          j        ||dd          }t          ||                    g d                     d S )	Nr$   r   r   r   r   r   r   )r   r   r   r   r   r   r   s         r8   test_binary_erosion15z+TestNdimageMorphology.test_binary_erosion15  s     ws%(((Qzz$QF##$T6"MMM!#rzz///'B'BCCCCCr:   c                     t          ||          }|                    ddg|          }t          j        |d          }t	          ||                    dgg                     d S r   r   r   s        r8   test_binary_erosion16z+TestNdimageMorphology.test_binary_erosion16  sg     E""ww1vUw++$T:::!#rzzA3%'8'899999r:   c                     t          ||          }|                    ddg|          }t          j        |          }t	          ||                    dgg                     d S r   r   r   s        r8   test_binary_erosion17z+TestNdimageMorphology.test_binary_erosion17  sb     E""ww1vUw++$T**!#rzzA3%'8'899999r:   c                     t          ||          }|                    ddg|          }t          j        |          }t	          ||                    g dg                     d S )Nr   r    r   r   r   r   r   r   s        r8   test_binary_erosion18z+TestNdimageMorphology.test_binary_erosion18  sd     E""ww1vUw++$T**!#rzz999+'>'>?????r:   c                     t          ||          }|                    ddg|          }t          j        |d          }t	          ||                    g dg                     d S )Nr   r    r   r   r   r   r   s        r8   test_binary_erosion19z+TestNdimageMorphology.test_binary_erosion19  si     E""ww1vUw++$T:::!#rzz999+'>'>?????r:   c           	          t          ||          }|                    ddg|          }t          j        |          }t	          ||                    g dg dg dg                     d S )Nr    r   r   r   r   r   s        r8   test_binary_erosion20z+TestNdimageMorphology.test_binary_erosion20  s     E""ww1vUw++$T**!#rzz9993<993<993> (? (? 	@ 	@ 	@ 	@ 	@r:   c           	          t          ||          }|                    ddg|          }t          j        |d          }t	          ||                    g dg dg dg                     d S r   r   r   s        r8   test_binary_erosion21z+TestNdimageMorphology.test_binary_erosion21  s     E""ww1vUw++$T:::!#rzz9993<993<993> (? (? 	@ 	@ 	@ 	@ 	@r:   c                 .   t          ||          }g dg dg dg dg dg dg dg dg}|                    |          }|                    g dg dg dg dg dg d	g d
g dg|          }t          j        |d          }t	          ||           d S )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.   r/   r   r   r   r2   r   r3   r7   r4   r5   s         r8   test_binary_erosion22z+TestNdimageMorphology.test_binary_erosion22  s    E"",,,,,,,,,,,,,,,,,,,,,,,,. ::h''zz3333333333333333333333335 =B  C C $T:::!#x00000r:   c                    t          ||          }t          j        dd          }|                    |          }g dg dg dg dg dg dg dg dg}|                    |          }|                    g dg dg dg dg dg dg d	g dg|
          }t          j        ||d          }t          ||           d S )Nr   r  r  r	  r
  r  r  r  r  r   r   r   )r.   r   r   r/   r   r   r2   r   r3   r   r7   r4   r5   s          r8   test_binary_erosion23z+TestNdimageMorphology.test_binary_erosion23  s4    E""21a88F##,,,,,,,,,,,,,,,,,,,,,,,,. ::h''zz3333333333333333333333335 =B  C C $T6BBB!#x00000r:   c                 f   t          ||          }|                    ddgddgg          }g dg dg dg dg dg dg dg dg}|                    |          }|                    g dg dg dg d	g dg d
g dg dg|          }t          j        ||d          }t	          ||           d S )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  s          r8   test_binary_erosion24z+TestNdimageMorphology.test_binary_erosion24  s6    E""aVV% & &,,,,,,,,,,,,,,,,,,,,,,,,. ::h''zz3333333333333333333333335 =B  C C $T6BBB!#x00000r:   c                 p   t          ||          }g dg dg dg}|                    |          }g dg dg dg dg dg dg dg dg}|                    |          }|                    g dg dg dg d	g d
g dg dg dg|          }t          j        ||d          }t	          ||           d S )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   r   r   r   r   r  r   r   r   r  r  s          r8   test_binary_erosion25z+TestNdimageMorphology.test_binary_erosion25  s@    E"")))))) F##,,,,,,,,,,,,,,,,,,,,,,,,. ::h''zz3333333333333333333333335 =B  C C $T6BBB!#x00000r:   c                 r   t          ||          }g dg dg dg}|                    |          }g dg dg dg dg dg dg dg dg}|                    |          }|                    g dg dg d	g d
g dg dg dg dg|          }t          j        ||dd          }t	          ||           d S )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   r	  r
  r  r  r  r  r   r   r   r   r   r  r  s          r8   test_binary_erosion26z+TestNdimageMorphology.test_binary_erosion26'  sI    E"")))))) F##,,,,,,,,,,,,,,,,,,,,,,,,. ::h''zz3333333333333333333333335 =B  C C $T6,46 6 6!#x00000r:   5CuPy: NotImplementedError: only brute_force iterationc           
      x   g dg dg dg}|                     |          }g dg dg dg dg dg dg dg}|                     |          }t          j         g dg dg dg dg dg dg dgt                    }|                     |          }t          j        ||dd	
          }t          ||           d S 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r/   rU   r   r   r   r   r2   r3   r   r7   r4   r5   s         r8   test_binary_erosion27z+TestNdimageMorphology.test_binary_erosion27D  s4   
 )))))) F##)))))))))))))))))))))+ ::h''z0000000000000000000002 :>? ? ? zz$$T6013 3 3!#x00000r:   z)inplace out= arguments are numpy-specificrE   
exceptionsrF   /NotImplementedError: only brute_force iterationc           
         g dg dg dg}|                     |          }g dg dg dg dg dg dg dg}t          j         |t                    }|                     |          }t          j         g dg dg dg dg dg dg dgt                    }|                     |          }t          j        |j        t                    }|                     |          }t          j        ||dd	|
           t          ||           d S )Nr   r   r'  r(  r   r)  r*  r   r   r   r,  outputr/   rU   r   rQ   rR   r   r   r   r.  s         r8   test_binary_erosion28z+TestNdimageMorphology.test_binary_erosion28a  sr    )))))) F##)))))))))))))))))))))+ :hd333::h''z0000000000000000000002 :>? ? ? zz$htz...jjootV!*+C	9 	9 	9 	9!#x00000r:   c           
      x   g dg dg dg}|                     |          }g dg dg dg dg dg dg dg}|                     |          }t          j         g dg dg dg dg dg dg dgt                    }|                     |          }t          j        ||d	d
          }t          ||           d S )Nr   r   r'  r(  r)  r*  r   r   r   r   r   r   r   r   r   r    r+  r-  r.  s         r8   test_binary_erosion29z+TestNdimageMorphology.test_binary_erosion29  s7   
 )))))) F##)))))))))))))))))))))+ ::h''z0000000000000000000002 :>? ? ? zz$$T623C C C!#x00000r:   c           
      l   g dg dg dg}|                     |          }g dg dg dg dg dg dg dg}t          j         |t                    }|                     |          }t          j         g dg dg dg dg dg dg dgt                    }|                     |          }t          j        |j        t                    }|                     |          }t          j        ||d	d
|           t          ||           t          j        ||d	d
|           t          ||           d S )Nr   r   r'  r(  r   r)  r*  r9  r   r    r4  r6  r.  s         r8   test_binary_erosion30z+TestNdimageMorphology.test_binary_erosion30  s    )))))) F##)))))))))))))))))))))+ :hd333::h''z0000000000000000000002 :>? ? ? zz$htz...jjootV!*+C	9 	9 	9 	9!#x000 	tV!*+D	: 	: 	: 	:!$11111r:   c           
         g dg dg dg}|                     |          }g dg dg dg dg dg dg dg}t          j         |t                    }|                     |          }t          j         g d	g d
g dg dg dg d
g d	gt                    }|                     |          }t          j        |j        t                    }|                     |          }t          j        ||dd|d           t          ||           d S )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*  r9  r   r"  )r   r,  r5  r   r6  r.  s         r8   test_binary_erosion31z+TestNdimageMorphology.test_binary_erosion31  sx    )))))) F##)))))))))))))))))))))+ :hd333::h''z0000000000000000000002 :>? ? ? zz$htz...jjootV!*+C	J 	J 	J 	J!#x00000r:   c           
      x   g dg dg dg}|                     |          }g dg dg dg dg dg dg dg}|                     |          }t          j         g dg dg dg dg dg dg dgt                    }|                     |          }t          j        ||dd	
          }t          ||           d S r&  r-  r.  s         r8   test_binary_erosion32z+TestNdimageMorphology.test_binary_erosion32  s7    )))))) F##)))))))))))))))))))))+ ::h''z0000000000000000000002 :>? ? ? zz$$T623C C C!#x00000r:   c           
         g dg dg dg}|                     |          }g dg dg dg dg dg dg dg}|                     |          }g dg dg dg dg dg dg dg}|                     |          }t          j         g dg d	g d
g d
g d
g dg dgt                    }|                     |          }t          j        ||d|d          }t          ||           d S )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   r9  )r   r   r   r   r   r   r   r)  r(  r   r   r   )r   maskr,  r-  r2   r3   r   r7   rH  r4   r5   s          r8   test_binary_erosion33z+TestNdimageMorphology.test_binary_erosion33   s    )))))) F##)))))))))))))))))))))+ ::h''%%%%%%%%%%%%%%%%%%%%%' zz$z0000000000000000000002 :>? ? ? zz$$T623$2O O O!#x00000r:   c           
         g dg dg dg}|                     |          }g dg dg dg dg dg dg dg}|                     |          }g dg dg dg dg dg dg dg}|                     |          }t          j         g dg dg dg dg dg dg dgt                    }|                     |          }t          j        ||d	|
          }t          ||           d S )Nr   r   r'  r(  r*  r)  r   r   r   r   r   r   r   r   r   )r   rH  r-  rI  s          r8   test_binary_erosion34z+TestNdimageMorphology.test_binary_erosion34$  s   )))))) F##)))))))))))))))))))))+ ::h''%%%%%%%%%%%%%%%%%%%%%' zz$z0000000000000000000002 :>? ? ? zz$$T623$@ @ @!#x00000r:   c           
      V   g dg dg dg}|                     |          }g dg dg dg dg dg dg dg}t          j         |t                    }|                     |          }t          j         g dg dg dg d	g dg dg dgt                    }|                     |          }g d
g dg dg dg d
g dg dg}t          j         |t                    }|                     |          }|                    ||          }|                    ||                    |                    }|                    ||          }t          j        |j        t                    }|                     |          }t          j	        ||dd|d|           t          ||           d S )Nr   r   r'  r)  rL  r   r(  r*  r9  r>  r?  r@  rA  r   r"  )r   r,  r5  r   rH  )r/   rU   r   logical_andlogical_not
logical_orrQ   rR   r   r   r   )r2   r3   r   rH  r4   tmpr7   r5   s           r8   test_binary_erosion35z+TestNdimageMorphology.test_binary_erosion35F  s)    )))))) F##%%%%%%%%%%%%%%%%%%%%%' z$d+++zz$z0000000000000000000002 :>? ? ? zz$$$$$$$$$$$$$$$$$$$$$$& jD)))jjoo>>#t,,nnT2>>$#7#788==3//htz...jjootV!*+C&.T	; 	; 	; 	; 	"#x00000r:   c                    g dg dg dg}|                     |          }g dg dg dg dg dg dg dg dg}t          j         |t                    }|                     |          }g dg dg dg d	g d
g dg dg dg}t          j         |t                    }|                     |          }t          j         g dg dg dg dg dg dg dg dgt                    }|                     |          }|                    ||          }|                    ||                    |                    }|                    ||          }t          j        |||dd          }t          ||           d S )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"  )rH  r   r   )	r/   rU   r   rO  rP  rQ  r   r   r   )r2   r3   r   rH  rR  r4   r7   r5   s           r8   test_binary_erosion36z+TestNdimageMorphology.test_binary_erosion36r  s    )))))) F##((((((((((((((((((((((((* z$d+++zz$'''''''''''''''''''''''') jD)))jjooz3334444444444444444444446 >BC C C zz$>>#t,,nnT2>>$#7#788==3//$T623HF F F!#x00000r:   c                 .   t          j        g dg dg dgt                    }|                    |          }|                    |          }t	          j        |||ddd          }||u sJ t          t	          j        ||dd          |           d S )Nr   r   r   r   T)	structurer5  r,  r   brute_force)rX  r,  r   )rU   r/   r   
zeros_liker   r   r   )r2   r3   abr5   s        r8   test_binary_erosion37z+TestNdimageMorphology.test_binary_erosion37  s     J			!		!		#*.0 0 0 JJqMMMM!$Q!A!26DJ J Jaxxxx"1a046 6 6	 	 	 	 	r:   c                    t          j        g dg dg dgt                    }|                    |          }d}t          t                    5  t          j        ||          }d d d            d S # 1 swxY w Y   d S )Nr   r   r   g       @r,  )rU   r/   r   rj   	TypeErrorr   r   )r2   r3   r4   r,  _s        r8   test_binary_erosion38z+TestNdimageMorphology.test_binary_erosion38  s    z999$99$99&-13 3 3 zz$
9%% 	D 	D&t
CCCA	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   A44A8;A8c           
      D   t          j        d          }g dg dg dg}|                    |          }g dg dg dg dg dg dg dg}|                    |t                    }|                    |          }t          j        g dg dg dg d	g dg dg dgt                    }|                    |          }t          j        |j        t                    }|                    |          }t          j        ||d
||           t          ||           d S Nr    r   r   r'  r(  r   r)  r*  r9  r   r4  )	rU   rV   r/   r   rQ   rR   r   r   r   r2   r3   r,  r   r7   r4   r5   s          r8   test_binary_erosion39z+TestNdimageMorphology.test_binary_erosion39  s    Xa[[
)))))) F##)))))))))))))))))))))+ ::hd:33::h''z0000000000000000000002 :>? ? ? zz$htz...jjootV!*4S	B 	B 	B 	B!#x00000r:   c           
      B   t          j        d          }g dg dg dg}|                    |          }g dg dg dg dg dg dg dg}t          j        |t                    }|                    |          }t          j        g dg dg dg d	g dg dg dgt                    }|                    |          }t          j        |j        t                    }|                    |          }t          j        ||d
||           t          ||           d S rd  )	rU   int64r/   r   rQ   rR   r   r   r   re  s          r8   test_binary_erosion40z+TestNdimageMorphology.test_binary_erosion40  s    Xa[[
)))))) F##)))))))))))))))))))))+ :hd333::h''z0000000000000000000002 :>? ? ? zz$htz...jjootV!*4S	B 	B 	B 	B!#x00000r:   c                     t          ||          }|                    g |          }t          j        |          }||                    d|j                  k    sJ d S r   )r.   r   r   binary_dilationr/   r   r   s        r8   test_binary_dilation01z,TestNdimageMorphology.test_binary_dilation01  sa     E""wwrw''%d++bjj#)j44444444r:   c                     t          ||          }|                    g |          }t          j        |          }||                    d          k    sJ d S )Nr   F)r.   rQ   r   rk  r/   r   s        r8   test_binary_dilation02z,TestNdimageMorphology.test_binary_dilation02  s[     E""xx%x((%d++bjj''''''''r:   c                     t          ||          }|                    dg|          }t          j        |          }t	          ||                    dg|j                             d S Nr   r   )r.   r   r   rk  r   r/   r   r   s        r8   test_binary_dilation03z,TestNdimageMorphology.test_binary_dilation03  sd     E""wws%w((%d++!#rzz1#SYz'G'GHHHHHr:   c                     t          ||          }|                    dg|          }t          j        |          }t	          ||                    dg                     d S r   r.   rQ   r   rk  r   r/   r   s        r8   test_binary_dilation04z,TestNdimageMorphology.test_binary_dilation04  s\     E""xx5x))%d++!#rzz1#77777r:   c                     t          ||          }|                    dg|          }t          j        |          }t	          ||                    g d                     d S Nr    r   r   r.   r   r   rk  r   r/   r   s        r8   test_binary_dilation05z,TestNdimageMorphology.test_binary_dilation05  s`     E""wws%w((%d++!#rzz)))'<'<=====r:   c                     t          ||          }|                    d|          }|                    |d          }t          j        |          }t          ||                    g d                     d S )Nr   r   r   r   )r.   r   r   r   rk  r   r/   r   s        r8   "test_binary_dilation05_broadcastedz8TestNdimageMorphology.test_binary_dilation05_broadcasted'  sq     E""wwuEw**tT**%d++!#rzz)))'<'<=====r:   c                     t          ||          }|                    dg|          }t          j        |          }t	          ||                    g d                     d S )Nr    r   r   rs  r   s        r8   test_binary_dilation06z,TestNdimageMorphology.test_binary_dilation060  s`     E""xx5x))%d++!#rzz)))'<'<=====r:   c                     t          j        dg|          }d|d<   |                    |          }t          j        |          }t          ||                    g d                     d S )Nr    r   r   r   rU   rQ   r/   r   rk  r   r   s        r8   test_binary_dilation07z,TestNdimageMorphology.test_binary_dilation078  sj     x5)))Qzz$%d++!#rzz)))'<'<=====r:   c                     t          j        dg|          }d|d<   d|d<   |                    |          }t          j        |          }t          ||                    g d                     d S )Nr$   r   r   r    r   r~  r   s        r8   test_binary_dilation08z,TestNdimageMorphology.test_binary_dilation08A  ss     x5)))QQzz$%d++!#rzz///'B'BCCCCCr:   c                     t          j        dg|          }d|d<   |                    |          }t          j        |          }t          ||                    g d                     d S )Nr$   r   r   r   r   r   r   r   r~  r   s        r8   test_binary_dilation09z,TestNdimageMorphology.test_binary_dilation09K  sj     x5)))Qzz$%d++!#rzz///'B'BCCCCCr:   c                     t          j        dg|          }d|d<   |                    |          }t          j        |d          }t          ||                    g d                     d S )Nr$   r   r   r   r   r   r~  r   s        r8   test_binary_dilation10z,TestNdimageMorphology.test_binary_dilation10T  so     x5)))Qzz$%d2666!#rzz///'B'BCCCCCr:   c                     t          j        dg|          }d|d<   |                    |          }t          j        |d          }t          ||                    g d                     d S )Nr$   r   r   r  r   r   r   r   r   r~  r   s        r8   test_binary_dilation11z,TestNdimageMorphology.test_binary_dilation11]  so     x5)))Qzz$%d1555!#rzz///'B'BCCCCCr:   c                 
   t          j        dg|          }d|d<   |                    |          }|                    g d          }t          j        ||          }t          ||                    g d                     d S )Nr$   r   r   r   )r   r   r   r   r   r~  r   s         r8   test_binary_dilation12z,TestNdimageMorphology.test_binary_dilation12f  s     x5)))Qzz$III&&%dF33!#rzz///'B'BCCCCCr:   c                    t          j        dg|          }d|d<   |                    |          }|                    g d          }t          j        ||d          }t          ||                    g d                     d S )Nr$   r   r   r   r   r   r~  r   s         r8   test_binary_dilation13z,TestNdimageMorphology.test_binary_dilation13p  s     x5)))Qzz$III&&%dFCCC!#rzz///'B'BCCCCCr:   c                    t          j        dg|          }d|d<   |                    |          }|                    g d          }t          j        ||d          }t          ||                    g d                     d S )Nr$   r   r   r   r   r  )r   r   r   r   r   r~  r   s         r8   test_binary_dilation14z,TestNdimageMorphology.test_binary_dilation14z  s     x5)))Qzz$III&&%dF2>>>!#rzz///'B'BCCCCCr:   c                    t          j        dg|          }d|d<   |                    |          }|                    g d          }t          j        ||dd          }t          ||                    g d                     d S )Nr$   r   r   r   r   r   r   r   r~  r   s         r8   test_binary_dilation15z,TestNdimageMorphology.test_binary_dilation15  s     x5)))Qzz$III&&%dF-/aA A A!#rzz///'B'BCCCCCr:   c                     t          ||          }|                    ddg|          }t          j        |          }t	          ||                    dgg                     d S rp  rw  r   s        r8   test_binary_dilation16z,TestNdimageMorphology.test_binary_dilation16  sb     E""ww1vUw++%d++!#rzzA3%'8'899999r:   c                     t          ||          }|                    ddg|          }t          j        |          }t	          ||                    dgg                     d S r   rs  r   s        r8   test_binary_dilation17z,TestNdimageMorphology.test_binary_dilation17  sb     E""xxAex,,%d++!#rzzA3%'8'899999r:   c                     t          ||          }|                    ddg|          }t          j        |          }t	          ||                    g dg                     d S )Nr   r    r   r   rw  r   s        r8   test_binary_dilation18z,TestNdimageMorphology.test_binary_dilation18  sd     E""ww1vUw++%d++!#rzz999+'>'>?????r:   c           	          t          ||          }|                    ddg|          }t          j        |          }t	          ||                    g dg dg dg                     d S rv  rw  r   s        r8   test_binary_dilation19z,TestNdimageMorphology.test_binary_dilation19  s     E""ww1vUw++%d++!#rzz9993<993<993> (? (? 	@ 	@ 	@ 	@ 	@r:   c           	          t          j        ddg|          }d|d<   |                    |          }t          j        |          }t          ||                    g dg dg dg                     d S )Nr    r   r   r   r   r   r   r~  r   s        r8   test_binary_dilation20z,TestNdimageMorphology.test_binary_dilation20  s     xAe,,,T
zz$%d++!#rzz9993<993<993> (? (? 	@ 	@ 	@ 	@ 	@r:   c           	      @   t          j        dd          }|                    |          }t          j        ddg|          }d|d<   |                    |          }t          j        ||          }t          ||                    g dg dg dg                     d S )Nr   r    r   r   r  r   )r   r   r/   rU   rQ   rk  r   )r2   r   r3   r   r4   r5   s         r8   test_binary_dilation21z,TestNdimageMorphology.test_binary_dilation21  s     21a88F##xAe,,,T
zz$%dF33!#rzz9993<993<993> (? (? 	@ 	@ 	@ 	@ 	@r:   c                 *   t          ||          }g dg dg dg dg dg dg dg dg}|                    |          }|                    g dg dg dg d	g d
g dg dg dg|          }t          j        |          }t	          ||           d S )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   rk  r   r  s         r8   test_binary_dilation22z,TestNdimageMorphology.test_binary_dilation22  s
    E"",,,,,,,,,,,,,,,,,,,,,,,,. ::h''zz3333333333333333333333335 =B  C C %d++!#x00000r:   c                 .   t          ||          }g dg dg dg dg dg dg dg dg}|                    |          }|                    g dg dg dg d	g d
g dg dg dg|          }t          j        |d          }t	          ||           d S )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  s         r8   test_binary_dilation23z,TestNdimageMorphology.test_binary_dilation23  s    E"",,,,,,,,,,,,,,,,,,,,,,,,. ::h''zz3333333333333333333333335 =B  C C %d;;;!#x00000r:   c                 .   t          ||          }g dg dg dg dg dg dg dg dg}|                    |          }|                    g dg dg dg d	g d
g dg dg dg|          }t          j        |d          }t	          ||           d S )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  s         r8   test_binary_dilation24z,TestNdimageMorphology.test_binary_dilation24  s    E"",,,,,,,,,,,,,,,,,,,,,,,,. ::h''zz3333333333333333333333335 =B  C C %d6:::!#x00000r:   c                 0   t          ||          }g dg dg dg dg dg dg dg dg}|                    |          }|                    g dg dg dg d	g d
g dg dg dg|          }t          j        |dd          }t	          ||           d S )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  s         r8   test_binary_dilation25z,TestNdimageMorphology.test_binary_dilation25  s    E"",,,,,,,,,,,,,,,,,,,,,,,,. ::h''zz3333333333333333333333335 =B  C C %d6JJJ!#x00000r:   c                    t          ||          }t          j        dd          }g dg dg dg dg dg dg dg dg}|                    |          }|                    |          }|                    g dg dg dg dg d	g d
g dg dg|          }t          j        ||          }t          ||           d S )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/   rk  r   r  s          r8   test_binary_dilation26z,TestNdimageMorphology.test_binary_dilation26)  s/    E""21a88,,,,,,,,,,,,,,,,,,,,,,,,. F##::h''zz3333333333333333333333335 =B  C C %dF33!#x00000r:   c                 f   t          ||          }ddgddgg}g dg dg dg dg dg dg d	g d	g}|                    |          }|                    |          }|                    g d	g dg d	g dg d
g dg d	g d	g|          }t          j        ||          }t	          ||           d S )Nr   r   r	  r  r  r  r  r   r   r   r   r   r   r   r   r  r  r  r   r  r  s          r8   test_binary_dilation27z,TestNdimageMorphology.test_binary_dilation27C  s2    E""a&a&,,,,,,,,,,,,,,,,,,,,,,,,. F##::h''zz3333333333333333333333335 =B  C C %dF33!#x00000r:   c                     t          ||          }g dg dg dg dg}|                    |          }|                    g dg dg dg dg|          }t          j        |d          }t	          ||           d S )N)r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r  r  s         r8   test_binary_dilation28z,TestNdimageMorphology.test_binary_dilation28^  s     E"" LL LL LL LL" ::h''zz<<<'<<'<<'<<) 16  7 7 %d;;;!#x00000r:   c                 X   ddgddgg}g dg dg dg dg dg}|                     |          }|                     |          }t          j         g dg dg dg dg dgt                    }|                     |          }t          j        ||d	          }t          ||           d S )
Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r_  r/   rU   r   r   rk  r   r.  s         r8   test_binary_dilation29z,TestNdimageMorphology.test_binary_dilation29n       a&a&#OO#OO#OO#OO#OO	%
 F##::h''z???*??*??*??*??	, 48	9 9 9
 zz$%dFqAAA!#x00000r:   z!output= arrays are numpy-specificc                    ddgddgg}g dg dg dg dg dg}|                     |          }|                     |          }|                     g dg dg dg dg dgt                    }|                     |          }t          j        |j        t                    }|                     |          }t          j        ||d|	           t          ||           d S )
Nr   r   r   r  r  r   r   r   r,  r5  )r/   r   rU   rQ   rR   r   rk  r   r.  s         r8   test_binary_dilation30z,TestNdimageMorphology.test_binary_dilation30  s    a&a&#OO#OO#OO#OO#OO	%
 F##::h''zz???*??*??*??*??	, 48	  9 9
 zz$htz...jjoof3GGGG!#x00000r:   c                 X   ddgddgg}g dg dg dg dg dg}|                     |          }|                     |          }t          j         g dg dg dg dg dgt                    }|                     |          }t          j        ||d	
          }t          ||           d S )Nr   r   r  r  r   r   r   r   r   r   r   r   r    r_  r  r.  s         r8   test_binary_dilation31z,TestNdimageMorphology.test_binary_dilation31  r  r:   c                    ddgddgg}g dg dg dg dg dg}|                     |          }|                     |          }t          j         g dg dg dg dg dgt                    }|                     |          }t          j        |j        t                    }|                     |          }t          j        ||d	|
           t          ||           d S )Nr   r   r  r  r   r  r   r   r    r  r/   rU   r   rQ   rR   r   rk  r   r.  s         r8   test_binary_dilation32z,TestNdimageMorphology.test_binary_dilation32  s    a&a&#OO#OO#OO#OO#OO	%
 F##::h''z???*??*??*??*??	, 48	9 9 9
 zz$htz...jjoof3GGGG!#x00000r:   c                 H   g dg dg dg}|                     |          }t          j         g dg dg dg dg dg dg dg dgt                    }|                     |          }t          j         g dg dg d	g dg dg dg dg dgt                    }|                     |          }t          j         g dg dg dg dg dg dg dg dgt                    }|                     |          }t          j        ||d
|d          }t          ||           d S )Nr   r   r	  r  r   r   r   r   r   r   r   r   rU  r  r   r   r   r   r   r   r   r   r   r   r   r,  rH  r   r  rI  s          r8   test_binary_dilation33z,TestNdimageMorphology.test_binary_dilation33  s    )))))) F##:7777777777777777777777779 AEF F F ::h''z3333333333333333333333335 =AB B B zz$z3333333333333333333333335 =AB B B zz$%dFr+/aA A A!#x00000r:   z)inplace output= arrays are numpy-specificc                    g dg dg dg}|                     |          }g dg dg dg dg dg dg dg dg}t          j         g dg dg dg dg dg d	g dg dgt          
          }|                     |          }t          j        |j        t          
          }|                     |          }t          j        ||d|d          }t          ||           d S )Nr   r   r	  r   r   r   r   r   r   r   r   r   r  r  r  r  r   r   r   r  r  rI  s          r8   test_binary_dilation34z,TestNdimageMorphology.test_binary_dilation34  se    )))))) F##,,,,,,,,,,,,,,,,,,,,,,,,. z3333333333333333333333335 =AB B B zz$x
$///zz$%dFr+/aA A A!#x00000r:   c                    t          ||          }g dg dg dg dg dg dg dg dg}t          j        g dg dg dg d	g d
g dg dg dg          }g dg dg dg dg dg dg dg dg}t          j        |t                    }t          j        ||          }t          j        |t          j        |                    }t          j        ||          }|                    |          }|                    |          }|                    g dg dg dg d	g d
g dg dg dg|          }t          j        ||dd          }t          ||           d S )Nr  r  r  r  r  r  r  r	  r  r  r  r  r   r  r   )rH  r   r   )
r.   rU   r/   r   rO  rP  rQ  r   rk  r   )r2   r   r3   rR  r4   rH  r7   r5   s           r8   test_binary_dilation35z,TestNdimageMorphology.test_binary_dilation35  s0    E""'''''''''''''''''''''''') z3333333333333333333333335 6 6 )(((((((((((((((((((((((* z$d+++>#t,,nT2>$#7#788=3//zz$::h''zz3333333333333333333333335 =B  C C %d-3!E E E!#x00000r:   c                     t          j        g t                    }|                    |          }t	          j        |d          }||                    d          k    sJ d S )Nr   r   r_  F)rU   rQ   r   r/   r   rk  )r2   r3   r4   r5   s       r8   test_binary_dilation36z,TestNdimageMorphology.test_binary_dilation36I  sa     x$'''zz$%dr:::bjj''''''''r:   c                 F   g dg dg dg}|                     |          }t          j         g dg dg dg dg dg dg dg dgt                    }|                     |          }t          j         g dg dg d	g dg dg dg dg dgt                    }|                     |          }t          j         g dg dg dg dg dg dg dg dgt                    }|                     |          }t          j        |||d
          }t          ||           d S )Nr   r   r	  r  r  rU  r  r   r  r   rH  r   )r/   rU   r   r   binary_propagationr   rI  s          r8   test_binary_propagation01z/TestNdimageMorphology.test_binary_propagation01Q  s   )))))) F##:7777777777777777777777779 AEF F F ::h''z3333333333333333333333335 =AB B B zz$z3333333333333333333333335 =AB B B zz$(v.2D D D!#x00000r:   c                    g dg dg dg}g dg dg dg dg dg dg dg dg}|                     |          }|                     |          }t          j         g dg dg dg dg dg d	g dg dgt          
          }|                     |          }t          j        |j        t          
          }|                     |          }t          j        |||d          }t          ||           d S )Nr   r   r	  r  r   r  r  r  r  r   r   r  )r/   rU   r   rQ   rR   r   r  r   rI  s          r8   test_binary_propagation02z/TestNdimageMorphology.test_binary_propagation02v  sr   )))))) -,,,,,,,,,,,,,,,,,,,,,,,. ::h''F##z3333333333333333333333335 =AB B B zz$x
$///zz$(v.2D D D!#x00000r:   c                     |                     t          j        g t                              }|                     t          j        g t                              }t	          j        |          }||k    sJ d S )Nr   )r/   rU   rQ   r   r   r  )r2   r3   r4   r7   r5   s        r8   test_binary_propagation03z/TestNdimageMorphology.test_binary_propagation03  se     zz"(2T22233::bhr66677(..hr:   c                 *   t          ||          }g dg dg dg dg dg dg dg dg}|                    |          }|                    g dg dg dg dg d	g dg dg dg|
          }t          j        |          }t	          ||           d S )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   binary_openingr   r  s         r8   test_binary_opening01z+TestNdimageMorphology.test_binary_opening01  
    E"",,,,,,,,,,,,,,,,,,,,,,,,. ::h''zz3333333333333333333333335 =B  C C $T**!#x00000r:   c                    t          ||          }t          j        dd          }g dg dg dg dg dg dg dg dg}|                    |          }|                    |          }|                    g dg dg dg dg dg dg dg dg|	          }t          j        ||          }t          ||           d S )
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  r   r  s          r8   test_binary_opening02z+TestNdimageMorphology.test_binary_opening02  /    E""21a88,,,,,,,,,,,,,,,,,,,,,,,,. ::h''F##zz3333333333333333333333335 =B  C C $T622!#x00000r:   c                 *   t          ||          }g dg dg dg dg dg dg dg dg}|                    |          }|                    g dg d	g d
g dg dg dg dg dg|          }t          j        |          }t	          ||           d S )Nr  r  )r   r   r   r   r   r   r   r   r  r  r  r  r	  r  r  r  r  r   )r.   r/   r   binary_closingr   r  s         r8   test_binary_closing01z+TestNdimageMorphology.test_binary_closing01  r  r:   c                    t          ||          }t          j        dd          }g dg dg dg dg dg dg dg dg}|                    |          }|                    |          }|                    g dg dg dg dg dg dg dg dg|	          }t          j        ||          }t          ||           d S )
Nr   r  r  r  r  r  r  r  r   )r.   r   r   r/   r  r   r  s          r8   test_binary_closing02z+TestNdimageMorphology.test_binary_closing02  r  r:   c           
      b   t          j        g dg dg dg dg dg dg dgt                    }|                    |          }t          j        g dg dg dg dg dg dg dgt                    }|                    |          }t          j        |          }t          ||           d S )Nr  r  r   r  rU   r/   r   r   binary_fill_holesr   r2   r3   r7   r4   r5   s        r8   test_binary_fill_holes01z.TestNdimageMorphology.test_binary_fill_holes01 	  s   :7777777777777777777779 AEF F F ::h''z3333333333333333333335 =AB B B zz$'--!#x00000r:   c           
      b   t          j        g dg dg dg dg dg dg dgt                    }|                    |          }t          j        g dg dg dg dg dg dg dgt                    }|                    |          }t          j        |          }t          ||           d S )Nr  r  r  r   r  r  r  s        r8   test_binary_fill_holes02z.TestNdimageMorphology.test_binary_fill_holes02	     :7777777777777777777779 AEF F F ::h''z3333333333333333333335 =AB B B zz$'--!#x00000r:   c           
      b   t          j        g dg dg dg dg dg dg dgt                    }|                    |          }t          j        g dg dg dg dg dg dg dgt                    }|                    |          }t          j        |          }t          ||           d S )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   r  r  s        r8   test_binary_fill_holes03z.TestNdimageMorphology.test_binary_fill_holes03,	  r  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           
      R   |j         }t          j        g dg dg dgt                    }|                    |          }t          j        g dg dg dg dg dg dg dgt                    }|                    |          }|dk    rt	          ||	          }	nt	          |
          }	|dv}
|
r||	d<   n|dk    rt          j        d            |||fi |	}d}|                    |g|z  |          }|                    |g|z  |          }g d}|                    |           t          |          st          |          r@|                    t          j        |j        t                              } |||f||d|	 n |||fd|i|	}t          ||           d S )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  )r  r  r   r   z-border_value !=0 unsupported by this functionr$   r   r  r5  axesr  )__name__rU   r/   r   dictpytestskipstackremover   r   rQ   rR   r   )r2   r3   r  r  r   r   	func_namer   r4   kwargsborder_supportedr7   n_repsr  r5   s                  r8   test_binary_axesz&TestNdimageMorphology.test_binary_axesA	  s4   ( M	YYY&YY&YY()-/ / F##z0000000000000000000002 489 9 zz$,,,&&999FF(((F$ -B B 	I%1F>""QKGHHH4f//// 88XJ/k8BBxxkx:: yyK   B<< 	:72;; 	:**RXdj$7788CDv?c?????? $tV99$9&99CX&&&&&r:   c           	          |                     g dg dg dg          }|                     g dg dg          }t          j        ||          }t          ||                     g dg dg d	g                     d S )
Nr    r   r$   r   r   r%   r"   rg   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   r/   r   grey_erosionr   r2   r3   arrayr  r5  s        r8   test_grey_erosion01z)TestNdimageMorphology.test_grey_erosion01	  s    

OOO+OO+OO- . . JJ			999566	%eyAAA!&"$**ooo.=oo.=oo.? #@ #@	A 	A 	A 	A 	Ar:   z!output=array requires buffer viewz
dask.arrayz(https://github.com/cupy/cupy/issues/8398c           	          |                     g dg dg dg          }|                     g dg dg          }t          j        |||           t          ||                     g dg dg d	g                     d S )
Nr  r  r  r   r  )r  r5  r  r  r  r  )r2   r3   r  r  s       r8   test_grey_erosion01_overlapz1TestNdimageMorphology.test_grey_erosion01_overlap	  s     

OOO+OO+OO- . . JJ			999566	UiFFFF!%"$**ooo.=oo.=oo.? #@ #@	
 	
 	
 	
 	
r:   c           	      4   |                     g dg dg dg          }|                     g dg dg          }|                     g dg dg          }t          j        |||          }t          ||                     g dg d	g d
g                     d S )Nr  r  r  r   r  r   r  rX  r  r  r  r  r2   r3   r  r  rX  r5  s         r8   test_grey_erosion02z)TestNdimageMorphology.test_grey_erosion02	      

OOO+OO+OO- . . JJ			999566	JJ			999566	%ey09; ; ;!&"$**ooo.=oo.=oo.? #@ #@	
 	
 	
 	
 	
r:   c           	      4   |                     g dg dg dg          }|                     g dg dg          }|                     g dg dg          }t          j        |||          }t          ||                     g dg d	g d
g                     d S )Nr  r  r  r   r  r   r  r  )r   r   r   r   r   )r   r   r   r   r   r  r   s         r8   test_grey_erosion03z)TestNdimageMorphology.test_grey_erosion03	  r"  r:   c           	          |                     g dg dg dg          }|                     g dg dg          }t          j        ||          }t          ||                     g dg dg d	g                     d S )
Nr  r  r  r   r   r  r%   r%   rg   rg   r$   r%   rg   r   rg   r%   r   r   r   r%   r%   r/   r   grey_dilationr   r  s        r8   test_grey_dilation01z*TestNdimageMorphology.test_grey_dilation01	  s    

OOO+OO+OO- . . JJ			999566	&u	BBB!&"$**ooo.=oo.=oo.? #@ #@	
 	
 	
 	
 	
r:   c           	      4   |                     g dg dg dg          }|                     g dg dg          }|                     g dg dg          }t          j        |||          }t          ||                     g dg d	g d
g                     d S )Nr  r  r  r   r   r   r  r&  r'  r(  r)  r   s         r8   test_grey_dilation02z*TestNdimageMorphology.test_grey_dilation02	  s    

OOO+OO+OO- . . JJ			999566	JJ			999566	&u	1:< < <!&"$**ooo.=oo.=oo.? #@ #@	
 	
 	
 	
 	
r:   c           	      4   |                     g dg dg dg          }|                     g dg dg          }|                     g dg dg          }t          j        |||          }t          ||                     g dg d	g d
g                     d S )Nr  r  r  r   r   r   r  )r   r   
   r/  r"   )r   r/  rg   r/  r   )rg   rg   rg   r   r   r)  r   s         r8   test_grey_dilation03z*TestNdimageMorphology.test_grey_dilation03	  s    

OOO+OO+OO- . . JJ			999566	JJ			999566	&u	1:< < <!&"$**.?.?.?.?.?.?.=oo.? #@ #@	
 	
 	
 	
 	
r:   c                    |                     g dg dg dg          }|                     g dg dg          }t          j        ||          }t          j        ||          }t          j        ||          }t          ||           d S Nr  r  r  r   r  r  r/   r   r  r*  grey_openingr   r2   r3   r  r  rR  r7   r5  s          r8   test_grey_opening01z)TestNdimageMorphology.test_grey_opening01	  s    

OOO+OO+OO- . . JJ			999566	"5I>>>(	BBB%eyAAA!&(33333r:   c                 X   |                     g dg dg dg          }|                     g dg dg          }|                     g dg dg          }t          j        |||          }t          j        |||          }t          j        |||          }t          ||           d S Nr  r  r  r   r  r   r  r3  r2   r3   r  r  rX  rR  r7   r5  s           r8   test_grey_opening02z)TestNdimageMorphology.test_grey_opening02	  s    

OOO+OO+OO- . . JJ			999566	JJ			999566	"5I-68 8 8(	3<> > >%ey09; ; ;!&(33333r:   c                    |                     g dg dg dg          }|                     g dg dg          }t          j        ||          }t          j        ||          }t          j        ||          }t          ||           d S r2  r/   r   r*  r  grey_closingr   r5  s          r8   test_grey_closing01z)TestNdimageMorphology.test_grey_closing01 
  s    

OOO+OO+OO- . . JJ			999566	#EY???'yAAA%eyAAA!&(33333r:   c                 X   |                     g dg dg dg          }|                     g dg dg          }|                     g dg dg          }t          j        |||          }t          j        |||          }t          j        |||          }t          ||           d S r8  r<  r9  s           r8   test_grey_closing02z)TestNdimageMorphology.test_grey_closing02
  s    

OOO+OO+OO- . . JJ			999566	JJ			999566	#EY.79 9 9'y2;= = =%ey09; ; ;!&(33333r:   c                    |                     g dg dg dg          }|                     g dg dg          }|                     g dg dg          }t          j        |||          }t          j        |||          }||z
  }|                    |j        |j                  }t          j        ||||	           t          ||           d S 
Nr  r  r  r   r  r   r  r   r  rX  r5  )	r/   r   r*  r  rQ   rR   r   morphological_gradientr   	r2   r3   r  r  rX  tmp1tmp2r7   r5  s	            r8   test_morphological_gradient01z3TestNdimageMorphology.test_morphological_gradient01
  s	    

OOO+OO+OO- . . JJ			999566	JJ			999566	$Ui/8: : :#EY.79 9 9$;%+U[99&u	1:6	K 	K 	K 	K!&(33333r:   c                 b   |                     g dg dg dg          }|                     g dg dg          }|                     g dg dg          }t          j        |||          }t          j        |||          }||z
  }t          j        |||          }t          ||           d S r8  )r/   r   r*  r  rD  r   rE  s	            r8   test_morphological_gradient02z3TestNdimageMorphology.test_morphological_gradient02-
  s     

OOO+OO+OO- . . JJ			999566	JJ			999566	$Ui/8: : :#EY.79 9 9$;/:CE E E!&(33333r:   c                    |                     g dg dg dg          }|                     g dg dg          }|                     g dg dg          }t          j        |||          }t          j        |||          }||z   d|z  z
  }|                    |j        |j        	          }t          j        ||||
           t          ||           d S )Nr  r  r  r   r  r   r  r   r   rC  )	r/   r   r*  r  rQ   rR   r   morphological_laplacer   rE  s	            r8   test_morphological_laplace01z2TestNdimageMorphology.test_morphological_laplace01>
  s    

OOO+OO+OO- . . JJ			999566	JJ			999566	$Ui/8: : :#EY.79 9 9$;U*%+U[99%ey09&	J 	J 	J 	J!&(33333r:   c                 n   |                     g dg dg dg          }|                     g dg dg          }|                     g dg dg          }t          j        |||          }t          j        |||          }||z   d|z  z
  }t          j        |||          }t          ||           d S )	Nr  r  r  r   r  r   r  r   )r/   r   r*  r  rL  r   rE  s	            r8   test_morphological_laplace02z2TestNdimageMorphology.test_morphological_laplace02Q
  s     

OOO+OO+OO- . . JJ			999566	JJ			999566	$Ui/8: : :#EY.79 9 9$;U*.u	9BD D D!&(33333r:   c                 x   |                     g dg dg dg          }|                     g dg dg          }|                     g dg dg          }t          j        |||          }||z
  }|                    |j        |j                  }t          j        ||||	           t          ||           d S rB  )r/   r   r4  rQ   rR   r   white_tophatr   r9  s           r8   test_white_tophat01z)TestNdimageMorphology.test_white_tophat01b
  s     

OOO+OO+OO- . . JJ			999566	JJ			999566	"5I-68 8 83;%+U[99Ui'0	A 	A 	A 	A!&(33333r:   c                 4   |                     g dg dg dg          }|                     g dg dg          }|                     g dg dg          }t          j        |||          }||z
  }t          j        |||          }t	          ||           d S r8  )r/   r   r4  rQ  r   r9  s           r8   test_white_tophat02z)TestNdimageMorphology.test_white_tophat02s
  s    

OOO+OO+OO- . . JJ			999566	JJ			999566	"5I-68 8 83;%ey09; ; ;!&(33333r:   z	cupy#8399c           
         t          j        g dg dg dg dg dg dg dgt                    }|                    |          }t          j        dt                    }|                    |          }t          j        g dg dg dg d	g d
g d	g dgt                    }|                    |          }t	          j        ||          }t          ||           d S )Nr   r   r   r   r   r   r   r*  r   r   r   r   r   r   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   rX  )rU   r/   r   r   r   rQ  r   r2   r3   r  rX  r7   r5  s         r8   test_white_tophat03z)TestNdimageMorphology.test_white_tophat03
  ?    
1111111111111111111113 ;?@ @ @ 

5!!GF$///	JJy))	:4444444444444444444446 >BC C C ::h''%eyAAA)))))r:   c                 ,   t          j        dt                    }t          j        dt                    }|                    |          }|                    |          }|                    ||j                  }t          j        |||           d S Nr$   r   r   )rX  r5  )	rU   eyer   r   r/   
empty_likerS   r   rQ  r2   r3   r  rX  r5  s        r8   test_white_tophat04z)TestNdimageMorphology.test_white_tophat04
  s     q%%%GF$///	

5!!JJy))	 uBJ77UiGGGGGGr:   c                 x   |                     g dg dg dg          }|                     g dg dg          }|                     g dg dg          }t          j        |||          }||z
  }|                    |j        |j                  }t          j        ||||	           t          ||           d S rB  )r/   r   r=  rQ   rR   r   black_tophatr   r9  s           r8   test_black_tophat01z)TestNdimageMorphology.test_black_tophat01
  s     

OOO+OO+OO- . . JJ			999566	JJ			999566	"5I-68 8 8;%+U[99Ui'0	A 	A 	A 	A!&(33333r:   c                 4   |                     g dg dg dg          }|                     g dg dg          }|                     g dg dg          }t          j        |||          }||z
  }t          j        |||          }t	          ||           d S r8  )r/   r   r=  rc  r   r9  s           r8   test_black_tophat02z)TestNdimageMorphology.test_black_tophat02
  s    

OOO+OO+OO- . . JJ			999566	JJ			999566	"5I-68 8 8;%ey09; ; ;!&(33333r:   zcupy/cupy#8399c           
         t          j        g dg dg dg dg dg dg dgt                    }|                    |          }t          j        dt                    }|                    |          }t          j        g dg dg dg dg d	g dg d
gt                    }|                    |          }t	          j        ||          }t          ||           d S )NrV  r*  rW  rF  r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   rG  rX  )rU   r/   r   r   r   rc  r   rY  s         r8   test_black_tophat03z)TestNdimageMorphology.test_black_tophat03
  r[  r:   c                 $   |                     t          j        dt                              }|                     t          j        dt                              }|                    ||j                  }t          j        |||           d S r]  )	r/   rU   r^  r   r   r_  rS   r   rc  r`  s        r8   test_black_tophat04z)TestNdimageMorphology.test_black_tophat04
  s{     

26!400011JJrwvT:::;;	 uBJ77UiGGGGGGr:   mode)reflectconstantnearestmirrorwrapfootprint_mode)sizer  rX  c           
         |                     g dg dg dg dg dg dg dg          }t          ||          }|d	k    rd
|d	<   n|                     g dg dg          |d<   |dk    r|                    |d                   |d<    ||fi |}	d}
|                    |	g|
z  |          }	|                    |g|
z  |          }g d}|                    |           t          |          st          |          r.|                    |	j        |	j	                  } ||f||d| n ||fd|i|}t          ||	           d S )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   rg   r    r   r   r   )r   r   r   r   r   r   r   )r   rk  rr  )r   r    r   r  r  rX  r$   r   r  r   r   r  )r/   r  	ones_liker  r  r   r   rQ   rR   r   r   )r2   r3   r  r  r   rq  rk  r4   r	  r7   r  r  r5   s                r8   test_grey_axesz$TestNdimageMorphology.test_grey_axes
  s   4 zz0000000000000000000002 3 3 V$///V###F6NN"$**iii-C"D"DF;[(("$,,vk/B"C"CF;4'''' 88XJ/k8BBxxkx:: yyK   B<< 	272;; 	2((8>(@@CD7c777777 $t11$1&11CX&&&&&r:   !inplace output= is numpy-specificc                    t          ||          }g dg dg dg}|                    |          }g dg dg dg dg dg dg dg dg}|                    |          }|                    g dg dg dg dg dg d	g d	g dg|
          }|                    t          j        |j        t
          
                    }t          j        |||           t          ||           d S )Nr   r   r   )r   r   r   r   r   r  r   )r   r   r   r   r   r   )r   r   r   r   r   r   r5  )	r.   r/   rU   rQ   rR   r   r   r  r   r  s          r8   test_hit_or_miss01z(TestNdimageMorphology.test_hit_or_miss01)  s?   
 E"")))))) F###OO#OO#OO#OO#OO#OO#OO#OO% ::h''zz???*??*??*??*??*??*??*??, 49  : : jj$*D999::"4<<<<!#x00000r:   c                 <   t          ||          }g dg dg dg}g dg dg dg dg}|                    |          }|                    |          }|                    g dg dg dg dg|          }t          j        ||          }t	          ||           d S )	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  s          r8   test_hit_or_miss02z(TestNdimageMorphology.test_hit_or_miss02H  s     E"")))))) -,,,,,,,,,,,. F##::h''zz3333333333335 =B  C C (v66!#x00000r:   c                    t          ||          }g dg dg dg}g dg dg dg}g dg dg dg dg dg dg dg dg}|                    |          }|                    |          }|                    |          }|                    g dg dg dg d	g d
g dg dg dg|          }t          j        |||          }t	          ||           d S )Nr   r   r  r  r   r{  r  r  r  r  r  r  r   r|  )r2   r   r3   struct1struct2r7   r4   r5   s           r8   test_hit_or_miss03z(TestNdimageMorphology.test_hit_or_miss03\  sl    E""999999 999999 -,,,,,,,,,,,,,,,,,,,,,,,. **W%%**W%%::h''zz3333333333333333333333335 =B  C C (w@@!#x00000r:   N)r  
__module____qualname__r   r   r0   r  markparametrizer   r9   r?   rD   skip_xp_backendsr]   xfail_xp_backendsre   rh   rl   rq   rt   rv   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r#  r/  r7  r:  r<  rB  rD  rJ  rM  rS  rV  r]  rb  rf  ri  rk  rl  rn  rq  rt  rx  rz  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	   r  r  r  r  r  r!  r$  r*  r+  r-  r0  r4  r6  r:  r=  r>  r@  rD  rH  rJ  rL  rM  rO  rQ  rR  rT  rZ  ra  rc  rd  rf  rh  rj  ru  ry  r}  r   r:   r8   r   r      s+       w455[We,,.0 .0 -, 65.0` w455[We,,.0 .0 -, 65.0` w455[We,,.0 .0 -, 65.0b K   w455[We,,0/ 0/ -, 65 
0/d v&PQQQw455[We,,-0 -0 -, 65 RQ-0^ w455[We,,-0 -0 -, 65-0^ w455  65  w457 7[We,,%0 %0 -,7 7%0N w457 7[We,,#0 #0 -,7 7#0J I   w566[We,,// // -, 76 
//b R   w566  76 ( w~666w566[We,,% % -, 76 76%" f%OPPPw546 6[We,,* * -,6 6 QP*8 D   w546 6[We,,:/ :/ -,6 6 :/x w546 6[We,,, , -,6 6,  w546 6[We,,, , -,6 6,  Q   w5669 9 76 9
 R   w566  76 ( w899  :9 w8995 5 :95 w8997 7 :97 w8997 7 :97 w0111 1 211 w0111 1 211 w011    21   w-..[We,,5 5 -, /.5 w-..[We,,5 5 -, /.5 w-..[We,,8 8 -, /.8 w-..[We,,8 8 -, /.8 w-..[We,,> > -, /.> v&PQQQw-..[We,,> > -, /. RQ> w-..[We,,> > -, /.> w-..[We,,D D -, /.D w-..[We,,D D -, /.D w-..[We,,D D -, /.D w-..[We,,D D -, /.D w-..[We,,D D -, /.D w-..[We,,D D -, /.D w-..[We,,D D -, /.D w-..[We,,D D -, /.D w-..[We,,D D -, /.D w-..[We,,: : -, /.: w-..[We,,: : -, /.: w-..[We,,@ @ -, /.@ w-..[We,,@ @ -, /.@ w-..[We,,@ @ -, /.@ w-..[We,,@ @ -, /.@ w-..[We,,1 1 -, /.1, w-..[We,,1 1 -, /.10 w-..[We,,1 1 -, /.10 w-..[We,,1 1 -, /.14 w-..[We,,1 1 -, /.16 N   w-..1 1 /. 12 dxHJ J JvOQ Q Qw-..1 1 /.Q QJ J
18 N   w-..1 1 /. 12 dxHJ J JvOQ Q Qw-..2 2 /.Q QJ J
2B dxHJ J Jw-..1 1 /.J J18 vOQ Q Qw-..1 1 /.Q Q12 vOQ Q Qw-..1 1 /.Q Q1B w-..1 1 /.1B dxHJ J Jw-..'1 '1 /.J J'1R vOQ Q Qw-..'1 '1 /.Q Q'1R dxHJ J JvOQ Q Qw-..  /.Q QJ J
 w-..D D /.D dxHJ J JvOQ Q Qw-..1 1 /.Q QJ J
1: dxHJ J JvOQ Q Qw-..1 1 /.Q QJ J
1: [We,,w.//5 5 0/ -,5 [We,,w.//( ( 0/ -,( [We,,w.//I I 0/ -,I [We,,w.//8 8 0/ -,8 [We,,w.//> > 0/ -,> [We,,w.//> > 0/ -,> [We,,w.//> > 0/ -,> [We,,w.//> > 0/ -,> [We,,w.//D D 0/ -,D [We,,w.//D D 0/ -,D [We,,w.//D D 0/ -,D [We,,w.//D D 0/ -,D [We,,w.//D D 0/ -,D [We,,w.//D D 0/ -,D [We,,w.//D D 0/ -,D [We,,w.//D D 0/ -,D [We,,w.//: : 0/ -,: [We,,w.//: : 0/ -,: [We,,w.//@ @ 0/ -,@ [We,,w.//@ @ 0/ -,@ [We,,w.//@ @ 0/ -,@ [We,,w.//	@ 	@ 0/ -,	@ [We,,w.//1 1 0/ -,1, [We,,w.//1 1 0/ -,1, [We,,w.//1 1 0/ -,1, [We,,w.//1 1 0/ -,1, [We,,w.//1 1 0/ -,10 [We,,w.//1 1 0/ -,12 [We,,w.//1 1 0/ -,1 vOQ Q Qw.//1 1 0/Q Q1& dx@B B BvOQ Q Qw.//1 1 0/Q QB B
1* vOQ Q Qw.//1 1 0/Q Q1& dx@B B BvOQ Q Qw.//1 1 0/Q QB B
1* vOQ Q Qw.//#1 #1 0/Q Q#1J dxHJ J JvOQ Q Qw.//1 1 0/Q QJ J
18 [We,,w.//.1 .1 0/ -,.1` w.//( ( 0/( w122"1 "1 32"1H w1221 1 321: w122  32 w-..[We,,1 1 -, /.1, w-..[We,,1 1 -, /.10 [We,,w-..1 1 /. -,1, [We,,w-..1 1 /. -,10 w0111 1 211, w0111 1 211( w0111 1 211( t$$$KM M MLN N N[^QF33[X'899[]III66[  !788  !899  !788  !788  !;<<  !;<<  !:;;

 
*' *'
 
 76 :9 43N NM M %$&*'X w+,,	A 	A -,	A k*MNNNl+NOOOv&PQQQw+,,
 
 -, RQ PO ON
 w+,,
 
 -,
 w+,,
 
 -,
 w,--

 

 .-

 w,--
 
 .-
 w,--
 
 .-
 w+,,4 4 -,4 w+,,4 4 -,4 w+,,4 4 -,4 w+,,4 4 -,4 d+NOOOw,g.B57 74 47 7 PO4  w,g.B57 74 47 74 d+NOOOw,g.B46 64 46 6 PO4  w,g.B46 64 46 64 k*MNNNl+NOOOw+W-ABB4 4 CB PO ON4 w+W-ABB4 4 CB4 vk222w+,,* * -, 32*0 k*MNNNl+NOOOw+,,	H 	H -, PO ON	H k*MNNNl+NOOOw+W-ABB4 4 CB PO ON4 w+W-ABB4 4 CB4 v&6777w+,,* * -, 87*0 k*MNNNl+NOOOw+,,H H -, PO ONH t$$$KM M MLN N N[X'899[]III66[V &8 &8 &8 9 9[- 0= 0= 0= > >[  !566  !677  !566  !566  !>??  !?@@  !566  !566		
 "' "' > >9 9 76 :9N NM M %$0"'H dx@B B Bw122[We,,1 1 -, 32B B16 w122[We,,1 1 -, 321$ w122[We,,1 1 -, 321 1 1r:   r   c                        e Zd Zd Zd Zd ZdS )TestDilateFixc                 z   |                     g dg dg dg dg dg|j                  | _        |                    d          | _        t          j        | j        | j                  }t          |          r!|                    |j                  | _	        d S |
                    ||j                  | _	        d S )Nr   r  r  r   r   rX  )r/   uint8r  r   sq3x3r   rk  r   view
dilated3x3r   )r2   r3   r  s      r8   _setupzTestDilateFix._setup  s    ZZ!0!0!0!0	!2 :<	   C C
 WWV__
,TZ4:NNN
B<< 	>(oobh77DOOO ii
BH==DOOOr:   c                     |                      |           t          j        | j        | j                  }t          || j        dz              d S )NrX  r   )r  r   r*  r  r  r   r  r2   r3   results      r8   test_dilation_square_structurez,TestDilateFix.test_dilation_square_structure  sG    B&tzTZHHH!&$/A*=>>>>>r:   c                     |                      |           t          j        | j        d          }t	          || j                   d S )Nr    )rr  )r  r   r*  r  r   r  r  s      r8   test_dilation_scalar_sizez'TestDilateFix.test_dilation_scalar_size  s@    B&tz:::!&$/:::::r:   N)r  r  r  r  r  r  r  r:   r8   r  r  }  sA        
> > >"? ? ?; ; ; ; ;r:   r  c                        e Zd Zd Zd Zd ZdS )TestBinaryOpeningClosingc                 `   t          j        dt                    }d|ddddf<   d|d<   |                    |          | _        |                    d          | _        t          j        | j        | j        dd d          | _	        t          j
        | j        | j        dd d          | _        d S )	Nr$   r$   r   Tr   r   )r   r   r   r   )rU   rQ   r   r/   r  r   r  r   r  
opened_oldr  
closed_old)r2   r3   r[  s      r8   r  zTestBinaryOpeningClosing._setup  s    HV4(((!A#qs($ZZ]]
WWV__
!0TZ12D!= =!0TZ12D!= =r:   c           
          |                      |           t          j        | j        | j        dd dd dd          }t          || j                   d S Nr   r   F)r  r   r  r  r  r   r  )r2   r3   
opened_news      r8   test_opening_new_argumentsz3TestBinaryOpeningClosing.test_opening_new_arguments  P    B+DJ
At,-tQ? ?

DO44444r:   c           
          |                      |           t          j        | j        | j        dd dd dd          }t          || j                   d S r  )r  r   r  r  r  r   r  )r2   r3   
closed_news      r8   test_closing_new_argumentsz3TestBinaryOpeningClosing.test_closing_new_arguments  r  r:   N)r  r  r  r  r  r  r  r:   r8   r  r    sA        	= 	= 	=5 5 55 5 5 5 5r:   r  c                     |                      dg          }t          t          t          j        |d           t          t          t          j        |d           d S Nr   g      ?r_        ?)r   rj   r`  r   r   r3   r4   s     r8   )test_binary_erosion_noninteger_iterationsr    O     77A3<<D)W3TcJJJJ)W3TcJJJJJJr:   c                     |                      dg          }t          t          t          j        |d           t          t          t          j        |d           d S r  )r   rj   r`  r   rk  r  s     r8   *test_binary_dilation_noninteger_iterationsr    sO     77A3<<D)W4dsKKKK)W4dsKKKKKKr:   c                     |                      dg          }t          t          t          j        |d           t          t          t          j        |d           d S r  )r   rj   r`  r   r  r  s     r8   )test_binary_opening_noninteger_iterationsr    r  r:   c                     |                      dg          }t          t          t          j        |d           t          t          t          j        |d           d S r  )r   rj   r`  r   r  r  s     r8   )test_binary_closing_noninteger_iterationsr    r  r:   r^   r$  r_   c           
      N   |                      dg          }t          t          j        |dd          t          j        |dt	          d                               t          t          j        |dd          t          j        |dt	          d                               d S )Nr   r   r  )r,  rY  r   )r   r   r   r   r   r  s     r8   ;test_binary_closing_noninteger_brute_force_passes_when_truer    s     77A3<<DG*4A3OOO*4A4PS99UUU   G*4A3OOO*4A4PS99UUU    r:   Trv  r0  r2  r  r,  r$   rY  Fc                 p   t           j                            d          }|                    ddd                              t
                    }|                    |          }|                                } | |||          }t          ||            | ||||           t          ||           d S )N{   r   r   d   lowhighrr  )rY  r,  )rY  r,  r5  )	rU   randomRandomStaterandintr   r   r/   copyr   )r  r,  rY  r3   rstater4   	data_origr7   s           r8   test_binary_input_as_outputr    s     Y""3''F>>aac>2299$??D::dD 		ItDkjIIIHD)$$$ 	D;:dKKKKD(#####r:   c                    t           j                            d          }|                    ddd                              t
                    }|                     |          }|                                }t          j	        |          }t          ||           t          j	        ||           t          ||           d S )Nr  r   r   r  r  rx  )rU   r  r  r  r   r   r/   r  r   r  r   )r3   r  r4   r  r7   s        r8   'test_binary_hit_or_miss_input_as_outputr  
  s     Y""3''F>>aac>2299$??D::dD 		I)$//HD)$$$ tD1111D(#####r:   c                     d}t          j        t          |          5  t          j        |                     d          d           d d d            d S # 1 swxY w Y   d S )Nzinvalid metric provided)matchr  garbager   )r  r
   
ValueErrorr   rq   r   )r3   msgs     r8   *test_distance_transform_cdt_invalid_metricr    s    
#C	z	-	-	- 9 9&rwwv.7	9 	9 	9 	99 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   *AAA)'numpyrU   scipy._lib._array_apir   r   r   r   r   r   r	   r  r
   rj   scipyr    r   r  r  r  r   rk  r*  r  r  r  r  r   r  r  r  r  r  r  r  r  r  rq   r  r  r:   r8   <module>r     s                         * * * * * *            ;/ K1 g-1 g-1 g-1 g-1 g-1 g-1 g-1 g-1T[ 7*G,ABB; ; ; ; ; ; ; CB;B 7)7+ABB5 5 5 5 5 5 5 CB54 7)**K K +*K 7*++L L ,+L 7)**K K +*K 7)**K K +*K 
J   7)**  +*  $F8<> > >6"STTT
W344W455W344W344	  1v..66$ $ 76 /.  UT> >$ $F8<> > >7-..$ $ /.> >$ 71229 9 329 9 9r:   