ó
 ‰\c           @   sí   d  d l  Z  d  d l 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 d  d l m Z d  d l m Z d  d l m Z d  d	 l m Z d
 d d „  ƒ  YZ d d d „  ƒ  YZ d d d „  ƒ  YZ d S(   iÿÿÿÿN(   t   skeletonizet   medial_axist   thin(   t   _generate_thin_lutst   G123_LUTt	   G123P_LUT(   t   draw(   t	   correlate(   t   imread(   t   data_dir(   t   testing(   t   assert_array_equalt   TestSkeletonizec           B   sk   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z RS(   c         C   s5   t  j d ƒ } t | ƒ } t | t  j d ƒ ƒ d  S(   Ni   (   i   i   (   i   i   (   t   npt   zerosR    R   (   t   selft   imt   result(    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_skeletonize_no_foreground   s    c         C   s3   t  j d ƒ } t j t ƒ  t | ƒ Wd  QXd  S(   Ni   (   R   R   R
   t   raisest
   ValueErrorR    (   R   R   (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_skeletonize_wrong_dim1   s    c         C   s3   t  j d ƒ } t j t ƒ  t | ƒ Wd  QXd  S(   Ni   (   i   i   i   (   R   R   R
   R   R   R    (   R   R   (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_skeletonize_wrong_dim2   s    c         C   sG   t  j d ƒ } d | d <d | d <t j t ƒ  t | ƒ Wd  QXd  S(   Ni   i   i    i   (   i   i   (   i    i    (   i    i   (   R   R   R
   R   R   R    (   R   R   (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_skeletonize_not_binary   s
    

c         C   s=   t  j d ƒ } d | d <t j t ƒ  t | ƒ Wd  QXd  S(   Ni   i   i    (   i   i   (   i    i    (   R   R   R
   R   R   R    (   R   R   (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt!   test_skeletonize_unexpected_value&   s    
c         C   s   t  j d ƒ } t | ƒ d  S(   Ni   i   (   i   i   (   R   t   onesR    (   R   R   (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_skeletonize_all_foreground,   s    c         C   s<   t  j d t  j ƒ } d | d <t | ƒ } t | | ƒ d  S(   Ni   i   i   (   i   i   (   i   i   (   R   R   t   uint8R    R   (   R   R   R   (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_skeletonize_single_point0   s    
c         C   s\   t  j d t  j ƒ } d | d d d … f <d | d	 <d | d
 <t | ƒ } t | | ƒ d  S(   Ni   i   i   iÿÿÿÿi   i   i    (   i   i   (   i   iÿÿÿÿ(   i   i    (   R   R   R   R    R   (   R   R   R   (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt    test_skeletonize_already_thinned6   s    

c         C   sh   t  t j j t d ƒ d t ƒ} | d k } t | ƒ } t j t j j t d ƒ ƒ } t	 | | ƒ d  S(   Ns   bw_text.pngt   as_grayi    s   bw_text_skeleton.npy(
   R   t   ost   patht   joinR	   t   TrueR    R   t   loadR   (   R   R   R   t   expected(    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_skeletonize_output>   s
    !c         C   sÉ  t  j d ƒ } d | d d … d d … f <d | d d … d d … f <d | d d … d d … f <t j d d d d	 ƒ \ } } x( t d ƒ D] } d | | | | f <qŽ Wt j d d d d	 ƒ \ } } x( t d
 ƒ D] } d | | | | f <q× Wt  j | j ƒ \ } } | d d | d d d k  } | d d | d d d k  } d | | <d | | <t | ƒ }	 t  j d d g d d g g t  j	 ƒ }
 t
 |	 |
 d d ƒ} t  j | d k ƒ sÅt ‚ d  S(   Ni,  i   i
   iöÿÿÿid   iœÿÿÿiú   i–   i  i   i‡   i   i   i    t   modet   constanti   (   i,  i,  i„  i  (   R   R   R   t   linet   ranget   indicest   shapeR    t   arrayR   R   t   anyt   AssertionError(   R   t   imaget   rst   cst   it   irt   ict   circle1t   circle2R   t   maskt   blocks(    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_skeletonize_num_neighboursH   s(      

c         C   s  t  j d	 t  j ƒ } d | d
 <d | d <d | d <d | d <d | d <d | d <d | d <t | ƒ } 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 d t  j ƒ} t  j | | k ƒ st ‚ d  S(   Ni   i   i   i   i   i   i    t   dtype(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   R   R   R    R,   t   allR.   (   R   R   R   R$   (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_lut_fixg   s     






'(   t   __name__t
   __module__R   R   R   R   R   R   R   R   R%   R9   R<   (    (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyR      s   									
	t   TestThinc           B   sD   e  Z e d  „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sÄ   t  j d d d d d d d g d d d d d d d g d d d d d d d g d d d d d d d g d d d d d d d g d d d d d d d g d d d d d d d g g d t  j ƒ} | S(   s   image to test thinning withi    i   R:   (   R   R,   R   (   R   t   ii(    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   input_image{   s    *c         C   s.   t  j t t  j d ƒ ƒ t k ƒ s* t ‚ d  S(   Ni
   (   i
   i
   (   R   R;   R   R   t   FalseR.   (   R   (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt
   test_zeros‡   s    c         C   sï   t  |  j d ƒ j t j ƒ } t j d d d d d d d g d d d d d d d g d d d d d d d g d d d d d d d g d d d d d d d g d d d d d d d g d d d d d d d g g d t j ƒ} t | | ƒ d  S(   Ni   i    R:   (   R   RA   t   astypeR   R   R,   R   (   R   R   R$   (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_iter_1Š   s    *c         C   sì   t  |  j ƒ j t j ƒ } t j d d d d d d d g d d d d d d d g d d d d d d d g d d d d d d d g d d d d d d d g d d d d d d d g d d d d d d d g g d t j ƒ} t | | ƒ d  S(   Ni    i   R:   (   R   RA   RD   R   R   R,   R   (   R   R   R$   (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_noiter•   s    *c         C   sM   xF t  j d ƒ t  j d ƒ g D]& } t j t ƒ  t | ƒ Wd  QXq Wd  S(   Ni   (   i   i   i   (   R   R   R
   R   R   R   (   R   R@   (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_baddim    s    %c         C   s-   t  ƒ  \ } } t | t ƒ t | t ƒ d  S(   N(   R   R   R   R   (   R   t   g123t   g123p(    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_lut_generation¥   s    (	   R=   R>   t   propertyRA   RC   RE   RF   RG   RJ   (    (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyR?   z   s   				t   TestMedialAxisc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s7   t  t j d t ƒ ƒ } t j | t k ƒ s3 t ‚ d S(   s)   Test skeletonize on an array of all zerosi
   N(   i
   i
   (   R   R   R   t   boolR;   RB   R.   (   R   R   (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_00_00_zeros­   s    c         C   sF   t  t j d t ƒ t j d t ƒ ƒ } t j | t k ƒ sB t ‚ d S(   s6   Test skeletonize on an array that is completely maskedi
   N(   i
   i
   (   i
   i
   (   R   R   R   RM   R;   RB   R.   (   R   R   (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_00_01_zeros_masked²   s    c         C   sQ  t  j d
 t ƒ } t | d d … d d … f <t  j d d d d d d d d d d d d d d d g d d d d d d d d d d d d d d d g d d d d d d d d d d d d d d d g d d d d d d d d d d d d d d d g d d d d d d d d d d d d d d d g d d d d d d d d d d d d d d d g d d d d d d d d d d d d d d d g d d d d d d d d d d d d d d d g d d d d d d d d d d d d d d d g g	 d t  j ƒ} t | ƒ } t  j | | k ƒ st ‚ t | d t ƒ\ } } | j	 ƒ  d k sMt ‚ d	 S(   s   Test skeletonize on a rectanglei	   i   i   iÿÿÿÿi    R:   t   return_distancei   N(   i	   i   (
   R   R   RM   R"   R,   t   bool_R   R;   R.   t   max(   R   R/   R$   R   t   distance(    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_01_01_rectangle¸   s     600000006c         C   s7  t  j d
 t ƒ } t | d d … d d … f <t | d d d … f <t  j d d d d d d d d d d d d d d d g d d d d d d d d d d d d d d d g d d d d d d d d d d d d d d d g d d d d d d d d d d d d d d d g d d d d d d d d d d d d d d d g d d d d d d d d d d d d d d d g d d d d d d d d d d d d d d d g d d d d d d d d d d d d d d d g d d d d d d d d d d d d d d d g g	 d t  j ƒ} t | ƒ } t  j | | k ƒ s3t	 ‚ d	 S(   s9   Test skeletonize on a rectangle with a hole in the middlei	   i   i   iÿÿÿÿi   iüÿÿÿi    R:   N(   i	   i   (
   R   R   RM   R"   RB   R,   RQ   R   R;   R.   (   R   R/   R$   R   (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_01_02_holeÏ   s    600000006c         C   sY   t  j d t ƒ } t | d d … d d … f <t | ƒ } t  j | | k ƒ sU t ‚ d S(   s(   Test skeletonize on a 1-pixel thin stripi   i   Niÿÿÿÿ(   i   i   (   R   R   RM   R"   R   R;   R.   (   R   R/   R   (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   test_narrow_imageá   s    (   R=   R>   RN   RO   RT   RU   RV   (    (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyRL   ¬   s
   				(    (    (    (   R   t   numpyR   t   skimage.morphologyR    R   R   t   skimage.morphology._skeletonizeR   R   R   t   skimageR   t   scipy.ndimageR   t
   skimage.ioR   R	   t   skimage._sharedR
   t   skimage._shared.testingR   R   R?   RL   (    (    (    sH   lib/python2.7/site-packages/skimage/morphology/tests/test_skeletonize.pyt   <module>   s   k2