a
    =b                     @   s@  d dl Zd dlZd dlmZmZ d dlmZ d dl	m
Z
mZmZ d dlmZ d dlmZ d dlmZmZ ee
 ZedkZd	d
 Zejdg ddd Zdd Zdd Zdd Zdd Zdd Z dd Z!ej"ej#ej$ej%gZ&ejde&dd Z'dd Z(ej$ej%gZ)ejde)dd  Z*d!d" Z+d#d$ Z,d%d& Z-dS )'    N)assert_array_equalassert_equal)ndimage)datacolor
morphology)expected_warnings)img_as_bool)binarygrayg?c                  C   sT   t d} ttd dd df | }tttd dd df | }t|| d S )N   d      	r   squarer
   binary_erosionbw_imgr	   r   erosionr   	footprint
binary_resgray_res r   Clib/python3.9/site-packages/skimage/morphology/tests/test_binary.pytest_non_square_image   s    
 r   function)r   binary_dilationbinary_closingbinary_openingc                 C   sF   t dg( tt| ttdd W d    n1 s80    Y  d S )Nz%`selem` is a deprecated argument namer   )Zselem)r   getattrr
   r   r   r   )r   r   r   r   test_selem_kwarg_deprecation   s    r    c                  C   s4   t d} tt| }ttt| }t|| d S Nr   r   r   r   r   r   test_binary_erosion    s    
r"   c                  C   s4   t d} tt| }ttt| }t|| d S r!   )	r   r   r
   r   r   r	   r   Zdilationr   r   r   r   r   test_binary_dilation'   s    
r#   c                  C   s4   t d} tt| }ttt| }t|| d S r!   )	r   r   r
   r   r   r	   r   closingr   r   r   r   r   test_binary_closing.   s    
r%   c                  C   s4   t d} tt| }ttt| }t|| d S r!   )	r   r   r
   r   r   r	   r   Zopeningr   r   r   r   r   test_binary_opening5   s    
r&   c                  C   s\   t jdt jd} t jdtd}d|ddddf< t|| }tt	|| }t
|| d S )N)   r'   dtype)   r*   T      )nponesuint8zerosboolr
   r   r	   r   r   r   )r   imgr   r   r   r   r   test_footprint_overflow<   s    r3   c                  C   sr   t jt jfD ]`} tjdtjd}td}t|}| }| |||d t||ks\J t	|| || qd S )N)r   r   r(   )
   r4   out)
r
   r   r   r-   r.   r/   Z
zeros_likecopyanyr   )funcr   r2   r6   Z	out_savedr   r   r   test_out_argumentE   s    

r:   c                 C   s   t jdd}tg dg dg dg dg dg dg dg dg dg dg dg dg dgtj}| ||}| |}t|| d S )N   )Zradius)
r   r   r   r   r   r   r   r   r   r   )
r   r   r;   r;   r;   r;   r;   r;   r   r   )
r   r   r;   r;   r;   r   r   r;   r   r   )r   Zdiamondr-   Zarrayr/   r   )r   r   imageZim_expectedZim_testr   r   r   test_default_footprintT   s(    

r=   c                  C   sn   t dt} d| ddddddf< t| }t jdtd}tdd|ddddddf< t|| d S )N   r?   r?   r;   r+   r(   r      )r-   r0   r1   r
   r   ndigenerate_binary_structurer   )r<   ZopenedZimage_expectedr   r   r   "test_3d_fallback_default_footprinti   s    
"rD   c                 C   sN   t dt}d|ddddddf< t jdt jd}| ||}t|| d S )Nr>   r;   r+   r@   )r   r   r   r(   )r-   r0   r1   r.   r/   r   )r   r<   ZcubeZ	new_imager   r   r   test_3d_fallback_cube_footprinty   s
    
rE   c                  C   s   t dt j} d| ddddf< d| ddddf< d| d	< t| }t| }tdd
}tj| |d}tj| |d}t|| t|| d S )N	   rG    @  r+   r@      r        rM   r;   )Z	structure)	r-   r0   uint16r
   r   r   rB   rC   r   )r<   
bin_opened
bin_closedr   Zndimage_openedZndimage_closedr   r   r   test_2d_ndimage_equivalence   s    


rQ   c                  C   s   t dt j} d| ddddf< d| ddddf< d| d	< t| }t| }t j| t jd
}t j| t jd
}tj| |d tj| |d t|j	t
 t|j	t
 t|j	t j t|j	t j d S )NrF   rH   r+   r@   rI   r   rJ   rK   rL   r(   r5   r-   r0   rN   r
   r   r   Z
empty_liker/   r   r)   r1   r<   rO   rP   Z
int_openedZ
int_closedr   r   r   test_binary_output_2d   s    

rT   c                  C   s   t dt j} d| ddddddf< d| ddddddf< d| d	< t| }t| }t j| t jd
}t j| t jd
}tj| |d tj| |d t|j	t
 t|j	t
 t|j	t j t|j	t j d S )N)rG   rG   rG   rH   r+   r@   rI   r   rJ   rK   )rM   rM   rM   r(   r5   rR   rS   r   r   r   test_binary_output_3d   s    

rU   ).Znumpyr-   ZpytestZnumpy.testingr   r   Zscipyr   rB   Zskimager   r   r   Zskimage._shared._warningsr   Zskimage.utilr	   Zskimage.morphologyr
   r   Zrgb2grayZ	astronautr2   r   r   ZmarkZparametrizer    r"   r#   r%   r&   r3   r:   r   r   r   r   Zbinary_functionsr=   rD   Zbinary_3d_fallback_functionsrE   rQ   rT   rU   r   r   r   r   <module>   sB   
	


