a
    Re                    @   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   W/var/www/sunrise/env/lib/python3.9/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<   s`    
	
	
	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   s`    
	
	
	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   rA   r=   r   rA   )r'   r(   r   r)   zerosshapefloat64appendrA   int32r   	r+   r   r,   ZtdtZtftZdtsZftsdtr.   r0   r0   r1   test_distance_transform_bf04   sn    
	











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   rO       rO   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r*   r0   r0   r1   test_distance_transform_bf05   s`    
	
		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   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   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r    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   s`    
	
		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    n1 sn0    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   r7   Tr   r   rW   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   rX   r    r!   r"   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r9   r8   rY   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>   r@   rB   rC   rD   )
r'   r(   r   rZ   rE   rF   rI   rH   rA   r   rJ   r0   r0   r1   test_distance_transform_cdt03x  sn    
	











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    n1 s0    Y  d S )Nr   r   r   r;   TFr@   )
r'   r(   rE   ndimrF   rI   rT   rU   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sjJ d S )Nr   r   r   r   r   Zmetrici)r'   r(   nponesr   rZ   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   rA   rF   r   astyperG   multiplyaddreducesqrt)r+   r   r,   r-   r.   r\   rK   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>   Fr@   rB   rC   rD   )r'   r(   r   ri   rE   rF   rG   rH   rA   rI   r   rJ   r0   r0   r1   test_distance_transform_edt02  sn    
	











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   rN   r'   r(   r   r)   ri   r   r+   r   r,   refr-   r0   r0   r1   test_distance_transform_edt03  s    
	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   rq   rr   rs   r0   r0   r1   test_distance_transform_edt4%  s    
	z2TestNdimageMorphology.test_distance_transform_edt4c                 C   s   t d}t|dg d S )NF        )r   ri   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    n1 s0    Y  d S )Nr   r   r   r;   TF)r   r?   r=   )	r'   r(   rE   rF   rG   rT   rU   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   rz   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   rz   r|   r0   r0   r1   test_generate_structure03U  s
    
z/TestNdimageMorphology.test_generate_structure03c                 C   s,   t dd}t|g dg dg dg d S )Nr   r   rz   r|   r0   r0   r1   test_generate_structure04[  s
    
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  s    
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  s    
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   s$   t g |}t|}t|d d S Nr   r'   re   r   binary_erosionr   r+   r   r,   r-   r0   r0   r1   test_binary_erosion01  s    
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   s(   t dg|}t|}t|dg d S Nr   r   r   r   r0   r0   r1   test_binary_erosion03  s    
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   s*   t dg|}t|}t|g d d S )Nr   r   r   r   r0   r0   r1   test_binary_erosion05  s    
z+TestNdimageMorphology.test_binary_erosion05c                 C   s.   t dg|}tj|dd}t|g d d S Nr   r   r   r   r   r   r0   r0   r1   test_binary_erosion06  s    z+TestNdimageMorphology.test_binary_erosion06c                 C   s*   t dg|}t|}t|g d d S )Nr   r   r   r   r0   r0   r1   test_binary_erosion07  s    
z+TestNdimageMorphology.test_binary_erosion07c                 C   s.   t dg|}tj|dd}t|g d d S )Nr   r   r   r   r   r   r0   r0   r1   test_binary_erosion08  s    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  s    
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  s    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  s
    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  s
    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  s
    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  s
    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  s
    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   s,   t ddg|}t|}t|dgg d S r   r   r   r0   r0   r1   test_binary_erosion17  s    
z+TestNdimageMorphology.test_binary_erosion17c                 C   s.   t ddg|}t|}t|g dg d S )Nr   r   r   r   r   r   r   r0   r0   r1   test_binary_erosion18  s    
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  s    

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  s,    
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   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   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   rE   rF   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  s4    
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   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 r   r   r   r0   r0   r1   test_binary_erosion32  s4    
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_orrE   rF   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    n1 sP0    Y  d S )Nr   r   r;   g       @r   )r'   r(   r   rT   	TypeErrorr   r   )r+   r,   r   _r0   r0   r1   test_binary_erosion38  s    

