
    1-Ph                        d dl Z d dlZ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mZmZmZmZmZmZmZ d dlmZmZ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)ej*        +                    d-d.d/g          d0             Z,d1 Z-d2 Z.d3 Z/d4 Z0d5 Z1d6 Z2d7 Z3d8 Z4d9 Z5d: Z6ej*        +                    d-d.d/g          d;             Z7d< Z8d= Z9ej*        +                    d-d.d/g          d>             Z:d? Z;d@ Z<dA Z=dB Z>ej*        +                    dC eej?        @                    dDdD          E           e
dFdGH           edIdJK           edLdIH           e ejA        dD          dM ejB        dN          z  dM ejB        dN          z  d fK           e e ejA        dD          dM ejB        dN          z  dM ejB        dN          z  d fK          jC        E           e            xZDE                    ee          oeDg          dO             ZFdP ZGdQ ZHdR ZIdS ZJdT ZKdU ZLdV ZMej*        +                    d-d.d/g          dW             ZNdX ZOdY ZPdZ ZQd[ ZRd\ ZSd] ZTd^ ZUd_ ZVd` ZWdS )a    N)assert_almost_equalassert_array_almost_equalassert_equal)
AffineTransformEssentialMatrixTransformEuclideanTransformFundamentalMatrixTransformPiecewiseAffineTransformPolynomialTransformProjectiveTransformSimilarityTransformestimate_transformmatrix_transform)_GeometricTransform_affine_matrix_from_vector_center_and_normalize_points_euler_rotation_matrixg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  iL  i  i  i   i  c            	      @   dD ]5} t          | t          d dd d f         t          d dd d f                    6t          j        t
                    5  t          dt          d dd d f         t          d dd d f                    d d d            d S # 1 swxY w Y   d S )N)	euclidean
similarityaffine
projective
polynomial   foobar)r   SRCDSTpytestraises
ValueErrortforms    f/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/transform/tests/test_geometric.pytest_estimate_transformr$   5   s    R : :5#bqb!!!e*c"1"aaa%j9999	z	"	" = =8S!QQQZRaRU<<<= = = = = = = = = = = = = = = = = =s   4BBBc                      t          dd          } t           | t                    t          t          | j                             d S )N)皙?      ?r   scalerotation)r   r   r   r   paramsr!   s    r#   test_matrix_transformr,   <   s?    *q999Es-c5<@@AAAAA    c                  X   t          dt          d dd d f         t          d dd d f         dz             } t           | t          d dd d f                   t          d dd d f         dz              t          | j        d         | j        d                    t          | j        d         | j        d                     t          dt          t                    }t          |                     |t                              t                     t          |j        d         |j        d                    t          |j        d         |j        d                     t                      }|                    t          t                    sJ t          |j        |j                   d S )Nr   r   
   r   r      r2   r   r2   r2   r   )r   r   r   r+   r   inverser   estimater"   tform2tform3s      r#   test_euclidean_estimationr:   A   sk   {CAAAJBQBE
RHHEc"1"aaa%j))3rr111u:?;;;T*EL,>???T*U\$-?,?@@@  S#66Fvvc{{33S999d+V]4-@AAAd+fmD.A-ABBB  !!F??3$$$$$v}55555r-   c                     t           j                            dd          } t           j                            d          dz  t           j        z  t           j        z
  }t	          |          }t           j                            d          }g }| D ]n}|                    dd          }t          j        ||          |                    dd          z   }|                    d          }|                    |           ot          j        |          }t          d          }|
                    | |          sJ |j        }	|j        }
t          |	|           t          |
|           d S )N     r=   r   r2   dimensionality)nprandomrandpir   reshapematmulappendarrayr   r6   r*   translationr   )
src_pointsanglesrotation_matrixtranslation_vector
dst_pointsptpt_rdstr"   estimated_rotationestimated_translations              r#   test_3d_euclidean_estimationrT   T   sK   a((J Yd##a'"%/"%7F,V44O))$//J  zz!Qi..1C1K1KAq1Q1QQkk!nn#*%%Ja000E>>*j11111!-*O<<<-/ABBBBBr-   c                     d} d}t          | |          }t          |j        |            t          |j        |           t          |j                  }t          |j        |            t          |j        |           d} d}t          | |          }t          |j        |            t          |j        |           t
          j        dz  } d}t          | |          }t          |j        |            t          |j        |           d S )Nr2   r1   r*   rI   r   r   )r   r   r*   rI   r+   rA   rD   )r*   rI   r"   r8   s       r#   test_euclidean_initrW   l   s   HKkJJJE111);777  --F222*K888 HKkJJJE111);777 uqyHKkJJJE111);77777r-   c                  L   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          |                     |t                              t                     t          |j        d         |j        d                    t          |j        d         |j        d                     t                      }|                    t          t                    sJ t          |j        |j                   d S )Nr   r   r0   r1   r3   r4   )r   r   r   r   r+   r5   r   r6   r7   s      r#   test_similarity_estimationrY      sc   |S!QQQZRaRUDDEc"1"aaa%j))3rr111u:666T*EL,>???T*U\$-?,?@@@  c377Fvvc{{33S999d+V]4-@AAAd+fmD.A-ABBB !""F??3$$$$$v}55555r-   c                  H   t           j                            dd          } t           j                            d          dz  t           j        z  t           j        z
  }t           j                            dd          }t          |          |z  }t           j                            d          }g }| D ]n}|                    dd          }t          j        ||          |                    dd          z   }|                    d          }|                    |           ot          j	        |          }t          d          }	|	                    | |          sJ |	j        }
|	j        }|	j        }t          ||           t          ||           t          |
|           d S )	Nr<   r=   r>   r   r      r2   r?   )rA   rB   rC   rD   randintr   rE   rF   rG   rH   r   r6   r*   rI   r)   r   )rJ   rK   r)   rL   rM   rN   rO   rP   rQ   r"   rR   rS   estimated_scales                r#   test_3d_similarity_estimationr^      s~   a((J Yd##a'"%/"%7FIa$$E,V44u<O))$//J  zz!Qi..1C1K1KAq1Q1QQkk!nn#*%%Jq111E>>*j11111!-kO-/ABBB///*O<<<<<r-   c                     d} d}d}t          | ||          }t          |j        |            t          |j        |           t          |j        |           t          |j                  }t          |j        |            t          |j        |           t          |j        |           d} d}d}t          | ||          }t          |j        |            t          |j        |           t          |j        |           d} t          j        dz  }d}t          | ||          }t          |j        |            t          |j        |           t          |j        |           d} t          j        dz  }d}t          j        g d	g d
g dg          }t          |          }t          |j        |            t          |j        |           t          |j        |           d S )Nr&   r2   r1   )r)   r*   rI   r   r         ?r0   )r   gs"   <)r2   g3   <gs"   ؼr   r   r2   )	r   r   r)   r*   rI   r+   rA   rD   rH   )r)   r*   rI   r"   r8   r+   s         r#   test_similarity_initrc      s   EHKehKXXXEU+++111);777 !..Fe,,,222*K888 EHKehKXXXEU+++111);777 EuqyHKehKXXXEU+++111);777 EuqyHKX	 	 	 "F"F"F			R F  ''EU+++111);77777r-   c                     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          |                     |t                              t                     t                      }|                    t          t                    sJ t          |j        |j                   d S )Nr   r=   )r   r   r   r   r5   r   r6   r+   r7   s      r#   test_affine_estimationre      s    xRaRUS!QQQZ@@Ec"1"aaa%j))3rr111u:666  #s33Fvvc{{33S999 F??3$$$$$v}55555r-   c                      d} d}d}d}t          | |||          }t          |j        |            t          |j        |           t          |j        |           t          |j        |           t          |j                  }t          |j        |            t          |j        |           t          |j        |           t          |j        |           t          t          d          j        t          d          j                   d S )	N)r&   gp=
ף?r2   r&   r1   )r)   r*   shearrI   r'   )r)   )r'   r'   )r   r   r)   r*   rg   rI   r+   )r)   r*   rg   rI   r"   r8   s         r#   test_affine_initrh      s   EHEKhe  E U+++111U+++);777 U\**Fe,,,222e,,,*K888 c"""(/
*K*K*K*Q    r-   c                     d} t          j        |            }t          j        d|dgg dg dg          }t          |           }t	          |j        |           d} t          j        | d                    }t          j        | d                    }t          j        d|dg|ddgg dg          }t          |           }t	          |j        |           d S )Nr&   r2   r   r   r2   r   rb   )rg   )333333?g?)rA   tanrH   r   r   r+   )rg   cxexpectedr"   cys        r#   test_affine_shearrp     s    E
&--Bx!RYYY			:;;H%(((Eh///E
&q

	B
&q

	Bx!Rb!QZ;<<H%(((Eh/////r-   c                     t                      } |                     t          t                    sJ t	           | t                    t                     t	          |                     t                    t                     d S N)r
   r6   r   r   r   r5   r!   s    r#   test_piecewise_affiners   #  sa    $&&E>>#s#####c

C(((c**C00000r-   c                  6   t          j        g d                              dd          } t          j        g d                              dd          }t          d| |          }t          j        g dg dg dg          }t	          |j        |d	           d S )
Ng0l?gcGP?gz7e?gDo?g-lI?gz0)>?g㪲?gl%?g6?g27߈?gX/@gAG>#@gQ293L?gKh?gK=U?g0DK?ra   r   gэ?gEA?g1#Y?gd9?glY?gh!˛?g?gVa3?gCSvA?g*D/X?gHhy?gRr?g77M?gXR>G?g\mO?gCP5zu?fundamental)gg˿gQKs+?g)gag)n?g`k[9 ?)g`~?g~K|ۿgķfᡖ?   rA   rH   rE   r   r   r+   srcrQ   r"   	tform_refs       r#   "test_fundamental_matrix_estimationr}   +  s    
(	
 	
 	
 & gb!nn' ( (	
 	
 	
 & gb!nn' * }c377E ---...,,,	
 I i33333r-   c                  n   t          t          j        d          t          j        g d                    } 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          |                    ||          dz  g d           d S Nr=   r2   r   r   rV   r   r   r2   )r   r'   r   )r   rA   eyerH   r	   r+   r   	residuals)essential_matrix_tformr"   r{   rQ   s       r#   !test_fundamental_matrix_residualsr   b  s    5(;(;   '((E)0EL
(QFQFQF+
,
,C
(QFQFQF+
,
,CS11Q6DDDDDr-   array_like_inputFTc                 p   | rg dg dg dg}d}n*t          j        d          }t          j        g d          }t          ||          }| rd |j        D             }n|j        }t          |          }t          j        ddgdd	gd	d	gg          }t           ||          g d
g dg dg           d S )Nr   rj   rb   r=   rV   c                 ,    g | ]}t          |          S  list.0ps     r#   
<listcomp>z3test_fundamental_matrix_forward.<locals>.<listcomp>y  s    AAAa$q''AAAr-   matrixr   r2   r   ra   r   r   ra   r2   )rA   r   rH   r   r+   r	   r   )r   r*   rI   r   r+   r"   r{   s          r#   test_fundamental_matrix_forwardr   m  s     *IIyyy)))46!99hyyy))5{    /AA#9#@AAA'.&f555E
(QFQFQF+
,
,Cc

ZZZZZZ$HIIIIIr-   c                  :   t          t          j        d          t          j        g d                    } t	                      }| j        |_        t          j        ddgddgddgg          }t          |                    |          g dg dg dg           d S Nr=   r   rV   r   r2   rj   )r   r2   ra   )r   rA   r   rH   r	   r+   r   r5   )r   r"   r{   s      r#   test_fundamental_matrix_inverser     s    5(;(;   '((E)0EL
(QFQFQF+
,
,Cc**YYY


JJJ,OPPPPPr-   c                  P   t          j        g d                              dd          } t          j        g d                              dd          }t          d| |          }t          d||           }t           j                            |j        j        |j                   d S )Nru   ra   r   rv   rw   )rA   rH   rE   r   testingr   r5   r+   )r{   rQ   r"   	tform_invs       r#   *test_fundamental_matrix_inverse_estimationr     s    
(	
 	
 	
 & gb!nn' * (	
 	
 	
 & gb!nn' . }c377E"=#s;;IJ(()=y?OPPPPPr-   c                     t          j        g d                              dd          } t          j        g d                              dd          }t          d| |          }t          j        t          j        t          j        |t          j        t          |                    f           ||           z  d                    }t          j	        |dk               sJ d S )	Nru   ra   r   rv   rw   r2   axisg{Gz?)
rA   rH   rE   r   abssumcolumn_stackoneslenall)r{   rQ   r"   r   s       r#   +test_fundamental_matrix_epipolar_projectionr     s    
(	
 	
 	
 & gb!nn' * (	
 	
 	
 & gb!nn' * }c377E 	rvbosBGCHH,=,=&>??%%**LSTUUUVVA6!d(r-   c                      t          t          j        d          t          j        g d                    } t	          | j        t          j        g d                              dd                     d S )Nr=   rb   rV   )	r   ra   r   r2   r   r   r   r   r   )r   rA   r   rH   r   r+   rE   r!   s    r#   test_essential_matrix_initr     sm    $(;(;  E rx(D(D(DEEMMaQRSSTTTTTr-   c                  6   t          j        g d                              dd          } t          j        g d                              dd          }t          d| |          }t          j        g dg dg dg          }t	          |j        |d	           d S )
Nru   ra   r   rv   	essential)g"UǴg2FY?gU)gDMȿgkC8g˼Uס?)gCH?gx@ٔ+̿gӠh"rx   ry   rz   s       r#    test_essential_matrix_estimationr     s    
(	
 	
 	
 & gb!nn' ( (	
 	
 	
 & gb!nn' * {C55E ...---+++	
 I i33333r-   c                      t          t          j        d          t          j        g d                    } t          j        ddgddgddgg          }t	           | |          g dg dg dg           d S )Nr=   r   rV   r   r2   r   r   )r   rA   r   rH   r   r"   r{   s     r#   test_essential_matrix_forwardr   .  s    $(;(;  E (QFQFQF+
,
,Cc

ZZZZZZ$HIIIIIr-   c                     t          t          j        d          t          j        g d                    } t          j        ddgddgddgg          }t	          |                     |          g dg dg dg           d S r   )r   rA   r   rH   r   r5   r   s     r#   test_essential_matrix_inverser   6  s    $(;(;  E (QFQFQF+
,
,Cc**YYY


JJJ,OPPPPPr-   c                  :   t          t          j        d          t          j        g d                    } 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	          |                     ||          dz  g d           d S r   )r   rA   r   rH   r   r   )r"   r{   rQ   s      r#   test_essential_matrix_residualsr   >  s    $(;(;  E (QFQFQF+
,
,C
(QFQFQF+
,
,CS11Q6DDDDDr-   c                     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          |                     |t                              t                     t                      }|                    t          t                    sJ t          |j        |j                   d S )Nr      )r   r   r   r   r5   r   r6   r+   r7   s      r#   test_projective_estimationr   G  s    |S!QQQZRaRUDDEc"1"aaa%j))3rr111u:666  c377Fvvc{{33S999 !""F??3$$$$$v}55555r-   c            
         t          dt          d dd d f         t          d dd d f                   } t          dt          d dd d f         t          d dd d f         t          j        d                    }t          | j        |j                   t          dt          t                    } t          dt          t          t          j        t          j        d                             }t          | j        |j                   t          j        t          j        d         dz             }d|d<   t          dt          t                    }t          dt          t          j        dt          j        d                   d d f         t          t          j        dt          j        d                   d d f         |          }t          |j        |j        d           d S )	Nr   r   r   r2   V瞯<ra   r=   decimal)	r   r   r   rA   r   r   r+   shapearanger"   tform_wpoint_weightstform1r8   s        r#   #test_projective_weighted_estimationr   V  s   |S!QQQZRaRUDDE s2A2qqq5z3rr111u:rwqzzRRGgn555 |S#66E sC19N9NOOGgn555 GCIaL1,--MM!c377FBIb#)A,''*+BIb#)A,''*+	 F v}a@@@@@@r-   c                     t          dt          t                    }| rd |j        D             }n|j        }t	          |          }t          |j        |j                   d S )Nr   c                 ,    g | ]}t          |          S r   r   r   s     r#   r   z(test_projective_init.<locals>.<listcomp>t      000a$q''000r-   )r   r   r   r+   r   r   r   r"   r+   r8   s       r#   test_projective_initr   o  s`    |S#66E 005<000 ((Fu|44444r-   c                      t          dt          t          d          } t           | t                    t          d           t	                      }|                    t          t          d          sJ t          |j        | j                   d S )Nr   r/   orderrx   )r   r   r   r   r   r6   r+   r"   r8   s     r#   test_polynomial_estimationr   {  sw    |S#R@@@Ec

