
    Џkh              	          d dl Zd dl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 eddd	g
      gZ G d d      Z G d d      Z G d d      Zd Zd Zd Zd Z edd      d        Z eddgd       edd      ej                  j7                  dg d      ej                  j7                  dddg      ej                  j7                  dd dg      d!                                    Z eddgd      d"        Z edd#      d$        Zy)%    N)is_cupyis_numpyxp_assert_closexp_assert_equalassert_array_almost_equal)raises)ndimage   )typesTcupy	jax.numpy)cpu_only
exceptionsc                       e Zd Z edd      ej
                  j                  de      d               Z edd      ej
                  j                  de      d               Z	 edd      ej
                  j                  de      d               Z
 edd	
      ej
                  j                  de      d               Z edd      ej
                  j                  de      d               Z edd      ej
                  j                  de      d               Z edd      d        Z edd      ej
                  j                  de      d               Z edd      ej
                  j                  de      d               Z edd
      ej
                  j                  de      d               Z edd
      d        Z edd       edd      ej
                  j                  de      d                      Z edd      ej
                  j                  de      d               Z edd
      ej
                  j                  de      d               Z edd      ej
                  j                  de      d               Z edd      ej
                  j                  de      d               Z edd      d         Z edd
      d!        Z edd"
      d#        Z edd"
      d$        Z edd"
      d%        Z edd"
      d&        Zd' Zd( Z d) Z!ej
                  j                  de      d*        Z"ej
                  j                  de      d+        Z#ej
                  j                  de      d,        Z$ej
                  j                  de      d-        Z%ej
                  j                  de      d.        Z&ej
                  j                  de       edd/      d0               Z'ej
                  j                  de      d1        Z(ej
                  j                  de      d2        Z)ej
                  j                  de      d3        Z*ej
                  j                  de      d4        Z+ej
                  j                  de      d5        Z,ej
                  j                  de      d6        Z-ej
                  j                  de      d7        Z.ej
                  j                  de      d8        Z/ej
                  j                  de      d9        Z0ej
                  j                  de      d:        Z1ej
                  j                  de      d;        Z2ej
                  j                  de      d<        Z3ej
                  j                  de      d=        Z4ej
                  j                  de      d>        Z5ej
                  j                  de      d?        Z6ej
                  j                  de      d@        Z7ej
                  j                  de      dA        Z8ej
                  j                  de      dB        Z9ej
                  j                  de      dC        Z:ej
                  j                  de      dD        Z;ej
                  j                  de      dE        Z< eddF      dG        Z= eddgdHI       eddJ      dK               Z> eddF      dL        Z? eddgdHI       eddJ      dM               Z@ eddgdHI      dN        ZA eddJ      dO        ZB eddJ      dP        ZCdQ ZD eddgdHI      dR        ZE eddJ      dS        ZF eddgdHI       eddJ      dT               ZGdU ZH eddgdHI       eddJ      dV               ZI eddgdHI       eddJ      dW               ZJej
                  j                  de      dX        ZKej
                  j                  de      dY        ZLej
                  j                  de      dZ        ZMej
                  j                  de      d[        ZNej
                  j                  de      d\        ZOej
                  j                  de      d]        ZPej
                  j                  de      d^        ZQej
                  j                  de      d_        ZRej
                  j                  de      d`        ZSej
                  j                  de      da        ZTej
                  j                  de      db        ZUej
                  j                  de      dc        ZVej
                  j                  de      dd        ZWej
                  j                  de      de        ZXej
                  j                  de      df        ZYej
                  j                  de      dg        ZZej
                  j                  de      dh        Z[ej
                  j                  de      di        Z\ej
                  j                  de      dj        Z]ej
                  j                  de      dk        Z^ej
                  j                  de      dl        Z_ej
                  j                  de      dm        Z`ej
                  j                  de      dn        Zaej
                  j                  de      do        Zbej
                  j                  de      dp        Zcej
                  j                  de      dq        Zdej
                  j                  de      dr        Zeej
                  j                  de      ds        Zfej
                  j                  de      dt        Zg eddJ      du        Zh eddgdvI       eddJ      dw               Zi eddJ      dx        Zj eddgdvI       eddJ      dy               Zk eddJ      dz        Zl eddgd{I       eddJ      d|               Zmej
                  j                  de      d}        Znd~ Zod Zpd Zqd Zrej
                  j                  de      d        Zsej
                  j                  de      d        Ztej
                  j                  de      d        Zuej
                  j                  de      d        Zvd Zwd Zxd Zy ed       edd       edd      ej
                  j                  dddg      ej
                  j                  dddg      ej
                  j                  dg d      ej
                  j                  dg d      d                                                  Zzd Z{ edd       edd       edd      d                      Z|d Z}d Z~d Zd Zd Zd Zd Zd Zd Z eddv
      d        Zd Z eddv
      d        Zd Z edd       edd      d               Zd Z edd      d        Z edd       edd      d               Z edd       edd      d               Zd Z edd      d        Z edd       edd      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                  dg d      d                                                         Z eddgdI      ej
                  j                  de      d               Zej
                  j                  de      d        Zej
                  j                  de      d        Zy)TestNdimageMorphologyr   z)CuPy does not have distance_transform_bf.reason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          _/var/www/teggl/fontify/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    r1   r5   s          r<   test_distance_transform_bf02z2TestNdimageMorphology.test_distance_transform_bf02F   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   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    r1   r5   s          r<   test_distance_transform_bf03z2TestNdimageMorphology.test_distance_transform_bf03x   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_onlyr   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      \  }}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rN   r   indicesrL   r   r   rP   rL   r   rP   )r2   r3   r	   r4   zerosshapefloat64appendnprP   int32r   
