o
    c«ÏiÔ?  ã                   @   sÊ  d dl Zd dlZd dlmZ d dlmZmZm	Z	 d dl
mZmZmZ d dlmZ d dlmZmZ d dlmZmZmZ d dlmZmZ ejd	d
„ ƒZejdd„ ƒZejejejej ej!ej"fZ#G dd„ dƒZ$G dd„ dƒZ%ejej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/e 0g d¢g d¢g d ¢g d!¢g d"¢g¡Z1e 0g d#¢g d$¢g d%¢g d&¢g d'¢g¡Z2e 0g d(¢g d)¢g d*¢g d+¢g d,¢g¡Z3e 0g d-¢g d.¢g d/¢g d0¢g d1¢g¡Z4e 0g d2¢g d(¢g d3¢g d4¢g d5¢g¡Z5d6d7„ Z6d8d9„ Z7d:d;„ Z8d<d=„ Z9ej' (dg d>¢¡ej' (d?g d@¢¡ej' (dAg d@¢¡ej' (dBdCdDg¡dEdF„ ƒƒƒƒZ:ej' (dg d>¢¡ej' (dGdH¡ej' (dBdDg¡dIdJ„ ƒƒƒZ;ej' (dg d>¢¡ej' (dKdL¡ej' (dMdN¡ej' (dBdDg¡ej' <dO¡dPdQ„ ƒƒƒƒƒZ=ej' (dg d>¢¡ej' (dRdSdTg¡ej' (dBdCdDg¡dUdV„ ƒƒƒZ>ej' (dg d>¢¡ej' (dGdW¡ej' (dBdDg¡dXdY„ ƒƒƒZ?ej' (dZejejg¡ej' (d[d\d]g¡ej' (d^g d_¢¡d`da„ ƒƒƒZ@dS )bé    N)Úndimage)Úassert_allcloseÚassert_array_equalÚassert_equal)ÚcolorÚdataÚ	transform)Úexpected_warnings)ÚfetchÚassert_stacklevel)ÚgrayÚ
footprintsÚfootprint_rectangle)Úimg_as_uintÚimg_as_ubytec                  C   s*   ddl m}  t |  ¡ dd…dd…f ¡S )Nr   ©r   é@   ép   é`   )Úskimager   ÚnpÚascontiguousarrayÚcamerar   © r   úl/var/www/addictedbytheproject.nl/epg/venv/lib/python3.10/site-packages/skimage/morphology/tests/test_gray.pyÚ	cam_image   s   r   c                  C   s2   ddl m}  t |  ¡ dd…ddd…dd…f ¡S )Nr   r   é   é0   é   é$   é    )r   r   r   r   Úcells3dr   r   r   r   Úcell3d_image   s   &r"   c                   @   sz   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zej 	d	e
¡ej 	d
ej¡dd„ ƒƒZej 	d	e
¡ej 	d
g d¢¡dd„ ƒƒZdS )ÚTestMorphologyc           	      C   sŠ   dd„ }|t jt jt jf}tt t t	 
¡ ¡d¡ƒ}i }tddƒD ]!}|D ]}tD ]}|j› d|› d|j› }||||ƒƒ||< q)q%q!|S )Nc                 S   s   t | | fƒS ©N)r   )Únr   r   r   Úsquare/   s   z5TestMorphology._build_expected_output.<locals>.square)r   r   é   é   Ú_)r   ÚdiamondÚdiskÚstarr   r   Údownscale_local_meanr   Úrgb2grayr   ÚcoffeeÚrangeÚgray_morphology_funcsÚ__name__)	Úselfr&   Úfootprints_2DÚimageÚoutputr%   ÚstrelÚfuncÚkeyr   r   r   Ú_build_expected_output.   s$   üÿþÿz%TestMorphology._build_expected_outputc                 C   s(   t t tdƒ¡ƒ}|  ¡ }t||ƒ d S )Nzdata/gray_morph_output.npz)Údictr   Úloadr
   r:   r   )r3   ÚexpectedÚ
calculatedr   r   r   Útest_gray_morphologyF   s   z#TestMorphology.test_gray_morphologyc                 C   sj   t  ¡ }t g d¢g d¢g d¢g¡}tj||d}t ||k¡r"J ‚tj||dd}t ||k¡s3J ‚d S ©N)r   r   r'   )r   r'   r'   )r'   r'   r'   ©Ú	footprintÚignore)rB   Úmode)r   Úcoinsr   Úarrayr   ÚclosingÚall)r3   ÚimgrB   Úresult_defaultÚresultr   r   r   Útest_gray_closing_extensiveK   ó   z*TestMorphology.test_gray_closing_extensivec                 C   sj   t  ¡ }t g d¢g d¢g d¢g¡}tj||d}t ||k¡r"J ‚tj||dd}t ||k¡s3J ‚d S r@   )r   rE   r   rF   r   ÚopeningrH   )r3   rI   rB   rJ   Úresult_ignorer   r   r   Ú test_gray_opening_anti_extensiveV   rM   z/TestMorphology.test_gray_opening_anti_extensiver8   rD   c                 C   s   t  d¡}|||d d S )N©é
   rR   ©rD   )r   Úones©r3   r8   rD   rI   r   r   r   Útest_supported_modea   s   
z"TestMorphology.test_supported_mode)Ú Ú	symmetricé   Nc                 C   sJ   t  d¡}tjtdd |||d W d   ƒ d S 1 sw   Y  d S )NrQ   zunsupported mode©ÚmatchrS   )r   rT   ÚpytestÚraisesÚ
ValueErrorrU   r   r   r   Útest_unsupported_modeg   s   
"ÿz$TestMorphology.test_unsupported_modeN)r2   Ú
__module__Ú__qualname__r:   r?   rL   rP   r\   ÚmarkÚparametrizer1   r   Ú_SUPPORTED_MODESrV   r_   r   r   r   r   r#   %   s    	r#   c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )Ú TestEccentricStructuringElementsc                 C   sH   dt jdt jd | _d| jd< d| j | _tdƒtdƒtdƒg| _d S )Néÿ   )é   rg   ©Údtyper   )é   rj   )rj   r'   )r   rT   Úuint8Úblack_pixelÚwhite_pixelr   r   )r3   r   r   r   Úsetup_classp   s   

ýz,TestEccentricStructuringElements.setup_classc                 C   sB   | j D ]}t | j|¡}t | j|¡}t |d| k¡sJ ‚qd S ©Nrf   )r   r   Úerosionrl   Údilationrm   r   rH   )r3   ÚsÚcÚdr   r   r   Útest_dilate_erode_symmetryz   s
   
ýz;TestEccentricStructuringElements.test_dilate_erode_symmetryc                 C   ó2   | j D ]}t | j|¡}t || jk¡sJ ‚qd S r$   )r   r   rN   rl   r   rH   )r3   rr   Ú	gray_openr   r   r   Útest_open_black_pixel€   ó   
þz6TestEccentricStructuringElements.test_open_black_pixelc                 C   rv   r$   )r   r   rG   rm   r   rH   )r3   rr   Ú
gray_closer   r   r   Útest_close_white_pixel…   ry   z7TestEccentricStructuringElements.test_close_white_pixelc                 C   ó,   | j D ]}t t | j|¡dk¡sJ ‚qd S ©Nr   )r   r   rH   r   rN   rm   ©r3   rr   r   r   r   Útest_open_white_pixelŠ   ó   
ÿz6TestEccentricStructuringElements.test_open_white_pixelc                 C   r|   ro   )r   r   rH   r   rG   rl   r~   r   r   r   Útest_close_black_pixelŽ   r€   z7TestEccentricStructuringElements.test_close_black_pixelc                 C   rv   r$   )r   r   Úwhite_tophatrm   r   rH   ©r3   rr   Útophatr   r   r   Útest_white_tophat_white_pixel’   ry   z>TestEccentricStructuringElements.test_white_tophat_white_pixelc                 C   s2   | j D ]}t | j|¡}t || jk¡sJ ‚qd S r$   )r   r   Úblack_tophatrl   r   rH   rm   rƒ   r   r   r   Útest_black_tophat_black_pixel—   ry   z>TestEccentricStructuringElements.test_black_tophat_black_pixelc                 C   ó0   | j D ]}t | j|¡}t |dk¡sJ ‚qd S r}   )r   r   r‚   rl   r   rH   rƒ   r   r   r   Útest_white_tophat_black_pixelœ   ó   
þz>TestEccentricStructuringElements.test_white_tophat_black_pixelc                 C   rˆ   r}   )r   r   r†   rm   r   rH   rƒ   r   r   r   Útest_black_tophat_white_pixel¡   rŠ   z>TestEccentricStructuringElements.test_black_tophat_white_pixelN)r2   r`   ra   rn   ru   rx   r{   r   r   r…   r‡   r‰   r‹   r   r   r   r   re   o   s    
re   Úfunctionc                 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'   )Ú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   r*   r   rF   rk   r   )rŒ   r7   r5   Ú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©é   r’   r’   r'   rj   éþÿÿÿrh   rY   é   )r   ÚzerosÚboolr   rN   ÚndiÚgenerate_binary_structurer   )r5   Ú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'   rj   r“   )rY   rY   rY   rh   )r   r•   r–   rT   rk   r   )rŒ   r5   ÚcubeÚ	new_imager   r   r   Útest_3d_fallback_cube_footprintÛ   s
   
