
    bi                       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j0                  ej2                         G d d             Z eej6                        d        Z eej*                        d        Z eej0                        d        Z eej2                        d        Z edd       eej6                        d               Z  eddgd       edd      e
j"                  jC                  d e	ej6                         e	ej*                         e	ej0                         e	ej2                        g      e
j"                  jC                  dddg      e
j"                  jC                  dddg      d                                    Z" eddgd       eejF                        d               Z$ eejJ                        d         Z&y)!    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                   X9   e Zd Z eej
                        ej                  j                  de	      d               Z
 eej
                        ej                  j                  de	      d               Z eej
                        ej                  j                  de	      d               Z edd       eej
                        ej                  j                  de	      d                      Z ed	d
       eej
                        ej                  j                  de	      d                      Z eej
                        ej                  j                  de	      d               Z eej
                        d        Z eej
                  ej&                        ej                  j                  de	      d               Z eej
                  ej&                        ej                  j                  de	      d               Z edd       eej&                        ej                  j                  de	      d                      Z edd       eej&                        d               Z edd       eej&                        ej                  j                  de	      d                      Z ed	d
       eej2                  ej
                        ej                  j                  de	      d                      Z edd       eej2                  ej
                        ej                  j                  de	      d                      Z eej2                  ej
                        ej                  j                  de	      d               Z eej2                  ej
                        ej                  j                  de	      d               Z ed	d       eej2                        d               Z edd       eej2                        d               Z eej@                        d         Z! eej@                        d!        Z" eej@                        d"        Z# eej@                        d#        Z$ eejJ                        d$        Z& eejJ                        d%        Z' eejJ                        d&        Z( eejR                        ej                  j                  de	      d'               Z* eejR                        ej                  j                  de	      d(               Z+ eejR                        ej                  j                  de	      d)               Z, eejR                        ej                  j                  de	      d*               Z- eejR                        ej                  j                  de	      d+               Z. ed	d,       eejR                        ej                  j                  de	      d-                      Z/ eejR                        ej                  j                  de	      d.               Z0 eejR                        ej                  j                  de	      d/               Z1 eejR                        ej                  j                  de	      d0               Z2 eejR                        ej                  j                  de	      d1               Z3 eejR                        ej                  j                  de	      d2               Z4 eejR                        ej                  j                  de	      d3               Z5 eejR                        ej                  j                  de	      d4               Z6 eejR                        ej                  j                  de	      d5               Z7 eejR                        ej                  j                  de	      d6               Z8 eejR                        ej                  j                  de	      d7               Z9 eejR                        ej                  j                  de	      d8               Z: eejR                        ej                  j                  de	      d9               Z; eejR                        ej                  j                  de	      d:               Z< eejR                        ej                  j                  de	      d;               Z= eejR                        ej                  j                  de	      d<               Z> eejR                        ej                  j                  de	      d=               Z? eejR                        ej                  j                  de	      d>               Z@ eejR                        ej                  j                  de	      d?               ZA eejR                        ej                  j                  de	      d@               ZB eejR                        ej                  j                  de	      dA               ZC eejR                        ej                  j                  de	      dB               ZD ed	dC       eejR                        dD               ZE edd	gdEF       ed	dG       eejR                        dH                      ZF ed	dC       eejR                        dI               ZG edd	gdEF       ed	dG       eejR                        dJ                      ZH edd	gdEF       eejR                        dK               ZI ed	dG       eejR                        dL               ZJ ed	dG       eejR                        dM               ZK eejR                        dN        ZL edd	gdEF       eejR                        dO               ZM ed	dG       eejR                        dP               ZN edd	gdEF       ed	dG       eejR                        dQ                      ZO eejR                        dR        ZP edd	gdEF       ed	dG       eejR                        dS                      ZQ edd	gdEF       ed	dG       eejR                        dT                      ZRej                  j                  de	       eej                        dU               ZTej                  j                  de	       eej                        dV               ZUej                  j                  de	       eej                        dW               ZVej                  j                  de	       eej                        dX               ZWej                  j                  de	       eej                        dY               ZXej                  j                  de	       eej                        dZ               ZYej                  j                  de	       eej                        d[               ZZej                  j                  de	       eej                        d\               Z[ej                  j                  de	       eej                        d]               Z\ej                  j                  de	       eej                        d^               Z]ej                  j                  de	       eej                        d_               Z^ej                  j                  de	       eej                        d`               Z_ej                  j                  de	       eej                        da               Z`ej                  j                  de	       eej                        db               Zaej                  j                  de	       eej                        dc               Zbej                  j                  de	       eej                        dd               Zcej                  j                  de	       eej                        de               Zdej                  j                  de	       eej                        df               Zeej                  j                  de	       eej                        dg               Zfej                  j                  de	       eej                        dh               Zgej                  j                  de	       eej                        di               Zhej                  j                  de	       eej                        dj               Ziej                  j                  de	       eej                        dk               Zjej                  j                  de	       eej                        dl               Zkej                  j                  de	       eej                        dm               Zlej                  j                  de	       eej                        dn               Zmej                  j                  de	       eej                        do               Znej                  j                  de	       eej                        dp               Zoej                  j                  de	       eej                        dq               Zp ed	dG       eej                        dr               Zq edd	gdsF       ed	dG       eej                        dt                      Zr ed	dG       eej                        du               Zs edd	gdsF       ed	dG       eej                        dv                      Zt ed	dG       eej                        dw               Zu edd	gdxF       ed	dG       eej                        dy                      Zvej                  j                  de	       eej                        dz               Zw eej                        d{        Zx eej                        d|        Zz eej                        d}        Z{ eej                        d~        Z| eej                        ej                  j                  de	      d               Z~ eej                        ej                  j                  de	      d               Zej                  j                  de	       eej                         d               Zej                  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                  j                  dddg      ej                  j                  dddg      ej                  j                  dg d      ej                  j                  d eejR                         eej                         eej                         eej                          eej                         eej                         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j2                        d               Z eej                  ej                  ej2                        d        Z edds       eej                  ej                  ej8                        d               Z eej                  ej                  ej8                        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jH                        d                      Z eej,                  ejH                        d        Z ed	d       eejH                        d               Z edd       edd       eejH                        d                      Z ed       ed	d       edd      ej                  j                  dddg      ej                  j                  dg d      ej                  j                  dg d      ej                  j                  dg d      ej                  j                  d eej                         eej                         eej&                         eej,                         eej8                         eej2                         eej>                         eejH                        g      d                                                         Z edd	gdF       eej                        ej                  j                  de	      d                      Z eej                        ej                  j                  de	      d               Z eej                        ej                  j                  de	      d               Zy)TestNdimageMorphologydtypec                    t        ||      }|j                  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	}|j                  |      }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}|j                  |      }t	        ||       y )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          ^/home/cdr/jupyterlab/.venv/lib/python3.12/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8 @E  F //k?CER/////////1 ::h'!#)X60000000002 10000000023$ ::h'!"h/    c                    t        ||      }|j                  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	}|j                  |      }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}|j                  |      }t	        ||       y )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8 @E  F //k?CER 0////////1 ::h'!#x00000000002 10000000023$ ::h'!"h/r:   c                    t        ||      }|j                  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	}|j                  |      }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}|j                  |      }t	        ||       y )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8 @E  F //l?CER 0////////1 ::h'!#x00000000002 10000000023$ ::h'!"h/r:   Tz,inplace distances= arrays are numpy-specific)np_onlyreasonc                    t        ||      }|j                  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
                  |j                        }t        j                  ||       |j                  |       t        j                  |dd	      }	|j                  |	       t        j                  |j
                  |j                        }	t        j                  |dd
