o
    :ήc                     @   s*  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l	m
Z
 d dlmZ d dlmZ d dlmZmZ d dlmZmZ ejd	dd
gdd Zejd	dgdd Zejd	dd
gdd Zejdejejejgdd Zdd Zdd Zdd Z dd Z!dd Z"dd  Z#d!d" Z$d#d$ Z%dS )%    N)assert_allclose)fourier_shift)img_as_float)expected_warnings)_supported_float_type)camerabinary_blobs)phase_cross_correlation_upsampled_dftnormalizationphasec                 C   sN   t t }d}t||}t||d| d\}}}t|d d t|  d S )Ni   fourierspacer      fftfftnr   r   r	   r   nparray)r   reference_imageshiftshifted_imageresult_ r   ^/tmp/pip-target-vg8gfxp4/lib/python/skimage/registration/tests/test_phase_cross_correlation.pytest_correlation   s   
r   nonexistingc                 C   sZ   t t }d}t||}tt t||d| d W d    d S 1 s&w   Y  d S )Nr   r   r   )r   r   r   r   pytestraises
ValueErrorr	   )r   r   r   r   r   r   r   &test_correlation_invalid_normalization   s   
"r$   c                 C   sT   t t }d}t||}t||dd| d\}}}t|d d t| dd d S )N333333gQ?d   r   )upsample_factorr   r   r   皙?atolr   )r   r   subpixel_shiftr   r   r   r   r   r   test_subpixel_precision,   s   
"r-   dtypec                 C   s   t  j| dd}d}tt||}t|jj| dd}t||dd\}}}|jt	| ks0J t
|d d t| dd d S )	NF)copyr%   r'   )r(   r   r)   r*   )r   astyper   r   r   ifftnrealr	   r.   r   r   r   r   )r.   r   r,   r   r   error	diffphaser   r   r   test_real_input;   s   "r5   c                  C   sd   t t d d df d} d}t| |}t| |ddd\}}}t|d d td d	d
 d S )N   )   )r&         r   r(   r   r   )r&   r   r)   r*   )	r   r   r   reshaper   r	   r   r   r   )r   r,   r   r   r3   r4   r   r   r   test_size_one_dimension_inputJ   s   
"r=   c                  C   s   t tddd} t| }d}t||}t||dd\}}}t|t| dd d	}t||}t||d
dd\}}}t|t| dd d S )N       lengthn_dim)             ?      @r   r   r)   r*   )ffffff333333?皙@r'   r;   	r   r   r   r   r   r	   r   r   r   )phantomr   r   r   r   r3   r4   r,   r   r   r   test_3d_inputX   s"   


rL   c                  C   sH   t d} tt t| | dd W d    d S 1 sw   Y  d S )N   rN   frankrF   )r   onesr!   r"   r#   r	   )imager   r   r   test_unknown_space_inputn   s   
"rR   c               	   C   s*  t d} t d}tt t||  W d    n1 sw   Y  t d} t d}tt t||  W d    n1 sCw   Y  t d} t j| d d< t d}tdg- tt t|| dd W d    n1 svw   Y  W d    d S W d    d S 1 sw   Y  d S )N)rN   rN   r8   rM   r9   r9   r   zQinvalid value encountered in true_divide|invalid value encountered in divide|\A\ZT)return_error)r   rP   r!   r"   r#   r	   nanr   )rQ   templater   r   r   test_wrong_inputv   s.   





"rW   c                  C   sV   t tddd} t| }d}t||}t||dd\}}}t|t| dd d S )	Nr>   r9   r@   )rC   rD   rE   r   rF   r)   r*   rJ   )rK   r   r   r   r   r3   r4   r   r   r   test_4d_input_pixel   s   

rY   c                  C   sX   t tddd} t| }d}t||}t||ddd\}}}t|t| dd	 d S )
Nr>   r9   r@   )rG   rH   rI   g	
   r   r;   r)   r*   rJ   )rK   r   r,   r   r   r3   r4   r   r   r   test_4d_input_subpixel   s   

r[   c                   C   sF   t t ttdg dd W d    d S 1 sw   Y  d S )NrS   r?   r   r8   r9   )upsampled_region_sizer!   r"   r#   r
   r   rP   r   r   r   r   #test_mismatch_upsampled_region_size   s   "r_   c                   C   sH   t t ttddg dd W d    d S 1 sw   Y  d S )NrS   r?   r\   )axis_offsetsr^   r   r   r   r   test_mismatch_offsets_size   s
   "ra   )&numpyr   r!   numpy.testingr   scipy.ndimager   	scipy.fftr   skimager   skimage._shared._warningsr   skimage._shared.utilsr   skimage.datar   r   -skimage.registration._phase_cross_correlationr	   r
   markparametrizer   r$   r-   float16float32float64r5   r=   rL   rR   rW   rY   r[   r_   ra   r   r   r   r   <module>   s4    



