
\c        
   @   s?  d  d l  Z d  d l m Z d  d l m Z m Z m Z m Z m	 Z	 m
 Z
 m Z m Z m Z m Z d  d l m Z d  d l m Z m Z e j d d g d d	 g d
 d g d d g d d g d d g d d g d d g g  Z e j d d g d d g d d g d d g d d g d d g d d g d d  g g  Z d!   Z d"   Z d#   Z d$   Z d%   Z d&   Z d'   Z d(   Z d)   Z d*   Z  d+   Z! d,   Z" d-   Z# d.   Z$ d/   Z% d0   Z& d1   Z' d2   Z( d3   Z) d4   Z* d5   Z+ d6   Z, d7   Z- d8   Z. d9   Z/ d:   Z0 d;   Z1 d<   Z2 d=   Z3 d S(>   iN(   t   GeometricTransform(
   t   estimate_transformt   matrix_transformt   EuclideanTransformt   SimilarityTransformt   AffineTransformt   FundamentalMatrixTransformt   EssentialMatrixTransformt   ProjectiveTransformt   PolynomialTransformt   PiecewiseAffineTransform(   t   testing(   t   assert_equalt   assert_almost_equalgV-(gp=
%g %g#~j.@gʡe!@g\(%@gQ&@gS㥛$#g9v_@gv@gGzTg(\@gx)@gK7g!rhg'1Zi    i  i$  i  i  i  iL  i  i  i   i  c          C   s   xJ d D]B }  t  |  t d  d  d  d   f t d  d  d  d   f  q Wt j t  A t  d t d  d  d  d   f t d  d  d  d   f  Wd  QXd  S(	   Nt	   euclideant
   similarityt   affinet
   projectivet
   polynomiali   t   foobar(   R   R   R   R   R   (   R   t   SRCt   DSTR   t   raisest
   ValueError(   t   tform(    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_estimate_transform#   s
    
@c          C   s8   t  d d d d  }  t |  t  t t |  j   d  S(   Nt   scaleg?g      ?t   rotationi   (   g?g      ?(   R   R   R   R   t   params(   R   (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_matrix_transform+   s    c          C   sQ  t  d t d  d  d  d   f t d  d  d  d   f d  }  t |  t d  d  d  d   f  t d  d  d  d   f d  t |  j d |  j d  t |  j d |  j d	  t  d t t  } t | j | t   t  t | j d
 | j d  t | j d | j d  t   } | j t t  t | j | j  d  S(   NR   i   i
   i    i   (   i    i    (   i   i   (   i    i   (   i   i    (   i    i    (   i   i   (   i    i   (   i   i    (   R   R   R   R   R   t   inverseR   t   estimate(   R   t   tform2t   tform3(    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_euclidean_estimation0   s    BC	c          C   s   d }  d } t  d |  d |  } t | j |   t | j |  t  | j  } t | j |   t | j |  d }  d } t  d |  d |  } t | j |   t | j |  t j d }  d } t  d |  d |  } t | j |   t | j |  d  S(	   Ni   R   t   translationi    i   (   i   i   (   i   i   (   i   i   (   R   R   R   R#   R   t   npt   pi(   R   R#   R   R    (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_euclidean_initC   s$    c          C   sI  t  d t d  d  d  d   f t d  d  d  d   f  }  t |  t d  d  d  d   f  t d  d  d  d   f  t |  j d |  j d  t |  j d |  j d  t  d t t  } t | j | t   t  t | j d	 | j d
  t | j d | j d  t   } | j t t  t | j | j  d  S(   NR   i   i    i   (   i    i    (   i   i   (   i    i   (   i   i    (   i    i    (   i   i   (   i    i   (   i   i    (   R   R   R   R   R   R   R   R   (   R   R    R!   (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_similarity_estimation_   s    >?	c          C   sa  d }  d } d } t  d |  d | d |  } t | j |   t | j |  t | j |  t  | j  } t | j |   t | j |  t | j |  d }  d } d	 } t  d |  d | d |  } t | j |   t | j |  t | j |  d }  t j d } d
 } t  d |  d | d |  } t | j |   t | j |  t | j |  d  S(   Ng?i   R   R   R#   i    i   (   i   i   (   i   i   (   i   i   (   R   R   R   R   R#   R   R$   R%   (   R   R   R#   R   R    (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_similarity_initr   s8    			c          C   s   t  d t d  d  d  d   f t d  d  d  d   f  }  t |  t d  d  d  d   f  t d  d  d  d   f  t  d t t  } t | j | t   t  t   } | j t t  t | j | j  d  S(   NR   i   (   R   R   R   R   R   R   R   R   (   R   R    R!   (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_affine_estimation   s    >?	c       	   C   s   d }  d } d } d	 } t  d |  d | d | d |  } t | j |   t | j |  t | j |  t | j |  t  | j  } t | j |   t | j |  t | j |  t | j |  d  S(
   Ng?gp=
ף?i   R   R   t   shearR#   (   g?gp=
ף?(   i   i   (   R   R   R   R   R*   R#   R   (   R   R   R*   R#   R   R    (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_affine_init   s    	c          C   sF   t    }  |  j t t  t |  t  t  t |  j t  t  d  S(   N(   R
   R   R   R   R   R   (   R   (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_piecewise_affine   s    	c          C   s   t  j d d d d d d d d d	 d
 d d d d d d g  j d d  }  t  j d d d d d d d d d d d d d d  d! d" g  j d d  } t d# |  |  } t  j d$ d% d& g d' d( d) g d* d+ d, g g  } t | j | d-  d  S(.   Ng0l?gcGP?gz7e?gDo?g-lI?gz0)>?g㪲?gl%?g6?g27߈?gX/@gAG>#@gQ293L?gKh?gK=U?g0DK?ii   gэ?gEA?g1#Y?gd9?glY?gh!˛?g?gVa3?gCSvA?g*D/X?gHhy?gRr?g77M?gXR>G?g\mO?gCP5zu?t   fundamentalgg˿gQKs+?ggag)n?g`k[9 ?g`~?g~K|ۿgķfᡖ?i   (   R$   t   arrayt   reshapeR   R   R   (   t   srct   dstR   t	   tform_ref(    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt"   test_fundamental_matrix_estimation   s    !!c          C   s   t  d t j d  d t j d d d g   }  t   } |  j | _ t j d d g d d g d d g g  } t j d d g d d g d d g g  } t | j | |  d d d d g  d  S(   NR   i   R#   i   i    i   g      ?(   R   R$   t   eyeR.   R   R   R   t	   residuals(   t   essential_matrix_tformR   R0   R1   (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt!   test_fundamental_matrix_residuals   s    *	**c          C   s   t  d t j d  d t j d d d g   }  t   } |  j | _ t j d d g d d g d d g g  } t | |  d d d g d d d g d d d g g  d  S(   NR   i   R#   i   i    i(   R   R$   R4   R.   R   R   R   (   R6   R   R0   (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_fundamental_matrix_forward   s    *	*c          C   s   t  d t j d  d t j d d d g   }  t   } |  j | _ t j d d g d d g d d g g  } t | j |  d d d g d d d g d d d g g  d  S(   NR   i   R#   i   i    i(   R   R$   R4   R.   R   R   R   R   (   R6   R   R0   (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_fundamental_matrix_inverse   s    *	*c          C   st   t  d t j d  d t j d d d g   }  t |  j t j d d d d d d d d d g	  j d d   d  S(   NR   i   R#   i    i   i(   R   R$   R4   R.   R   R   R/   (   R   (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_essential_matrix_init   s    	c          C   s   t  j d d d d d d d d d	 d
 d d d d d d g  j d d  }  t  j d d d d d d d d d d d d d d  d! d" g  j d d  } t d# |  |  } t  j d$ d% d& g d' d( d) g d* d+ d, g g  } t | j | d-  d  S(.   Ng0l?gcGP?gz7e?gDo?g-lI?gz0)>?g㪲?gl%?g6?g27߈?gX/@gAG>#@gQ293L?gKh?gK=U?g0DK?ii   gэ?gEA?g1#Y?gd9?glY?gh!˛?g?gVa3?gCSvA?g*D/X?gHhy?gRr?g77M?gXR>G?g\mO?gCP5zu?t	   essentialg"UǴg2FY?gUgDMȿgkC8g˼Uס?gCH?gx@ٔ+̿gӠh"i   (   R$   R.   R/   R   R   R   (   R0   R1   R   R2   (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt    test_essential_matrix_estimation   s    !!c          C   s   t  d t j d  d t j d d d g   }  t j d d g d d g d d g g  } t |  |  d d d g d d d g d d d g g  d  S(   NR   i   R#   i   i    i(   R   R$   R4   R.   R   (   R   R0   (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_essential_matrix_forward  s    *c          C   s   t  d t j d  d t j d d d g   }  t j d d g d d g d d g g  } t |  j |  d d d g d d d g d d d g g  d  S(   NR   i   R#   i   i    i(   R   R$   R4   R.   R   R   (   R   R0   (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_essential_matrix_inverse  s
    *c          C   s   t  d t j d  d t j d d d g   }  t j d d g d d g d d g g  } t j d d g d d g d d g g  } t |  j | |  d d d d g  d  S(   NR   i   R#   i   i    i   g      ?(   R   R$   R4   R.   R   R5   (   R   R0   R1   (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_essential_matrix_residuals  s
    **c          C   s   t  d t d  d  d  d   f t d  d  d  d   f  }  t |  t d  d  d  d   f  t d  d  d  d   f  t  d t t  } t | j | t   t  t   } | j t t  t | j | j  d  S(   NR   i   (   R   R   R   R   R   R   R   R   (   R   R    R!   (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_projective_estimation%  s    >?	c          C   s8   t  d t t  }  t |  j  } t | j |  j  d  S(   NR   (   R   R   R   R   R   R   (   R   R    (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_projective_init4  s    c          C   sd   t  d t t d d }  t |  t  t d  t   } | j t t d d t | j |  j  d  S(   NR   t   orderi
   i   (   R   R   R   R   R	   R   R   (   R   R    (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_polynomial_estimation;  s
    	c          C   s>   t  d t t d d }  t |  j  } t | j |  j  d  S(   NR   RB   i
   (   R   R   R   R	   R   R   (   R   R    (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_polynomial_initF  s    c          C   sA   t  d t t  }  t  d t t d d } t | j |  j  d  S(   NR   RB   i   (   R   R   R   R   R   (   R   R    (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_polynomial_default_orderM  s    c           C   s*   t  j t   t   j d  Wd  QXd  S(   Ni    (   R   R   t	   ExceptionR	   R   (    (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_polynomial_inverseS  s    c          C   si  t  d d d d  }  t  d d d d  } t  d d	 d d
  } |  | } t | j | j  t d d d d  }  t  d d d d  } t  d d d d  } |  | } t | j | j  | j t k s t  t d d d d  } t | | j j t j	 d   t  d d d d  }  t  d d d d  } t  d d d d d  } |  | j } t | j | j  d  S(   NR   g?R   g333333?g?i   i   i   g|Gz?g333333?(   g?g?g|Gz?g333333?(   g?g?g?g433333(
   R   R   R   R   t	   __class__R   t   AssertionErrorR   R$   R4   (   t   tform1R    R!   R   (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt
   test_unionX  s$    

 c          C   s9   t    }  t   } t j t   |  j |  Wd  QXd  S(   N(   R   R	   R   R   t	   TypeErrort   __add__(   RJ   R    (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_union_differing_typesp  s    		c          C   ss   t    }  t j t   |  d  Wd  QXt j t   |  j d  Wd  QXt j t   |  j d  Wd  QXd  S(   Ni    (   R    R   R   t   NotImplementedErrorR   RM   (   R   (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_geometric_tformw  s    	c           C   s  t  j t   t t j d	   Wd  QXt  j t   t t j d
   Wd  QXt  j t   t t j d   Wd  QXt  j t   t t j d   Wd  QXt  j t  ! t d t j d  d d  Wd  QXt  j t  ! t d t j d  d d  Wd  QXt  j t  ! t d t j d  d d  Wd  QXt  j t   t	 t j d   Wd  QXt  j t   t
 d t j d   Wd  QXt  j t   t d t j d   Wd  QXt  j t   t d t j d   Wd  QXt  j t   t d t j d   Wd  QXt  j t   t d t j d   Wd  QXt  j t  * t d t j d  d t j d   Wd  QXt  j t  * t d t j d  d t j d   Wd  QXt  j t  * t d t j d  d t j d   Wd  QXd  S(   Ni   i   t   matrixR   i   R#   i    R   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i    i    (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   (   i   (   i   (   R   R   R   R   R$   t   zerosR   R   R   R	   R   R   R4   (    (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_invalid_input  sL    ""c          C   s   t  j d  }  } t   } | j |  |  t  j t  j | j   sM t  t   } | j |  |  t  j t  j | j   s t  t	   } | j |  |  t  j t  j | j   s t  d  S(   Ni
   i   (   i
   i   (
   R$   RR   R   R   t   allt   isnanR   RI   R   R   (   R0   R1   R   (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   test_degenerate  s    	!	!	(4   t   numpyR$   t   skimage.transform._geometricR    t   skimage.transformR   R   R   R   R   R   R   R   R	   R
   t   skimage._sharedR   t   skimage._shared.testingR   R   R.   R   R   R   R   R"   R&   R'   R(   R)   R+   R,   R3   R7   R8   R9   R:   R<   R=   R>   R?   R@   RA   RC   RD   RE   RG   RK   RN   RP   RS   RV   (    (    (    sE   lib/python2.7/site-packages/skimage/transform/tests/test_geometric.pyt   <module>   sf   F																				&					
			
														
	*