|	       |j                  |	       t        j                  |d      \  }}	|j                  |       |j                  |	       |j	                  |j
                  |j                        }t        j                  ||d
      }	|j                  |       |j                  |	       t        j                  |j
                  |j                        }	t        j                  |d
|	      }|j                  |       |j                  |	       |j	                  |j
                  |j                        }t        j                  |j
                  |j                        }	t        j                  ||d
|	       |j                  |       |j                  |	       |D ]  }t        ||        |D ]  }	t        ||	        y )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   sL    E"zz6666666668 @E  F 00aHSXXdjj

X3%%db9

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

2ZZ

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

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

2

2XXdjj

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

2

2ZZ

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

2

2XXdjj

X3ZZ

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

2

2 	/B%c2.	/ 	/B%c2.	/r:   cupyz(CuPy does not have distance_transform_bfrF   c                    t        ||      }|j                  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	}|j                  |      }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}|j                  |      }t	        ||       y )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8 @E  F //+daVER///020///1 ::h'!#)X60000000002 10000000023$ ::h'!"h/r:   c                    t        ||      }|j                  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	}|j                  |      }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}|j                  |      }t	        ||       y )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8 @E  F //+daVER/////////1 ::h'!#)X60000000002 10000000023$ ::h'!"h/r:   c                     |j                  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        y # 1 sw Y   y xY w)Nr   r   r   FrJ   )r/   assert_raisesRuntimeErrorr   r0   )r2   r3   r4   s      r8   test_distance_transform_bf07z2TestNdimageMorphology.test_distance_transform_bf07F  sf     zz6666666668 9 <( 	))uU	 	 	s   AA'c                    t        ||      }|j                  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}|j                  |      }t        ||       y )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8 @E  F 00+d4R**4=!"c*0000000002 10000000023$ ::h'!"h/r:   c                    t        ||      }|j                  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}|j                  |      }t        ||       y )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8 @E  F 00|@DFR**4>!"c*0000000002 10000000023$ ::h'!"h/r:   z*inplace indices= arrays are numpy-specificc                 *   t        ||      }|j                  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
                  |j                        }t        j                  ||       |j                  |       t        j                  |dd	      }	|j                  |	       |j                  t        j                  |j
                  t        j                              }	t        j                  |dd|	
       |j                  |	       t        j                  |d      \  }}	|j                  |       |j                  |	       |j	                  |j
                  |j                        }t        j                  ||d      }	|j                  |       |j                  |	       |j                  t        j                  |j
                  t        j                              }	t        j                  |d|	      }|j                  |       |j                  |	       |j	                  |j
                  |j                        }|j                  t        j                  |j
                  t        j                              }	t        j                  ||d|	       |j                  |       |j                  |	       |D ]  }t        ||        |D ]  }	t        ||	        y )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  sg    E"zz6666666668 @E  F 11$tLSXXdjjX1&&tr:

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

2ZZ

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

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

2

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

2

2ZZ

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

2

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

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

2

2 	/B%c2.	/ 	/B%c2.	/r:   z3XXX: does not raise unless indices is a numpy arrayc                 @   |j                  g dg dg dg dg dg dg dg dg dg	      }|j                  |j                  f|j                  z   |j                        }t        t              5  t        j                  |dd|       d d d        y # 1 sw Y   y xY w)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8 9 hh		|djj8hI<( 	))!%$#		 	 	s   1BBtorchzint overflowc                     t        ||      }|j                  g dg dg dg dg dg dg dg dg dg	|      }|j                  d      }t        j                  ||      }|j                  |      dk(  sJ y )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8 @E  F WWV_
//ZHvvf~$$$r:   c                    t        ||      }|j                  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
  }|j                  t        j                        }t        j                  |||       t        j                  j                  |d	
      }t        j                  ||       |j                  |      }t        ||       y )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  s   
 E" zz6666666668 @E  F 00dKR**4=!"c* 

2RZZABu{{CCYYrzz"
BBVV]]2A]&
BZZ^!"b)r:   z%inplace distances= are numpy-specificc                    t        ||      }|j                  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
                  |j                        }t        j                  ||       |j                  |       t        j                  |dd	      }	|j                  |	       t        j                  |j
                  |j                        }	|j                  |	      }	t        j                  |d
d|	       |j                  |	       t        j                  |d      \  }}	|j                  |       |j                  |	       |j	                  |j
                  |j                        }t        j                  ||d      }	|j                  |       |j                  |	       t        j                  |j
                  |j                        }	|j                  |	      }	t        j                  |d|	      }|j                  |       |j                  |	       |j	                  |j
                  |j                        }t        j                  |j
                  |j                        }	|j                  |	      }	t        j                  ||d|	       |j                  |       |j                  |	       |D ]  }t        ||        |D ]  }	t        ||	        y )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+  ss    E"zz6666666668 @E  F 11$tLSXXdjj

X3&&tr:

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

2ZZ

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

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

2

2XXdjj

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

2

2ZZ

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

2

2XXdjj

X3ZZ

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

2

2 	/B%c2.	/ 	/B%c2.	/r:   c                     t        ||      }|j                  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        ||       y )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8 @E  F ++D+AO,,TQFC!#s+r:   c                     t        ||      }|j                  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        ||       y )	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                  |j                  d            }t        ||j                  dg             y )NF        )r   r   r/   r   )r2   r3   r5   s      r8   test_distance_transform_edt5z2TestNdimageMorphology.test_distance_transform_edt5  s2     ,,RZZ->?!#rzz2$'78r:   c                 $   |j                  g dg dg dg dg dg dg dg dg dg	      }|j                  |j                  |j                        }t	        t
              5  t        j                  |dd|       d d d        y # 1 sw Y   y xY w)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8 9 2::><( 	))#!&'		 	 	s   #BBc                 >    t        j                  dd      }|dk(  sJ y )Nr   r   )r   generate_binary_structurer2   r3   structs      r8   test_generate_structure01z/TestNdimageMorphology.test_generate_structure01  s     221a8{{r:   c                 L    t        j                  dd      }t        |g d       y )Nr   r   r   r   r   r   r   r   s      r8   test_generate_structure02z/TestNdimageMorphology.test_generate_structure02  s    221a8!&)4r:   c                 Z    t        j                  dd      }t        |g dg dg dg       y )Nr   r   r   r   r   r   r   r   s      r8   test_generate_structure03z/TestNdimageMorphology.test_generate_structure03  +    221a8!&9+4+4+6 	7r:   c                 Z    t        j                  dd      }t        |g dg dg dg       y )Nr   r   r   r   s      r8   test_generate_structure04z/TestNdimageMorphology.test_generate_structure04  r   r:   c                     g dg dg dg}|j                  |      }t        j                  |d      }t        j                   g dg dg dg dg dgt              }|j                  |      }t        ||       y )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  st     F#''2::....	0 8<	=
 ::h'!#x0r:   c                     ddgddgddgg}|j                  |      }t        j                  |d      }t        j                   g dg dg dg dg dgt              }|j                  |      }t        ||       y )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::y((((	* 26	7
 ::h'!#x0r:   c                    g dg dg dg}|j                  |      }t        j                  |dd      }g dg dg dg dg dg}t        j                   |t              }|j                  |      }t        |d	   |       |d   ddgk(  sJ y )
