o
    ci.                     @   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mZmZmZ ee
 ZedkZdd	 Zd
d Zdd Zdd Zdd Zdd Zdd ZdMddZej !dg dej !ddej !ddej !ddd gd!d" Z"ej !dg dej !d#d$ej !d%d$ej !dd gej #d&d'd( Z$ej !dg dej !d)d*ej !dd gd+d, Z%ej !dg dej !d-d.d/gej !ddd gej #d&d0d1 Z&ej !dg dej !d)d2ej !dd gd3d4 Z'd5d6 Z(d7d8 Z)ej*ej+ej,ej-gZ.ej !d9e.ej !d:g d;d<d= Z/ej !d9e.ej !d:g d>d?d@ Z0ej !de.dAdB Z1dCdD Z2ej,ej-gZ3ej !de3dEdF Z4dGdH Z5dIdJ Z6dKdL Z7dS )N    N)assert_array_equalassert_equal)ndimage)datacolor
morphology)img_as_bool)binary
footprintsgrayfootprint_rectangleg?c                  C   sR   t d} ttd dd df | }tttd dd df | }t|| d S )N   r   d      r   r	   binary_erosionbw_imgr   r   erosionr   	footprint
binary_resgray_res r   n/var/www/addictedbytheproject.nl/epg/venv/lib/python3.10/site-packages/skimage/morphology/tests/test_binary.pytest_non_square_image   s    r   c                  C   2   t d} tt| }ttt| }t|| d S Nr   r   r   r   r   r   test_binary_erosion      r   c                  C   r   r   )r   r	   binary_dilationr   r   r   dilationr   r   r   r   r   test_binary_dilation   r   r"   c                  C   r   r   )r   r	   binary_closingr   r   r   closingr   r   r   r   r   test_binary_closing$   r   r%   c                  C   sb   t g dg dg dg} tjt| d}t |tksJ tjt| dd}t |tkr/J d S )Nr   r      r   r'   r'   r'   r'   r'   r   minr   mode)nparrayr	   r#   r   allimg)r   result_default
result_minr   r   r   test_binary_closing_extensive+   
   r4   c                  C   r   r   )r   r	   binary_openingr   r   r   openingr   r   r   r   r   test_binary_opening6   r   r8   c                  C   sb   t g dg dg dg} tjt| d}t |tksJ tjt| dd}t |tkr/J d S )Nr&   r(   r)   r*   maxr,   )r.   r/   r	   r6   r   r0   )r   r2   
result_maxr   r   r   "test_binary_opening_anti_extensive=   r5   r;      c                 C   sd   | dkrt jd| t jd}d|d< |S | dkr(t jd| t jd}d|d< |S tjd|dd	}|S )
Nr   )   dtyper   )   r@   r    r'       )n_dimrng)r.   onesuint8zerosr   binary_blobs)functionndimr1   r   r   r   _get_decomp_test_dataH   s   rJ   rH   )r   r    r#   r6   nrows)r         ncolsdecomposition	separablesequencec           
      C   sX   t ||fdd}t ||f|d}t| }tt| }|||d}|||d}	t||	 dS tValidate footprint decomposition for various shapes.

    comparison is made to the case without decomposition.
    NrO   r*   r   rJ   getattrr	   r   )
rH   rK   rN   rO   footprint_ndarrayr   r1   funcexpectedoutr   r   r   test_rectangle_decompositionT   s   
r[   m)r   r'   r<   r         nzFignore:.*falling back to decomposition='separable':UserWarning:skimagec           
      C   s   |dkr(|dkr(t t tj|||d W d   dS 1 s!w   Y  dS tj||dd}tj|||d}t| }tt| }|||d}|||d}	t||	 dS )rS   r   rT   Nr*   )	pytestraises
ValueErrorr
   octagonrJ   rV   r	   r   )
rH   r\   r_   rO   rW   r   r1   rX   rY   rZ   r   r   r   test_octagon_decompositioni   s   "
rd   radius)r'   r<   r^   c           	      C   sT   t j|dd}t j||d}t| }tt| }|||d}|||d}t|| dS rR   )r
   diamondrJ   rV   r	   r   	rH   re   rO   rW   r   r1   rX   rY   rZ   r   r   r   test_diamond_decomposition   s   
rh   shaper   r   r   )r   r]   r^   c           	      C   sT   t |dd}t ||d}t| dd}tt| }|||d}|||d}t|| dS rS   NrT   r   )rI   r*   rU   )	rH   ri   rO   rW   r   r1   rX   rY   rZ   r   r   r   test_cube_decomposition   s   
rl   )r'   r<   r   c           	      C   sX   t j|dd}t j||d}t| dd}tt| }|||d}|||d}t|| dS rk   )r
   
octahedronrJ   rV   r	   r   rg   r   r   r   test_octahedron_decomposition   s   
rn   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=   r=   r>   )   ro   Tr<      )r.   rD   rE   rF   boolr	   r   r   r   r   r   )r   r1   r   r   r   r   r   test_footprint_overflow   s   rr   c                  C   sr   t jt jfD ]0} tjdtjd}td}t|}| }| |||d t||ks.J t	|| || qd S )Nr   r>   
   rt   rZ   )
r	   r   r    r.   rD   rE   
zeros_likecopyanyr   )rX   r   r1   rZ   	out_savedr   r   r   test_out_argument   s   

rz   rX   r-   )r9   r+   ignorec                 C   s   t jdtd}| ||d d S )Nrs   r>   r-   )r.   rD   rq   rX   r-   r1   r   r   r   test_supported_mode   s   r~   )reflectr   Nc                 C   sJ   t d}tjtdd | ||d W d    d S 1 sw   Y  d S )Nrs   zunsupported mode)matchr|   )r.   rD   r`   ra   rb   r}   r   r   r   test_unsupported_mode   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 )Nr'   )re   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r'   r'   r'   r'   r'   r'   r   r   )
r   r   r'   r'   r'   r   r   r'   r   r   )r   rf   r.   r/   rE   r   )rH   r   imageim_expectedim_testr   r   r   test_default_footprint   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rL   rL   rL   r'   r<   r>   r   r^   )r.   rF   rq   r	   r6   ndigenerate_binary_structurer   )r   openedimage_expectedr   r   r   "test_3d_fallback_default_footprint	  s   
"r   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   rj   r>   )r.   rF   rq   rD   rE   r   )rH   r   cube	new_imager   r   r   test_3d_fallback_cube_footprint  s
   
r   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	   r    @  r<   r      r     r]   r]   r'   )	structure)	r.   rF   uint16r	   r6   r#   r   r   r   )r   
bin_opened
bin_closedr   ndimage_openedndimage_closedr   r   r   test_2d_ndimage_equivalence%  s   


r   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 )Nr   r   r<   r   r   r   r   r   r   r>   ru   r.   rF   r   r	   r6   r#   
empty_likerE   r   r?   rq   r   r   r   
int_opened
int_closedr   r   r   test_binary_output_2d6  s   

r   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)r   r   r   r   r<   r   r   r   r   r   )r]   r]   r]   r>   ru   r   r   r   r   r   test_binary_output_3dK  s   

r   )r<   )8numpyr.   r`   numpy.testingr   r   scipyr   r   skimager   r   r   skimage.utilr   skimage.morphologyr	   r
   r   r   rgb2gray	astronautr1   r   r   r   r"   r%   r4   r8   r;   rJ   markparametrizer[   filterwarningsrd   rh   rl   rn   rr   rz   r   r    r6   r#   binary_functionsr~   r   r   r   binary_3d_fallback_functionsr   r   r   r   r   r   r   r   <module>   s    
	

