o
    j.                     @   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   e/var/www/html/Deteccion_Ine/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   Z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_defaultZ
result_minr   r   r   test_binary_closing_extensive+   
   r2   c                  C   r   r   )r   r	   binary_openingr   r   r   Zopeningr   r   r   r   r   test_binary_opening6   r   r5   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	   r4   r   r/   )r   r1   Z
result_maxr   r   r   "test_binary_opening_anti_extensive=   r3   r7      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&       )Zn_dimrng)r-   onesuint8zerosr   Zbinary_blobs)functionndimr0   r   r   r   _get_decomp_test_dataH   s   rD   rB   )r   r    r"   r4   nrows)r         ncolsdecompositionZ	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rI   r)   r   rD   getattrr	   r   )
rB   rE   rH   rI   footprint_ndarrayr   r0   funcexpectedoutr   r   r   test_rectangle_decompositionT   s   
rT   m)r   r&   r8   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 )rL   r   rM   Nr)   )	pytestraises
ValueErrorr
   ZoctagonrD   rO   r	   r   )
rB   rU   rX   rI   rP   r   r0   rQ   rR   rS   r   r   r   test_octagon_decompositioni   s   "
r\   radius)r&   r8   rW   c           	      C   sT   t j|dd}t j||d}t| }tt| }|||d}|||d}t|| dS rK   )r
   diamondrD   rO   r	   r   	rB   r]   rI   rP   r   r0   rQ   rR   rS   r   r   r   test_diamond_decomposition   s   
r`   shaper   r   r   )r   rV   rW   c           	      C   sT   t |dd}t ||d}t| dd}tt| }|||d}|||d}t|| dS rL   NrM   r   )rC   r)   rN   )	rB   ra   rI   rP   r   r0   rQ   rR   rS   r   r   r   test_cube_decomposition   s   
rd   )r&   r8   r   c           	      C   sX   t j|dd}t j||d}t| dd}tt| }|||d}|||d}t|| dS rc   )r
   Z
octahedronrD   rO   r	   r   r_   r   r   r   test_octahedron_decomposition   s   
re   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)r9   r9   r:   )   rf   Tr8      )r-   r?   r@   rA   boolr	   r   r   r   r   r   )r   r0   r   r   r   r   r   test_footprint_overflow   s   ri   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:   
   rk   rS   )
r	   r   r    r-   r?   r@   Z
zeros_likecopyanyr   )rQ   r   r0   rS   Z	out_savedr   r   r   test_out_argument   s   

ro   rQ   r,   )r6   r*   ignorec                 C   s   t jdtd}| ||d d S )Nrj   r:   r,   )r-   r?   rh   rQ   r,   r0   r   r   r   test_supported_mode   s   rs   )Zreflectr   Nc                 C   sJ   t d}tjtdd | ||d W d    d S 1 sw   Y  d S )Nrj   zunsupported mode)matchrq   )r-   r?   rY   rZ   r[   rr   r   r   r   test_unsupported_mode   s   
"ru   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&   )r]   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r&   r&   r&   r&   r&   r&   r   r   )
r   r   r&   r&   r&   r   r   r&   r   r   )r   r^   r-   r.   r@   r   )rB   r   imageZim_expectedZim_testr   r   r   test_default_footprint   s*   
rw   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rF   rF   rF   r&   r8   r:   r   rW   )r-   rA   rh   r	   r4   ndigenerate_binary_structurer   )rv   ZopenedZ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 )Nrx   r&   r8   ry   rb   r:   )r-   rA   rh   r?   r@   r   )rB   rv   ZcubeZ	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    @  r8   ry      r     rV   rV   r&   )Z	structure)	r-   rA   uint16r	   r4   r"   rz   r{   r   )rv   
bin_opened
bin_closedr   Zndimage_openedZ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   r8   ry   r   r   r   r   r   r:   rl   r-   rA   r   r	   r4   r"   Z
empty_liker@   r   r;   rh   rv   r   r   Z
int_openedZ
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   r8   ry   r   r   r   r   )rV   rV   rV   r:   rl   r   r   r   r   r   test_binary_output_3dK  s   

r   )r8   )8numpyr-   rY   Znumpy.testingr   r   Zscipyr   rz   Zskimager   r   r   Zskimage.utilr   Zskimage.morphologyr	   r
   r   r   Zrgb2grayZ	astronautr0   r   r   r   r!   r$   r2   r5   r7   rD   markZparametrizerT   filterwarningsr\   r`   rd   re   ri   ro   r   r    r4   r"   Zbinary_functionsrs   ru   rw   r|   Zbinary_3d_fallback_functionsr}   r   r   r   r   r   r   r   <module>   s    
	