r6   r   r7   r8   tdttftdtsftsdtr:   s
             r<   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>   z(CuPy does not have distance_transform_bfc                    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   rd       rd   r   r   r   r!   r"   r#   r%   r'   r*   r+   r,   r-   r.   r/   r0   r1   r5   s          r<   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
   rb   )	r   r   r   r
   r   r
   r   r   r   r   )	r   r   r
   r   	   r   r
   r   r   r!   )	r   r   r   r   r   r   r   r   r   )	r$   r$   r$   r$   r   r$   r$   r$   r$   )	r   r   r   r   r   r   r   r   r   )	r(   r(   r(   r(   r&   r(   r(   r(   r(   )	r&   r&   r&   r&   r)   r&   r&   r&   r&   r+   r,   r-   )	r   r
   r   r   r&   r&   r&   r)   r    r0   )	r   r
   r
   r
   r)   r)   r)   r)   r    r.   r1   r5   s          r<   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   FrM   )r3   assert_raisesRuntimeErrorr	   r4   )r6   r7   r8   s      r<   test_distance_transform_bf07z2TestNdimageMorphology.test_distance_transform_bf07B  sf     zz6666666668 9 <( 	))uU	 	 	s   AA')CuPy does not have distance_transform_cdtc                    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-   rB   )	r   r
   r
   r
   r   r(   r&   r)   r    )	r   r
   r   r   r   r(   r&   r)   r    r2   r3   r	   distance_transform_cdtr4   r   r6   r   r7   r8   r9   r:   bfr;   s           r<   test_distance_transform_cdt01z3TestNdimageMorphology.test_distance_transform_cdt01S  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   rE   Tr   r!   rp   )	r$   r$   r   r   r
   r   r   r$   r$   )	r   r   r$   r   r   r   r$   r   r   )	r(   r(   r   r&   r)   r&   r   r(   r(   rq   r+   r,   r-   )	r   r
   r   r   r$   r   r&   r)   r    )	r   r
   r
   r   r   r&   r&   r)   r    )	r   r
   r
   r
   r   r&   r)   r)   r    rG   rF   rr   rt   s           r<   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   rK   FrM   rO   rQ   rR   rS   )r2   r3   r	   rs   rT   rU   rY   rW   rX   rP   r   rZ   s
             r<   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   TFrO   )	r3   rT   ndimrU   rY   rk   rl   r	   r4   )r6   r7   r8   indices_outs       r<   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)r2   r3   onesr	   rs   sum)r6   r   r7   r8   