rž   c                  C   sà   t jdtd} d| ddd…dd…f< d| ddd…dd…f< d| ddd…dd…f< tdgƒ t | ¡}W d   ƒ n1 s=w   Y  t dd¡}tdgƒ tj| jt j	d|d	}W d   ƒ n1 sdw   Y  t
||ƒ d S )
Nr‘   rh   r'   rj   r(   rY   r”   úoperator.*deprecated|\A\ZrA   )r   r•   r–   r	   r   r‚   r—   r˜   Úviewrk   r   ©r5   r   rB   rš   r   r   r   Útest_3d_fallback_white_tophatç   ó   ÿÿÿr¢   c                  C   sà   t jdtd} d| ddd…dd…f< d| ddd…dd…f< d| ddd…dd…f< tdgƒ t | ¡}W d   ƒ n1 s=w   Y  t dd	¡}tdgƒ tj| jt j	d|d
}W d   ƒ n1 sdw   Y  t
||ƒ d S )Nr‘   rh   r   rj   r(   rY   r”   rŸ   r'   rA   )r   rT   r–   r	   r   r†   r—   r˜   r    rk   r   r¡   r   r   r   Útest_3d_fallback_black_tophat÷   r£   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¥   é€   rj   r“   éÄ   rY   éýÿÿÿrf   )r(   r(   r'   rA   )r   r•   rk   r   rN   rG   r—   r˜   Úgrey_openingÚgrey_closingr   )r5   r™   ÚclosedrB   Úndimage_openedÚndimage_closedr   r   r   Útest_2d_ndimage_equivalence  s   