Nr   r   r   r   r   r   r   r   r   r   r   s        r8   test_iterate_structure03z.TestNdimageMorphology.test_iterate_structure03  s     F#''15#####	%
 ::hd3::h'!#a&(31v!Qr:   c                     t        ||      }|j                  g |      }t        j                  |      }||j	                  d|j
                        k(  sJ y Nr   r   r.   r   r   binary_erosionr/   r   r2   r   r3   r4   r5   s        r8   test_binary_erosion01z+TestNdimageMorphology.test_binary_erosion01  sQ     E"wwrw'$$T*bjj#))j4444r:   c                     t        ||      }|j                  g |      }t        j                  |d      }||j	                  d|j
                        k(  sJ y )Nr   r   border_valuer   r   s        r8   test_binary_erosion02z+TestNdimageMorphology.test_binary_erosion02  sS     E"wwrw'$$T:bjj#))j4444r:   c                     t        ||      }|j                  dg|      }t        j                  |      }t	        ||j                  dg             y Nr   r   r   r.   r   r   r   r   r/   r   s        r8   test_binary_erosion03z+TestNdimageMorphology.test_binary_erosion03  sH     E"wws%w($$T*!#rzz1#7r:   c                     t        ||      }|j                  dg|      }t        j                  |d      }t	        ||j                  dg             y Nr   r   r   r   r   s        r8   test_binary_erosion04z+TestNdimageMorphology.test_binary_erosion04  sJ     E"wws%w($$T:!#rzz1#7r:   c                     t        ||      }|j                  dg|      }t        j                  |      }t	        ||j                  g d             y )Nr    r   r   r   r   s        r8   test_binary_erosion05z+TestNdimageMorphology.test_binary_erosion05  sG     E"wws%w($$T*!#rzz)'<=r:   z(https://github.com/cupy/cupy/issues/8912c                     t        ||      }|j                  d|      }|j                  |d      }t        j                  |      }t        ||j                  g d             y )Nr   r   r    r   )r.   r   broadcast_tor   r   r   r/   r   s        r8   !test_binary_erosion05_broadcastedz7TestNdimageMorphology.test_binary_erosion05_broadcasted%  sU     E"wwuEw*tU+$$T*!#rzz)'<=r:   c                     t        ||      }|j                  dg|      }t        j                  |d      }t	        ||j                  g d             y Nr    r   r   r   r   r   r   s        r8   test_binary_erosion06z+TestNdimageMorphology.test_binary_erosion06/  sI     E"wws%w($$T:!#rzz)'<=r:   c                     t        ||      }|j                  dg|      }t        j                  |      }t	        ||j                  g d             y )Nr$   r   r   r   r   s        r8   test_binary_erosion07z+TestNdimageMorphology.test_binary_erosion077  sG     E"wws%w($$T*!#rzz/'BCr:   c                     t        ||      }|j                  dg|      }t        j                  |d      }t	        ||j                  g d             y )Nr$   r   r   r   r   r   r   s        r8   test_binary_erosion08z+TestNdimageMorphology.test_binary_erosion08?  sI     E"wws%w($$T:!#rzz/'BCr:   c                     t        j                  dg|      }d|d<   |j                  |      }t        j                  |      }t        ||j                  g d             y )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  sP     wws%(Qzz$$$T*!#rzz/'BCr:   c                     t        j                  dg|      }d|d<   |j                  |      }t        j                  |d      }t        ||j                  g d             y )Nr$   r   r   r   r   r   )r   r   r   r   r   r   r   s        r8   test_binary_erosion10z+TestNdimageMorphology.test_binary_erosion10P  sR     wws%(Qzz$$$T:!#rzz/'BCr:   c                     t        j                  dg|      }d|d<   |j                  |      }|j                  g d      }t        j                  ||d      }t        ||j                  g d             y )	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  sb     wws%(Qzz$I&$$T6B!#rzz/'BCr:   c                     t        j                  dg|      }d|d<   |j                  |      }|j                  g d      }t        j                  ||dd      }t        ||j                  g d	             y )
Nr$   r   r   r   r   r   r   originr   r   r   r   r   r   r   s         r8   test_binary_erosion12z+TestNdimageMorphology.test_binary_erosion12c  sd     wws%(Qzz$I&$$T6"M!#rzz/'BCr:   c                     t        j                  dg|      }d|d<   |j                  |      }|j                  g d      }t        j                  ||dd      }t        ||j                  g d             y )	Nr$   r   r   r   r   r   r   r   r   r   r   r   r   r   s         r8   test_binary_erosion13z+TestNdimageMorphology.test_binary_erosion13m  sd     wws%(Qzz$I&$$T6!L!#rzz/'BCr:   c                     t        j                  dg|      }d|d<   |j                  |      }|j                  ddg      }t        j                  ||d      }t        ||j                  g d             y )Nr$   r   r   r   r   r   )r   r   r   r   r   r   r   s         r8   test_binary_erosion14z+TestNdimageMorphology.test_binary_erosion14w  sf     wws%(Qzz$QF#$$T6B!#rzz/'BCr:   c                     t        j                  dg|      }d|d<   |j                  |      }|j                  ddg      }t        j                  ||dd      }t        ||j                  g d             y )	Nr$   r   r   r   r   r   r   )r   r   r   r   r   r   r   s         r8   test_binary_erosion15z+TestNdimageMorphology.test_binary_erosion15  sh     wws%(Qzz$QF#$$T6"M!#rzz/'BCr:   c                     t        ||      }|j                  ddg|      }t        j                  |d      }t	        ||j                  dgg             y r   r   r   s        r8   test_binary_erosion16z+TestNdimageMorphology.test_binary_erosion16  sO     E"ww1vUw+$$T:!#rzzA3%'89r:   c                     t        ||      }|j                  ddg|      }t        j                  |      }t	        ||j                  dgg             y r   r   r   s        r8   test_binary_erosion17z+TestNdimageMorphology.test_binary_erosion17  sM     E"ww1vUw+$$T*!#rzzA3%'89r:   c                     t        ||      }|j                  ddg|      }t        j                  |      }t	        ||j                  g dg             y )Nr   r    r   r   r   r   r   r   s        r8   test_binary_erosion18z+TestNdimageMorphology.test_binary_erosion18  sK     E"ww1vUw+$$T*!#rzz9+'>?r:   c                     t        ||      }|j                  ddg|      }t        j                  |d      }t	        ||j                  g dg             y )Nr   r    r   r   r   r   r   s        r8   test_binary_erosion19z+TestNdimageMorphology.test_binary_erosion19  sM     E"ww1vUw+$$T:!#rzz9+'>?r:   c           	          t        ||      }|j                  ddg|      }t        j                  |      }t	        ||j                  g dg dg dg             y )Nr    r   r   r   r   r   s        r8   test_binary_erosion20z+TestNdimageMorphology.test_binary_erosion20  sY     E"ww1vUw+$$T*!#rzz93<3<3> (? 	@r:   c           	          t        ||      }|j                  ddg|      }t        j                  |d      }t	        ||j                  g dg dg dg             y r   r   r   s        r8   test_binary_erosion21z+TestNdimageMorphology.test_binary_erosion21  s[     E"ww1vUw+$$T:!#rzz93<3<3> (? 	@r:   c                    t        ||      }g dg dg dg dg dg dg dg dg}|j                  |      }|j                  g dg dg dg dg dg d	g d
g dg|      }t        j                  |d      }t	        ||       y )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5 =B  C $$T:!#x0r:   c                 ^   t        ||      }t        j                  dd      }|j                  |      }g dg dg dg dg dg dg dg dg}|j                  |      }|j                  g dg dg dg dg dg dg d	g dg|
      }t        j                  ||d      }t        ||       y )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  s     E"221a8F#,,,,,,,,. ::h'zz333333335 =B  C $$T6B!#x0r:   c                 >   t        ||      }|j                  ddgddgg      }g dg dg dg dg dg dg dg dg}|j                  |      }|j                  g dg dg dg d	g dg d
