o
    &&i                    @   s   d dl Z d dl Zd dl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 G dd dZG d	d
 d
ZG dd dZdd Zdd Zdd Zdd Zdd Zejdg dejdddgejdddgdd Zd d! Zd"d# ZdS )$    N)assert_assert_equalassert_array_equalassert_array_almost_equal)raises)ndimage   )typesc                   @   s  e Zd Zejdedd Zejdedd Zejdedd Z	ejdedd	 Z
ejded
d Zejdedd Zdd Zejdedd Zejdedd Zejdedd Zdd Zejdedd Zejdedd Zejdedd Zejdedd Zejded d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zejded4d5 Z ejded6d7 Z!ejded8d9 Z"ejded:d; Z#ejded<d= Z$ejded>d? Z%ejded@dA Z&ejdedBdC Z'ejdedDdE Z(ejdedFdG Z)ejdedHdI Z*ejdedJdK Z+ejdedLdM Z,ejdedNdO Z-ejdedPdQ Z.ejdedRdS Z/ejdedTdU Z0ejdedVdW Z1ejdedXdY Z2ejdedZd[ Z3ejded\d] Z4ejded^d_ Z5ejded`da Z6ejdedbdc Z7ejdeddde Z8ejdedfdg Z9dhdi Z:djdk Z;dldm Z<dndo Z=dpdq Z>drds Z?dtdu Z@dvdw ZAdxdy ZBdzd{ ZCd|d} ZDd~d ZEdd ZFdd ZGejdedd ZHejdedd ZIejdedd ZJejdedd ZKejdedd ZLejdedd ZMejdedd ZNejdedd ZOejdedd ZPejdedd ZQejdedd ZRejdedd ZSejdedd ZTejdedd ZUejdedd ZVejdedd ZWejdedd ZXejdedd ZYejdedd ZZejdedd Z[ejdedd Z\ejdedd Z]ejdedd Z^ejdedd Z_ejdedd Z`ejdedd Zaejdedd Zbejdedd Zcdd Zddd Zedd ZfddÄ Zgddń ZhddǄ ZiejdeddɄ Zjdd˄ Zkdd̈́ Zlejdeddτ Zmejdeddф Znejdeddӄ ZoejdeddՄ Zpddׄ Zqddل Zrddۄ Zsdd݄ Ztdd߄ Zudd Zvdd Zwdd Zxdd Zydd Zzdd Z{dd Z|dd Z}dd Z~dd Zdd Zdd Zdd Zdd Zdd Zdd Zd d Zdd Zdd Zdd Zdd	 Zejded
d Zejdedd Zejdedd ZdS (  TestNdimageMorphologydtypec                 C   s   t g dg dg dg dg dg dg dg dg dg	|}tj|ddd\}}g dg dg dg dg dg dg dg dg dg	}t|| | g dg d	g d
g dg dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}t|| d S )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   	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   numpyarrayr   distance_transform_bfr   selfr   dataoutftexpected r0   NC:\wamp64\www\opt\env\Lib\site-packages\scipy/ndimage/tests/test_morphology.pytest_distance_transform_bf01   s`   
	
		z2TestNdimageMorphology.test_distance_transform_bf01c                 C   s  t g dg dg dg dg dg dg dg dg dg	|}tj|ddd\}}g dg dg dg dg dg dg dg dg dg	}t|| g dg d	g d
g dg dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}t|| d S )Nr   r   r   	cityblockTr   	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   	r   r   r   r   r   r   r   r   r   r&   r*   r0   r0   r1   test_distance_transform_bf02<   `   
	

		z2TestNdimageMorphology.test_distance_transform_bf02c                 C   s  t g dg dg dg dg dg dg dg dg dg	|}tj|ddd\}}g dg dg dg dg dg dg dg dg dg	}t|| g dg d	g d
g dg dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}t|| d S )Nr   r   r   
chessboardTr   )	r   r   r   r   r   r   r   r   r   r4   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   	r   r   r   r   r   r   r   r   r   	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   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   r0   r1   test_distance_transform_bf03i   r7   z2TestNdimageMorphology.test_distance_transform_bf03c           	      C   s  t g dg dg dg dg dg dg dg dg dg	|}tj|dd\}}g }g }t j|jt jd}tj||d || tj|ddd	}|| t j|jt j	d}tj|dd
|d || tj|dd\}}|| || t j|jt jd}tj||d
d}|| || t j|jt j	d}tj|d
|d}|| || t j|jt jd}t j|jt j	d}tj||d
|d || || |D ]}t
|| q|D ]}t
|| qd S )Nr   r   r   r   r   r   	distancesFreturn_distancesr   Tr@   r   indicesr>   r   r   rB   r>   r   rB   )r'   r(   r   r)   zerosshapefloat64appendrB   int32r   	r+   r   r,   ZtdtZtftdtsZftsdtr.   r0   r0   r1   test_distance_transform_bf04   p   
	











