
    a6dF                        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j        g d          Z ej        g d	          Z ej        g d
          Z ej        g d          Z ej        g dg dg dg dg dg dg dg dg dg dg
          Z ej        g dg dg dg dg dg dg dg dg dg dg
          Z ej        g dg dg dg dg dg dg dg dg dg dg
          Z ej        g dg d g d!g d"g d#g          Z ej        g d$g d%g d&g d'g d'g          Z ej        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j        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j        g d2g d3g d)g          Z ej        d4eed5feed5feed6feed5feed7feed8fg          d9             Z ej        d:d8d5g           ej        d; ed<                    d=                         Zd> ZdS )?    )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                 F    t          | |          }t          ||           d S )N)r   r   )input_arrayexpected_outputexpand_distanceexpandeds       Mlib/python3.11/site-packages/skimage/segmentation/tests/test_expand_labels.pytest_expand_labelsr      s)     [/::Hx11111    ndimdistance   c                    t          j        dd|           }t          j        |          }t	          ||          }|dk    }t          ||         ||                    ||z
                      t                    }t          j	        |           }||         }|j
        dk    rt          j        ||k              sJ ||                    t                              }	|	j
        dk    rt          j        |	|k              sJ 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?)lengthblob_size_fractionn_dim)r   r   N)r   binary_blobsr   labelr   r   astypeboolndidistance_transform_edtsizenpall)
r   r   imglabelsr   original_maskexpanded_only_maskdistance_mapexpanded_distancesbeyond_expanded_distancess
             r   test_binary_blobsr.      s    
2$d
K
K
KC]3FVh777HaKMvm,h}.EFFF"V+33D99-}n==L%&89""v(H455555 ,hood.C.C-C D %))v/(:;;;;; *);;r   c                      t          t          d          } t          t          j        d          }t          j        | |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   expanded_transposes     r   test_edge_case_behaviourr3      sM     6::H&'@'BAFFvh"4"667777777r   ) scipyr   r"   skimager   numpyr%   r   #skimage.segmentation._expand_labelsr   skimage._sharedr   skimage._shared.testingr   arraySAMPLE1DSAMPLE1D_EXPANDED_3
EDGECASE1DEDGECASE1D_EXPANDED_3SAMPLE2DSAMPLE2D_EXPANDED_3SAMPLE2D_EXPANDED_1_5
EDGECASE2DEDGECASE2D_EXPANDED_4SAMPLE3DSAMPLE3D_EXPANDED_2r0   parametrizer   ranger.   r3    r   r   <module>rI      s                               = = = = = = # # # # # # 6 6 6 6 6 628GGGHHbhRRRSS  RXFFFGG
 !Q!Q!QRR 28&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&	(  bh((((((((((((((((((((((((((((((	*	 	  !((((((((((((((((((((((((((((((	*
+ 
+  RX&&&&&&&&&&&&&&&	( 
 !(((((((((((((((	*+ +  28
 	
 	
 	 * RX
 	
 	
 	  * %BHlllLLL,,,%OPP 3"A&"A&$c*&*&*"A&
 
2 2
 
2
 VaV$$Zq**< < +* %$<08 8 8 8 8r   