z+TestNdimageMorphology.test_binary_erosion38c              
   C   s   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'   rI   r(   r   rE   rF   r   r   r   r+   r   r}   r/   r,   r-   r0   r0   r1   test_binary_erosion39  s8    


z+TestNdimageMorphology.test_binary_erosion39c              
   C   s   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 r   )	r'   int64r(   r   rE   rF   r   r   r   r  r0   r0   r1   test_binary_erosion40  s8    


z+TestNdimageMorphology.test_binary_erosion40c                 C   s$   t g |}t|}t|d d S r   r'   re   r   binary_dilationr   r   r0   r0   r1   test_binary_dilation01  s    
z,TestNdimageMorphology.test_binary_dilation01c                 C   s$   t g |}t|}t|d d S )Nr   r'   rE   r   r  r   r   r0   r0   r1   test_binary_dilation02  s    
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  s    
z,TestNdimageMorphology.test_binary_dilation03c                 C   s(   t dg|}t|}t|dg d S r   r  r   r0   r0   r1   test_binary_dilation04  s    
z,TestNdimageMorphology.test_binary_dilation04c                 C   s*   t dg|}t|}t|g d d S Nr   r   r  r   r0   r0   r1   test_binary_dilation05  s    
z,TestNdimageMorphology.test_binary_dilation05c                 C   s*   t dg|}t|}t|g d d S )Nr   r   r  r   r0   r0   r1   test_binary_dilation06  s    
z,TestNdimageMorphology.test_binary_dilation06c                 C   s2   t dg|}d|d< t|}t|g d d S )Nr   r   r   r  r   r0   r0   r1   test_binary_dilation07  s    
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   s2   t dg|}d|d< t|}t|g d d S )Nr   r   r   r   r   r   r   r  r   r0   r0   r1   test_binary_dilation09  s    
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  s    z,TestNdimageMorphology.test_binary_dilation10c                 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   r0   r0   r1   test_binary_dilation11  s    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%  s
    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   r  )r   r   r   r   r   r  r   r0   r0   r1   test_binary_dilation14-  s
    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>  s    