z2TestNdimageMorphology.test_distance_transform_bf04c                 C   s&  t g dg dg dg dg dg dg dg dg dg	|}tj|ddddgd\}}g dg dg dg d	g d
g d	g dg dg dg	}t|| | g dg dg dg dg dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}t|| d S )Nr   r   r   r   Tr   r   sampling)	r   r   r   r   r   r   r   r   r   )	r   r   r   r      r   r   r   r   )	r   r   r   rR       rR   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r*   r0   r0   r1   test_distance_transform_bf05   `   
	
		z2TestNdimageMorphology.test_distance_transform_bf05c                 C   s&  t g dg dg dg dg dg dg dg dg dg	|}tj|ddddgd\}}g dg dg d	g d
g dg d
g d	g dg dg	}t|| | g dg dg dg dg dg dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}t|| d S )Nr   r   r   r   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   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r    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   r0   r1   test_distance_transform_bf06   rU   z2TestNdimageMorphology.test_distance_transform_bf06c                 C   s~   t g dg dg dg dg dg dg dg dg dg	}tt tj|ddd W d    d S 1 s8w   Y  d S )Nr   r   r   Fr?   )r'   r(   assert_raisesRuntimeErrorr   r)   )r+   r,   r0   r0   r1   test_distance_transform_bf07  s   

	"z2TestNdimageMorphology.test_distance_transform_bf07c                 C   s   t g dg dg dg dg dg dg dg dg dg	|}tj|ddd\}}t|d}t|| g dg dg dg d	g d
g dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}t|| d S )Nr   r   r   r3   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"   r5   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r'   r(   r   distance_transform_cdtr)   r   r+   r   r,   r-   r.   bfr/   r0   r0   r1   test_distance_transform_cdt01/  sN   
	

	z3TestNdimageMorphology.test_distance_transform_cdt01c                 C   s   t g dg dg dg dg dg dg dg dg dg	|}tj|ddd\}}t|d}t|| g dg dg dg d	g d
g dg dg dg dg	g dg dg dg dg dg dg dg dg dg	g}t|| d S )Nr   r   r   r8   Tr   r   r[   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r\   r    r!   r"   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r:   r9   r]   r_   r0   r0   r1   test_distance_transform_cdt02T  sN   
	

	z3TestNdimageMorphology.test_distance_transform_cdt02c           	      C   s  t g dg dg dg dg dg dg dg dg dg	|}tj|dd\}}g }g }t j|jt jd}tj||d || tj|ddd	}|| t j|jt jd}tj|dd|d
 || tj|dd\}}|| || t j|jt jd}tj||dd}|| || t j|jt jd}tj|d|d}|| || t j|jt jd}t j|jt jd}tj||d|d || || |D ]}t	|| q|D ]}t	|| qd S )Nr   r   r   Tr   r<   r=   Fr?   rA   rC   rD   rE   )
r'   r(   r   r^   rF   rG   rJ   rI   rB   r   rK   r0   r0   r1   test_distance_transform_cdt03x  sp   
	











z3TestNdimageMorphology.test_distance_transform_cdt03c                 C   s   t g dg dg dg dg dg dg dg dg dg	}t j|jf|j t jd}tt tj	|dd|d W d    d S 1 sFw   Y  d S )Nr   r   r   r<   TFrA   )
r'   r(   rF   ndimrG   rJ   rX   rY   r   r)   )r+   r,   Zindices_outr0   r0   r1   test_distance_transform_cdt04  s&   
	
"z3TestNdimageMorphology.test_distance_transform_cdt04c                 C   sn   t g dg dg dg dg dg dg dg dg dg	|}td}tj||d}| dks5J d S )Nr   r   r   r   r   Zmetrici)r'   r(   nponesr   r^   sum)r+   r   r,   Z
metric_argactualr0   r0   r1   test_distance_transform_cdt05  s   

	z3TestNdimageMorphology.test_distance_transform_cdt05c                 C   s   t g dg dg dg dg dg dg dg dg dg	|}tj|dd\}}t|d}t|| |t j|jdd  |jd }|	t j
}t ||| t jj|d	d
}t || t|| d S )Nr   r   r   Tr   r   r   r<   r   )Zaxis)r'   r(   r   distance_transform_edtr)   r   rB   rG   r   astyperH   multiplyaddreducesqrt)r+   r   r,   r-   r.   r`   rM   r0   r0   r1   test_distance_transform_edt01  s*   
	
z3TestNdimageMorphology.test_distance_transform_edt01c           	      C   s  t g dg dg dg dg dg dg dg dg dg	|}tj|dd\}}g }g }t j|jt jd}tj||d || tj|ddd	}|| t j|jt j	d}tj|d
d|d || tj|dd\}}|| || t j|jt jd}tj||dd}|| || t j|jt j	d}tj|d|d}|| || t j|jt jd}t j|jt j	d}tj||d|d || || |D ]}t
|| q|D ]}t
|| qd S )Nr   r   r   Tr   r<   r=   r   r?   FrA   rC   rD   rE   )r'   r(   r   rm   rF   rG   rH   rI   rB   rJ   r   rK   r0   r0   r1   test_distance_transform_edt02  rO   z3TestNdimageMorphology.test_distance_transform_edt02c                 C   sv   t g dg dg dg dg dg dg dg dg dg	|}tj|dddgd}tj|ddgd}t|| d S )Nr   r   r   r   r   rQ   r'   r(   r   r)   rm   r   r+   r   r,   refr-   r0   r0   r1   test_distance_transform_edt03     
	z3TestNdimageMorphology.test_distance_transform_edt03c                 C   sv   t g dg dg dg dg dg dg dg dg dg	|}tj|dddgd}tj|ddgd}t|| d S )Nr   r   r   r   r   r   ru   rv   rw   r0   r0   r1   test_distance_transform_edt4%  rz   z2TestNdimageMorphology.test_distance_transform_edt4c                 C   s   t d}t|dg d S )NF        )r   rm   r   )r+   r-   r0   r0   r1   test_distance_transform_edt54  s   
z2TestNdimageMorphology.test_distance_transform_edt5c                 C   s   t g dg dg dg dg dg dg dg dg dg	}t j|jt jd}tt tj|dd|d W d    d S 1 sBw   Y  d S )Nr   r   r   r<   TF)r   r@   r>   )	r'   r(   rF   rG   rH   rX   rY   r   r)   )r+   r,   Zdistances_outr0   r0   r1   test_distance_transform_edt69  s&   
	
"z2TestNdimageMorphology.test_distance_transform_edt6c                 C   s   t dd}t|d d S )Nr   r   r   generate_binary_structurer   r+   structr0   r0   r1   test_generate_structure01M  s   z/TestNdimageMorphology.test_generate_structure01c                 C   s   t dd}t|g d d S )Nr   r   r   r   r   r   r0   r0   r1   test_generate_structure02Q  s   z/TestNdimageMorphology.test_generate_structure02c                 C   s,   t dd}t|g dg dg dg d S )Nr   r   r   r   r   r   r   r   r0   r0   r1   test_generate_structure03U  
   

z/TestNdimageMorphology.test_generate_structure03c                 C   s,   t dd}t|g dg dg dg d S )Nr   r   r   r   r0   r0   r1   test_generate_structure04[  r   z/TestNdimageMorphology.test_generate_structure04c                 C   sN   g dg dg dg}t |d}t|g dg dg dg dg dg d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   iterate_structurer   r+   r   r-   r0   r0   r1   test_iterate_structure01a     