C+++ !""F??32?.....u|44444r-   c            
         t          dt          t          d          } t          dt          t          dt          j        t          j        d                             }t          | j        |j                   t          j        t          j        d         dz             }d|d<   t          dt          t          d          }t          dt          t          j        dt          j        d                   d d f         t          t          j        dt          j        d                   d d f         d|          }t          |j        |j        d	
           d S )Nr   r/   r   r   )r   weightsr2   r   ra   r   r   )	r   r   r   rA   r   r   r   r+   r   r   s        r#   #test_polynomial_weighted_estimationr     s   |S#R@@@E c3b"'#)A,2G2G  G gn555 GCIaL1,--MM!c3bAAAFBIb#)A,''*+BIb#)A,''*+  F v}a@@@@@@r-   c                     t          dt          t          d          }| rd |j        D             }n|j        }t	          |          }t          |j        |j                   d S )Nr   r/   r   c                 ,    g | ]}t          |          S r   r   r   s     r#   r   z(test_polynomial_init.<locals>.<listcomp>  r   r-   )r   r   r   r+   r   r   r   s       r#   test_polynomial_initr     se    |S#R@@@E 005<000 ((Fu|44444r-   c                      t          dt          t                    } t          dt          t          d          }t          |j        | j                   d S )Nr   r   r   )r   r   r   r   r+   r   s     r#   test_polynomial_default_orderr     sC    |S#66Ec3a@@@Fu|44444r-   c                      t          j        t                    5  t                                          d           d d d            d S # 1 swxY w Y   d S )Nr   )r   r   NotImplementedErrorr   r5   r   r-   r#   test_polynomial_inverser     s    	*	+	+ ) )%%a((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   "A		AAc                     t          dd          } t          dd          }t          dd          }| |z   }t          |j        |j                   t          dd          } t          dd          }t          dd          }| |z   }t          |j        |j                   |j        t
          k    sJ t          dd          }t          ||j        z   j        t          j        d                     t          dd          } t          dd          }t          d	d
          }| |j        z   }t          |j        |j                   d S )Nr&   333333?r(   ?g|Gz?rk   r&   r&   r=   r`   g433333)	r   r   r+   r   	__class__r   r5   rA   r   )r   r8   r9   r"   s       r#   
test_unionr     sL    sS999F sS999F v	BBBFVOEfm444:<<<F sS999F v	BBBFVOEfm444?11111*s;;;E.6q		BBB sS999F sS999F }yIIIFV^#Efm44444r-   c                      t                      } t                      }t          j        t                    5  |                     |           d d d            d S # 1 swxY w Y   d S rr   )r   r   r   r   	TypeError__add__)r   r8   s     r#   test_union_differing_typesr     s     ""F ""F	y	!	!  v                 s   AA Ar"   r=   r   r   r   r(   r      r   rV   r&   r2   r   c                 R   t          | j        t          |                     sJ 	 t          | j        j        j        | j                   n'# t
          $ r t          | t                    sJ Y nw xY wt          | j                            t                     | t                               t          | t          t          t          f          sXt           | | j        z   t                    t                     t           | j        | z   t                    t                     d S d S rr   )

isinstancer5   typer   r+   AttributeErrorr
   r   r   r	   r!   s    r#   test_inverse_all_transformsr     s   & emT%[[11111;EM18%,GGGG ; ; ;%!9:::::::;--c22EE#JJ???$&$	
  	? 	2UU]2C88#>>>2U]U2C88#>>>>>	? 	?s   $A !A/.A/c                     t          j        t          d          5  t                       d d d            n# 1 swxY w Y   t	          d          D ]} t
          j                            dd          dz  }|d|d         dk    fxx         t          j        t                    j
        z  cc<   ||d         z  }t          j        |d	         d
z   |d          z  d
gd
|d         d
z   |d	          z  gd
d
gg          }t          |          } ||          }t          j        |                                          sJ d S )Nz Can't instantiate abstract class)matchr[   r=   d   r   r   )r   r   )r   r2   r2   )r   r   )r   r   r   r   rangerA   rB   rC   finfofloatepsrH   r   isfiniter   )iHr{   r"   rQ   s        r#   test_geometric_tformr     s   	y(J	K	K	K                 2YY & &INN1a  3&	!QqTQY,28E??..	QtW hD'A+!D')1-QtWq[QtWH,-A
 
 $A&&eCjj{3##%%%%%%'& &s   7;;c                  
   t          j        t                    5  t          t	          j        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          d           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          d           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          d           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          	           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          	           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d
          	           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d
          t	          j        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d
          t	          j        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d
          t	          j        d                     d d d            d S # 1 swxY w Y   d S )N)r   r=   r2   )r   r)   r0   )r   rI   r=   r=   )r=   r   r   )r*   r=   )r   rV   r>   )r   r   r    r   rA   zerosr   r   r   r   r	   r   r   r   r-   r#   test_invalid_inputr     sg   	z	"	" . .BHV,,---. . . . . . . . . . . . . . .	z	"	" * *(()))* * * * * * * * * * * * * * *	z	"	" . .BHV,,---. . . . . . . . . . . . . . .	z	"	" - -28F++,,,- - - - - - - - - - - - - - -	z	"	" : :rx//q9999: : : : : : : : : : : : : : :	z	"	" > >28F#3#31====> > > > > > > > > > > > > > >	z	"	" H H"(6"2"2GGGGH H H H H H H H H H H H H H H	z	"	" . .BHV,,---. . . . . . . . . . . . . . .	z	"	" < <""(6*:*:;;;;< < < < < < < < < < < < < < <	z	"	" : : (8(89999: : : : : : : : : : : : : : : 
z	"	" < < "(6*:*:;;;;< < < < < < < < < < < < < < <	z	"	" < < "(6*:*:;;;;< < < < < < < < < < < < < < <	z	"	" 5 5 "&))44445 5 5 5 5 5 5 5 5 5 5 5 5 5 5	z	"	" Q Q "&))$PPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q	z	"	" Q Q "&))$PPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q	z	"	" Q Q "&))$PPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Qs  "AAA,"BB!B>"C,,C03C0"D>>EE"$FFF6$G&&G*-G*
$H::H>H>"JJJ0#KK#&K##L22L69L6#NN	N	)#OOO<#P++P/2P/6RRR56S77S;>S;6UU"%U"c                      t          j        d          x} }t                      }|                    | |          rJ t          j        t          j        |j                            sJ t                      }|                    | |          rJ t          j        t          j        |j                            sJ t                      }|                    | |          rJ t          j        t          j        |j                            sJ t                      }|                    | |          rJ t          j        t          j        |j                            sJ t                      }t          d          D ]}t           j                            dd          dz  } t           j                            dd          dz  }t           j                                        | d d df<   |                    | |          r-t          j        |j                                                  sJ t          j        g dg dg dg          } t          j        g d	g d	g d
g          }t                      }|                    | |          rJ t          j        t          j        |j                            sJ t          j        g dg dg dg dg dg dg dg dg dg	          } t          j        g dg dg dg dg dg dg dg dg dg	          }t!                      }|                    | |          rJ t          j        t          j        |j        d         j                            sJ t%          |j                  D ]8\  }}|dk    r-t          j        t          j        |j                            rJ 9|j        D ]/}t          j        t          j        |j                            rJ 0d S )N)r/   r   r[   r   r   r   r2   )r   r   r   )r   r   r   rj   )r   r=   r   )r         )r   r   r   )r   r   r   )r   @   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r         )r   r   r   )r   ir   )r      r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )rA   r   r   r6   r   isnanr+   r   r   r   r   rB   rC   r   rH   asarrayr
   affines	enumerateinverse_affines)r{   rQ   r"   r   idxr   s         r#   test_degenerater  8  s   !!!C#!!E~~c3'''''6"(5<(()))))  E~~c3'''''6"(5<(()))))E~~c3'''''6"(5<(()))))!!E~~c3'''''6"(5<(()))))  !!E2YY 	O 	OinnQ""S(innQ""S( INN$$AAAqD	 >>#s++Nr{5</H/H/L/L/N/NNNN
(IIIyyy)))4
5
5C
(IIIyyy)))4
5
5CE~~c3'''''6"(5<(())))) *MMMMKKJJKKLLMMMMMM
	
 C *MMMMMMJJKKLLMMMMMM
	
 C %&&E~~c3'''''6"(5=+23344444 // 7 7V!88vbhv}5566666' 3 36"(6=112222223 3r-   c                  <   t          j        ddggdz            } t          |           \  }}t          j        t          j        |                    sJ t          j        t          j        |                    sJ |j        dk    sJ |j        | j        k    sJ dS )z?Return nan matrix *of appropriate size* when point is repeated.gYi[R@gW@r=   r   N)rA   rH   r   r   r   r   )ptsmatpts_tfs      r#    test_normalize_degenerate_pointsr    s    
([*-.2
3
3C.s33KC6"(3--     6"(6""#####9<39$$$$$$r-   c                  b   t                      } t          j        t          j        d                                                    dz   t          j        d          z   }|                    dd          }|                    dd          }t          j        |t          |                     sJ d S )Nz
        <ProjectiveTransform(matrix=
            [[1., 0., 0.],
             [0., 1., 0.],
             [0., 0., 1.]]) at
        z 0x[a-f0-9]+>0\. *0\.1\. *1\.)	r   reescapetextwrapdedentstripreplacer   reprr"   wants     r#   test_projective_reprr    s    !!E
	O  egg		
 		
 
	 )C..	 	  <<))D<<))D8D$u++&&&&&&&r-   c                  2   t                      } t          j        t          j        d                                                    }|                    dd          }|                    dd          }t          j        |t          |                     sJ d S )Nz
        <ProjectiveTransform(matrix=
            [[1., 0., 0.],
             [0., 1., 0.],
             [0., 0., 1.]])>
        r	  r
  r  r  )	r   r  r  r  r  r  r  r   strr  s     r#   test_projective_strr    s    !!E9	
 	
 %''	 	D <<))D<<))D8D#e**%%%%%%%r-   c                 l   t          j         | |          |z
  dz            }t          | j        j                  D ]v}dD ]q}t          j        | j                  }|j        |xx         |z  cc<   |                     |          }t          j         ||          |z
  dz            }||k    sJ rwd S )Nr   )gMbP?gMbPr   )rA   r   r   r+   sizecopyflatr   )	tfr{   rQ   baseliner   updater+   new_tfnew_ssqs	            r#   _assert_least_squaresr#    s    vrr#ww}*++H29>"" & &% 	& 	&FWRY''FKNNNf$NNN\\\00FfffSkkC/A566GX%%%%%	&& &r-   c                    d}t           j                            d|f          dt          j        dd|z             z  z  }t          j        g dg dg dg dg          }| rd	 |D             }d
 |D             }t	          |          } ||          }|t           j                            d|f          z   }| rd |D             }t	          |          }|                    ||          sJ t          j        |          }t          |j        d d d df         |d d d df         d           t          |j        d d df         |d d df         d           t          |||           d S )Nr=      r      )g333333@r&   g?r%  )        r`   r&      )r'  r'  r`   )r'  r'  r'  r`   c                 ,    g | ]}t          |          S r   r   r   cs     r#   r   z+test_estimate_affine_3d.<locals>.<listcomp>      $$$1tAww$$$r-   c                 ,    g | ]}t          |          S r   r   r+  s     r#   r   z+test_estimate_affine_3d.<locals>.<listcomp>  s    ***a$q''***r-   r   c                 ,    g | ]}t          |          S r   r   r+  s     r#   r   z+test_estimate_affine_3d.<locals>.<listcomp>  r-  r-   r?   ra   r   r   )
