o
    h                    @   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   ^/var/www/html/scripts/venv/lib/python3.10/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,   tdttftdts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   rU       rU   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   rS   )	r   r   r   r   r   r   r   r   r   r   )	r   r   r   r   	   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r    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   rX   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`   rb   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   ra   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   r[   r\   r   r)   )r+   r,   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   metrici)r'   r(   nponesr   ra   sum)r+   r   r,   
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   )axis)r'   r(   r   distance_transform_edtr)   r   rB   rG   r   astyperH   multiplyaddreducesqrt)r+   r   r,   r-   r.   rc   rP   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   rt   rF   rG   rH   rI   rB   rJ   r   rK   r0   r0   r1   test_distance_transform_edt02  rR   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   rT   r'   r(   r   r)   rt   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   r|   r}   r~   r0   r0   r1   test_distance_transform_edt4%  r   z2TestNdimageMorphology.test_distance_transform_edt4c                 C   s   t d}t|dg d S )NF        )r   rt   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   r[   r\   r   r)   )r+   r,   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'   rn   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   
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   r[   	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'   int64r(   r   rF   rG   r   r   r   r&  r0   r0   r1   test_binary_erosion40  r(  z+TestNdimageMorphology.test_binary_erosion40c                 C   r   r   r'   rn   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   r5  )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   r:  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   r:  )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 r2  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   rG  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   rM  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   rG  r:  rM  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   rP  r   r   r   r   r   r   r   r   r   r   r   r   r   rG  r   rA  rM  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   rJ  )r   r   r   r   r   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   rR  r   r   r   r   r   r   r   r   r   r   r   r   r   r   rM  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   rM  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   r_  r`  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   r_  r`  r   r   r   r   r   r   r   r   r   ra  r   r0   r0   r1   test_binary_dilation31  rc  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   r_  r`  r   rh  r   r   rd  re  r   r0   r0   r1   test_binary_dilation32-  rg  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  r\  r   r   r   r   r   r   r   r   r   r   r   r  r   ra  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   rm  re  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 )NrT  rU  r   rV  rP  rW  r   r   r   r   r   r   rG  r   )r  r   r   )r'   r(   r  r  r  r   r,  r   )r+   r   r  r,   r  r/   r-   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   rk  r  r\  rl  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   ro  r   r   r   r   r   r   rr  )r'   r(   r   rF   rG   r   rs  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   rJ  rK  r   r   r   r   r   r   r   r   r   r   r   rL  r   r   r   r   r   r   r   r   )r'   r(   r   binary_openingr   r   r0   r0   r1   test_binary_opening01  rO  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   rJ  r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rY  r   r   r   r   r   r   r   r   r   )r   r   r'   r(   rx  r   r   r0   r0   r1   test_binary_opening02  r[  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   ro  )r   r   r   r   r   r   r   r   rY  r   r   r   r   rJ  rK  rL  rw  )r'   r(   r   binary_closingr   r   r0   r0   r1   test_binary_closing01  rO  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   ro  r   rJ  rz  rY  r{  )r   r   r'   r(   r}  r   r   r0   r0   r1   test_binary_closing02  r[  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   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   r  r  r0   r0   r1   test_binary_fill_holes02D  r  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   r  r  r0   r0   r1   test_binary_fill_holes03V  r  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   rY   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  r<  )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   rY   rY   r   r   rY   r   rY   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  rY   r  r   )rY   rY   rY   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  tmp1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<   rj   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )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_rn   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<   rj   )r  r   )r'   eyer  rn   
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<   rj   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r  r  )r'   r(   r  rn   r   r  r   r  r0   r0   r1   test_black_tophat03v  r  z)TestNdimageMorphology.test_black_tophat03c                 C   r  r  )r'   r  r  rn   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   r8  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  rJ  r   rY  r{  rv  r   r  )r+   r   struct1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;   rQ   rW   rZ   r]   rd   re   rf   ri   rr   rz   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r
  r  r  r  r  r  r  r#  r'  r*  r-  r/  r0  r1  r3  r4  r6  r7  r9  r;  r=  r>  r?  r@  rB  rC  rD  rE  rF  rH  rI  rN  rQ  rS  rX  rZ  r]  r^  rb  rf  ri  rj  rn  rp  rq  rt  ru  ry  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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   r_  r`  r<   rj   r  )	r'   r(   uint8rn   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   rj   r   )r'   rF   r   r(   rn   r  r   rx  
opened_oldr}  
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   rx  r(   r  r   r  )r+   
opened_newr0   r0   r1   test_opening_new_arguments     z3TestBinaryOpeningClosing.test_opening_new_argumentsc              
   C   r  r  )r   r}  r(   r  r   r  )r+   
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'   rn   r[   r!  r   r   r,   r0   r0   r1   )test_binary_erosion_noninteger_iterations	     r  c                  C   r  r   )r'   rn   r[   r!  r   r,  r  r0   r0   r1   *test_binary_dilation_noninteger_iterations	  r  r  c                  C   r  r   )r'   rn   r[   r!  r   rx  r  r0   r0   r1   )test_binary_opening_noninteger_iterations	  r  r  c                  C   r  r   )r'   rn   r[   r!  r   r}  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'   rn   r   r   r   r  r0   r0   r1   ;test_binary_closing_noninteger_brute_force_passes_when_true'	  s   r  function)r   r,  rx  r}  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randintru   r   getattrr   copyr   )r	  r   r  rstater,   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  ru   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  garbagerk   )r  r   
ValueErrorr   ra   rm   rn   )msgr0   r0   r1   *test_distance_transform_cdt_invalid_metricW	  s   "r  )r'   rm   numpy.testingr   r   r   r   r  r   r[   scipyr    r	   r
   r  r  r  r  r  r  r  r  r  r  r  r  r0   r0   r0   r1   <module>   sR                     [