z.TestNdimageMorphology.test_iterate_structure01c                 C   sN   ddgddgddgg}t |d}t|g dg dg dg dg dg d S )Nr   r   r   )r   r   r   r   r   r   r   r   r   r0   r0   r1   test_iterate_structure02l  r   z.TestNdimageMorphology.test_iterate_structure02c                 C   sj   g dg dg dg}t |dd}g dg dg dg dg dg}t|d | t|d ddg d S )	Nr   r   r   r   r   r   r   r   )r   r   r   r   )r+   r   r-   r/   r0   r0   r1   test_iterate_structure03w  s   z.TestNdimageMorphology.test_iterate_structure03c                 C   $   t g |}t|}t|d d S Nr   r'   ri   r   binary_erosionr   r+   r   r,   r-   r0   r0   r1   test_binary_erosion01     
z+TestNdimageMorphology.test_binary_erosion01c                 C   s(   t g |}tj|dd}t|d d S Nr   border_valuer   r   r0   r0   r1   test_binary_erosion02  s   z+TestNdimageMorphology.test_binary_erosion02c                 C   (   t dg|}t|}t|dg d S Nr   r   r   r   r0   r0   r1   test_binary_erosion03     
z+TestNdimageMorphology.test_binary_erosion03c                 C   s,   t dg|}tj|dd}t|dg d S r   r   r   r0   r0   r1   test_binary_erosion04  s   z+TestNdimageMorphology.test_binary_erosion04c                 C   *   t dg|}t|}t|g d d S )Nr   r   r   r   r0   r0   r1   test_binary_erosion05     
z+TestNdimageMorphology.test_binary_erosion05c                 C   .   t dg|}tj|dd}t|g d d S Nr   r   r   r   r   r   r0   r0   r1   test_binary_erosion06     z+TestNdimageMorphology.test_binary_erosion06c                 C   r   )Nr   r   r   r   r0   r0   r1   test_binary_erosion07  r   z+TestNdimageMorphology.test_binary_erosion07c                 C   r   )Nr   r   r   r   r   r   r0   r0   r1   test_binary_erosion08  r   z+TestNdimageMorphology.test_binary_erosion08c                 C   s2   t dg|}d|d< t|}t|g d d S )Nr   r   r   r   r   r   r   r   r   r   r0   r0   r1   test_binary_erosion09     
z+TestNdimageMorphology.test_binary_erosion09c                 C   s6   t dg|}d|d< tj|dd}t|g d d S )Nr   r   r   r   r   )r   r   r   r   r   r   r   r0   r0   r1   test_binary_erosion10     z+TestNdimageMorphology.test_binary_erosion10c                 C   s@   t dg|}d|d< g d}tj||dd}t|g d d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r+   r   r,   r   r-   r0   r0   r1   test_binary_erosion11  
   z+TestNdimageMorphology.test_binary_erosion11c                 C   sB   t dg|}d|d< g d}tj||ddd}t|g d d S )	Nr   r   r   r   r   r   originr   r   r   r   r   r   r   r0   r0   r1   test_binary_erosion12  
   z+TestNdimageMorphology.test_binary_erosion12c                 C   sB   t dg|}d|d< g d}tj||ddd}t|g d d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r0   r0   r1   test_binary_erosion13  r   z+TestNdimageMorphology.test_binary_erosion13c                 C   s@   t dg|}d|d< ddg}tj||dd}t|g d d S )Nr   r   r   r   r   )r   r   r   r   r   r   r   r0   r0   r1   test_binary_erosion14  r   z+TestNdimageMorphology.test_binary_erosion14c                 C   sB   t dg|}d|d< ddg}tj||ddd}t|g d d S )Nr   r   r   r   r   r   )r   r   r   r   r   r   r   r0   r0   r1   test_binary_erosion15  r   z+TestNdimageMorphology.test_binary_erosion15c                 C   s0   t ddg|}tj|dd}t|dgg d S r   r   r   r0   r0   r1   test_binary_erosion16  s   z+TestNdimageMorphology.test_binary_erosion16c                 C   ,   t ddg|}t|}t|dgg d S r   r   r   r0   r0   r1   test_binary_erosion17     
z+TestNdimageMorphology.test_binary_erosion17c                 C   .   t ddg|}t|}t|g dg d S )Nr   r   r   r   r   r   r   r0   r0   r1   test_binary_erosion18     
z+TestNdimageMorphology.test_binary_erosion18c                 C   s2   t ddg|}tj|dd}t|g dg d S )Nr   r   r   r   r   r   r0   r0   r1   test_binary_erosion19  s   z+TestNdimageMorphology.test_binary_erosion19c                 C   s:   t ddg|}t|}t|g dg dg dg d S )Nr   r   r   r   r   r0   r0   r1   test_binary_erosion20     


z+TestNdimageMorphology.test_binary_erosion20c                 C   s>   t ddg|}tj|dd}t|g dg dg dg d S r   r   r   r0   r0   r1   test_binary_erosion21
  s   

z+TestNdimageMorphology.test_binary_erosion21c                 C   s   g dg dg dg dg dg dg dg dg}t g dg dg dg dg dg d	g d
g dg|}tj|dd}t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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   r0   r1   test_binary_erosion22  ,   
z+TestNdimageMorphology.test_binary_erosion22c                 C   s   t dd}g dg dg dg dg dg dg dg dg}tg dg dg dg dg dg dg d	g dg|}t j||d
d}t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   )r   r   r'   r(   r   r   r+   r   r   r/   r,   r-   r0   r0   r1   test_binary_erosion23'  s.   
z+TestNdimageMorphology.test_binary_erosion23c                 C   s   ddgddgg}g dg dg dg dg dg dg dg dg}t g dg dg dg d	g dg d
g dg dg|}tj||dd}t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r0   r0   r1   test_binary_erosion24=  s2   
z+TestNdimageMorphology.test_binary_erosion24c                 C   s   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 g dg dg dg d	g d
g dg dg dg|}tj||dd}t|| d S )Nr   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r0   r0   r1   test_binary_erosion25T  s4   
z+TestNdimageMorphology.test_binary_erosion25c                 C   s   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 g dg dg d	g d
g dg dg dg dg|}tj||ddd}t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r0   r0   r1   test_binary_erosion26l  s8   