g dg dg|      }t        j                  ||d      }t	        ||       y )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  s     E"aVV% &,,,,,,,,. ::h'zz333333335 =B  C $$T6B!#x0r:   c                 H   t        ||      }g dg dg dg}|j                  |      }g dg dg dg dg dg dg dg dg}|j                  |      }|j                  g dg dg dg d	g d
g dg dg dg|      }t        j                  ||d      }t	        ||       y )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5 =B  C $$T6B!#x0r:   c                 J   t        ||      }g dg dg dg}|j                  |      }g dg dg dg dg dg dg dg dg}|j                  |      }|j                  g dg dg d	g d
g dg dg dg dg|      }t        j                  ||dd      }t	        ||       y )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'  s     E" F#,,,,,,,,. ::h'zz333333335 =B  C $$T6,46!#x0r:   5CuPy: NotImplementedError: only brute_force iterationc           
      X   g dg dg dg}|j                  |      }g dg dg dg dg dg dg dg}|j                  |      }t        j                   g dg dg dg dg dg dg dgt              }|j                  |      }t        j                  ||dd	
      }t        ||       y 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  s    
  F#)))))))+ ::h'zz00000002 :>? zz$$$T6013!#x0r:   z)inplace out= arguments are numpy-specificrE   
exceptionsrF   /NotImplementedError: only brute_force iterationc           
         g dg dg dg}|j                  |      }g dg dg dg dg dg dg dg}t        j                   |t              }|j                  |      }t        j                   g dg dg dg dg dg dg dgt              }|j                  |      }t        j                  |j                  t              }|j                  |      }t        j                  ||dd	|
       t        ||       y )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  s      F#)))))))+ ::hd3::h'zz00000002 :>? zz$hhtzz.jjotV!*+C	9!#x0r:   c           
      X   g dg dg dg}|j                  |      }g dg dg dg dg dg dg dg}|j                  |      }t        j                   g dg dg dg dg dg dg dgt              }|j                  |      }t        j                  ||d	d
      }t        ||       y )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  s    
  F#)))))))+ ::h'zz00000002 :>? zz$$$T623C!#x0r:   c           
      H   g dg dg dg}|j                  |      }g dg dg dg dg dg dg dg}t        j                   |t              }|j                  |      }t        j                   g dg dg dg dg dg dg dgt              }|j                  |      }t        j                  |j                  t              }|j                  |      }t        j                  ||d	d
|       t        ||       t        j                  ||d	d
|       t        ||       y )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::h'zz00000002 :>? zz$hhtzz.jjotV!*+C	9!#x0 	tV!*+D	:!$1r:   c           
         g dg dg dg}|j                  |      }g dg dg dg dg dg dg dg}t        j                   |t              }|j                  |      }t        j                   g d	g d
g dg dg dg d
g d	gt              }|j                  |      }t        j                  |j                  t              }|j                  |      }t        j                  ||dd|d       t        ||       y )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  s      F#)))))))+ ::hd3::h'zz00000002 :>? zz$hhtzz.jjotV!*+C	J!#x0r:   c           
      X   g dg dg dg}|j                  |      }g dg dg dg dg dg dg dg}|j                  |      }t        j                   g dg dg dg dg dg dg dgt              }|j                  |      }t        j                  ||dd	
      }t        ||       y r&  r-  r.  s         r8   test_binary_erosion32z+TestNdimageMorphology.test_binary_erosion32  s      F#)))))))+ ::h'zz00000002 :>? zz$$$T623C!#x0r:   c           
         g dg dg dg}|j                  |      }g dg dg dg dg dg dg dg}|j                  |      }g dg dg dg dg dg dg dg}|j                  |      }t        j                   g dg d	g d
g d
g d
g dg dgt              }|j                  |      }t        j                  ||d|d      }t        ||       y )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$zz00000002 :>? zz$$$T623$2O!#x0r:   c           
         g dg dg dg}|j                  |      }g dg dg dg dg dg dg dg}|j                  |      }g dg dg dg dg dg dg dg}|j                  |      }t        j                   g dg dg dg dg dg dg dgt              }|j                  |      }t        j                  ||d	|
      }t        ||       y )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$zz00000002 :>? zz$$$T623$@!#x0r:   c           
         g dg dg dg}|j                  |      }g dg dg dg dg dg dg dg}t        j                   |t              }|j                  |      }t        j                   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        j                   |t              }|j                  |      }|j                  ||      }|j                  ||j	                  |            }|j                  ||      }t        j                  |j                  t              }|j                  |      }t        j                  ||dd|d|       t        ||       y )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#%%%%%%%' zz$d+zz$zz00000002 :>? zz$$$$$$$$& jjD)jjo>>#t,nnT2>>$#78==3/hhtzz.jjotV!*+C&.T	; 	"#x0r:   c                    g dg dg dg}|j                  |      }g dg dg dg dg dg dg dg dg}t        j                   |t              }|j                  |      }g dg dg dg d	g d
g dg dg dg}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                  |      }|j                  ||      }|j                  ||j	                  |            }|j                  ||      }t        j                  |||dd      }t        ||       y )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  sB     F#((((((((* zz$d+zz$'''''''') jjD)jjozz344444446 >BC zz$>>#t,nnT2>>$#78==3/$$T623HF!#x0r:   c                    t        j                  g dg dg dgt              }|j                  |      }|j                  |      }t	        j
                  |||ddd      }||u sJ t        t	        j
                  ||dd      |       y )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     JJ	!!#*.0 JJqMMM!$$Q!A!26DJaxx""1a046	r:   c                     t        j                  g dg dg dgt              }|j                  |      }d}t        t              5  t        j                  ||      }d d d        y # 1 sw Y   y xY w)Nr   r   r   g       @r,  )rU   r/   r   rj   	TypeErrorr   r   )r2   r3   r4   r,  _s        r8   test_binary_erosion38z+TestNdimageMorphology.test_binary_erosion38  sh    zz9$$&-13 zz$
9% 	D&&t
CA	D 	D 	Ds   A((A1c           
         t        j                  d      }g dg dg dg}|j                  |      }g dg dg dg dg dg dg dg}|j                  |t              }|j                  |      }t        j                  g dg dg dg d	g dg dg dgt              }|j                  |      }t        j                  |j
                  t              }|j                  |      }t        j                  ||d
||       t        ||       y 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     XXa[
 F#)))))))+ ::hd:3::h'zz00000002 :>? zz$hhtzz.jjotV!*4S	B!#x0r:   c           
      &   t        j                  d      }g dg dg dg}|j                  |      }g dg dg dg dg dg dg dg}t        j                  |t              }|j                  |      }t        j                  g dg dg dg d	g dg dg dgt              }|j                  |      }t        j                  |j
                  t              }|j                  |      }t        j                  ||d