metric_argactuals         r<   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)r2   r3   r	   distance_transform_edtr4   r   rX   rP   rU   r   astyperV   multiplyaddreducesqrt)	r6   r   r7   r8   r9   r:   ru   np_ftr_   s	            r<   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   rK   r   rM   FrO   rQ   rR   rS   )r2   r3   r	   r   rT   rU   rV   rW   rX   rP   rY   r   rZ   s
             r<   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   rc   r2   r3   r	   r4   r   r   r6   r   r7   r8   refr9   s         r<   test_distance_transform_edt03z3TestNdimageMorphology.test_distance_transform_edt03a       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         r<   test_distance_transform_edt4z2TestNdimageMorphology.test_distance_transform_edt4s  r   r>   z8Only 2D and 3D distance transforms are supported in CuPyc                     t        j                  |j                  d            }t        ||j                  dg             y )NF        )r	   r   r3   r   )r6   r7   r9   s      r<   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   rN   rL   )r3   rT   rU   rV   rk   rl   r	   r4   )r6   r7   r8   distances_outs       r<   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z8generate_binary_structure always generates numpy objectsc                 >    t        j                  dd      }|dk(  sJ y )Nr   r
   )r	   generate_binary_structurer6   r7   structs      r<   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      r<   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      r<   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      r<   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   r3   r	   iterate_structurerX   boolr   r6   r7   r   r9   r;   s        r<   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        r<   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        r<   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
   r2   r   r	   binary_erosionr3   r   r6   r   r7   r8   r9   s        r<   test_binary_erosion01z+TestNdimageMorphology.test_binary_erosion01  sO    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        r<   test_binary_erosion02z+TestNdimageMorphology.test_binary_erosion02  sQ    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   r2   r   r	   r   r   r3   r   s        r<   test_binary_erosion03z+TestNdimageMorphology.test_binary_erosion03  sF    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        r<   test_binary_erosion04z+TestNdimageMorphology.test_binary_erosion04  sH    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        r<   test_binary_erosion05z+TestNdimageMorphology.test_binary_erosion05	  sE    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   )r2   r   broadcast_tor	   r   r   r3   r   s        r<   !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        r<   test_binary_erosion06z+TestNdimageMorphology.test_binary_erosion06  sG    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        r<   test_binary_erosion07z+TestNdimageMorphology.test_binary_erosion07   sE    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        r<   test_binary_erosion08z+TestNdimageMorphology.test_binary_erosion08'  sG    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   rX   r   r3   r	   r   r   r   s        r<   test_binary_erosion09z+TestNdimageMorphology.test_binary_erosion09.  sN    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        r<   test_binary_erosion10z+TestNdimageMorphology.test_binary_erosion106  sP    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   r6   r   r7   r8   r   r9   s         r<   test_binary_erosion11z+TestNdimageMorphology.test_binary_erosion11>  s`    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         r<   test_binary_erosion12z+TestNdimageMorphology.test_binary_erosion12G  sb    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         r<   test_binary_erosion13z+TestNdimageMorphology.test_binary_erosion13P  sb    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         r<   test_binary_erosion14z+TestNdimageMorphology.test_binary_erosion14Y  sd    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         r<   test_binary_erosion15z+TestNdimageMorphology.test_binary_erosion15b  sf    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        r<   test_binary_erosion16z+TestNdimageMorphology.test_binary_erosion16k  sM    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        r<   test_binary_erosion17z+TestNdimageMorphology.test_binary_erosion17r  sK    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        r<   test_binary_erosion18z+TestNdimageMorphology.test_binary_erosion18y  sI    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        r<   test_binary_erosion19z+TestNdimageMorphology.test_binary_erosion19  sK    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        r<   test_binary_erosion20z+TestNdimageMorphology.test_binary_erosion20  sW    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        r<   test_binary_erosion21z+TestNdimageMorphology.test_binary_erosion21  sY    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   r2   r3   r	   r   r   r6   r   r7   r;   r8   r9   s         r<   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   )r2   r	   r   r3   r   r   r6   r   r7   r   r;   r8   r9   s          r<   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          r<   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          r<   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          r<   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r3   rX   r   r	   r   r   r6   r7   r   r;   r8   r9   s         r<   test_binary_erosion27z+TestNdimageMorphology.test_binary_erosion27  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rI   r   r   /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r3   rX   r   rT   rU   r	   r   r   r0  s         r<   test_binary_erosion28z+TestNdimageMorphology.test_binary_erosion285  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/  r0  s         r<   test_binary_erosion29z+TestNdimageMorphology.test_binary_erosion29U  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,  r:  r
   r$   r5  r7  r0  s         r<   test_binary_erosion30z+TestNdimageMorphology.test_binary_erosion30q  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,  r:  r
   r$  )r   r.  r6  r   r7  r0  s         r<   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/  r0  s         r<   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   r:  )r   r   r   r
   r   r   r
   r+  r*  r   r
   r   )r   maskr.  r/  r6   r7   r   r;   rI  r8   r9   s          r<   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   rI  r/  rJ  s          r<   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+  rM  r   r*  r,  r:  r?  r@  rA  rB  r
   r$  )r   r.  r6  r   rI  )r3   rX   r   logical_andlogical_not