z+TestNdimageMorphology.test_binary_erosion26c              
   C      g dg dg dg}g dg dg dg dg dg dg dg}t g dg dg dg dg dg dg dgt}tj||ddd	}t|| d S 
Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
iterationsr'   r(   boolr   r   r   r+   r   r/   r,   r-   r0   r0   r1   test_binary_erosion27  s4   

z+TestNdimageMorphology.test_binary_erosion27c              
   C   s   g dg dg dg}g dg dg dg dg dg dg dg}t g dg dg dg dg dg dg dgt}t |jt}tj||dd|d	 t|| d S )
Nr   r   r   r   r   r   r   r   r   r   outputr'   r(   r   rF   rG   r   r   r   r   r0   r0   r1   test_binary_erosion28  s6   

z+TestNdimageMorphology.test_binary_erosion28c              
   C   s   g dg dg dg}g dg dg dg dg dg dg dg}t g dg dg dg dg dg dg dgt}tj||dd	d
}t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r0   r0   r1   test_binary_erosion29  4   
z+TestNdimageMorphology.test_binary_erosion29c              
   C   s   g dg dg dg}g dg dg dg dg dg dg dg}t g dg dg dg dg dg dg dgt}t |jt}tj||dd	|d
 t|| tj||dd	|d
 t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r0   r0   r1   test_binary_erosion30  s>   



z+TestNdimageMorphology.test_binary_erosion30c              
   C   s   g dg dg dg}g dg dg dg dg dg dg dg}t g dg d	g d
g dg d
g d	g dgt}t |jt}tj||dd|dd t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r0   r0   r1   test_binary_erosion31  s6   

z+TestNdimageMorphology.test_binary_erosion31c              
   C   r   r   r   r   r0   r0   r1   test_binary_erosion32  r   z+TestNdimageMorphology.test_binary_erosion32c              
   C   s   g dg dg dg}g dg dg dg dg dg dg dg}g dg dg dg dg dg dg dg}t g dg d	g d
g d
g d
g dg dgt}tj||d|dd}t|| d S )Nr   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r   maskr   r   r+   r   r/   r  r,   r-   r0   r0   r1   test_binary_erosion33  sD   
z+TestNdimageMorphology.test_binary_erosion33c              
   C   s   g dg dg dg}g dg dg dg dg dg dg dg}g dg dg dg dg dg dg dg}t g dg dg dg dg dg dg dgt}tj||d|d	}t|| d S )
Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r  r   r  r0   r0   r1   test_binary_erosion34.  sD   
z+TestNdimageMorphology.test_binary_erosion34c              
   C   s  g dg dg dg}g dg dg dg dg dg dg dg}t g dg dg dg dg dg dg dgt}g d	g d
g dg d
g d	g dg dg}t ||}t |t |}t ||}t |jt}tj	||dd|d|d t
|| d S )Nr   r   r   r   r	  r   r   r   r   r   r   r  r   r   )r   r   r   r   r  )r'   r(   r   logical_andlogical_not
logical_orrF   rG   r   r   r   )r+   r   r  r,   tmpr/   r-   r0   r0   r1   test_binary_erosion35K  sN   

z+TestNdimageMorphology.test_binary_erosion35c                 C   s  g dg dg dg}g dg dg dg dg dg dg dg dg}g dg dg dg dg d	g dg dg dg}t g dg d
g dg dg dg dg dg dg}t ||}t |t |}t ||}tj|||ddd}t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r  r   r   )r'   r(   r  r  r  r   r   r   )r+   r   r  r  r,   r/   r-   r0   r0   r1   test_binary_erosion36m  sL   

z+TestNdimageMorphology.test_binary_erosion36c                 C   sh   t jg dg dg dgtd}t |}tj|||dddd}t||u  ttj||ddd| d S )Nr   r   r<   r   T)	structurer   r   r   brute_force)r  r   r   )r'   r(   r   Z
zeros_liker   r   r   r   )r+   abr-   r0   r0   r1   test_binary_erosion37  s"   