z,TestNdimageMorphology.test_binary_dilation16c                 C   s,   t ddg|}t|}t|dgg d S r   r  r   r0   r0   r1   test_binary_dilation17D  s    
z,TestNdimageMorphology.test_binary_dilation17c                 C   s.   t ddg|}t|}t|g dg d S )Nr   r   r   r  r   r0   r0   r1   test_binary_dilation18J  s    
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  s    

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'   rE   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  s,    

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   r&  r   r0   r0   r1   test_binary_dilation23  s,    
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   r  r&  r   r0   r0   r1   test_binary_dilation24  s,    
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   r(  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r&  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  s.    
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   r*  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&  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   r&  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  s&    
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   r6  r7  r   r   r   r   r'   r(   r   rE   rF   r   r  r   r   r0   r0   r1   test_binary_dilation30
  s(    
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   r6  r7  r   r   r   r   r   r   r   r   r   r8  r   r0   r0   r1   test_binary_dilation31  s&    
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   r6  r7  r   r=  r   r   r:  r;  r   r0   r0   r1   test_binary_dilation32-  s(    
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   r3  r   r   r   r   r   r   r   r   r   r   r   r   r   r8  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   rB  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 )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-   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   r@  r   r3  rA  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   rD  r   r   r   r   r   r   rG  )r'   r(   r   rE   rF   r   rH  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#  r$  r   r   r   r   r   r   r   r   r   r   r   r%  r   r   r   r   r   r   r   r   )r'   r(   r   binary_openingr   r   r0   r0   r1   test_binary_opening01  s,    

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   r1  r   r   r   r   r   r   r   r   r   )r   r{   r'   r(   rM  r   r   r0   r0   r1   test_binary_opening02  s.    
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   rD  )r   r   r   r   r   r   r   r   r1  r   r   r   r   r#  r$  r%  rL  )r'   r(   r   binary_closingr   r   r0   r0   r1   test_binary_closing01  s,    

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   rD  r   r#  rO  r1  rP  )r   r{   r'   r(   rR  r   r   r0   r0   r1   test_binary_closing02  s.    
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  s,    


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   rU  rV  r0   r0   r1   test_binary_fill_holes02D  s,    


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   rU  rV  r0   r0   r1   test_binary_fill_holes03V  s,    


z.TestNdimageMorphology.test_binary_fill_holes03c                 C   sZ   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   rR   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  s    
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 )
NrZ  r[  r\  r   r]  )r_  r   r`  ra  rb  rc  )r+   r(   r_  r0   r0   r1   test_grey_erosion01_overlapr  s    
z1TestNdimageMorphology.test_grey_erosion01_overlapc                 C   sl   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 )NrZ  r[  r\  r   r]  r   r_  r   r`  ra  rb  rc  r+   r(   r_  r   r   r0   r0   r1   test_grey_erosion02|  s    
z)TestNdimageMorphology.test_grey_erosion02c                 C   sl   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 )NrZ  r[  r\  r   r]  r   rh  r  )r   r   r   r   r   )r   r   r   r   r   rc  ri  r0   r0   r1   test_grey_erosion03  s    
z)TestNdimageMorphology.test_grey_erosion03c                 C   sZ   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 )
NrZ  r[  r\  r   r   r^  r   r   rR   rR   r   r   rR   r   rR   r   r   r   r   r   r   r'   r(   r   grey_dilationr   re  r0   r0   r1   test_grey_dilation01  s    
z*TestNdimageMorphology.test_grey_dilation01c                 C   sl   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 )NrZ  r[  r\  r   r   r   rh  rl  rm  rn  ro  ri  r0   r0   r1   test_grey_dilation02  s    
z*TestNdimageMorphology.test_grey_dilation02c                 C   sl   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 )NrZ  r[  r\  r   r   r   rh  )r   r   
   rs  r   )r   rs  rR   rs  r   )rR   rR   rR   r   r   ro  ri  r0   r0   r1   test_grey_dilation03  s    
z*TestNdimageMorphology.test_grey_dilation03c                 C   sd   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 NrZ  r[  r\  r   r]  r^  r'   r(   r   rd  rp  grey_openingr   r+   r(   r_  r   r/   r   r0   r0   r1   test_grey_opening01  s    
z)TestNdimageMorphology.test_grey_opening01c                 C   sz   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 NrZ  r[  r\  r   r]  r   rh  rv  r+   r(   r_  r   r   r/   r   r0   r0   r1   test_grey_opening02  s     
z)TestNdimageMorphology.test_grey_opening02c                 C   sd   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 ru  r'   r(   r   rp  rd  grey_closingr   rx  r0   r0   r1   test_grey_closing01  s    
z)TestNdimageMorphology.test_grey_closing01c                 C   sz   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 rz  r}  r{  r0   r0   r1   test_grey_closing02  s     
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 	NrZ  r[  r\  r   r]  r   rh  r_  r   r   )
r'   r(   r   rp  rd  rE   rF   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 rz  )r'   r(   r   rp  rd  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 )
NrZ  r[  r\  r   r]  r   rh  r   r  )
r'   r(   r   rp  rd  rE   rF   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 )	NrZ  r[  r\  r   r]  r   rh  r   )r'   r(   r   rp  rd  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   rw  rE   rF   r   white_tophatr   r{  r0   r0   r1   test_white_tophat01$  s    
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 rz  )r'   r(   r   rw  r  r   r{  r0   r0   r1   test_white_tophat022  s    
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;   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(   bool_re   r   r  r   r+   r(   r   r/   r   r0   r0   r1   test_white_tophat03?  s.    

z)TestNdimageMorphology.test_white_tophat03c                 C   sD   t jdt jd}t jdt jd}t j|t jd}tj|||d d S Nr   r;   rb   )r   r   )r'   eyer  re   
empty_likerG   r   r  r+   r(   r   r   r0   r0   r1   test_white_tophat04S  s    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~  rE   rF   r   black_tophatr   r{  r0   r0   r1   test_black_tophat01[  s    
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 rz  )r'   r(   r   r~  r  r   r{  r0   r0   r1   test_black_tophat02i  s    
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;   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  re   r   r  r   r  r0   r0   r1   test_black_tophat03v  s.    

z)TestNdimageMorphology.test_black_tophat03c                 C   sD   t jdt jd}t jdt jd}t j|t jd}tj|||d d S r  )r'   r  r  re   r  rG   r   r  r  r0   r0   r1   test_black_tophat04  s    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(   rE   rF   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   r1  rP  rK  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:   rL   rQ   rS   rV   r]   r^   r_   ra   rh   ro   rp   ru   rv   rx   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  r  r  r  r  r  r  r  r!  r"  r'  r)  r+  r0  r2  r4  r5  r9  r<  r>  r?  rC  rE  rF  rI  rJ  rN  rQ  rS  rT  rW  rX  rY  rf  rg  rj  rk  rq  rr  rt  ry  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                   @   s$   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   r6  r7  r;   rb   r  )	r'   r(   Zuint8re   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   rp  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   rp  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                   @   s$   e Zd Zdd Zdd Zdd ZdS )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   rb   r   )r'   rE   r   r(   re   r  r   rM  
opened_oldrR  
closed_old)r+   r   r0   r0   r1   r    s    z%TestBinaryOpeningClosing.setup_methodc              
   C   s,   t | j| jdd dd dd}t|| j d S Nr   r   F)r   rM  r(   r  r   r  )r+   Z