logical_orrT   rU   r	   r   r   )r6   r7   r   rI  r8   tmpr;   r9   s           r<   test_binary_erosion35z+TestNdimageMorphology.test_binary_erosion35  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$  )rI  r   r   )	r3   rX   r   rP  rQ  rR  r	   r   r   )r6   r7   r   rI  rS  r8   r;   r9   s           r<   test_binary_erosion36z+TestNdimageMorphology.test_binary_erosion36>  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)	structurer6  r.  r   brute_force)rY  r.  r   )rX   r3   r   
zeros_liker	   r   r   )r6   r7   abr9   s        r<   test_binary_erosion37z+TestNdimageMorphology.test_binary_erosion37i  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.  )rX   r3   r   rk   	TypeErrorr	   r   )r6   r7   r8   r.  _s        r<   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,  r:  r
   r5  )	rX   rY   r3   r   rT   rU   r	   r   r   r6   r7   r.  r   r;   r8   r9   s          r<   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 re  )	rX   int64r3   r   rT   rU   r	   r   r   rf  s          r<   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   )r2   r   r	   binary_dilationr3   r   r   s        r<   test_binary_dilation01z,TestNdimageMorphology.test_binary_dilation01  sO    E"wwrw'%%d+bjj#))j4444r>   c                     t        ||      }|j                  g |      }t        j                  |      }||j	                  d      k(  sJ y )Nr   F)r2   rT   r	   rl  r3   r   s        r<   test_binary_dilation02z,TestNdimageMorphology.test_binary_dilation02  sG    E"xx%x(%%d+bjj''''r>   c                     t        ||      }|j                  dg|      }t        j                  |      }t	        ||j                  dg|j                               y Nr
   r   )r2   r   r	   rl  r   r3   r   r   s        r<   test_binary_dilation03z,TestNdimageMorphology.test_binary_dilation03  sO    E"wws%w(%%d+!#rzz1#SYYz'GHr>   c                     t        ||      }|j                  dg|      }t        j                  |      }t	        ||j                  dg             y r   r2   rT   r	   rl  r   r3   r   s        r<   test_binary_dilation04z,TestNdimageMorphology.test_binary_dilation04  sF    E"xx5x)%%d+!#rzz1#7r>   c                     t        ||      }|j                  dg|      }t        j                  |      }t	        ||j                  g d             y Nr$   r   r   r2   r   r	   rl  r   r3   r   s        r<   test_binary_dilation05z,TestNdimageMorphology.test_binary_dilation05  sE    E"wws%w(%%d+!#rzz)'<=r>   c                     t        ||      }|j                  d|      }|j                  |d      }t        j                  |      }t        ||j                  g d             y )Nr   r   r   r   )r2   r   r   r	   rl  r   r3   r   s        r<   "test_binary_dilation05_broadcastedz8TestNdimageMorphology.test_binary_dilation05_broadcasted  sS    E"wwuEw*tT*%%d+!#rzz)'<=r>   c                     t        ||      }|j                  dg|      }t        j                  |      }t	        ||j                  g d             y )Nr$   r   r   rt  r   s        r<   test_binary_dilation06z,TestNdimageMorphology.test_binary_dilation06  sE    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   rX   rT   r3   r	   rl  r   r   s        r<   test_binary_dilation07z,TestNdimageMorphology.test_binary_dilation07  sN    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        r<   test_binary_dilation08z,TestNdimageMorphology.test_binary_dilation08   sW    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        r<   test_binary_dilation09z,TestNdimageMorphology.test_binary_dilation09	  sN    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        r<   test_binary_dilation10z,TestNdimageMorphology.test_binary_dilation10  sP    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        r<   test_binary_dilation11z,TestNdimageMorphology.test_binary_dilation11  sP    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         r<   test_binary_dilation12z,TestNdimageMorphology.test_binary_dilation12!  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         r<   test_binary_dilation13z,TestNdimageMorphology.test_binary_dilation13*  s`    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         r<   test_binary_dilation14z,TestNdimageMorphology.test_binary_dilation143  s`    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         r<   test_binary_dilation15z,TestNdimageMorphology.test_binary_dilation15<  sf    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 rq  rx  r   s        r<   test_binary_dilation16z,TestNdimageMorphology.test_binary_dilation16F  sK    E"ww1vUw+%%d+!#rzzA3%'89r>   c                     t        ||      }|j                  ddg|      }t        j                  |      }t	        ||j                  dgg             y r   rt  r   s        r<   test_binary_dilation17z,TestNdimageMorphology.test_binary_dilation17M  sK    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   rx  r   s        r<   test_binary_dilation18z,TestNdimageMorphology.test_binary_dilation18T  sI    E"ww1vUw+%%d+!#rzz9+'>?r>   c           	          t        ||      }|j                  ddg|      }t        j                  |      }t	        ||j                  g dg dg dg             y rw  rx  r   s        r<   test_binary_dilation19z,TestNdimageMorphology.test_binary_dilation19[  sW    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        r<   test_binary_dilation20z,TestNdimageMorphology.test_binary_dilation20d  s`    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   r3   rX   rT   rl  r   )r6   r   r7   r   r8   r9   s         r<   test_binary_dilation21z,TestNdimageMorphology.test_binary_dilation21n  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   r2   r3   r	   rl  r   r  s         r<   test_binary_dilation22z,TestNdimageMorphology.test_binary_dilation22z  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         r<   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         r<   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         r<   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   )r2   r	   r   r3   rl  r   r  s          r<   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          r<   test_binary_dilation27z,TestNdimageMorphology.test_binary_dilation27  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         r<   test_binary_dilation28z,TestNdimageMorphology.test_binary_dilation28	  sw    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`  r3   rX   r   r	   rl  r   r0  s         r<   test_binary_dilation29z,TestNdimageMorphology.test_binary_dilation29       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.  r6  )r3   r   rX   rT   rU   r	   rl  r   r0  s         r<   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  r0  s         r<   test_binary_dilation31z,TestNdimageMorphology.test_binary_dilation31F  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  r3   rX   r   rT   rU   r	   rl  r   r0  s         r<   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   rV  r  r   r   r   r   r   r   r   r
   r   r   r   r.  rI  r   r  rJ  s          r<   test_binary_dilation33z,TestNdimageMorphology.test_binary_dilation33t  s     F#::777777779 AEF ::h'zz333333335 =AB zz$zz333333335 =AB zz$%%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  rJ  s          r<   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
   )rI  r   r   )
r2   rX   r3   r   rP  rQ  rR  r	   rl  r   )r6   r   r7   rS  r8   rI  r;   r9   s           r<   test_binary_dilation35z,TestNdimageMorphology.test_binary_dilation35  s?   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)rX   rT   r   r3   r	   rl  )r6   r7   r8   r9   s       r<   test_binary_dilation36z,TestNdimageMorphology.test_binary_dilation36  sI    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  rV  r  r   r  r   rI  r   )r3   rX   r   r	   binary_propagationr   rJ  s          r<   test_binary_propagation01z/TestNdimageMorphology.test_binary_propagation01  s    F#::777777779 AEF ::h'zz333333335 =AB zz$zz333333335 =AB zz$((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  )r3   rX   r   rT   rU   r	   r  r   rJ  s          r<   test_binary_propagation02z/TestNdimageMorphology.test_binary_propagation02  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   )r3   rX   rT   r   r	   r  )r6   r7   r8   r;   r9   s        r<   test_binary_propagation03z/TestNdimageMorphology.test_binary_propagation034  sP    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   )r2   r3   r	   binary_openingr   r  s         r<   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   )r2   r	   r   r3   r  r   r  s          r<   test_binary_opening02z+TestNdimageMorphology.test_binary_opening02R      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   )r2   r3   r	   binary_closingr   r  s         r<   test_binary_closing01z+TestNdimageMorphology.test_binary_closing01k  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   )r2   r	   r   r3   r  r   r  s          r<   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
  rX   r3   r   r	   binary_fill_holesr   r6   r7   r;   r8   r9   s        r<   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        r<   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        r<   test_binary_fill_holes03z.TestNdimageMorphology.test_binary_fill_holes03  r  r>   )r   z2these filters do not yet have axes support in CuPyr   z.these filters are not implemented in JAX.numpyr   r   r
   r   )r   r   )r   r   expand_axisr   r
   r   	func_name)r   rl  r  r  binary_hit_or_missr  r  c           
         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       t        t        |      }
 |
||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   r  )origin1origin2r  )r  r  r   r   z-border_value !=0 unsupported by this functionr(   r   r  r6  axesr  )rX   r3   r   dictpytestskipr2   r	   stackremover   r   rT   rU   r   )r6   r7   r  r  r   r   r   r8   kwargsborder_supportedfuncr;   n_repsr  r9   s                  r<   test_binary_axesz&TestNdimageMorphology.test_binary_axes  s     Y&&()-/ F#zz00000002 489 zz$,,&&9F(F$ -B B%1F>"QKKGHw	*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&   rh   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
   r3   r	   grey_erosionr   r6   r7   arrayr  r6  s        r<   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  r6  r  r  r  r  )r6   r7   r  r  s       r<   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  rY  r  r  r  r  r6   r7   r  r  rY  r6  s         r<   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         r<   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)   rh   rh   r(   r)   rh   r    rh   r)   r    r    r    r)   r)   r3   r	   grey_dilationr   r  s        r<   test_grey_dilation01z*TestNdimageMorphology.test_grey_dilation01J	  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         r<   test_grey_dilation02z*TestNdimageMorphology.test_grey_dilation02V	  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.  rh   r.  r    )rh   rh   rh   r    r    r(  r  s         r<   test_grey_dilation03z*TestNdimageMorphology.test_grey_dilation03d	  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  r3   r	   r  r)  grey_openingr   r6   r7   r  r  rS  r;   r6  s          r<   test_grey_opening01z)TestNdimageMorphology.test_grey_opening01r	  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  r2  r6   r7   r  r  rY  rS  r;   r6  s           r<   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 r1  r3   r	   r)  r  grey_closingr   r4  s          r<   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 r7  r;  r8  s           r<   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  rY  r6  )	r3   r	   r)  r  rT   rU   r   morphological_gradientr   	r6   r7   r  r  rY  tmp1tmp2r;   r6  s	            r<   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 r7  )r3   r	   r)  r  rC  r   rD  s	            r<   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   rB  )	r3   r	   r)  r  rT   rU   r   morphological_laplacer   rD  s	            r<   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   )r3   r	   r)  r  rK  r   rD  s	            r<   test_morphological_laplace02z2TestNdimageMorphology.test_morphological_laplace02	  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 rA  )r3   r	   r3  rT   rU   r   white_tophatr   r8  s           r<   test_white_tophat01z)TestNdimageMorphology.test_white_tophat01	  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 r7  )r3   r	   r3  rP  r   r8  s           r<   test_white_tophat02z)TestNdimageMorphology.test_white_tophat02	  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   rG  r   r   )r   r
   r
   r   r   r   r   )r
   r   r   r
   r
   r
   r   )r   r
   r
   r   r   r   r
   )r   r
   r
   r   r
   r   r
   )r   r   r   r
   r
   r
   r
   rY  )rX   r3   r   r   r	   rP  r   r6   r7   r  rY  r;   r6  s         r<   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   )rY  r6  )	rX   eyer   r   r3   
empty_likerV   r	   rP  r6   r7   r  rY  r6  s        r<   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 rA  )r3   r	   r<  rT   rU   r   black_tophatr   r8  s           r<   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 r7  )r3   r	   r<  rb  r   r8  s           r<   test_black_tophat02z)TestNdimageMorphology.test_black_tophat025
  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 )NrU  r,  rV  rG  r   r   )r   r
   r
   r
   r
   r
   r
   )r
   r   r   r   r   r   r
   )r
   r   r   r   r
   r   r
   rH  rW  )rX   r3   r   r   r	   rb  r   rX  s         r<   test_black_tophat03z)TestNdimageMorphology.test_black_tophat03B
  rZ  r>   c                    |j                  t        j                  dt                    }|j                  t        j                  dt                    }|j                  ||j                        }t        j                  |||       y r\  )	r3   rX   r]  r   r   r^  rV   r	   rb  r_  s        r<   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  rY  )r  r)  r3  r<  rK  rC  rP  rb  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<   t        t        |      }	 |	|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   rh   r$   r   r   r   )r   r   r   r   r   r   r   )r   rj  rq  )r   r$   r   r  r  rY  r(   r   r  r   r   r  )r3   r  	ones_liker2   r	   r  r  r   r   rT   rU   r   r   )r6   r7   r  r  r   rp  rj  r8   r  r	  r;   r
  r  r9   s                 r<   test_grey_axesz$TestNdimageMorphology.test_grey_axese
  sD   , zz00000002 3 V$/V##F6N"$**i-C"DF;[("$,,vk/B"CF;w	*'' 88XJ/k8Bxxkx: K B<72;((8>>(@C7c77 t1$1&1C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   r6  )	r2   r3   rX   rT   rU   r   r	   r  r   r  s          r<   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   r2   r3   r	   r  r   r  s          r<   test_hit_or_miss02z(TestNdimageMorphology.test_hit_or_miss02
  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"  rz  r  r  r  r  r  r  r   r{  )r6   r   r7   struct1struct2r;   r8   r9   s           r<   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)__name__
__module____qualname__xfail_xp_backendsr  markparametrizer   r=   rC   rH   skip_xp_backendsr`   rf   ri   rm   rv   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%  r1  r8  r;  r=  rC  rE  rK  rN  rT  rW  r^  rc  rg  rj  rm  ro  rr  ru  ry  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r#  r*  r,  r/  r5  r9  r=  r?  rG  rI  rL  rN  rQ  rS  rY  r`  rc  re  rg  ri  rt  rx  r|  r   r>   r<   r   r      s=   v&QR[[We,.0 - S.0` v&QR[[We,.0 - S.0` v&QR[[We,.0 - S.0` K [[We,0/ -0/d v&PQ[[We,-0 - R-0^ v&PQ[[We,-0 - R-0^ v&PQ R  v&QR[[We,%0 - S%0N v&QR[[We,#0 - S#0J I [[We,// -//b R( v&QRw~6[[We,% - 7 S%" v&PQ[[We,* - R*8 D [[We,:/ -:/x v&PQ[[We,, - R,  v&PQ[[We,, - R,  Q99
 R( dWYY dWY5Y5 dWY7Y7 dWY7Y711   [[We,5 -5 [[We,5 -5 [[We,8 -8 [[We,8 -8 [[We,> -> [[We,v&PQ> R -> [[We,> -> [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,: -: [[We,: -: [[We,@ -@ [[We,@ -@ [[We,@ -@ [[We,@ -@ [[We,1 -1, [[We,1 -10 [[We,1 -10 [[We,1 -14 [[We,1 -16 N112 dxHJvOQ1QJ18 N112 dxHJvOQ2QJ2B dxHJ1J18 vOQ1Q12 vOQ1Q1B1B dxHJ'1J'1R vOQ'1Q'1R dxHJvOQQJD dxHJvOQ1QJ1: dxHJvOQ1QJ1: [[We,5 -5 [[We,( -( [[We,I -I [[We,8 -8 [[We,> -> [[We,> -> [[We,> -> [[We,> -> [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,D -D [[We,: -: [[We,: -: [[We,@ -@ [[We,@ -@ [[We,@ -@ [[We,	@ -	@ [[We,1 -1, [[We,1 -1, [[We,1 -1, [[We,1 -1, [[We,1 -10 [[We,1 -12 [[We,1 -1 vOQ1Q1& dx@BvOQ1QB1* vOQ1Q1& dx@BvOQ1QB1* vOQ#1Q#1J dxHJvOQ1QJ18 [[We,.1 -.1`("1H1: [[We,1 -1, [[We,1 -10 [[We,1 -1, [[We,1 -101,1(1( t$KMLN[[^QF3[[X'89[[]I6[[[ +@ A)'A 7 : 4NM %)'V	A k*MNl+NOv&PQ
 R P O






4444 d+NO4 P4 4 d+NO4 P4 4 k*MNl+NO4 P O44 vk2* 3*0 k*MNl+NO	H P O	H k*MNl+NO4 P O44 v&67* 8*0 k*MNl+NOH P OH t$KMLN[[X'89[[]I6[[V &8 9[[- 0= >[[[ +; <#'<>9 7 :NM %&#'J dx@B[[We,1 -B16 [[We,1 -1$ [[We,1 -1r>   r   c                       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   rW  )r3   uint8r  r   sq3x3r	   rl  r   view
dilated3x3r   )r6   r7   r  s      r<   _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 )NrW  r
   )r  r	   r)  r  r  r   r  r6   r7   results      r<   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$   )rq  )r  r	   r)  r  r   r  r  s      r<   test_dilation_scalar_sizez'TestDilateFix.test_dilation_scalar_size  s1    B&&tzz:!&$//:r>   N)r  r  r  r  r  r  r  r>   r<   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   )rX   rT   r   r3   r  r   r  r	   r  
opened_oldr  
closed_old)r6   r7   r\  s      r<   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  )r6   r7   
opened_news      r<   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  )r6   r7   
closed_news      r<   test_closing_new_argumentsz3TestBinaryOpeningClosing.test_closing_new_arguments!  r  r>   N)r  r  r  r  r  r  r  r>   r<   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   rk   ra  r	   r   r7   r8   s     r<   )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   rk   ra  r	   rl  r  s     r<   *test_binary_dilation_noninteger_iterationsr  0  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   rk   ra  r	   r  r  s     r<   )test_binary_opening_noninteger_iterationsr  8  r  r>   c                     | j                  dg      }t        t        t        j                  |d       t        t        t        j                  |d       y r  )r   rk   ra  r	   r  r  s     r<   )test_binary_closing_noninteger_iterationsr  @  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.  rZ  r   )r   r   r	   r   r   r  s     r<   ;test_binary_closing_noninteger_brute_force_passes_when_truer  H  su    
 77A3<DG**4A3O**4A4PS9U G**4A3O**4A4PS9Ur>   ru  r2  r3  function)r   rl  r  r  r.  r(   rZ  Fc                 P   t         j                  j                  d      }|j                  ddd      j	                  t
              }|j                  |      }t        t        |       }|j                         } ||||      }t        ||        |||||       t        ||       y )N{   r   r   d   lowhighrq  )rZ  r.  )rZ  r.  r6  )rX   randomRandomStaterandintr   r   r3   r2   r	   copyr   )	r  r.  rZ  r7   rstater8   ndi_func	data_origr;   s	            r<   test_binary_input_as_outputr  V  s     YY""3'F>>aac>299$?D::dDw)H 		I+*MHD)$ T{z$O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  rw  )rX   r  r  r  r   r   r3   r  r	   r  r   )r7   r  r8   r  r;   s        r<   'test_binary_hit_or_miss_input_as_outputr  o  s     YY""3'F>>aac>299$?D::dD 		I))$/HD)$ tD1D(#r>   rn   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	   rs   r   )r7   msgs     r<   *test_distance_transform_cdt_invalid_metricr    sG     $C	z	- 9&&rwwv.7	99 9 9s   'AA)numpyrX   scipy._lib._array_apir   r   r   r   r   r  r   rk   scipyr	    r   r  r  r  
pytestmarkr   r  r  r  r  r  r  r  r  r  r  r  r  r>   r<   <module>r     s|      *  ;;// KK11 &+9NOP
Y+1 Y+1xV; ;@5 54KLKK 
J $F8<>6"STM 1v.6$ 7 /	 U>$  $F8<>$>$ 6EG9G9r>   