
    hh                         d dl Zd dlZd dlmZ d dlmZ d dlmZ ddZ	ej                  j                  dej                  ej                  ej                  g      d        Zd Zd	 Zd
 Zd Zd Zd Zy)    N)_supported_float_type)optical_flow_tvl1)warpc                    t        j                  | j                  D cg c]  }t        j                  |       c}ddi}t        j                  |      }t        j
                  |t              }|t        j                  |d   |d   j                         z  |z  t         j                  z        z  |d<   t        | ||z
  d      }||fS c c}w )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          b/var/www/html/dev/engine/venv/lib/python3.12/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F? =s   Cr
   c                    t         j                  j                  d      }|j                  d      }t	        |      \  }}|j                  | d      }t        |       }t        ||d|      }|j                  |k(  sJ t        ||z
        j                         dk  sJ | |k7  r2t        j                  t              5  t        ||d|        d d d        y y # 1 sw Y   y xY w)	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+OGV]]5u]-F'.KVVMD::$$$tg~##%+++]]:& 	Iff%H	I 	I 	I 	Is   =CC c                      t         j                  j                  d      } | j                  d      }t	        |      \  }}t        ||d      }t        ||z
        j                         dk  sJ y )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   sb    
))


"CZZ_Z-F#F+OGVVV;Dtg~##%+++    c                      t         j                  j                  d      } | j                  d      }t	        ||      }t        j
                  |dk(        sJ y )Nr   r!   r#   r   r*   r+   r,   r   allr3   imgr5   s      r   test_no_motion_2drA   C   sH    
))


"C
****
%CS#&D66$!)r;   c                      t         j                  j                  d      } | j                  d      }t	        ||      }t        j
                  |dk(        sJ y )Nr   )@   rC   rC   r#   r=   r?   s      r   test_no_motion_3drD   L   sH    
))


"C
**,*
'CS#&D66$!)r;   c                     t         j                  j                  d      } | j                  d      }t	        |      \  }}t        ||dt         j                        }|j                  t         j                  k(  sJ t        ||dt         j                        }|j                  t         j                  k(  sJ t        j                  ||z
        j                         dk  sJ y )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+OGV ARZZPH>>RZZ''' !ARZZPH>>RZZ'''
 66(X%&++-444r;   c                     t         j                  j                  d      } | j                  d      }| j                  d      }t	        j
                  t              5  t        ||      \  }}d d d        y # 1 sw Y   y xY w)Nr   r!   r#   )   r"   )r   r*   r+   r,   r0   r1   r2   r   )r3   I0I1uvs        r   test_incompatible_shapesrQ   j   sg    
))


"C		$B		$B	z	" ) R(1) ) )s   A66A?c                      t         j                  j                  d      } | j                  d      }t	        j
                  t              5  t        ||t         j                        \  }}d d d        y # 1 sw Y   y xY w)Nr   r!   r#   r	   )	r   r*   r+   r,   r0   r1   r2   r   int64)r3   r@   rO   rP   s       r   test_wrong_dtyperT   r   s]    
))


"C
****
%C	z	" ; c:1; ; ;s    A44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;   