a
    Ł
ždF  ć                   @   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 d2¢g d3¢g d)¢g”Ze d4eed5feed5feed6feed5feed7feed8fg”d9d: Ze d;d8d5g”e d<ed=”d>d? Zd@dA ZdS )Bé    )Ś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   z-input_array, expected_output, expand_distancer   g      ų?r   r
   c                 C   s   t | |}t|| d S )N)r   r   )Zinput_arrayZexpected_outputZexpand_distanceŚexpanded© r   śv/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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rŖt |	|k”sŖJ 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   Ś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_2r   Zparametrizer   Śranger   r!   r   r   r   r   Ś<module>   sž   ÷’÷’÷’ü’ü’żżżżń’żżżżń’śž