||       t        ||       y rd  )	rU   int64r/   r   rQ   rR   r   r   r   re  s          r8   test_binary_erosion40z+TestNdimageMorphology.test_binary_erosion40  s     XXa[
 F#)))))))+ ::hd3::h'zz00000002 :>? zz$hhtzz.jjotV!*4S	B!#x0r:   c                     t        ||      }|j                  g |      }t        j                  |      }||j	                  d|j
                        k(  sJ y r   )r.   r   r   binary_dilationr/   r   r   s        r8   test_binary_dilation01z,TestNdimageMorphology.test_binary_dilation01  sQ     E"wwrw'%%d+bjj#))j4444r:   c                     t        ||      }|j                  g |      }t        j                  |      }||j	                  d      k(  sJ y )Nr   F)r.   rQ   r   rk  r/   r   s        r8   test_binary_dilation02z,TestNdimageMorphology.test_binary_dilation02  sI     E"xx%x(%%d+bjj''''r:   c                     t        ||      }|j                  dg|      }t        j                  |      }t	        ||j                  dg|j                               y Nr   r   )r.   r   r   rk  r   r/   r   r   s        r8   test_binary_dilation03z,TestNdimageMorphology.test_binary_dilation03  sQ     E"wws%w(%%d+!#rzz1#SYYz'GHr:   c                     t        ||      }|j                  dg|      }t        j                  |      }t	        ||j                  dg             y r   r.   rQ   r   rk  r   r/   r   s        r8   test_binary_dilation04z,TestNdimageMorphology.test_binary_dilation04  sH     E"xx5x)%%d+!#rzz1#7r:   c                     t        ||      }|j                  dg|      }t        j                  |      }t	        ||j                  g d             y Nr    r   r   r.   r   r   rk  r   r/   r   s        r8   test_binary_dilation05z,TestNdimageMorphology.test_binary_dilation05  sG     E"wws%w(%%d+!#rzz)'<=r:   c                     t        ||      }|j                  d|      }|j                  |d      }t        j                  |      }t        ||j                  g d             y )Nr   r   r   r   )r.   r   r   r   rk  r   r/   r   s        r8   "test_binary_dilation05_broadcastedz8TestNdimageMorphology.test_binary_dilation05_broadcasted'  sU     E"wwuEw*tT*%%d+!#rzz)'<=r:   c                     t        ||      }|j                  dg|      }t        j                  |      }t	        ||j                  g d             y )Nr    r   r   rs  r   s        r8   test_binary_dilation06z,TestNdimageMorphology.test_binary_dilation060  sG     E"xx5x)%%d+!#rzz)'<=r:   c                     t        j                  dg|      }d|d<   |j                  |      }t        j                  |      }t        ||j                  g d             y )Nr    r   r   r   rU   rQ   r/   r   rk  r   r   s        r8   test_binary_dilation07z,TestNdimageMorphology.test_binary_dilation078  sP     xx5)Qzz$%%d+!#rzz)'<=r:   c                     t        j                  dg|      }d|d<   d|d<   |j                  |      }t        j                  |      }t        ||j                  g d             y )Nr$   r   r   r    r   r~  r   s        r8   test_binary_dilation08z,TestNdimageMorphology.test_binary_dilation08A  sY     xx5)QQzz$%%d+!#rzz/'BCr:   c                     t        j                  dg|      }d|d<   |j                  |      }t        j                  |      }t        ||j                  g d             y )Nr$   r   r   r   r   r   r   r   r~  r   s        r8   test_binary_dilation09z,TestNdimageMorphology.test_binary_dilation09K  sP     xx5)Qzz$%%d+!#rzz/'BCr:   c                     t        j                  dg|      }d|d<   |j                  |      }t        j                  |d      }t        ||j                  g d             y )Nr$   r   r   r   r   r   r~  r   s        r8   test_binary_dilation10z,TestNdimageMorphology.test_binary_dilation10T  sR     xx5)Qzz$%%d26!#rzz/'BCr:   c                     t        j                  dg|      }d|d<   |j                  |      }t        j                  |d      }t        ||j                  g d             y )Nr$   r   r   r  r   r   r   r   r   r~  r   s        r8   test_binary_dilation11z,TestNdimageMorphology.test_binary_dilation11]  sR     xx5)Qzz$%%d15!#rzz/'BCr:   c                     t        j                  dg|      }d|d<   |j                  |      }|j                  g d      }t        j                  ||      }t        ||j                  g d             y )Nr$   r   r   r   )r   r   r   r   r   r~  r   s         r8   test_binary_dilation12z,TestNdimageMorphology.test_binary_dilation12f  s`     xx5)Qzz$I&%%dF3!#rzz/'BCr:   c                     t        j                  dg|      }d|d<   |j                  |      }|j                  g d      }t        j                  ||d      }t        ||j                  g d             y )Nr$   r   r   r   r   r   r~  r   s         r8   test_binary_dilation13z,TestNdimageMorphology.test_binary_dilation13p  sb     xx5)Qzz$I&%%dFC!#rzz/'BCr:   c                     t        j                  dg|      }d|d<   |j                  |      }|j                  g d      }t        j                  ||d      }t        ||j                  g d             y )Nr$   r   r   r   r   r  )r   r   r   r   r   r~  r   s         r8   test_binary_dilation14z,TestNdimageMorphology.test_binary_dilation14z  sb     xx5)Qzz$I&%%dF2>!#rzz/'BCr:   c                     t        j                  dg|      }d|d<   |j                  |      }|j                  g d      }t        j                  ||dd      }t        ||j                  g d             y )Nr$   r   r   r   r   r   r   r   r~  r   s         r8   test_binary_dilation15z,TestNdimageMorphology.test_binary_dilation15  sh     xx5)Qzz$I&%%dF-/aA!#rzz/'BCr:   c                     t        ||      }|j                  ddg|      }t        j                  |      }t	        ||j                  dgg             y rp  rw  r   s        r8   test_binary_dilation16z,TestNdimageMorphology.test_binary_dilation16  sM     E"ww1vUw+%%d+!#rzzA3%'89r:   c                     t        ||      }|j                  ddg|      }t        j                  |      }t	        ||j                  dgg             y r   rs  r   s        r8   test_binary_dilation17z,TestNdimageMorphology.test_binary_dilation17  sM     E"xxAex,%%d+!#rzzA3%'89r:   c                     t        ||      }|j                  ddg|      }t        j                  |      }t	        ||j                  g dg             y )Nr   r    r   r   rw  r   s        r8   test_binary_dilation18z,TestNdimageMorphology.test_binary_dilation18  sK     E"ww1vUw+%%d+!#rzz9+'>?r:   c           	          t        ||      }|j                  ddg|      }t        j                  |      }t	        ||j                  g dg dg dg             y rv  rw  r   s        r8   test_binary_dilation19z,TestNdimageMorphology.test_binary_dilation19  sY     E"ww1vUw+%%d+!#rzz93<3<3> (? 	@r:   c           	          t        j                  ddg|      }d|d<   |j                  |      }t        j                  |      }t        ||j                  g dg dg dg             y )Nr    r   r   r   r   r   r   r~  r   s        r8   test_binary_dilation20z,TestNdimageMorphology.test_binary_dilation20  sb     xxAe,T
zz$%%d+!#rzz93<3<3> (? 	@r:   c           	      $   t        j                  dd      }|j                  |      }t        j                  ddg|      }d|d<   |j                  |      }t        j
                  ||      }t        ||j                  g dg dg dg             y )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     221a8F#xxAe,T
zz$%%dF3!#rzz93<3<3> (? 	@r:   c                 
   t        ||      }g dg dg dg dg dg dg dg dg}|j                  |      }|j                  g dg dg dg d	g d
g dg dg dg|      }t        j                  |      }t	        ||       y )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5 =B  C %%d+!#x0r:   c                    t        ||      }g dg dg dg dg dg dg dg dg}|j                  |      }|j                  g dg dg dg d	g d
g dg dg dg|      }t        j                  |d      }t	        ||       y )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5 =B  C %%d;!#x0r:   c                    t        ||      }g dg dg dg dg dg dg dg dg}|j                  |      }|j                  g dg dg dg d	g d
g dg dg dg|      }t        j                  |d      }t	        ||       y )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5 =B  C %%d6:!#x0r:   c                    t        ||      }g dg dg dg dg dg dg dg dg}|j                  |      }|j                  g dg dg dg d	g d
g dg dg dg|      }t        j                  |dd      }t	        ||       y )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5 =B  C %%d6J!#x0r:   c                 Z   t        ||      }t        j                  dd      }g dg dg dg dg dg dg dg dg}|j                  |      }|j                  |      }|j                  g dg dg dg dg d	g d
g dg dg|      }t        j                  ||      }t        ||       y )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"221a8,,,,,,,,. F#::h'zz333333335 =B  C %%dF3!#x0r:   c                 >   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}|j                  |      }|j                  |      }|j                  g d	g dg d	g dg d
g dg d	g d	g|      }t        j                  ||      }t	        ||       y )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  s     E"a&a&,,,,,,,,. F#::h'zz333333335 =B  C %%dF3!#x0r:   c                     t        ||      }g dg dg dg dg}|j                  |      }|j                  g dg dg dg dg|      }t        j                  |d      }t	        ||       y )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^  sy     E"    " ::h'zz<''') 16  7 %%d;!#x0r:   c                 8   ddgddgg}g dg dg dg dg dg}|j                  |      }|j                  |      }t        j                   g dg dg dg dg dgt              }|j                  |      }t        j                  ||d	      }t        ||       y )
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&#####	%
 F#::h'zz?****	, 48	9
 zz$%%dFqA!#x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}|j                  |      }|j                  |      }|j                  g dg dg dg dg dgt              }|j                  |      }t        j                  |j                  t              }|j                  |      }t        j                  ||d|	       t        ||       y )
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&#####	%
 F#::h'zz?****	, 48	  9
 zz$hhtzz.jjof3G!#x0r:   c                 8   ddgddgg}g dg dg dg dg dg}|j                  |      }|j                  |      }t        j                   g dg dg dg dg dgt              }|j                  |      }t        j                  ||d	
      }t        ||       y )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}|j                  |      }|j                  |      }t        j                   g dg dg dg dg dgt              }|j                  |      }t        j                  |j                  t              }|j                  |      }t        j                  ||d	|
       t        ||       y )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&#####	%
 F#::h'zz?****	, 48	9
 zz$hhtzz.jjof3G!#x0r:   c                     g dg dg dg}|j                  |      }t        j                   g dg dg dg dg dg dg dg dgt              }|j                  |      }t        j                   g dg dg d	g dg dg dg dg dgt              }|j                  |      }t        j                   g dg dg dg dg dg dg dg dgt              }|j                  |      }t        j                  ||d
