U
    ?hk                     @   sx   d dl Zd dlZd dlmZ d dlmZmZmZm	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 )    N)assert_array_equal)disk_level_setinverse_gaussian_gradientmorphological_chan_vese%morphological_geodesic_active_contourc                  C   s4   t jddddf } | d d}t | d S )N      r   
   )npZmgridsumexp)ZcoordsZsqrdistances r   ]/var/www/html/venv/lib/python3.8/site-packages/skimage/segmentation/tests/test_morphsnakes.pygaussian_blob   s    r   c               	   C   s`   t d} t d}tt t| d|d W 5 Q R X tt t| d|d W 5 Q R X d S )N)r
   r
      )r
   	      num_iterinit_level_setr   zerospytestZraises
ValueErrorr   r   imglsr   r   r   &test_morphsnakes_incorrect_image_shape   s    

r   c               	   C   s`   t d} t d}tt t| d|d W 5 Q R X tt t| d|d W 5 Q R X d S )N)   r   r   r   r   r   r   r   r   r   r   test_morphsnakes_incorrect_ndim   s    

r    c                  C   s   t d} t| jddd}t j| jt jd}t j| jt jd}t| d|d}t|| t| d|d}t|| t| d|dd	d
d}t|| |j	|j	  kr|j	  krt jksn t
d S )N   r"      r$   r   centerZradiusdtyper   r   r   r   )r   r   balloon	thresholdZ	smoothing)r   r   r   shapeint8Zonesr   r   r   r(   AssertionError)r   r   Z	ref_zerosZref_onesZacwe_lsgac_lsZgac_ls2r   r   r   test_morphsnakes_black'   s$    


 
r0   c                  C   sp   t  } t| jddd}t| jddd}t| d|d}t| d|d}t|| |j|j  krftjksln td S )Nr#   r   r%   r   r
   r   )	r   r   r,   r   r   r(   r   r-   r.   )r   Zls1Zls2Zacwe_ls1Zacwe_ls2r   r   r   'test_morphsnakes_simple_shape_chan_vese>   s    
r1   c                  C   sz  t ddddt} t| ddd}t | jddd}tjd	d	d	d	d	d	d	d	d	d	d	gd	d	d	d	d	d	d	d	d	d	d	gd	d	d	d	d	d
d	d	d	d	d	gd	d	d	d
d
d
d
d
d	d	d	gd	d	d	d
d
d
d
d
d	d	d	gd	d	d
d
d
d
d
d
d
d	d	gd	d	d	d
d
d
d
d
d	d	d	gd	d	d	d
d
d
d
d
d	d	d	gd	d	d	d	d	d
d	d	d	d	d	gd	d	d	d	d	d	d	d	d	d	d	gd	d	d	d	d	d	d	d	d	d	d	ggtjd}t|d|dd}t	|| |j
tjksvtd S )Nr!   r#   g      @r%   g      $@g      ?)alphasigmar   r   r   r'   r
   r)   )r   r   r*   )r   Zastypefloatr   r,   r   arrayr-   r   r   r(   r.   )r   Zgimgr   refr/   r   r   r   5test_morphsnakes_simple_shape_geodesic_active_contourK   s.    
r7   c                  C   s  t d} t| dd}t jddddddgddddddgddddddgddddddgddddddgddddddggt jd}t| dd}t jddddddgddddddgddddddgddddddgddddddgddddddggt jd}t|| t|| d S )N)r   r   r   Zcheckerboardr   r'   disk)r   r   r   r5   r-   r   r   )imageZcheckerboard_lsZcheckerboard_refZdisk_lsZdisk_refr   r   r   test_init_level_setsd   s.    

r:   c                     s~   t d} g   fdd}t| dd|d} d dks:t| dksJtt d d	  d
d  D ]\}}||ksdtqdd S )N)   r;   r;   c                    s     |   d S )N)appendr   )xZ	evolutionr   r   callback   s    z%test_morphsnakes_3d.<locals>.callbackr$   r8   )Ziter_callbackr   Q   r)   r   )r   r   r   r.   r   zip)r9   r?   r   Zv1Zv2r   r>   r   test_morphsnakes_3dz   s    
"rB   )numpyr   r   Znumpy.testingr   Zskimage.segmentationr   r   r   r   r   r   r    r0   r1   r7   r:   rB   r   r   r   r   <module>   s   