o
    ÕjÜ  ć                   @   s®  d dl mZ d dlmZ d dlZd dlmZ d dlm	Z	 d dl
mZ d dlmZ e g d¢”Ze g d	¢”Ze g d
¢”Ze g d¢”Ze g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g
”Ze g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g
”Ze g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g
”Ze g d¢g d ¢g d!¢g d"¢g d#¢g”Ze g d$¢g d%¢g d&¢g d'¢g d'¢g”Ze g d(¢g d)¢g d(¢g d(¢gg d(¢g d*¢g d(¢g d(¢gg d(¢g d)¢g d(¢g d+¢gg d(¢g d(¢g d(¢g d+¢gg”Ze g d,¢g d,¢g d,¢g d-¢gg d,¢g d,¢g d,¢g d.¢gg d,¢g d,¢g d/¢g d0¢gg d1¢g d1¢g d/¢g d0¢gg”Ze g d)¢g d1¢g d)¢g d(¢gg d*¢g d,¢g d*¢g d(¢gg d)¢g d1¢g d-¢g d.¢gg d(¢g d(¢g d+¢g d.¢gg”Ze g d2¢g d3¢g d)¢g”Ze d4eed5d6feed5d6feed7d6feed5d6feed8d6feed9d6feed6g d:¢fg”d;d< Ze d=d9d5g”e d>ed?”d@dA ZdBdC Z dS )Dé    )Śndimage)ŚdataN)Śmeasure)Śexpand_labels)Śtesting)Śassert_array_equal)r   r   é   r   r   r   r   r   r   é   r	   r   r   r   r   r   r   )r   r   r   r   r   r   r	   r	   r	   r	   r	   r	   r	   r	   r   r   r   )r   r   r   r   r   r   r   r   r	   r	   r   r   r   r   r   r   )r   r   r   r   r   r   r	   r	   r	   r	   r	   r	   r	   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r   r   r	   r	   r   r   r   r   r   r   r   )r   r	   r	   r	   r   r   r   r   r   r   r   )r   r	   r	   r   r   r   r   r   r   r   r   )r   r   r	   r   r   r   r   r   r   é   r   )r   r   r   r   r   r   r   r   r   r
   r   )r	   r	   r	   r	   r	   r	   r   r   r   r   r   )r	   r	   r	   r	   r	   r	   r	   r   r   r
   r   )r	   r	   r	   r	   r	   r	   r	   r
   r
   r
   r
   )r	   r	   r	   r	   r	   r	   r   r
   r
   r
   r
   )r	   r	   r	   r	   r	   r	   r
   r
   r
   r
   r
   )r	   r	   r	   r	   r	   r   r
   r
   r
   r
   r
   )r	   r	   r	   r	   r	   r   r   r
   r
   r
   r
   )r   r   r	   r   r   r   r   r
   r
   r
   r
   )r   r	   r	   r	   r	   r   r   r   r   r   r   )r	   r	   r	   r	   r	   r   r   r   r   r   r   )r	   r	   r	   r	   r	   r   r   r   r
   r
   r
   )r	   r	   r	   r	   r   r   r   r   r
   r
   r
   )r   r	   r	   r	   r   r   r   r   r
   r
   r
   )r   r   r   r   r   r   r   r   r
   r
   r
   )r   r   r   r   r   r
   r
   r   r   r   r   )r   r   r	   r	   r   r
   r
   r   r   r   r   )r   r	   r	   r	   r   r
   r   r   r   r   r   )r   r   r	   r   r   r   r   r   r   r   r   )r	   r	   r	   r	   r
   r
   r
   r
   r
   r
   r   )r	   r	   r	   r	   r
   r
   r
   r
   r
   r
   r
   )r	   r	   r	   r	   r	   r
   r
   r
   r
   r
   r
   )r	   r	   r	   r	   r	   r
   r
   r
   r
   r
   r   )r   r   r   r   )r   é   r   r   )r   r   r   r   )r   r   é   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r	   r   r   )r
   r   r   r   z6input_array, expected_output, expand_distance, spacingr   r	   g      ų?r   r
   )r
   r	   r	   c                 C   s   t | ||}t|| d S )N)r   r   )Zinput_arrayZexpected_outputZexpand_distanceŚspacingŚexpanded© r   śn/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/skimage/segmentation/tests/test_expand_labels.pyŚtest_expand_labels~   s   r   ŚndimŚdistanceé   c           
      C   s²   t jdd| d}t |”}t||d}|dk}t|| ||  ||  t”}t 	| ”}|| }|j
dkr?t ||k”s?J || t”  }	|	j
dkrUt |	|k”sWJ dS dS )a2  Check some invariants with label expansion.

    - New labels array should exactly contain the original labels array.
    - Distance to old labels array within new labels should never exceed input
      distance.
    - Distance beyond the expanded labels should always exceed the input
      distance.
    é@   g©?)ŚlengthZblob_size_fractionZn_dim)r   r   N)r   Zbinary_blobsr   Ślabelr   r   ZastypeŚboolŚndiZdistance_transform_edtŚsizeŚnpŚall)
r   r   ZimgŚlabelsr   Zoriginal_maskZexpanded_only_maskZdistance_mapZexpanded_distancesZbeyond_expanded_distancesr   r   r   Śtest_binary_blobs   s   


’r   c                  C   s.   t td} t tjd}t | |jk”rJ dS )aÆ  Check edge case behavior to detect upstream changes

    For edge cases where a pixel has the same distance to several regions,
    lexicographical order seems to determine which region gets to expand
    into this pixel given the current upstream behaviour in
    scipy.ndimage.distance_map_edt.

    As a result, we expect different results when transposing the array.
    If this test fails, something has changed upstream.
    r	   N)r   ŚSAMPLE_EDGECASE_BEHAVIOURŚTr   r   )r   Zexpanded_transposer   r   r   Śtest_edge_case_behaviour©   s   
r!   )!Zscipyr   r   Zskimager   Śnumpyr   r   Z#skimage.segmentation._expand_labelsr   Zskimage._sharedr   Zskimage._shared.testingr   ŚarrayZSAMPLE1DZSAMPLE1D_EXPANDED_3Z
EDGECASE1DZEDGECASE1D_EXPANDED_3ZSAMPLE2DZSAMPLE2D_EXPANDED_3ZSAMPLE2D_EXPANDED_1_5Z
EDGECASE2DZEDGECASE2D_EXPANDED_4ZSAMPLE3DZSAMPLE3D_EXPANDED_2ZSAMPLE3D_EXPAND_SPACINGr   Zparametrizer   Śranger   r!   r   r   r   r   Ś<module>   sŠ    ö’ö’ö’ū’
ū’
ü’	ü’ü’	





łž