opened_newr0   r0   r1   test_opening_new_arguments  s    z3TestBinaryOpeningClosing.test_opening_new_argumentsc              
   C   s,   t | j| jdd dd dd}t|| j d S r  )r   rR  r(   r  r   r  )r+   Z
closed_newr0   r0   r1   test_closing_new_arguments	  s    z3TestBinaryOpeningClosing.test_closing_new_argumentsN)r  r  r  r  r  r  r0   r0   r0   r1   r    s   r  c                  C   s4   t dg} tttj| dd tttj| dd d S Nr   g      ?r         ?)r'   re   rT   r   r   r   r,   r0   r0   r1   )test_binary_erosion_noninteger_iterations	  s    r  c                  C   s4   t dg} tttj| dd tttj| dd d S r  )r'   re   rT   r   r   r  r  r0   r0   r1   *test_binary_dilation_noninteger_iterations	  s    r  c                  C   s4   t dg} tttj| dd tttj| dd d S r  )r'   re   rT   r   r   rM  r  r0   r0   r1   )test_binary_opening_noninteger_iterations	  s    r  c                  C   s4   t dg} tttj| dd tttj| dd d S r  )r'   re   rT   r   r   rR  r  r0   r0   r1   )test_binary_closing_noninteger_iterations	  s    r  c                  C   s`   t dg} tj| dddtj| dtddks4J tj| dddtj| dtddks\J d S )Nr   r   r  )r   r   rw   )r'   re   r   r   r   r  r0   r0   r1   ;test_binary_closing_noninteger_brute_force_passes_when_true'	  s    r  function)r   r  rM  rR  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randintrj   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  rj   r   r  r   r  r   )r  r,   r  r/   r0   r0   r1   'test_binary_hit_or_miss_input_as_outputI	  s    

r  c                  C   sJ   d} t jt| d$ tjtddd W d    n1 s<0    Y  d S )Nzinvalid metric provided)matchr  garbagerc   )r  r   
ValueErrorr   rZ   rd   re   )msgr0   r0   r1   *test_distance_transform_cdt_invalid_metricW	  s
    r  )r'   rd   Znumpy.testingr   r   r   r   r  r   rT   Zscipyr    r	   r
   r  r  r  r  r  r  r  r  r  r  r  r  r0   r0   r0   r1   <module>   sP                    [