z+TestNdimageMorphology.test_binary_erosion37c                 C   s`   t jg dg dg dgtd}d}tt tj||d}W d    d S 1 s)w   Y  d S )Nr   r   r<   g       @r   )r'   r(   r   rX   	TypeErrorr   r   )r+   r,   r   _r0   r0   r1   test_binary_erosion38  s   

"z+TestNdimageMorphology.test_binary_erosion38c              
   C      t d}g dg dg dg}g dg dg dg dg dg dg dg}t g dg dg dg dg dg dg dgt}t |jt}tj||d	||d
 t|| d S Nr   r   r   r   r   r   r   r   r   r   )	r'   rJ   r(   r   rF   rG   r   r   r   r+   r   r   r/   r,   r-   r0   r0   r1   test_binary_erosion39  8   


z+TestNdimageMorphology.test_binary_erosion39c              
   C   r  r  )	r'   Zint64r(   r   rF   rG   r   r   r   r  r0   r0   r1   test_binary_erosion40  r  z+TestNdimageMorphology.test_binary_erosion40c                 C   r   r   r'   ri   r   binary_dilationr   r   r0   r0   r1   test_binary_dilation01  r   z,TestNdimageMorphology.test_binary_dilation01c                 C   r   )Nr   r'   rF   r   r"  r   r   r0   r0   r1   test_binary_dilation02  r   z,TestNdimageMorphology.test_binary_dilation02c                 C   s(   t dg|}t|}t|dg d S r   r!  r   r0   r0   r1   test_binary_dilation03  r   z,TestNdimageMorphology.test_binary_dilation03c                 C   r   r   r$  r   r0   r0   r1   test_binary_dilation04  r   z,TestNdimageMorphology.test_binary_dilation04c                 C   r   Nr   r   r!  r   r0   r0   r1   test_binary_dilation05  r   z,TestNdimageMorphology.test_binary_dilation05c                 C   r   )Nr   r   r$  r   r0   r0   r1   test_binary_dilation06  r   z,TestNdimageMorphology.test_binary_dilation06c                 C   2   t dg|}d|d< t|}t|g d d S )Nr   r   r   r$  r   r0   r0   r1   test_binary_dilation07  r   z,TestNdimageMorphology.test_binary_dilation07c                 C   s:   t dg|}d|d< d|d< t|}t|g d d S )Nr   r   r   r   r$  r   r0   r0   r1   test_binary_dilation08   s
   
z,TestNdimageMorphology.test_binary_dilation08c                 C   r+  )Nr   r   r   r   r   r   r   r$  r   r0   r0   r1   test_binary_dilation09  r   z,TestNdimageMorphology.test_binary_dilation09c                 C   s6   t dg|}d|d< tj|dd}t|g d d S )Nr   r   r   r   r   r$  r   r0   r0   r1   test_binary_dilation10  r   z,TestNdimageMorphology.test_binary_dilation10c                 C   s6   t dg|}d|d< tj|dd}t|g d d S )Nr   r   r0  r   r   r   r   r   r$  r   r0   r0   r1   test_binary_dilation11  r   z,TestNdimageMorphology.test_binary_dilation11c                 C   s<   t dg|}d|d< g d}t||}t|g d d S )Nr   r   r   )r   r   r   r   r   r$  r   r0   r0   r1   test_binary_dilation12  s
   z,TestNdimageMorphology.test_binary_dilation12c                 C   s@   t dg|}d|d< g d}tj||dd}t|g d d S )Nr   r   r   r   r   r$  r   r0   r0   r1   test_binary_dilation13%  r   z,TestNdimageMorphology.test_binary_dilation13c                 C   s@   t dg|}d|d< g d}tj||dd}t|g d d S )Nr   r   r   r   r0  )r   r   r   r   r   r$  r   r0   r0   r1   test_binary_dilation14-  r   z,TestNdimageMorphology.test_binary_dilation14c                 C   sB   t dg|}d|d< g d}tj||ddd}t|g d d S )Nr   r   r   r   r   r   r   r$  r   r0   r0   r1   test_binary_dilation155  s   z,TestNdimageMorphology.test_binary_dilation15c                 C   s,   t ddg|}t|}t|dgg d S r   r!  r   r0   r0   r1   test_binary_dilation16>  r   z,TestNdimageMorphology.test_binary_dilation16c                 C   r   r   r$  r   r0   r0   r1   test_binary_dilation17D  r   z,TestNdimageMorphology.test_binary_dilation17c                 C   r   )Nr   r   r   r!  r   r0   r0   r1   test_binary_dilation18J  r   z,TestNdimageMorphology.test_binary_dilation18c                 C   s:   t ddg|}t|}t|g dg dg dg d S r(  r!  r   r0   r0   r1   test_binary_dilation19P  r   z,TestNdimageMorphology.test_binary_dilation19c                 C   sB   t ddg|}d|d< t|}t|g dg dg dg d S )Nr   r   r   r   r   r   r$  r   r0   r0   r1   test_binary_dilation20X  s   


z,TestNdimageMorphology.test_binary_dilation20c                 C   sP   t dd}tddg|}d|d< t ||}t|g dg dg dg d S )Nr   r   r   r=  r   )r   r   r'   rF   r"  r   )r+   r   r   r,   r-   r0   r0   r1   test_binary_dilation21a  s   

z,TestNdimageMorphology.test_binary_dilation21c                 C   s   g dg dg dg dg dg dg dg dg}t g dg dg dg d	g d
g dg dg dg|}t|}t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r'   r(   r   r"  r   r   r0   r0   r1   test_binary_dilation22k  ,   

z,TestNdimageMorphology.test_binary_dilation22c                 C   s   g dg dg dg dg dg dg dg dg}t g dg dg dg d	g d
g dg dg dg|}tj|dd}t|| d S )Nr   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rC  r   r0   r0   r1   test_binary_dilation23  r   z,TestNdimageMorphology.test_binary_dilation23c                 C   s   g dg dg dg dg dg dg dg dg}t g dg dg dg d	g d
g dg dg dg|}tj|dd}t|| d S )Nr   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r=  r0  rC  r   r0   r0   r1   test_binary_dilation24  r   z,TestNdimageMorphology.test_binary_dilation24c                 C   s   g dg dg dg dg dg dg dg dg}t g dg dg dg d	g d
g dg dg dg|}tj|ddd}t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rF  r   r   r   r   r   r   r   r   r   r   r   r   r   r=  r   r7  rC  r   r0   r0   r1   test_binary_dilation25  s,   
z,TestNdimageMorphology.test_binary_dilation25c                 C   s   t dd}g dg dg dg dg dg dg dg dg}tg dg dg dg dg d	g d
g dg dg|}t ||}t|| d S )Nr   r@  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r'   r(   r"  r   r   r0   r0   r1   test_binary_dilation26  .   
z,TestNdimageMorphology.test_binary_dilation26c                 C   s   ddgddgg}g dg dg dg dg dg dg d	g d	g}t g d	g dg d	g dg d
g dg d	g d	g|}t||}t|| d S )Nr   r   r   rH  r   r   r   r   r   r   r   r   r   r   r   r   r   r   rC  r   r0   r0   r1   test_binary_dilation27  s2   
z,TestNdimageMorphology.test_binary_dilation27c                 C   s\   g dg dg dg dg}t g dg dg dg dg|}tj|dd}t|| d S )N)r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   rC  r   r0   r0   r1   test_binary_dilation28  s   
z,TestNdimageMorphology.test_binary_dilation28c                 C   sz   ddgddgg}g dg dg dg dg dg}t g dg dg dg dg dgt}tj||dd}t|| d S )	Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r'   r(   r   r   r"  r   r   r0   r0   r1   test_binary_dilation29  &   
z,TestNdimageMorphology.test_binary_dilation29c                 C   s   ddgddgg}g dg dg dg dg dg}t g dg dg dg dg dgt}t |jt}tj||d|d t|| d S )	Nr   r   r   rU  rV  r   r   r   r   r'   r(   r   rF   rG   r   r"  r   r   r0   r0   r1   test_binary_dilation30
  (   
z,TestNdimageMorphology.test_binary_dilation30c                 C   sz   ddgddgg}g dg dg dg dg dg}t g dg dg dg dg dgt}tj||dd	}t|| d S )
Nr   r   rU  rV  r   r   r   r   r   r   r   r   r  rW  r   r0   r0   r1   test_binary_dilation31  rY  z,TestNdimageMorphology.test_binary_dilation31c                 C   s   ddgddgg}g dg dg dg dg dg}t g dg dg dg dg dgt}t |jt}tj||d|d	 t|| d S )
Nr   r   rU  rV  r   r^  r   r   rZ  r[  r   r0   r0   r1   test_binary_dilation32-  r]  z,TestNdimageMorphology.test_binary_dilation32c                 C   s   g dg dg dg}t g dg dg dg dg dg dg dg dgt}t g dg dg dg dg dg dg dg dgt}t g dg dg dg dg dg dg dg dgt}tj||d	|d
d}t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r  rR  r   r   r   r   r   r   r   r   r   r   r   r  r   rW  r  r0   r0   r1   test_binary_dilation33?  sR   



	z,TestNdimageMorphology.test_binary_dilation33c                 C   s   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 g dg dg dg dg dg d	g dg dgt}t |jt}tj||d
|dd}t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rc  r[  r  r0   r0   r1   test_binary_dilation34`  s:   

