
    9i                         S SK rS SKrS SKJr  S SKJr  S SKJr  SS jr	\R                  R                  S\R                  \R                  \R                  /5      S 5       rS rS	 rS
 rS rS rS rg)    N)_supported_float_type)optical_flow_tvl1)warpc                    [         R                  " U R                   Vs/ s H  n[         R                  " U5      PM     snSS06n[         R                  " U5      n[         R
                  " U[        S9nU[         R                  " US   US   R                  5       -  U-  [         R                  -  5      -  US'   [        XU-
  SS9nXV4$ s  snf )a  Generate a synthetic ground truth optical flow with a sinusoid as
  first component.

Parameters
----------
image0: ndarray
    The base image to be warped.
max_motion: float
    Maximum flow magnitude.
npics: int
    Number of sinusoid pics.

Returns
-------
flow, image1 : ndarray
    The synthetic ground truth optical flow with a sinusoid as
    first component and the corresponding warped image.

indexingijdtyper   )r   .edge)mode)npmeshgridshapearangestack
zeros_likefloatsinmaxpir   )image0
max_motionnpicsngridgt_flowimage1s          d/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/registration/tests/test_tvl1.py_sin_flow_genr   	   s    ( ;;v||<|!1|<LtLD88D>DmmD.G 266$q'DGKKM*AE*IBEE*Q#RRGFO&.v6F? =s    Cr
   c                    [         R                  R                  S5      nUR                  SS9n[	        U5      u  p4UR                  U SS9n[        U 5      n[        X$SUS9nUR                  U:X  d   e[        Xc-
  5      R                  5       S:  d   eX:w  a/  [        R                  " [        5         [        X$SU S9  S S S 5        g g ! , (       d  f       g = f)	Nr      r"   sizeF)copy   
attachmentr
         ?)r   randomdefault_rngnormalr   astyper   r   r
   absmeanpytestraises
ValueError)r
   rngr   r   r   float_dtypeflows          r   test_2d_motionr6   %   s     ))


"CZZZZ(F#F+OG]]5u]-F'.KVMD::$$$t~##%+++]]:&f%H '& &&s   4C


Cc                      [         R                  R                  S5      n U R                  SS9n[	        U5      u  p#[        XSS9n[        XB-
  5      R                  5       S:  d   eg )Nr   )d   r8   r8   r#   
   )r(   r)   )r   r*   r+   r,   r   r   r.   r/   )r3   r   r   r   r5   s        r   test_3d_motionr:   8   s\    
))


"CZZ_Z-F#F+OGV;Dt~##%+++    c                      [         R                  R                  S5      n U R                  SS9n[	        X5      n[         R
                  " US:H  5      (       d   eg )Nr   r!   r#   r   r*   r+   r,   r   allr3   imgr5   s      r   test_no_motion_2drA   C   sI    
))


"C
****
%CS&D66$!)r;   c                      [         R                  R                  S5      n U R                  SS9n[	        X5      n[         R
                  " US:H  5      (       d   eg )Nr   )@   rC   rC   r#   r=   r?   s      r   test_no_motion_3drD   L   sI    
))


"C
**,*
'CS&D66$!)r;   c                     [         R                  R                  S5      n U R                  SS9n[	        U5      u  p#[        XS[         R                  S9nUR                  [         R                  :X  d   e[        XS[         R                  S9nUR                  [         R                  :X  d   e[         R                  " XE-
  5      R                  5       S:  d   eg )Nr   r!   r#   r&   r'   gMbP?)r   r*   r+   r,   r   r   float64r
   float32r.   r/   )r3   r   r   r   flow_f64flow_f32s         r   test_optical_flow_dtyperJ   U   s    
))


"CZZZZ(F#F+OG ARZZPH>>RZZ''' !ARZZPH>>RZZ'''
 66(%&++-444r;   c                      [         R                  R                  S5      n U R                  SS9nU R                  SS9n[        R
                  " [        5         [        X5      u  p4S S S 5        g ! , (       d  f       g = f)Nr   r!   r#   )   r"   )r   r*   r+   r,   r0   r1   r2   r   )r3   I0I1uvs        r   test_incompatible_shapesrQ   j   sZ    
))


"C		$B		$B	z	" ( 
#	"	"s   A//
A=c                      [         R                  R                  S5      n U R                  SS9n[        R
                  " [        5         [        X[         R                  S9u  p#S S S 5        g ! , (       d  f       g = f)Nr   r!   r#   r	   )	r   r*   r+   r,   r0   r1   r2   r   int64)r3   r@   rO   rP   s       r   test_wrong_dtyperT   r   sP    
))


"C
****
%C	z	" : 
#	"	"s   	A--
A;)g      @r&   )numpyr   r0   skimage._shared.utilsr   skimage.registrationr   skimage.transformr   r   markparametrizefloat16rG   rF   r6   r:   rA   rD   rJ   rQ   rT    r;   r   <module>r]      sr      7 2 "8 2::rzz2::"FGI HI$,5*);r;   