
    1-Ph                         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
                            dej        ej        ej        g          d	             Zd
 Zd Zd Zd Zd Zd ZdS )    N)_supported_float_type)optical_flow_tvl1)warp      @   c                 h   t          j        d | j        D             ddi}t          j        |          }t          j        |t
                    }|t          j        |d         |d                                         z  |z  t           j        z            z  |d<   t          | ||z
  d          }||fS )	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.

    c                 6    g | ]}t          j        |          S  )nparange).0ns     d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/registration/tests/test_tvl1.py
<listcomp>z!_sin_flow_gen.<locals>.<listcomp>   s     <<<!1<<<    indexingijdtyper   )r   .edge)mode)
r   meshgridshapestack
zeros_likefloatsinmaxpir   )image0
max_motionnpicsgridgt_flowimage1s         r   _sin_flow_genr&   	   s    ( ;<<v|<<<LtLLD8D>>DmD...G 26$q'DGKKMM*AE*IBE*Q#R#RRGFO&$.v666FF?r   r   c                    t           j                            d          }|                    d          }t	          |          \  }}|                    | d          }t          |           }t          ||d|          }|j        |k    sJ t          ||z
            
                                dk     sJ | |k    rGt          j        t                    5  t          ||d|            d d d            d S # 1 swxY w Y   d S d S )	Nr      r)   sizeF)copyr   
attachmentr         ?)r   randomdefault_rngnormalr&   astyper   r   r   absmeanpytestraises
ValueError)r   rngr    r$   r%   float_dtypeflows          r   test_2d_motionr<   %   sc    )


"
"CZZZZ((F#F++OGV]]5u]--F'..KVVMMMD:$$$$tg~##%%++++]:&& 	I 	Iff%HHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I s   C88C<?C<c                     t           j                            d          } |                     d          }t	          |          \  }}t          ||d          }t          ||z
                                            dk     sJ d S )Nr   )d   r>   r>   r*   
   )r.   r/   )r   r0   r1   r2   r&   r   r4   r5   )r9   r    r$   r%   r;   s        r   test_3d_motionr@   8   s~    
)


"
"CZZ_Z--F#F++OGVVV;;;Dtg~##%%++++++r   c                      t           j                            d          } |                     d          }t	          ||          }t          j        |dk              sJ d S )Nr   r(   r*   r   r0   r1   r2   r   allr9   imgr;   s      r   test_no_motion_2drF   C   sY    
)


"
"C
****
%
%CS#&&D6$!)r   c                      t           j                            d          } |                     d          }t	          ||          }t          j        |dk              sJ d S )Nr   )@   rH   rH   r*   rB   rD   s      r   test_no_motion_3drI   L   sY    
)


"
"C
**,*
'
'CS#&&D6$!)r   c                     t           j                            d          } |                     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
            
                                dk     sJ d S )Nr   r(   r*   r   r-   gMbP?)r   r0   r1   r2   r&   r   float64r   float32r4   r5   )r9   r    r$   r%   flow_f64flow_f32s         r   test_optical_flow_dtyperO   U   s    
)


"
"CZZZZ((F#F++OGV ARZPPPH>RZ'''' !ARZPPPH>RZ''''
 6(X%&&++--444444r   c                  &   t           j                            d          } |                     d          }|                     d          }t	          j        t                    5  t          ||          \  }}d d d            d S # 1 swxY w Y   d S )Nr   r(   r*   )   r)   )r   r0   r1   r2   r6   r7   r8   r   )r9   I0I1uvs        r   test_incompatible_shapesrV   j   s    
)


"
"C		$	$B		$	$B	z	"	" ) ) R((1) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   %BB
B
c                     t           j                            d          } |                     d          }t	          j        t                    5  t          ||t           j                  \  }}d d d            d S # 1 swxY w Y   d S )Nr   r(   r*   r   )	r   r0   r1   r2   r6   r7   r8   r   int64)r9   rE   rT   rU   s       r   test_wrong_dtyperY   r   s    
)


"
"C
****
%
%C	z	"	" ; ; c:::1; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s    A<<B B )r   r   )numpyr   r6   skimage._shared.utilsr   skimage.registrationr   skimage.transformr   r&   markparametrizefloat16rL   rK   r<   r@   rF   rI   rO   rV   rY   r
   r   r   <module>ra      s        7 7 7 7 7 7 2 2 2 2 2 2 " " " " " "   8 2:rz2:"FGGI I HGI$, , ,    5 5 5*) ) ); ; ; ; ;r   