r®   )çš™™™™™á?ç
×£p=
ç?g333333ã?çHáz®Gá?çáz®GáÚ?)gÍÌÌÌÌÌä?ç)\Âõ(Ü?ç{®Gázì?ç¸…ëQ¸î?çR¸…ëQØ?)çHáz®Gé?çö(\Âõà?g=
×£p=â?çÃõ(\Âí?çìQ¸…ë±?)ç
×£p=
·?ç{®Gáz”?çÂõ(\ê?çö(\Âõè?ç×£p=
×ë?)ç\Âõ(\ï?gš™™™™™é?çq=
×£pÝ?r¾   ç¸…ëQ¸¾?)r¯   r³   r±   r²   r¶   )r³   r³   r³   r¶   rº   )r»   r¼   r¸   rº   rº   )r¼   r¼   r¼   r¾   rº   )r»   r¼   rÁ   rÂ   rÂ   )r°   r°   r´   rµ   r±   )r·   r´   rµ   rµ   rµ   )r·   r·   r¹   rµ   r¹   )rÀ   r½   r½   r¹   r¿   )rÀ   rÀ   r½   r¾   r¿   )r¯   r¯   r±   r±   r²   )r¯   r³   r±   r³   r¶   )r³   r¸   r¸   r¾   rº   )r»   r¼   r¾   r¾   r¾   )r»   rÁ   rÁ   r¾   rÂ   )r°   r°   r°   r±   r±   )r·   r·   r·   r¹   r¿   )r·   r·   r½   r¾   r¿   )rÀ   r½   r¾   r¾   r¾   c                   C   sD   t t t¡tƒ t t t¡tƒ t t t¡tƒ t t 	t¡t
ƒ d S r$   )r   r   rp   ÚimÚerodedrq   ÚdilatedrN   r™   rG   r«   r   r   r   r   Ú
test_floatL  s   rÆ   c                  C   sb   t ttttttgƒ\} }}}}tt 	| ¡|ƒ tt 
| ¡|ƒ tt | ¡|ƒ tt | ¡|ƒ d S r$   )Úmapr   rÃ   rÄ   rÅ   r™   r«   r   r   rp   rq   rN   rG   )Úim16Úeroded16Ú	dilated16Úopened16Úclosed16r   r   r   Útest_uint16S  s   ÿrÍ   c                  C   sÒ   t  g d¢g d¢g d¢gt j¡} t  dt j¡}|d d d…d d d…f }t  g d¢g d¢g d¢g d¢g d	¢gt j¡}t  g d
¢g d¢g d¢g d¢g d¢gt j¡}tj| |d t||ƒ tj| |d t||ƒ d S )N)r”   rg   rj   )r’   rj   rj   )rY   r”   r'   )r”   r”   rj   )r’   r   rg   r   rg   )r   r   r   r   r   )r’   r   r’   r   rj   )r’   r   r”   r   r”   )r”   r   rj   r   rj   )rj   r   rj   r   r'   )rY   r   r'   r   r'   )Úout)r   rF   rk   r•   r   rq   r   rp   )r5   Úout_array_bigÚ	out_arrayÚexpected_dilationÚexpected_erosionr   r   r   Útest_discontiguous_out_array]  s2    ûø
ûø

