U
    ?h                  	   @   s   d dl Zd dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ e Ze	 ejddd	d
ddgdd Zdd Zdd ZdS )    N)assert_almost_equalassert_equal)data)run_in_parallel)SIFT)_convertdtypeZfloat32Zfloat64uint8Zuint16Zint64c                 C   s  t t| }t }|| tddddddddddg
}tddd	d
dd
ddddg
}tddddddddddg
}tddddddddddg
}tdddddddd d!d"g
}td#d#d$d%d&d'd(d)d*d+g
}td,d,d-d.d.d-d,d-d-d-g
}	td/d/d0d1d2d3d4d5d6d7g
}
td8d9d:d;d<d=gd;d<d=d>d?d@gd>d?d@dAdBdCgdAdBdCdDdEdFgdDdEdFdGdHdIgdGdHdIdJdKdLgg}t||jd dMdf  t||jd dMd-f  t||jd dM  t||j	d dMdf dNdO t||j	d dMd-f dNdO t||j
d dM dNdO t|	|jd dM  t|
|jd dM dNdO t||jdNdO t }|t |t t|jd dMdf |jd dMdf  t|jd dMdf |jd dMdf  d S )PN                      iK  iE  iJ  i6     iC     iR  r   g_~1@gB3@gI5@g&1J9@goʢA:@gе=@g#A>@gV@)>@g1/?@gnt@g)St@g7}#t@g!Imes@g!bt@gNٗi@g!1t-t@gzIOҭb@gWu@g=?gƔ?gbT?gCʪc?gз&Y^?gYj6|?gO?g/R ?g_``?         g1K+?gJ-A?gEaa?g G?g|WS?grH0?gV?g7?g84?g?güCa ?găQ?g?güCa  @găQ@g	@güCa @gpQ@g@güCa  @gGQ$@g)@güCa 0@geEQ4@g9@güCa @@gP0QD@gI@g8a P@gP0QT@
      )decimal)r   imgr   detect_and_extractnparrayr   	keypointsoctaves	positionsorientationsscalesZsigmasZscalespace_sigmasdetectextract)r   Z_imgdetector_extractorZexp_keypoint_rowsZexp_keypoint_colsZexp_octavesZexp_position_rowsZexp_position_colsZexp_orientationsZ
exp_scalesZ
exp_sigmasZexp_scalespace_sigmasZdetector_extractor2 r%   Q/var/www/html/venv/lib/python3.8/site-packages/skimage/feature/tests/test_sift.pytest_keypoints_sift   s    


    
    
                    

r'   c                  C   s"  t ddd} tjddddddd	d
ddddddddgddddddd	d
ddddddddgddddddddddddddddgddddddddddd d
d!d"d#dgd$d%d&d'd(d)d*d+d$d"d,d-d$d.d/dgdd0ddd1d2dd3dd4d5d6dd0d7d8gd9d:d;d<d=dd>d?d9d@dAdBd9d
dCd=gdd"ddDd/dddddEddFddddGgdHdIdJddHdKdd6dHddGdEdHd%dLdMgdNdOddPdNdNdQddRdSdNdTd*dNdNdUgg
tjdV}| t t|| jd d:  | jj	dW }|| jj	dW kst
|| jj	dW kst
|| jj	dW kst
|| jj	dW kst
|| jj	dW kst
|| jj	dW kst
d S )XNr   r   )Zn_histZn_ori   r   7   r      -   R            A   n      4   r
         K   [               B   \   L   N   W   X   b   8   `      r   (   	         9   $         *      x      l   C      o   _   E   )      r      ,         "   q   I   @   r   1   3   S   H      .   /      ;         u   f   Z         2   F   )r   r   )r   r   r   r	   r   r   r   Zdescriptorsr   shapeAssertionErrorr    r   r   r!   )r$   Zexp_descriptorsZkeypoints_countr%   r%   r&   test_descriptor_siftY   s                                                      
rv   c               	   C   s4   t d} t }tt ||  W 5 Q R X d S )N)   rw   )r   Zonesr   pytestZraisesRuntimeErrorr   )r   r$   r%   r%   r&   "test_no_descriptors_extracted_sift   s    
rz   )numpyr   rx   Znumpy.testingr   r   Zskimager   Zskimage._shared.testingr   Zskimage.featurer   Zskimage.util.dtyper   Zcoinsr   markZparametrizer'   rv   rz   r%   r%   r%   r&   <module>   s    H&