z,TestNdimageMorphology.test_binary_dilation34c                 C   s(  g dg dg dg dg dg dg dg dg}t g dg dg dg d	g d
g dg dg dg}g dg dg dg dg dg dg dg dg}t ||}t |t |}t ||}t g dg dg dg d	g d
g dg dg dg|}tj||ddd}t|| d S )NrJ  rK  r   rL  rF  rM  r   r   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   r0   r1   test_binary_dilation35y  sZ   

z,TestNdimageMorphology.test_binary_dilation35c                 C   s   g dg dg dg}t g dg dg dg dg dg dg dg dgt}t g dg dg dg dg dg dg dg dgt}t g dg dg dg dg dg dg dg dgt}tj|||d	d
}t|| d S )Nr   r   r   r   ra  r  rR  rb  r   r  r   )r'   r(   r   r   binary_propagationr   r  r0   r0   r1   test_binary_propagation01  sR   


	z/TestNdimageMorphology.test_binary_propagation01c                 C   s   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 g dg dg dg dg dg d	g dg dgt}t |jt}tj|||d
d}t|| d S )Nr   r   r   re  r   r   r   r   r   r   rh  )r'   r(   r   rF   rG   r   ri  r   r  r0   r0   r1   test_binary_propagation02  s:   
z/TestNdimageMorphology.test_binary_propagation02c                 C   s   g dg dg dg dg dg dg dg dg}t g dg dg dg dg d	g dg dg dg|}t|}t|| d S )
Nr   r@  rA  r   r   r   r   r   r   r   r   r   r   r   rB  r   r   r   r   r   r   r   r   )r'   r(   r   binary_openingr   r   r0   r0   r1   test_binary_opening01  rE  z+TestNdimageMorphology.test_binary_opening01c                 C   s   t dd}g dg dg dg dg dg dg dg dg}tg dg dg dg dg dg dg dg dg|}t ||}t|| d S )	Nr   r@  r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rO  r   r   r   r   r   r   r   r   r   )r   r   r'   r(   rn  r   r   r0   r0   r1   test_binary_opening02  rQ  z+TestNdimageMorphology.test_binary_opening02c                 C   s   g dg dg dg dg dg dg dg dg}t g dg d	g d
g dg dg dg dg dg|}t|}t|| d S )Nr   re  )r   r   r   r   r   r   r   r   rO  r   r   r   r   r@  rA  rB  rm  )r'   r(   r   binary_closingr   r   r0   r0   r1   test_binary_closing01  rE  z+TestNdimageMorphology.test_binary_closing01c                 C   s   t dd}g dg dg dg dg dg dg dg dg}tg dg dg dg dg dg dg dg dg|}t ||}t|| d S )	Nr   r   re  r   r@  rp  rO  rq  )r   r   r'   r(   rs  r   r   r0   r0   r1   test_binary_closing02  rQ  z+TestNdimageMorphology.test_binary_closing02c              
   C   s   t g dg dg dg dg dg dg dgt}t g dg dg dg dg dg dg dgt}t|}t|| d S )Nr   r   r   r'   r(   r   r   Zbinary_fill_holesr   r+   r/   r,   r-   r0   r0   r1   test_binary_fill_holes012  ,   


z.TestNdimageMorphology.test_binary_fill_holes01c              
   C   s   t g dg dg dg dg dg dg dgt}t g dg dg dg dg dg dg dgt}t|}t|| d S )Nr   r   r   r   rv  rw  r0   r0   r1   test_binary_fill_holes02D  ry  z.TestNdimageMorphology.test_binary_fill_holes02c              
   C   s   t g dg dg dg dg dg dg dgt}t g dg dg dg dg dg dg dgt}t|}t|| d S )Nr   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   rv  rw  r0   r0   r1   test_binary_fill_holes03V  ry  z.TestNdimageMorphology.test_binary_fill_holes03c                 C   Z   t g dg dg dg}g dg dg}tj||d}tg dg dg d	g| d S )