rÓ   c                  C   s4   t  g d¢¡} t  g d¢¡}t | ¡}t||ƒ d S )N)r'   rj   rY   rj   r'   )r'   r'   rj   r'   r'   )r   rF   r   rp   r   )r5   r=   rÄ   r   r   r   Útest_1d_erosion{  s   
rÔ   )rp   rq   rG   rN   r‚   r†   Únrows)rY   r’   é   ÚncolsÚdecompositionÚ	separableÚsequencec           
      C   sP   t ||fdd}t ||f|d}tt|ƒ}|| |d}|| |d}	t||	ƒ dS ©útValidate footprint decomposition for various shapes.

    comparison is made to the case without decomposition.
    N©rØ   rA   ©r   Úgetattrr   r   )
r   rŒ   rÕ   r×   rØ   Úfootprint_ndarrayrB   r8   r=   rÎ   r   r   r   Útest_rectangle_decomposition‚  s   
rá   r   )rj   rY   c           	      C   óL   t j|dd}t j||d}tt|ƒ}|| |d}|| |d}t||ƒ dS rÛ   )r   r*   rß   r   r   )	r   rŒ   r   rØ   rà   rB   r8   r=   rÎ   r   r   r   Útest_diamond_decomposition–  ó   
rã   Úm)r   r'   rY   r”   r%   )r   r'   rj   rY   zFignore:.*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|ƒ}|| |d}|| |d}	t||	ƒ dS )rÜ   r   rÝ   NrA   )r\   r]   r^   r   Úoctagonrß   r   r   )
r   rŒ   rå   r%   rØ   rà   rB   r8   r=   rÎ   r   r   r   Útest_octagon_decomposition©  s   "ÿ
rç   Úshape)r”   r”   r”   )r”   r”   r’   c           	      C   sH   t |dd}t ||d}tt|ƒ}|| |d}|| |d}t||ƒ dS rÛ   rÞ   )	r"   rŒ   rè   rØ   rà   rB   r8   r=   rÎ   r   r   r   Útest_cube_decompositionÄ  s   
ré   )rY   c           	      C   râ   rÛ   )r   Ú
octahedronrß   r   r   )	r"   rŒ   r   rØ   rà   rB   r8   r=   rÎ   r   r   r   Útest_octahedron_decomposition×  rä   rë   r8   ÚnameÚshift_xÚshift_yÚvalue)TFNc                 C   sd   t  d¡}| |ƒ d}tjt|d}| |fi ||i¤Ž W d   ƒ n1 s'w   Y  t|ƒ d S )NrR   z&`shift_x` and `shift_y` are deprecatedrZ   )r   rT   r\   ÚwarnsÚFutureWarningr   )r8   rì   rï   rI   ÚregexÚrecordr   r   r   Útest_deprecated_shiftê  s   
ÿrô   )AÚnumpyr   r\   Úscipyr   r—   Únumpy.testingr   r   r   r   r   r   r   Úskimage._shared._warningsr	   Úskimage._shared.testingr
   r   Úskimage.morphologyr   r   r   Úskimage.utilr   r   Úfixturer   r"   rp   rq   rN   rG   r‚   r†   r1   r#   re   Úgray_functionsrb   rc   r   r›   Úgray_3d_fallback_functionsrž   r¢   r¤   r®   rF   rÃ   rÄ   rÅ   r™   r«   rÆ   rÍ   rÓ   rÔ   rá   rã   Úfilterwarningsrç   ré   rë   rô   r   r   r   r   Ú<module>   sü    

ú
J9ú


ûÿ
ûÿ
ûÿ
ûÿ
ûÿ
þþþÿþþ