rA   rB   r   rH   r   r6   r   r   r+   r#  )r   ndimr{   r   r  rQ   	dst_noisytf2s           r#   test_estimate_affine_3dr3    s   D
)

B:
&
&bi1t8.D.D)D
DCX   		
 F  +$$$$$**6***		'	'	'B
"S''Cbi&&Dz222I %$$$$$

.
.
.C<<Y''''' ZF
111crc6*F111crc6NAFFFF
111b5)6!!!R%=!DDDD#sI.....r-   c                  .   t          j        t                    5  t          d          } d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d                    } d d d            d S # 1 swxY w Y   d S )Nr=   r?   r   )r   r   r   r	   rA   r   _s    r#   #test_fundamental_3d_not_implementedr7    s   	*	+	+ 9 9&a8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	*	+	+ 2 2&rvayy112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   7;;"B

BBc                     t          j        d          } t          |           }t          t          j        |          |            t          t          j        |t
                    |                     t
                               d S )Nr   )dtype)rA   r   r   r   rH   intastype)r  r  s     r#   test_array_protocolr<    sc    
&))C	S	!	!B"s###"C(((#**S//:::::r-   c                     t          j        t           j                            d          t          j        d          dd          fd          } | d d                                         }t          |          }t          |          }t          t          j        |          |            t          j
        t                    5  t          |d d                   }d d d            n# 1 swxY w Y   t          j
        t                    5  t          |d d                   }d d d            d S # 1 swxY w Y   d S )N)r=   r   r   ra   r   r   r   )rA   concatenaterB   r   ravelr   r   r   rH   r   r   r    )r  v
mat_from_vr  r6  s        r#   0test_affine_transform_from_linearized_parametersrB    s   
.")**622BF1IIbccNC!
L
L
LCCRCA+A..J	
	+	+	+B"s###	z	"	" / /&q"v../ / / / / / / / / / / / / / /	z	"	" + +1SbS6***+ + + + + + + + + + + + + + + + + +s$   C**C.1C.D44D8;D8c                      t          j        t                    5  t          dd          } d d d            d S # 1 swxY w Y   d S )Nr   r=   r)   r@   )r   r   r    r   r5  s    r#   test_affine_params_nD_errorrE    s    	z	"	" 7 7!A6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   9= =c                      g dt          j        g d          g dfg dt          j        g d          g dffD ]*\  } }}t          |          }t          || z  |d           +d S )	N)r   r/   r   )Z   -   rH  )rI  gffffff@)ra   r&  r)  )i   i)g?g@gffffffr2   r   )rA   radiansr   r   )r@  rK   rn   Rs       r#   test_euler_rotationrM    s    	RZ--}}}=	bj002B2B2BC  8 868 #6**AE8Q777778 8r-   c                     t          d          } t          j        |           d         dk    sJ t          dd          } t          t          j        |           g dg d	f         d           t	          j        t                    5  t          d
d          }d d d            n# 1 swxY w Y   t	          j        t                    5  t          dd          }d d d            n# 1 swxY w Y   t          t          j        t          j        d          z  d          } t          t          j        |           d ddf         d           d S )Nr   )rI   r3   r   )r   r   	   r=   rI   r@   )r   r   r2   r2   r   r   )r2   r   r   r   r   r2   )r   rx   r&     r   )r   rQ  r*   r@   ra   )	r   rA   rH   r   r   r   r    rD   r   )r  r6  s     r#   test_euclidean_param_defaultsrS    s   		/	/	/B8B<<""""		!	D	D	DB"0002D2D2DDEqIII	z	"	" K K<JJJK K K K K K K K K K K K K K K 
z	"	" B BqAAAB B B B B B B B B B B B B B B 
RURYq\\%9!	L	L	LB"crc1f%q)))))s$   	B''B+.B+C))C-0C-c                      t          j        t                    5  t          dd          } d d d            n# 1 swxY w Y   t          dd          }t	           |g dg          g dg           d S )N)r   r   rx   r&  r   rP  r=   rD  )r2   r2   r2   )r   r   r   )r   r   r    r   r   r6  r  s     r#    test_similarity_transform_paramsrV  "  s    	z	"	" L LLKKKL L L L L L L L L L L L L L L	1Q	7	7	7BYYYK999+.....s   8<<c                      t           j                            d          dz  t           j        z  t           j        z
  } t          | d          }t	          | d          }t          ||           d S )Nr>   r   r=   rR  )rA   rB   rD   r   r   r   )rK   euclidsimilars      r#   test_euler_angle_consistencyrZ  )  sd    Yd##a'"%/"%7FBBBF!6!DDDGfg.....r-   c                     t          j        t                    5  t          d          } d d d            n# 1 swxY w Y   t	          d          }t          j        t                    5  |j        } d d d            n# 1 swxY w Y   t          j        t                    5  |j        } d d d            d S # 1 swxY w Y   d S )Nr=   r?   )r   r   r   r   r   r*   rg   rU  s     r#   test_2D_only_implementationsr\  0  sq   	*	+	+ 2 2q1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2		*	*	*B	*	+	+  K              	*	+	+  H                 s0   7;;+A??BB#B88B<?B<)Xr  r  numpyrA   r   numpy.testingr   r   r   skimage.transformr   r   r   r	   r
   r   r   r   r   r   skimage.transform._geometricr   r   r   r   rH   r   r   r$   r,   r:   rT   rW   rY   r^   rc   re   rh   rp   rs   r}   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rB   rC   r   sqrtr+   tr6   r   r   r   r  r  r  r  r#  r3  r7  r<  rB  rE  rM  rS  rV  rZ  r\  r   r-   r#   <module>re     s   				       V V V V V V V V V V                                   bh	8	7		'		&		'	  bh	
A	
D		t	q		t	t	s	t	 = = =B B B
6 6 6&C C C08 8 886 6 6&= = =6-8 -8 -8`6 6 6  60 0 0&1 1 144 44 44nE E E +eT];;J J <;J&Q Q Q0Q 0Q 0Qf/ / /dU U U44 44 44nJ J JQ Q QE E E6 6 6A A A2 +eT];;5 5 <;55 5 5A A A. +eT];;5 5 <;55 5 5) ) )
5 5 50   29>>!Q#7#7888j3777CV<<<#444  RVAYYQ^Q^Q,O	
 	
 	
 	#"++WRWQZZWRWQZZQR0S  	
 	
 	

 ('))
)!	3	3C	=	=	C! $? ?% $?(& & &6!Q !Q !QHK3 K3 K3\% % %' ' '.& & &&& & & +eT];;/ / <;/B2 2 2; ; ;
+ 
+ 
+7 7 7
8 8 8* * *$/ / // / /    r-   