Nr   r   r   r   r   r   r   rV   r   r   r   r   r   r   r   r   r   r   r   	footprintr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r'   r(   r   grey_erosionr   r+   r(   r  r   r0   r0   r1   test_grey_erosion01h     
z)TestNdimageMorphology.test_grey_erosion01c                 C   s\   t g dg dg dg}g dg dg}tj|||d tg dg dg d	g| d S )
Nr}  r~  r  r   r  )r  r   r  r  r  r  )r+   r(   r  r0   r0   r1   test_grey_erosion01_overlapr  s   
z1TestNdimageMorphology.test_grey_erosion01_overlapc                 C   l   t g dg dg dg}g dg dg}g dg dg}tj|||d}tg dg d	g d
g| d S )Nr}  r~  r  r   r  r   r  r  r  r  r  r  r+   r(   r  r  r   r0   r0   r1   test_grey_erosion02|     
z)TestNdimageMorphology.test_grey_erosion02c                 C   r  )Nr}  r~  r  r   r  r   r  r2  )r   r   r   r   r   )r   r   r   r   r   r  r  r0   r0   r1   test_grey_erosion03  r  z)TestNdimageMorphology.test_grey_erosion03c                 C   r|  )
Nr}  r~  r  r   r   r  r   r   rV   rV   r   r   rV   r   rV   r   r   r   r   r   r   r'   r(   r   grey_dilationr   r  r0   r0   r1   test_grey_dilation01  r  z*TestNdimageMorphology.test_grey_dilation01c                 C   r  )Nr}  r~  r  r   r   r   r  r  r  r  r  r  r0   r0   r1   test_grey_dilation02  r  z*TestNdimageMorphology.test_grey_dilation02c                 C   r  )Nr}  r~  r  r   r   r   r  )r   r   
   r  r   )r   r  rV   r  r   )rV   rV   rV   r   r   r  r  r0   r0   r1   test_grey_dilation03  r  z*TestNdimageMorphology.test_grey_dilation03c                 C   d   t g dg dg dg}g dg dg}tj||d}tj||d}tj||d}t|| d S Nr}  r~  r  r   r  r  r'   r(   r   r  r  grey_openingr   r+   r(   r  r  r/   r   r0   r0   r1   test_grey_opening01     
z)TestNdimageMorphology.test_grey_opening01c                 C   z   t g dg dg dg}g dg dg}g dg dg}tj|||d}tj|||d}tj|||d}t|| d S Nr}  r~  r  r   r  r   r  r  r+   r(   r  r  r  r/   r   r0   r0   r1   test_grey_opening02      
z)TestNdimageMorphology.test_grey_opening02c                 C   r  r  r'   r(   r   r  r  grey_closingr   r  r0   r0   r1   test_grey_closing01  r  z)TestNdimageMorphology.test_grey_closing01c                 C   r  r  r  r  r0   r0   r1   test_grey_closing02  r  z)TestNdimageMorphology.test_grey_closing02c                 C   s   t g dg dg dg}g dg dg}g dg dg}tj|||d}tj|||d}|| }t |j|j}tj||||d t	|| d S 	Nr}  r~  r  r   r  r   r  r  r  r   )
r'   r(   r   r  r  rF   rG   r   morphological_gradientr   r+   r(   r  r  Ztmp1Ztmp2r/   r   r0   r0   r1   test_morphological_gradient01  s$   
z3TestNdimageMorphology.test_morphological_gradient01c                 C   s   t g dg dg dg}g dg dg}g dg dg}tj|||d}tj|||d}|| }tj|||d}t|| d S r  )r'   r(   r   r  r  r  r   r  r0   r0   r1   test_morphological_gradient02  s"   
z3TestNdimageMorphology.test_morphological_gradient02c                 C   s   t g dg dg dg}g dg dg}g dg dg}tj|||d}tj|||d}|| d|  }t |j|j}tj||||d	 t	|| d S )
Nr}  r~  r  r   r  r   r  r   r  )
r'   r(   r   r  r  rF   rG   r   morphological_laplacer   r  r0   r0   r1   test_morphological_laplace01  s$   
z2TestNdimageMorphology.test_morphological_laplace01c                 C   s   t g dg dg dg}g dg dg}g dg dg}tj|||d}tj|||d}|| d|  }tj|||d}t|| d S )	Nr}  r~  r  r   r  r   r  r   )r'   r(   r   r  r  r  r   r  r0   r0   r1   test_morphological_laplace02  s"   
z2TestNdimageMorphology.test_morphological_laplace02c                 C   s   t g dg dg dg}g dg dg}g dg dg}tj|||d}|| }t |j|j}tj||||d t|| d S r  )	r'   r(   r   r  rF   rG   r   white_tophatr   r  r0   r0   r1   test_white_tophat01$     
z)TestNdimageMorphology.test_white_tophat01c                 C   sr   t g dg dg dg}g dg dg}g dg dg}tj|||d}|| }tj|||d}t|| d S r  )r'   r(   r   r  r  r   r  r0   r0   r1   test_white_tophat022     
z)TestNdimageMorphology.test_white_tophat02c              	   C   s   t jg dg dg dg dg dg dg dgt jd}t jdt jd}t jg dg dg dg d	g d
g d	g dgt jd}tj||d}t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r<   rf   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r  )r'   r(   bool_ri   r   r  r   r+   r(   r  r/   r   r0   r0   r1   test_white_tophat03?  .   

z)TestNdimageMorphology.test_white_tophat03c                 C   D   t jdt jd}t jdt jd}t j|t jd}tj|||d d S Nr   r<   rf   )r  r   )r'   eyer  ri   
empty_likerH   r   r  r+   r(   r  r   r0   r0   r1   test_white_tophat04S     z)TestNdimageMorphology.test_white_tophat04c                 C   s   t g dg dg dg}g dg dg}g dg dg}tj|||d}|| }t |j|j}tj||||d t|| d S r  )	r'   r(   r   r  rF   rG   r   black_tophatr   r  r0   r0   r1   test_black_tophat01[  r  z)TestNdimageMorphology.test_black_tophat01c                 C   sr   t g dg dg dg}g dg dg}g dg dg}tj|||d}|| }tj|||d}t|| d S r  )r'   r(   r   r  r  r   r  r0   r0   r1   test_black_tophat02i  r  z)TestNdimageMorphology.test_black_tophat02c              	   C   s   t jg dg dg dg dg dg dg dgt jd}t jdt jd}t jg dg dg dg dg d	g dg d
gt jd}tj||d}t|| d S )Nr  r   r  r  r<   rf   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r  r  )r'   r(   r  ri   r   r  r   r  r0   r0   r1   test_black_tophat03v  r  z)TestNdimageMorphology.test_black_tophat03c                 C   r  r  )r'   r  r  ri   r  rH   r   r  r  r0   r0   r1   test_black_tophat04  r  z)TestNdimageMorphology.test_black_tophat04c                 C   s   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 g dg dg dg dg dg d	g d	g dg|}t |jt}tj|||d
 t|| d S )Nr   r   r   )r   r   r   r   r   r.  r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r'   r(   rF   rG   r   r   binary_hit_or_missr   r   r0   r0   r1   test_hit_or_miss01  s6   