|d      }t        ||       y )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9 AEF ::h'zz333333335 =AB zz$zz333333335 =AB zz$%%dFr+/aA!#x0r:   z)inplace output= arrays are numpy-specificc                    g dg dg dg}|j                  |      }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        
      }|j                  |      }t        j                  |j                  t        
      }|j                  |      }t        j                  ||d|d      }t        ||       y )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  s      F#,,,,,,,,. zz333333335 =AB zz$xx

$/zz$%%dFr+/aA!#x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                  ||      }|j                  |      }|j                  |      }|j                  g dg dg dg d	g d
g dg dg dg|      }t        j                  ||dd      }t        ||       y )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  sA    E"'''''''') zz333333335 6 )(((((((* zz$d+>>#t,nnT2>>$#78==3/zz$::h'zz333333335 =B  C %%d-3!E!#x0r:   c                     t        j                  g t              }|j                  |      }t	        j
                  |d      }||j                  d      k(  sJ y )Nr   r   r_  F)rU   rQ   r   r/   r   rk  )r2   r3   r4   r5   s       r8   test_binary_dilation36z,TestNdimageMorphology.test_binary_dilation36I  sK     xx$'zz$%%dr:bjj''''r:   c                    g dg dg dg}|j                  |      }t        j                   g dg dg dg dg dg dg dg dgt              }|j                  |      }t        j                   g dg dg d	g dg dg dg dg dgt              }|j                  |      }t        j                   g dg dg dg dg dg dg dg dgt              }|j                  |      }t        j                  |||d
      }t        ||       y )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9 AEF ::h'zz333333335 =AB zz$zz333333335 =AB zz$((v.2D!#x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}|j                  |      }|j                  |      }t        j                   g dg dg dg dg dg d	g dg dgt        
      }|j                  |      }t        j                  |j                  t        
      }|j                  |      }t        j                  |||d      }t        ||       y )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  s     -,,,,,,,. ::h'F#zz333333335 =AB zz$xx

$/zz$((v.2D!#x0r:   c                     |j                  t        j                  g t                    }|j                  t        j                  g t                    }t	        j
                  |      }||k(  sJ y )Nr   )r/   rU   rQ   r   r   r  )r2   r3   r4   r7   r5   s        r8   test_binary_propagation03z/TestNdimageMorphology.test_binary_propagation03  sR     zz"((2T23::bhhr67((.hr:   c                 
   t        ||      }g dg dg dg dg dg dg dg dg}|j                  |      }|j                  g dg dg dg dg d	g dg dg dg|
      }t        j                  |      }t	        ||       y )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5 =B  C $$T*!#x0r:   c                 Z   t        ||      }t        j                  dd      }g dg dg dg dg dg dg dg dg}|j                  |      }|j                  |      }|j                  g dg dg dg dg dg dg dg dg|	      }t        j                  ||      }t        ||       y )
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"221a8,,,,,,,,. ::h'F#zz333333335 =B  C $$T62!#x0r:   c                 
   t        ||      }g dg dg dg dg dg dg dg dg}|j                  |      }|j                  g dg d	g d
g dg dg dg dg dg|      }t        j                  |      }t	        ||       y )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                 Z   t        ||      }t        j                  dd      }g dg dg dg dg dg dg dg dg}|j                  |      }|j                  |      }|j                  g dg dg dg dg dg dg dg dg|	      }t        j                  ||      }t        ||       y )
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           
      J   t        j                  g dg dg dg dg dg dg dgt              }|j                  |      }t        j                  g dg dg dg dg dg dg dgt              }|j                  |      }t        j                  |      }t        ||       y )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9 AEF ::h'zz33333335 =AB zz$''-!#x0r:   c           
      J   t        j                  g dg dg dg dg dg dg dgt              }|j                  |      }t        j                  g dg dg dg dg dg dg dgt              }|j                  |      }t        j                  |      }t        ||       y )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9 AEF ::h'zz33333335 =AB zz$''-!#x0r:   c           
      J   t        j                  g dg dg dg dg dg dg dgt              }|j                  |      }t        j                  g dg dg dg dg dg dg dgt              }|j                  |      }t        j                  |      }t        ||       y )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           
      
   |j                   }t        j                  g dg dg dgt              }|j                  |      }t        j                  g dg dg dg dg dg dg dgt              }|j                  |      }|dk(  rt	        ||	      }	nt	        |
      }	|dv}
|
r||	d<   n|dk7  rt        j                  d        |||fi |	}d}|j                  |g|z  |      }|j                  |g|z  |      }g d}|j                  |       t        |      st        |      rA|j                  t        j                  |j                  t                    } |||f||d|	 n |||fd|i|	}t        ||       y )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	  s   ( MM	Y&&()-/ F#zz00000002 489 zz$,,&&9F(F$ -B B%1F>"QKKGHf// 88XJ/k8Bxxkx: K B<72;**RXXdjj$78Cv?c?? tV9$9&9CX&r:   c           	          |j                  g dg dg dg      }|j                  g dg dg      }t        j                  ||      }t        ||j                  g dg dg d	g             y )
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	  si    

O++- . JJ	956	%%eyA!&"$**o.=.=.? #@	Ar:   z!output=array requires buffer viewz
dask.arrayz(https://github.com/cupy/cupy/issues/8398c           	          |j                  g dg dg dg      }|j                  g dg dg      }t        j                  |||       t        ||j                  g dg dg d	g             y )
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	  sj     

O++- . JJ	956	UiF!%"$**o.=.=.? #@	
r:   c           	         |j                  g dg dg dg      }|j                  g dg dg      }|j                  g dg dg      }t        j                  |||      }t        ||j                  g dg d	g d
g             y )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	      

O++- . JJ	956	JJ	956	%%ey09;!&"$**o.=.=.? #@	
r:   c           	         |j                  g dg dg dg      }|j                  g dg dg      }|j                  g dg dg      }t        j                  |||      }t        ||j                  g dg d	g d
g             y )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           	          |j                  g dg dg dg      }|j                  g dg dg      }t        j                  ||      }t        ||j                  g dg dg d	g             y )
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	  sh    

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

O++- . JJ	956	JJ	956	&&u	1:<!&"$**o.=.=.? #@	
r:   c           	         |j                  g dg dg dg      }|j                  g dg dg      }|j                  g dg dg      }t        j                  |||      }t        ||j                  g dg d	g d
g             y )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    

O++- . JJ	956	JJ	956	&&u	1:<!&"$**.?.?.=.? #@	
r:   c                    |j                  g dg dg dg      }|j                  g dg dg      }t        j                  ||      }t        j                  ||      }t        j                  ||      }t        ||       y 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	  sr    

O++- . JJ	956	""5I>((	B%%eyA!&(3r:   c                 <   |j                  g dg dg dg      }|j                  g dg dg      }|j                  g dg dg      }t        j                  |||      }t        j                  |||      }t        j                  |||      }t        ||       y 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    

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

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

O++- . JJ	956	JJ	956	##EY.79''y2;=%%ey09;!&(3r:   c                    |j                  g dg dg dg      }|j                  g dg dg      }|j                  g dg dg      }t        j                  |||      }t        j                  |||      }||z
  }|j	                  |j
                  |j                        }t        j                  ||||	       t        ||       y 
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     

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

O++- . JJ	956	JJ	956	$$Ui/8:##EY.79$;//:CE!&(3r:   c                    |j                  g dg dg dg      }|j                  g dg dg      }|j                  g dg dg      }t        j                  |||      }t        j                  |||      }||z   d|z  z
  }|j	                  |j
                  |j                  	      }t        j                  ||||
       t        ||       y )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     

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

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

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

O++- . JJ	956	JJ	956	""5I-683;%%ey09;!&(3r:   z	cupy#8399c           
         t        j                  g dg dg dg dg dg dg dgt              }|j                  |      }t        j                  dt              }|j                  |      }t        j                  g dg dg dg d	g d
g d	g dgt              }|j                  |      }t	        j
                  ||      }t        ||       y )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3 ;?@ 

5!GGF$/	JJy)	::44444446 >BC ::h'%%eyA)r:   c                    t        j                  dt              }t        j                  dt              }|j	                  |      }|j	                  |      }|j                  ||j                        }t        j                  |||       y 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
  sj     q%GGF$/	

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

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

O++- . JJ	956	JJ	956	""5I-68;%%ey09;!&(3r:   zcupy/cupy#8399c           
         t        j                  g dg dg dg dg dg dg dgt              }|j                  |      }t        j                  dt              }|j                  |      }t        j                  g dg dg dg dg d	g dg d
gt              }|j                  |      }t	        j
                  ||      }t        ||       y )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                    |j                  t        j                  dt                    }|j                  t        j                  dt                    }|j                  ||j                        }t        j                  |||       y r]  )	r/   rU   r^  r   r   r_  rS   r   rc  r`  s        r8   test_black_tophat04z)TestNdimageMorphology.test_black_tophat04
  s`     

266!401JJrwwvT:;	 uBJJ7UiGr:   mode)reflectconstantnearestmirrorwrapfootprint_mode)sizer  rX  c           
      J   |j                  g dg dg dg dg dg dg dg      }t        ||      }|d	k(  rd
|d	<   n|j                  g dg dg      |d<   |dk(  r|j                  |d         |d<    ||fi |}	d}
|j                  |	g|
z  |      }	|j                  |g|
z  |      }g d}|j	                  |       t        |      st        |      r4|j                  |	j                  |	j                        } ||f||d| n ||fd|i|}t        ||	       y )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
  s8   4 zz00000002 3 V$/V##F6N"$**i-C"DF;[("$,,vk/B"CF;'' 88XJ/k8Bxxkx: K B<72;((8>>(@C7c77 t1$1&1CX&r:   !inplace output= is numpy-specificc                    t        ||      }g dg dg dg}|j                  |      }g dg dg dg dg dg dg dg dg}|j                  |      }|j                  g dg dg dg dg dg d	g d	g dg|
      }|j                  t        j                  |j                  t
        
            }t        j                  |||       t        ||       y )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#########% ::h'zz?*******, 49  : jj$**D9:""4<!#x0r:   c                    t        ||      }g dg dg dg}g dg dg dg dg}|j                  |      }|j                  |      }|j                  g dg dg dg dg|      }t        j                  ||      }t	        ||       y )	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5 =B  C ((v6!#x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}|j                  |      }|j                  |      }|j                  |      }|j                  g dg dg dg d	g d
g dg dg dg|      }t        j                  |||      }t	        ||       y )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\  s     E"  -,,,,,,,. **W%**W%::h'zz333333335 =B  C ((w@!#x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45[[We,.0 - 6.0` w445[[We,.0 - 6.0` w445[[We,.0 - 6.0b K w445[[We,0/ - 6
0/d v&PQw445[[We,-0 - 6 R-0^ w445[[We,-0 - 6-0^ w445 6  w44557[[We,%0 -7%0N w44557[[We,#0 -7#0J I w556[[We,// - 7
//b R w556 7( w~6w556[[We,% - 7 7%" f%OPw55446[[We,* -6 Q*8 D w55446[[We,:/ -6:/x w55446[[We,, -6,  w55446[[We,, -6,  Q w5569 79
 R w556 7( w889 : w8895 :5 w8897 :7 w8897 :7 w0011 21 w0011 21 w001  2   w--.[[We,5 - /5 w--.[[We,5 - /5 w--.[[We,8 - /8 w--.[[We,8 - /8 w--.[[We,> - /> v&PQw--.[[We,> - / R> w--.[[We,> - /> w--.[[We,D - /D w--.[[We,D - /D w--.[[We,D - /D w--.[[We,D - /D w--.[[We,D - /D w--.[[We,D - /D w--.[[We,D - /D w--.[[We,D - /D w--.[[We,D - /D w--.[[We,: - /: w--.[[We,: - /: w--.[[We,@ - /@ w--.[[We,@ - /@ w--.[[We,@ - /@ w--.[[We,@ - /@ w--.[[We,1 - /1, w--.[[We,1 - /10 w--.[[We,1 - /10 w--.[[We,1 - /14 w--.[[We,1 - /16 N w--.1 /12 dxHJvOQw--.1 /QJ
18 N w--.1 /12 dxHJvOQw--.2 /QJ
2B dxHJw--.1 /J18 vOQw--.1 /Q12 vOQw--.1 /Q1B w--.1 /1B dxHJw--.'1 /J'1R vOQw--.'1 /Q'1R dxHJvOQw--. /QJ
 w--.D /D dxHJvOQw--.1 /QJ
1: dxHJvOQw--.1 /QJ
1: [[We,w../5 0 -5 [[We,w../( 0 -( [[We,w../I 0 -I [[We,w../8 0 -8 [[We,w../> 0 -> [[We,w../> 0 -> [[We,w../> 0 -> [[We,w../> 0 -> [[We,w../D 0 -D [[We,w../D 0 -D [[We,w../D 0 -D [[We,w../D 0 -D [[We,w../D 0 -D [[We,w../D 0 -D [[We,w../D 0 -D [[We,w../D 0 -D [[We,w../: 0 -: [[We,w../: 0 -: [[We,w../@ 0 -@ [[We,w../@ 0 -@ [[We,w../@ 0 -@ [[We,w../	@ 0 -	@ [[We,w../1 0 -1, [[We,w../1 0 -1, [[We,w../1 0 -1, [[We,w../1 0 -1, [[We,w../1 0 -10 [[We,w../1 0 -12 [[We,w../1 0 -1 vOQw../1 0Q1& dx@BvOQw../1 0QB
1* vOQw../1 0Q1& dx@BvOQw../1 0QB
1* vOQw../#1 0Q#1J dxHJvOQw../1 0QJ
18 [[We,w../.1 0 -.1` w../( 0( w112"1 3"1H w1121 31: w112 3 w--.[[We,1 - /1, w--.[[We,1 - /10 [[We,w--.1 / -1, [[We,w--.1 / -10 w0011 21, w0011 21( w0011 21( t$KMLN[[^QF3[[X'89[[]I6[[ !7!78 !8!89 !7!78 !7!78 !;!;< !;!;< !:!:;

*'
 7 : 4NM %&*'X w++,	A -	A k*MNl+NOv&PQw++,
 - R P O
 w++,
 -
 w++,
 -
 w,,-

 .

 w,,-
 .
 w,,-
 .
 w++,4 -4 w++,4 -4 w++,4 -4 w++,4 -4 d+NOw,,g.B.B55747 P4  w,,g.B.B557474 d+NOw,,g.B.B44646 P4  w,,g.B.B446464 k*MNl+NOw++W-A-AB4 C P O4 w++W-A-AB4 C4 vk2w++,* - 3*0 k*MNl+NOw++,	H - P O	H k*MNl+NOw++W-A-AB4 C P O4 w++W-A-AB4 C4 v&67w++,* - 8*0 k*MNl+NOw++,H - P OH t$KMLN[[X'89[[]I6[[V &8 9[[- 0= >[[ !5!56 !6!67 !5!56 !5!56 !>!>? !?!?@ !5!56 !5!56		
"'>9 7 :NM %0"'H dx@Bw112[[We,1 - 3B16 w112[[We,1 - 31$ w112[[We,1 - 31r:   r   c                       e Zd Zd Zd Zd Zy)TestDilateFixc                    |j                  g dg dg dg dg dg|j                        | _        |j                  d      | _        t        j                  | j                  | j                        }t        |      r!|j                  |j                        | _	        y |j                  ||j                        | _	        y )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
 WWV_
,,TZZ4::N
B<(oobhh7DO ii
BHH=DOr:   c                     | j                  |       t        j                  | j                  | j                        }t        || j                  dz          y )NrX  r   )r  r   r*  r  r  r   r  r2   r3   results      r8   test_dilation_square_structurez,TestDilateFix.test_dilation_square_structure  s:    B&&tzzTZZH!&$//A*=>r:   c                     | j                  |       t        j                  | j                  d      }t	        || j
                         y )Nr    )rr  )r  r   r*  r  r   r  r  s      r8   test_dilation_scalar_sizez'TestDilateFix.test_dilation_scalar_size  s1    B&&tzz:!&$//:r:   N)r  r  r  r  r  r  r  r:   r8   r  r  }  s    
>"?;r:   r  c                       e Zd Zd Zd Zd Zy)TestBinaryOpeningClosingc                 z   t        j                  dt              }d|ddddf<   d|d<   |j                  |      | _        |j                  d      | _        t        j                  | j                  | j                  dd d      | _	        t        j                  | j                  | j                  dd d      | _        y )	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    HHV4(!A#qs($ZZ]
WWV_
!00TZZ12D!=!00TZZ12D!=r:   c           
          | j                  |       t        j                  | j                  | j                  dd dd dd      }t        || j                         y Nr   r   F)r  r   r  r  r  r   r  )r2   r3   
opened_news      r8   test_opening_new_argumentsz3TestBinaryOpeningClosing.test_opening_new_arguments  D    B++DJJ

At,-tQ?

DOO4r:   c           
          | j                  |       t        j                  | j                  | j                  dd dd dd      }t        || j                         y 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    s    	=55r:   r  c                     | j                  dg      }t        t        t        j                  |d       t        t        t        j                  |d       y Nr   g      ?r_        ?)r   rj   r`  r   r   r3   r4   s     r8   )test_binary_erosion_noninteger_iterationsr    ;     77A3<D)W33TcJ)W33TcJr:   c                     | j                  dg      }t        t        t        j                  |d       t        t        t        j                  |d       y r  )r   rj   r`  r   rk  r  s     r8   *test_binary_dilation_noninteger_iterationsr    s;     77A3<D)W44dsK)W44dsKr:   c                     | j                  dg      }t        t        t        j                  |d       t        t        t        j                  |d       y r  )r   rj   r`  r   r  r  s     r8   )test_binary_opening_noninteger_iterationsr    r  r:   c                     | j                  dg      }t        t        t        j                  |d       t        t        t        j                  |d       y r  )r   rj   r`  r   r  r  s     r8   )test_binary_closing_noninteger_iterationsr    r  r:   r^   r$  r_   c           
      ,   | j                  dg      }t        t        j                  |dd      t        j                  |dt	        d                   t        t        j                  |dd      t        j                  |dt	        d                   y )Nr   r   r  )r,  rY  r   )r   r   r   r   r   r  s     r8   ;test_binary_closing_noninteger_brute_force_passes_when_truer    su     77A3<DG**4A3O**4A4PS9U G**4A3O**4A4PS9Ur:   Trv  r0  r2  r  r,  r$   rY  Fc                 0   t         j                  j                  d      }|j                  ddd      j	                  t
              }|j                  |      }|j                         } | |||      }t        ||        | ||||       t        ||       y )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     YY""3'F>>aac>299$?D::dD 		IDkjIHD)$ 	;:dKD(#r:   c                 Z   t         j                  j                  d      }|j                  ddd      j	                  t
              }| j                  |      }|j                         }t        j                  |      }t        ||       t        j                  ||       t        ||       y )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     YY""3'F>>aac>299$?D::dD 		I))$/HD)$ tD1D(#r:   c                     d}t        j                  t        |      5  t        j                  | j                  d      d       d d d        y # 1 sw Y   y xY w)Nzinvalid metric provided)matchr  garbager   )r  r
   
ValueErrorr   rq   r   )r3   msgs     r8   *test_distance_transform_cdt_invalid_metricr    sE    
#C	z	- 9&&rwwv.7	99 9 9s   '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       *  ;;// KK11 g-1 g-1T[ 7**G,A,AB; ; C;B 7))7+A+AB5 5 C54 7))*K +K 7**+L ,L 7))*K +K 7))*K +K 
J 7))* + $F8<>6"ST
W334W445W334W334	 1v.6$ 7 / U>$ $F8<>7--.$ />$ 71129 39r:   