z(TestNdimageMorphology.test_hit_or_miss01c                 C   sp   g dg dg dg}g dg dg dg dg}t g dg dg dg dg|}t||}t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r'   r(   r   r  r   r   r0   r0   r1   test_hit_or_miss02  s$   
z(TestNdimageMorphology.test_hit_or_miss02c                 C   s   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}t g dg dg dg d	g d
g dg dg dg|}t|||}t|| d S )Nr   r   r   r   r   r  r@  r   rO  rq  rl  r   r  )r+   r   Zstruct1Zstruct2r/   r,   r-   r0   r0   r1   test_hit_or_miss03  s<   
z(TestNdimageMorphology.test_hit_or_miss03N)__name__
__module____qualname__pytestmarkparametrizer	   r2   r6   r;   rN   rT   rW   rZ   ra   rb   rc   re   rl   rs   rt   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   r#  r%  r&  r'  r)  r*  r,  r-  r/  r1  r3  r4  r5  r6  r8  r9  r:  r;  r<  r>  r?  rD  rG  rI  rN  rP  rS  rT  rX  r\  r_  r`  rd  rf  rg  rj  rk  ro  rr  rt  ru  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  r0   r0   r0   r1   r
      s   
,
,
,
0
+
+
$
#
0


0



























"#




















	






!
(!








r
   c                   @   $   e Zd Zdd Zdd Zdd ZdS )TestDilateFixc                 C   s`   t jg dg dg dg dg dgt jd| _t d| _tj| j| jd}|t j| _d S )Nr   rU  rV  r<   rf   r  )	r'   r(   Zuint8ri   sq3x3r   r"  view
dilated3x3)r+   r  r0   r0   r1   setup_method  s   
zTestDilateFix.setup_methodc                 C   s&   t j| j| jd}t|| jd  d S )Nr  r   )r   r  r(   r  r   r  r+   resultr0   r0   r1   test_dilation_square_structure  s   z,TestDilateFix.test_dilation_square_structurec                 C   s    t j| jdd}t|| j d S )Nr   )size)r   r  r(   r   r  r  r0   r0   r1   test_dilation_scalar_size  s   z'TestDilateFix.test_dilation_scalar_sizeN)r  r  r  r  r  r  r0   r0   r0   r1   r    s    r  c                   @   r  )TestBinaryOpeningClosingc                 C   sp   t jdtd}d|ddddf< d|d< || _t d| _t| j| jdd d| _t	| j| jdd d| _
d S )	Nr   r   r<   Tr   r   )r   r   rf   r   )r'   rF   r   r(   ri   r  r   rn  
opened_oldrs  
closed_old)r+   r  r0   r0   r1   r    s   
z%TestBinaryOpeningClosing.setup_methodc              
   C   ,   t | j| jdd dd dd}t|| j d S Nr   r   F)r   rn  r(   r  r   r  )r+   Z
opened_newr0   r0   r1   test_opening_new_arguments     z3TestBinaryOpeningClosing.test_opening_new_argumentsc              
   C   r  r  )r   rs  r(   r  r   r  )r+   Z
closed_newr0   r0   r1   test_closing_new_arguments	  r  z3TestBinaryOpeningClosing.test_closing_new_argumentsN)r  r  r  r  r  r  r0   r0   r0   r1   r    s    r  c                  C   4   t dg} tttj| dd tttj| dd d S Nr   g      ?r        ?)r'   ri   rX   r  r   r   r,   r0   r0   r1   )test_binary_erosion_noninteger_iterations	     r  c                  C   r  r  )r'   ri   rX   r  r   r"  r  r0   r0   r1   *test_binary_dilation_noninteger_iterations	  r  r  c                  C   r  r  )r'   ri   rX   r  r   rn  r  r0   r0   r1   )test_binary_opening_noninteger_iterations	  r  r  c                  C   r  r  )r'   ri   rX   r  r   rs  r  r0   r0   r1   )test_binary_closing_noninteger_iterations	  r  r  c                  C   s`   t dg} tj| dddtj| dtddksJ tj| dddtj| dtddks.J d S )Nr   r   r  )r   r  r|   )r'   ri   r   r   r   r  r0   r0   r1   ;test_binary_closing_noninteger_brute_force_passes_when_true'	  s   r  function)r   r"  rn  rs  r   r   r  FTc                 C   sj   t jd}|jddddt}tt| }| }||||d}t	|| |||||d t	|| d S )N{   r   r   d   lowhighr  )r  r   )r  r   r   )
r'   randomRandomStaterandintrn   r   getattrr   copyr   )r  r   r  rstater,   Zndi_func	data_origr/   r0   r0   r1   test_binary_input_as_output4	  s   

r  c                  C   sZ   t jd} | jddddt}| }t|}t	|| tj||d t	|| d S )Nr  r   r   r  r  r  )
r'   r  r  r  rn   r   r  r   r  r   )r  r,   r  r/   r0   r0   r1   'test_binary_hit_or_miss_input_as_outputI	  s   

r  c                  C   sL   d} t jt| d tjtddd W d    d S 1 sw   Y  d S )Nzinvalid metric provided)matchr  garbagerg   )r  r   
ValueErrorr   r^   rh   ri   )msgr0   r0   r1   *test_distance_transform_cdt_invalid_metricW	  s   "r
  )r'   rh   Znumpy.testingr   r   r   r   r  r   rX   Zscipyr    r	   r
   r  r  r  r  r  r  r  r  r  r  r  r
  r0   r0   r0   r1   <module>   sR                     [