
    9i                        S SK rS SKrS SKJrJrJr  S SKJr  S SK	J
r
Jr  S SKJr  S SKJr  S SKJrJr  S SKJr  S S	KJr  S S
KJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#  S SK$J%r%J&r&J'r'  S SK(J)r)J*r*  \RV                  RY                  S 5        S r-S r.S r/\" 5       S 5       r0S r1S r2\Rf                  Ri                  S/ SQ5      S 5       r5\Rf                  Ri                  S/ SQ5      S 5       r6\Rf                  Ri                  S\7" S5      5      S 5       r8\Rf                  Ri                  S\7" S5      5      S 5       r9S r:\Rf                  Ri                  S\Rv                  \Rx                  \Rz                  /5      S 5       r>S r?S r@S rAS  rBS! rCS" rDS# rE\Rf                  Ri                  S$/ S%Q5      S& 5       rFS' rGS( rHS) rIS* rJS+ rKS, rLS- rMS. rNS/ rO\Rf                  Ri                  SS S0/5      \Rf                  Ri                  S1S2S3/5      \Rf                  Ri                  S4S2S3/5      \Rf                  Ri                  S\Rz                  \R                  /5      S5 5       5       5       5       rQ\Rf                  Ri                  S\Rv                  \Rx                  \Rz                  /5      S6 5       rRS7 rSS8 rTS9 rU\Rf                  Ri                  S\R                  \R                  \Rv                  \Rx                  \Rz                  /5      S: 5       rWS; rXS< rY\Rf                  Ri                  S\R                  \R                  \Rv                  \Rx                  \Rz                  /5      S= 5       rZS> r[S? r\\Rf                  Ri                  S\R                  \R                  \Rv                  \Rx                  \Rz                  /5      S@ 5       r]SA r^SB r_SC r`SD raSE rbSF rcSG rd\Rf                  Ri                  S\Rv                  \Rx                  \Rz                  /5      SH 5       re\Rf                  Ri                  S\Rv                  \Rx                  \Rz                  /5      SI 5       rfSJ rgSK rhSL riSM rjSN rk\Rf                  Ri                  S/ SOQ5      SP 5       rl\Rf                  Ri                  S\R                  \m\Rx                  \Rz                  /5      SQ 5       rn\Rf                  Ri                  S\R                  \Rv                  \Rx                  \Rz                  /5      \Rf                  Ri                  S/ SRQ5      SS 5       5       roST rp\Rf                  Ri                  S$/ SUQ5      SV 5       rqSW rrSX rsSY rt\Rf                  Ri                  SZ\7" S0S5      5      S[ 5       ruS\ rvS] rwS^ rx\Rf                  Ri                  S_\y\R                  \{/5      S` 5       r|g)a    N)assert_allcloseassert_array_almost_equalassert_array_equal)map_coordinates)expected_warningsrun_in_parallel)_supported_float_type)rgb2gray)checkerboard	astronaut)circle_perimeter_aa)peak_local_max)
_stackcopy_linear_polar_mapping_log_polar_mappingwarpwarp_coordsrotateresizerescale
warp_polarswirldownscale_local_meanresize_local_mean)AffineTransformProjectiveTransformSimilarityTransform)img_as_float_convertc                      Sn [         R                  " SSU 45      n[         R                  " SS5      n[        X5        [	        U 5       H  n[        USU4   U5        M     g )N      .)npemptyeyer   ranger   )layersxyis       b/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/transform/tests/test_warps.pytest_stackcopyr,   %   sR    F
!Q A
q!Aq6]!!CF)Q/     c                  N   [         R                  " S[         R                  S9n SU S'   [         R                  * S-  n[	        SUSS9n[        XSS9n[        U[         R                  " U 5      5        [        XR                  SS9n[        U[         R                  " U 5      5        g )	N   r0   dtype      r5   r5   )r   r!   )scalerotationtranslationorder)	r#   zerosfloat64pir   r   r   rot90inverse)r(   thetatformx90s       r+   test_warp_tformrC   .   s|    
rzz*AAdGUUFQJEa%VLE
qq
!Cc288A;/
q--q
)Cc288A;/r-   c                      [         R                  " S[         R                  S9n SU S'   [         R                  " S[         R                  S9nSUS'   S n[        XSS9n[	        X15        g )Nr/   r1   r3   r4   r3   r3   c                     U S-   $ )Nr3    xys    r+   shift!test_warp_callable.<locals>.shiftA   s    Avr-   r9   )r#   r;   r<   r   r   )r(   refxrJ   outxs       r+   test_warp_callablerN   ;   sW    
rzz*AAdG88F"**-DDJ "Dd)r-   c                      [         R                  " S[         R                  S9n SU S'   [         R                  " S[         R                  S9nSUS'   [         R                  " / SQ/ SQ/ SQ/5      n[	        XSS	9n[        X15        [	        XS
S	9ng )Nr/   r1   r3   r4   rE   )r3   r   r3   )r   r3   r3   r   r   r3   r9   r0   )r#   r;   r<   arrayr   r   )r(   rL   matrixrM   s       r+   test_warp_matrixrS   H   ss    
rzz*AAdG88F"**-DDJXXy)Y78F #Dd)#Dr-   c                     [        SS5       H  n U S-  n[        R                  " U[        R                  S9nU S-  nSX#'   [        R                  " U[        R                  S9nU S-  nSXE'   U [	        SS	S5      4-  n[        R
                  " [        R                  U   5      S-   n[        X'SSS
9n[        X5        M     g )Nr5      )r0   r1   )r5   r3   )r3   r   r0   )r:   cval)	r&   r#   r;   r<   slicerQ   mgridr   r   )	dimshaper(   x_crL   refx_c
coord_gridcoordsrM   s	            r+   test_warp_ndr_   X   s    Q{d
HHU"**-DjxxRZZ0tE!QN,,
"((:./!3AQQ/!$- r-   c            	          [         R                  " S[         R                  S9n SU S'   [        U SSSSSS9nUR	                  5       S	:  d   e[        U SSS
SSS9n[        UR	                  5       S	5        [        UR                  5       S5        g )Nr/   r1   r3   r4   r"   Fconstant)r:   clipanti_aliasingmoder   T)r#   r;   r<   r   minr   max)r(   rM   s     r+   test_warp_cliprg   k   sy    
rzz*AAdG1aquE
SD88:>>1aqt5zRDdhhj!,dhhj!,r-   r:   )r   r3   r"   c           	         [         R                  " S[         R                  S9n[         R                  US'   [	        USU SSSS9n[        [         R                  " U5      S5        [        [         R                  " U5      S5        g )	N   rj   r1   )   rk   -   r5   Tr:   rV   r   rb   r3   )r#   onesr<   nanr   r   nanminnanmaxr:   r(   rM   s      r+   $test_warp_clip_image_containing_nansrs   w   s]     	

+AffAdG!Ru1TEDbiioq1biioq1r-   c           	         [         R                  " S[         R                  S9nSUSS2SS24'   [        USU [         R                  SSS9n[        [         R                  " U5      S	5        [        [         R                  " U5      S5        g )
Nri   r1   r5   r0   rl   Trm   r3   )r#   rn   r<   r   ro   r   rp   rq   rr   s      r+   test_warp_clip_cval_is_nanrv      si     	

+AAadAbDjM!Ru266$TJDbiioq1biioq1r-      c           
         [         R                  " S[         R                  S9n[        U S:X  a  S/OS 5         [	        USU SSSS9nS S S 5        [        WS   US	   US
   US   /S5        U S:  aJ  [         R                  " [         R                  " SU5      [         R                  " US5      -  5      S:  d   eg g ! , (       d  f       N{= f)Nri   r1   r5   Bi-quadratic.*bugrl   Trm   r   r   )r   )r{   r   )r{   r{   r   r3   )r#   rn   r<   r   r   r   sumlessrr   s      r+   'test_warp_clip_cval_outside_input_ranger~      s     	

+A 
EQJ/0D	Ia5qDI 
J tDz4;UT&\RTUV
 qyvvbgga&q)99:Q>>>  
J	Is   B<<
C
c           
         [         R                  " S[         R                  S9nSUSS2SS24'   [        SSS9n[	        U S:X  a  S	/OS 5         [        XS
U SSS9nS S S 5        [        WR                  5       S5        g ! , (       d  f       N)= f)Nri   r1   r5   r0   ru   g<<<<<<?rE   )r6   r8   ry   ra   r   T)rd   r:   rV   rb   r3   )r#   rn   r<   r   r   r   r   re   )r:   r(   	transformrM   s       r+   test_warp_clip_cval_not_usedr      s    
 	

+AAadAbDjM  mHI	EQJ/0D	IAzQTR 
J dhhj!, 
J	Is   A>>
Bc                     [         R                  " S[         R                  S9n SU S'   [         R                  * S-  n[         R                  " [         R
                  " U5      [         R                  " U5      * S/[         R                  " U5      [         R
                  " U5      S// SQ/5      n[        U [        U5      R                  SS	9n[        U[         R                  " U 5      5        g )
Nr/   r1   r3   rE   r5   r   r!   rP   )inverse_mapr:   )r#   r;   r<   r=   rQ   cossinr   r   r?   r   r>   )r(   r@   MrB   s       r+   test_homographyr      s    
rzz*AAdGUUFQJE
VVE]RVVE]NA.VVE]BFF5M1-	
	A q1!4<<A
FCc288A;/r-   r2   c                     [         R                  " SU S9nSUS'   [        US5      nUR                  [	        U 5      :X  d   e[        U[         R                  " U5      5        g )Nr/   r1   r3   rE   Z   )r#   r;   r   r2   r	   r   r>   )r2   r(   rB   s      r+   test_rotater      sP    
u%AAdG
B-C99-e4444c288A;/r-   c                      [         R                  " S[         R                  S9n [        U SSS9nUR                  S:X  d   e[        U SSS9nUR                  S:X  d   eg )N
   r   r1   rl   Fr   T   r   )r#   r;   r<   r   rZ   )r(   x45s     r+   test_rotate_resizer      sV    
,A
Bu
%C99   
Bt
$C99   r-   c                      [         R                  " S[         R                  S9n SU S'   [         R                  " S[         R                  S9nSUS'   [        U SSSS	9n[	        X!5        [        US
SSS	9n[	        X05        g )Nr   r1   r3   )r!   r!   )r5   r0      r   rz   )r:   centeri)r#   r;   r<   r   r   )r(   rL   x20x0s       r+   test_rotate_centerr      sl    
,AAdG88HBJJ/DDJ
Ba
/Cc(	S&	1Bb$r-   c            	         [         R                  " S[         R                  S9n SU S'   [         R                  " S[         R                  S9nSUS'   SUS'   [        U SS	S
SSS9nUR                  S:X  d   e[        X!5        g )Nr   r1   r3   rz   r   )rw   r   )rk   r   rl   Tr"   r"   r   reflect)r   r   r:   rd   )r#   r;   r<   r   rZ   r   )r(   ref_x45r   s      r+   test_rotate_resize_centerr      ss    
,AAdGhhxrzz2GGDMGDM
BtF!)
LC99   s$r-   c                      [        [        R                  " S[        R                  S9SSS9n U R                  S:X  d   eg )N)     r1   r   Tr   )r   r   )r   r#   r;   r<   rZ   )rB   s    r+   test_rotate_resize_90r      s1    
*BJJ7D
IC99
"""r-   c                     [         R                  " S[         R                  S9n SU S'   [        U SSSSS	9n[         R                  " S
5      nSUSS2SS24'   [	        X5        [         R                  " S[         R                  S9n SU S'   [        U SSSSS	9n[         R                  " S5      nSUSS2S4'   [	        X5        g )Nr/   r1   r3   rE   r5   r   Fra   r:   rc   rd   r   r!   r5   r3   )r   r0   )r#   r;   r<   r   r   )r(   scaledrefs      r+   test_rescaler      s    
rzz*AAdGQ%jIF
((8
CC!QqSMf* 	rzz*AAdGQau:NF
((7
CC!QKf*r-   c            	      4   [         R                  " S5      n [        R                  " [        5         [        U SS SSS9  S S S 5        [        R                  " [        5         [        U SSSSS9  S S S 5        g ! , (       d  f       N?= f! , (       d  f       g = f)Nr   r   r"   r4   Fra   )channel_axisrc   rd   )r5   r5   r5   r{   )r#   r;   pytestraises
ValueErrorr   r(   s    r+   test_rescale_invalid_scaler     se    
A	z	"6E
S 
#	z	"92UT 
#	" 
#	"	"	"s   A8!B	8
B	
Bc            	      V   [         R                  " S[         R                  S9n [        U SSSSSS9nUR                  S	:X  d   e[        U SSS SSS9nUR                  S
:X  d   e[         R                  " S[         R                  S9n [        U SSSSSS9nUR                  S:X  d   e[        U SSS SSS9nUR                  S:X  d   e[         R                  " S[         R                  S9n [        U SSSSSS9nUR                  S:X  d   e[        U SSS SSS9nUR                  S:X  d   eg )NrU   r"   r1   r5   r   r{   Fra   )r:   r   rc   rd   )   r"   r   rw   rU   rU   r"   )r   r   r"   r   r   rw   )rU   rU   rU   r"   )r   r   r   r"   )r   r   r   rw   r#   r;   r<   r   rZ   r(   r   s     r+   test_rescale_multichannelr     sD   
rzz*A	1ABe*F <<7"""	1ADJF <<7""" 	"**-A	1ABe*F <<;&&&	1ADJF <<;&&& 	RZZ0A	1ABe*F <<?***	1ADJF <<?***r-   r   )r   r3   r5   r{   c           	          [         R                  " S[         R                  S9n[         R                  " USU 5      n[	        USSU SSS9n[         R                  " X S5      nUR
                  S	:X  d   eg )
Nr0   r0   r"   r1   r{   r   r   Fra   )r6   r:   r   rc   rd   )r   r0   r"   )r#   r;   r<   moveaxisr   rZ   )r   r(   r   s      r+   $test_rescale_channel_axis_multiscaler   A  sh    
"**-A
Ar<(A	!F [[r2F<<:%%%r-   c                     [         R                  " S[         R                  S9n [        U SSSSS9nUR                  S:X  d   e[         R                  " S	[         R                  S9n [        U SSSSS9nUR                  S
:X  d   eg )Nr   r1   r5   r   Fra   r   r   r   r   r   r   s     r+   "test_rescale_multichannel_defaultsr   Q  sr    
rzz*AQ%jIF<<7"""
"**-AQ%jIF<<;&&&r-   c                      [         R                  " S[         R                  S9n SU S'   [        U SSSSS	9n[         R                  " S5      nSUS
S2S
S24'   [	        X5        g )Nr/   r1   r3   rE   r   r   Fra   r   r5   r!   r#   r;   r<   r   r   r(   resizedr   s      r+   test_resize2dr   [  s\    
rzz*AAdGQZPG
((8
CC!QqSMg+r-   c            	         [         R                  " S[         R                  S9n SU SSS S 24'   [        U SSSSS9n[        R
                  " [        5         [        U S	SSSS9  S S S 5        [         R                  " S
5      nSUSS2SS2S S 24'   [        X5        [        U S
SSSS9n[        X5        g ! , (       d  f       NV= f)Nr   r1   r3   r   r   Fra   r   r   r   r5   r!   )r#   r;   r<   r   r   r   r   r   r   s      r+   test_resize3d_keepr   d  s    
"**-AAaAgJQZPG	z	"q%qJG 
# ((;
CC!QqS!g+Q1E
SGg+ 
#	"s   B33
Cc                      [         R                  " S[         R                  S9n SU SSS S 24'   [        U SSSSS9n[         R                  " S5      nSUS	S
2S	S
24'   [	        X5        g )Nr   r1   r3   r   r   r3   r   Fra   r   r5   r!   r   r   s      r+   test_resize3d_resizer   s  sb    
"**-AAaAgJQ1E
SG
((;
CC!QqSMg+r-   c                      [         R                  " S[         R                  S9n SU S'   [        U SSSSS	9n[         R                  " S5      nSUS
S2S
S24'   [	        X5        g )Nr/   r1   r3   rE   r   r   Fra   r   r5   r!   r   r   s      r+   test_resize3d_2din_3doutr   }  s\    
rzz*AAdGQ1E
SG
((;
CC!QqSMg+r-   c                      [         R                  " S[         R                  S9n SU S'   Sn[        XSSSS	9n[         R                  " U5      nSUS
S2S
S2S4'   [	        X#5        g )Nr/   r1   r3   rE   r   r   r3   r3   r   Fra   r   r5   r!   .r   r(   	out_shaper   r   s       r+   test_resize2d_4dr     sb    
rzz*AAdGIQ%jQG
((9
CC!QqS#g+r-   c            	      N   [        SS5       H  n S[        R                  " U 5      S-  -   n[        R                  " U5      n[        R                  " U5      S-  n[        X#SSSS9nSU-  n[        UR                  U5        [        R                  " US:H  5      (       a  M   e   g )	Nr3   rw   r5         ?r   r   Fr:   rd   rc   )	r&   r#   arangern   asarrayr   r   rZ   allrY   rZ   r(   r   r   expected_shapes         r+   test_resize_ndr     s    Q{BIIcNQ&&GGENJJu%+	QYeTu7==.9vvgl#### r-   c                  *   [         R                  " S[         R                  S9n SU S'   SU S'   [        U SSSS	S
9n[         R                  " S5      nSUSS2SS2S S 24'   SUSS2SS2S S 24'   SUSS2SS2S S 24'   SUSS2SS2S S 24'   [	        X5        g )Nr0   r0   r5   r1   r   r3   r3   r   r3   r3   r3   r3   r   ra   Fr   g      ?r0   g      ?r5   r!   g      ?r   r   s      r+   test_resize3d_bilinearr     s    
"**-AAgJAgJQ1:USG
((;
CC!QqS!C!QqS!C!QqS!C!QqS!g+r-   c                     [         R                  " S5      n U R                  [         R                  5      nU R                  [         R                  5      nU R                  [
        5      n[        U SSS9R                  U R                  :X  d   e[        U SSS9R                  U R                  :X  d   e[        USSS9R                  [         R                  :X  d   e[        USSS9R                  [         R                  :X  d   e[        USSS9R                  [
        :X  d   e[        USSS9R                  [
        :X  d   e[        USSS9R                  UR                  :X  d   e[        USSS9R                  UR                  :X  d   eg Nr/   r   F)preserve_rangeT)	r#   r;   astypefloat32uint8boolr   r2   r<   r(   x_f32x_u8x_bs       r+   test_resize_dtyper     sA   
AHHRZZ E88BHHD
((4.C!Xe4::aggEEE!Xd399QWWDDD$7==KKK$6<<

JJJ#x6<<DDD#x5;;tCCC%%8>>%++MMM%$7==LLLr-   r3   r   TFrc   c                 &   U[         R                  :X  a  U(       d  U S:X  a  SnOSn[         R                  " SUS9nU[         R                  :X  a  US-  nO[         R                  US'   [	        USU UUS9n[         R
                  " U5      U:X  d   eg )	Nr      g      ?r/   r1   rz   r   )r:   r   rc   )r#   r   rn   ro   r   rq   )r:   r   rc   r2   expected_maxr(   r   s          r+   test_resize_clipr     s     n

e$A	S&&$	%#G 99W---r-   c           	          [        [        5       5      R                  U SS9n[        U 5      nSSSSS.n[	        S/5         [        U4S	S
0UD6n[        U4S	S0UD6nUR                  UR                  s=:X  a  U:X  d   e   e S S S 5        [        R                  " [        R                  " UW-
  5      5      S:  d   eUR                  S5        [	        S/5         [        U4S	S
0UD6n[        U4S	S0UD6nUR                  UR                  s=:X  a  U:X  d   e   e S S S 5        [        R                  " [        R                  " USS2SS24   USS2SS24   -
  5      5      S:  d   eg ! , (       d  f       N= f! , (       d  f       Ne= f)NFcopyP   r   r5   r   )radiusr7   r:   rd   ry   strengthr   g{Gz?rd   r3   r{   )r   r   r   r	   r   r   r2   r#   meanabspop)r2   imagefloat_dtypeswirl_paramsswirled	unswirleds         r+   
test_swirlr     sz   (//E/BE'.K a!YOL	/0	1;;l;'@C@<@	}}	>;>>>>> 
2
 77266%)+,-444V	/0	1;;l;'@C@<@	}}	>;>>>>> 
2
 77266%"ad
+i"ad
.CCDELLL 
2	1 
2	1s    AE.AE?.
E<?
Fc                      [         R                  R                  SS5      n Sn[        U [	        SS9US9n[         R
                  " X!:H  5      S:X  d   eg )Nd   r   r   r8   )rV   il  )r#   randomrandnr   r   r|   )imgrV   warpeds      r+   test_const_cval_out_of_ranger    sH    
))//#s
#CD#8<4HF66&.!&<===r-   c            
         [        [        [        5       5      5      n [        U R                  5      S:X  d   e[
        R                  " U [        U [        SS95      5      (       d   e[
        R                  " U [        U [        SS95      5      (       a   e[
        R                  " [
        R                  " U [
        R                  " U 5      U /5      S5      n[        U[        SS95      n[
        R                  " U[        U[        SS95      5      (       d   e[
        R                  " X5      (       a   e[
        R                  " SUS S 2S S 2S4   :H  5      (       d   eg )Nr5   r   )r7   皙?)r3   r5   r   r3   )r   r
   r   lenrZ   r#   allcloser   r   	transposer   
zeros_liker   )r  rgb_imgwarped_rgb_imgs      r+   test_warp_identityr    s   
x	,
-Csyy>Q;;sDoq&ABCCCC{{3S/3*G HIIIIll2::sBMM#,>&DEyQG'?C#@AN;;wWoq.I JKKKK{{7333366!~aAg..////r-   c                      [        5       R                  [        R                  5      n SU R                  S   :X  d   e[        SS9n[        US5      n[        U S S 2S S 2S4   US S 5        g )Nr"   r5   )r   r   r  )   r  r"   r   )r   r   r#   r   rZ   r   r   r   )r   rA   r^   s      r+   test_warp_coords_exampler    s^    Krzz*EAH5E,FE!Q'NF2AJ/r-   c                    [         R                  " SU S9nSUSS2SS24'   [        USSSS	S
9nU [         R                  :X  a  [         R                  OU nUR
                  U:X  d   eUR                  S:X  d   eUS   S:X  d   eUSS 2S S 24   R                  5       S:X  d   eUS S 2SS 24   R                  5       S:X  d   e[         R                  " SU S9nSUSS2SS24'   [        USSSS	S
9nU [         R                  :X  a  [         R                  OU nUR
                  U:X  d   eUR                  S:X  d   eUS   S:X  d   eUSS 2S S 24   R                  5       S:X  d   eUS S 2SS 24   R                  5       S:X  d   e[         R                  " SU S9n[        USSSS	S
9n[         R                  R                  U[         R                  " S5      5        g )Nr   r1   r3   r5   r!   r/   r   Fra   r   rE   r"   rz   r   r0   )r#   r;   r   float16r   r2   rZ   r|   r%   testingr   r2   r(   r   expected_dtypes       r+   test_downsizer  	  s    	'AAac1Q3hKAvQe*MF#(BJJ#6RZZEN<<>)))<<6!!!$<1!"a%=!###!QR%=!###
'AAac1Q3hKAvQe*MF#(BJJ#6RZZEN<<>)))<<6!!!$<1!"a%=!###!QR%=!###
rAAvQe*MFJJ!!&"&&)4r-   c            
      t   [         R                  " S[         R                  S9n SU S'   [        U SSSSS9nUR                  S:X  d   e[         R
                  " US S	2S S	24   S
:  5      (       d   eUS	S 2S S 24   R                  5       S
:X  d   eUS S 2S	S 24   R                  5       S
:X  d   eSnSn[        U USSSUS9  [        XSSSUS9  [        U USSSUS9  [        U USSSUS9  [        XSSSUS9  [        R                  " [        5         [        U USSSUS9  S S S 5        g ! , (       d  f       g = f)Nr   r1   r3   r4   r/   Tra   r   r"   r   g      ?)r:   rd   rc   anti_aliasing_sigmaedge	symmetricr   wrapznon-existent)
r#   r;   r<   r   rZ   r   r|   r   r   r   )r(   r   sigmaout_sizes       r+   test_downsize_anti_aliasingr   &  sk   
,AAdGAvQdLF<<6!!!66&!RaR.1$%%%%!"a%=!###!QR%=!###EH
	! 	16SX 	! 	! 	16SX 
z	" %	
 
#	"	"s   D))
D7c            
      R   [         R                  " S[         R                  S9n [        R                  " [
        5         [        U SSSSSS9  S S S 5        [        S	/5         [        U S
SSSSS9  [        U S
SSSSS9  S S S 5        g ! , (       d  f       N@= f! , (       d  f       g = f)Nr   r1   r/   r   Tr{   ra   )r:   rc   r  rd   z(Anti-aliasing standard deviation greater)r0   rj   rE   r   )r   r3   )r#   r;   r<   r   r   r   r   r   r   s    r+   *test_downsize_anti_aliasing_invalid_stddevr"  [  s    
,A	z	" "	
 
# 
FG	H &	
 	 &	
 
I	H 
#	" 
I	Hs   B!B
B
B&c           	         [         R                  " SU S9nSUSS2SS24'   [        USSSS S	S
9nU [         R                  :X  a  [         R                  OU nUR
                  U:X  d   eUR                  S:X  d   eUS   S:X  d   eUSS 2S S 24   R                  5       S:X  d   eUS S 2SS 24   R                  5       S:X  d   eg )Nr   r1   r3   r5   r!         ?r   Fra   r:   rc   r   rd   r/   rE   )r#   r;   r   r  r   r2   rZ   r|   r  s       r+   test_downscaler&  y  s     	'AAac1Q3hK	3au4jF $)BJJ#6RZZEN<<>)))<<6!!!$<1!"a%=!###!QR%=!###r-   c            	      b   [         R                  " S[         R                  S9n SU S'   [        U SSSS SS9nUR                  S	:X  d   e[         R
                  " US S
2S S
24   S:  5      (       d   eUS
S 2S S 24   R                  5       S:X  d   eUS S 2S
S 24   R                  5       S:X  d   eg )Nr   r1   r3   r4   r$  Tra   r%  r/   r"   r   )r#   r;   r<   r   rZ   r   r|   r   s     r+   test_downscale_anti_aliasingr(    s    
,AAdG	3at$ZF <<6!!!66&!RaR.1$%%%%!"a%=!###!QR%=!###r-   c                      [         R                  R                  SS5      n [        U S5      nUR                  S:X  d   eg )Nr"   r!   MbP?r3   )r#   r  randr   size)r  outs     r+   test_downscale_to_the_limitr.    s2    
))..A
C
#t
C88q==r-   c                 F   [         R                  " SU S9R                  SS5      n[        US5      n[         R                  " U 5      R
                  S:X  a  U O[         R                  nUR                  U:X  d   e[         R                  " SS/S	S
//5      n[        XB5        [         R                  " SU S9R                  SS5      n[        US5      nUR                  U:X  d   e[         R                  " SS/SS//5      nU [         R                  :X  a  SOSn[        XvUS9  g )N   r1   r!   rw   )r5   r"   fg      @g      @g      0@g      3@(   r0   rU   )r!   r0   g      ,@g%@g      !@g@r*  gHz>)rtol)r#   r   reshaper   r2   kindr<   rQ   r   r  r   )	r2   image1out1r   	expected1image2out2	expected2r3  s	            r+   test_downscale_local_meanr<    s     YYuE*221a8F/D88E?//36%BJJK::$$$3*tTl34Iy'YYuE*221a8F/D::$$$4,c
34IBJJ&4DDI$/r-   c                      [         R                  " [        5         [        [        R
                  " S5      [        5       5        S S S 5        g ! , (       d  f       g = f)N)r!   r"   r"   r"   )r   r   r   r   r#   rn   r   rG   r-   r+   test_invalidr>    s1    	z	"RWW\"$7$9: 
#	"	"s   )A
Ac                  N   [        SSS9n [        [        R                  R                  U R                  5      S9n[        R
                  " S5      R                  SS5      R                  [        R                  5      n[        [        X!5      [        X R                  5      5        g )Nr$  r  )r6   r7   )rR   r   r   )r   r#   linalginvparamsr   r4  r   r<   r   r   r?   )rA   inverse_tformr   s      r+   test_inverserD    sk    cC8E'ryy}}U\\/JKMIIg&&r2.55bjjAEtE14}}3MNr-   c                      [         R                  R                  SS5      n [        R                  " [
        5         [        U S SS9  S S S 5        [        U S SS9  g ! , (       d  f       N= f)Nr0   c                     U $ NrG   rH   s    r+   <lambda>.test_slow_warp_nonint_oshape.<locals>.<lambda>  s    rr-   )g333333*@g     3@)output_shapec                     U $ rG  rG   rH   s    r+   rH  rI    s    2r-   )guq *@g9EGr3@)r#   r  r+  r   r   r   r   )r   s    r+   test_slow_warp_nonint_oshaperL    sK    IINN1a E	z	"UM= 
# 	,>? 
#	"s   A
A+c                     [         R                  " SSS5      R                  SS5      n [        U SSSSSS SS9nUR	                  5       S:X  d   eUR                  5       S:X  d   e[        U SSSSSS SS9nUR	                  5       S:X  d   eUR                  5       S:X  d   e[        U R                  [         R                  5      SSSS SSSS	9nUR	                  5       S:X  d   eUR                  5       S:X  d   eg )
Nr   r5      r0   FTra   )r   rb   r:   rd   r   rc   )r   rd   r   rc   rb   r:   )r#   linspacer4  r   re   rf   r   r   )r   r-  s     r+   test_keep_rangerP    s   KK1b!))!Q/E
		C 779>>779>>
		C 779>>779>>
RXX		C 779>>779>>r-   c                     [         R                  " [        5         [        [        R
                  " S5      [        5       5        S S S 5        [         R                  " [        5         [        [        R
                  " S5      [        5       5        S S S 5        [         R                  " [        5         [        [        R
                  " S5      [        5       5        S S S 5        [         R                  " [        5         [        [        R
                  " S5      [        5       5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N|= f! , (       d  f       g = f)Nr   )r   r   )r   r   )r   r   r   )r   r   r   r   r#   r;   r   rG   r-   r+   test_zero_image_sizerR    s    	z	"RXXa[-/0 
#	z	"RXXg 3 56 
#	z	"RXXg 3 56 
#	z	"RXXk"$7$9: 
#	" 
#	"	"	"	"	"	"	"s/   )D.&)D?1)E<)E!.
D<?
E
E!
E/c                  B   [         R                  " SS/SS/SS/SS/SS/SS/SS/SS//5      n [         R                  " SS/SS/SS/SS/SS/S	S/SS	/S
S
//5      nSS[         R                  -  -  nS	nSn[        XX45      n[         R                  " XQ5      (       d   eg )Nr   r        c   rl   r      r3   gA@e@h  r5   r   r   )r#   rQ   r=   r   r
  output_coordsground_truthk_anglek_radiusr   r^   s         r+   test_linear_polar_mappingr_    s    HH
Q!R1c(QHr1gCy2s)bRTXVM 88#J#J#J#J#JH!H<(		
L QYGHF"=8LF;;v,,,,r-   c                  p   [         R                  " SS/SS/SS/SS/SS/SS/SS/SS//5      n [         R                  " SS/SS/SS/SS/S	S/S
S/SS
/SS//5      nSS[         R                  -  -  nS[         R                  " S5      -  nSn[	        XX45      n[         R
                  " XQ5      (       d   eg )Nr   r   rT  rU  rV  rl   e   r   g+oh@gUZ @g1zd@rX  r5   rY  )r#   rQ   r=   logr   r
  rZ  s         r+   test_log_polar_mappingrc    s    HH
Q!R1c(QHr1gCy2s)bRTXVM 88#J#JI"I#)<(		
L QYGRVVC[ HFIF;;v,,,,r-   c                 P  ^	 / SQm	[         R                  " SS/5      nT	 H  n[        SSU5      u  p4nXQX44'   M     UR                  U SS9n[	        USS9nUR
                  [        U 5      :X  d   eUR                  SS9n[        U5      n[        U	4S	 jU 5       5      (       d   eg )
N)r0   r   rj   r   3   rN  Fr   )r   r   axisc              3   ,   >#    U  H	  oT;   v   M     g 7frG  rG   ).0peakradiis     r+   	<genexpr>)test_linear_warp_polar.<locals>.<genexpr>5  s     /u}s   )
r#   r;   r   r   r   r2   r	   r   r   r   )
r2   r   radrrccvalr  profilepeaksrk  s
            @r+   test_linear_warp_polarrt  )  s    EHHb"XE)"b#6bf  LLUL+Eb)F<<07777kkqk!G7#E//////r-   c                    [         R                  " S5      [         R                  " S5      [         R                  " S5      [         R                  " S5      [         R                  " S5      S-
  [         R                  " S5      S-   /nU Vs/ s H  n[        U5      PM     nn[         R                  " SS/5      nU H  n[	        SSU5      u  pVnXsXV4'   M     UR                  U SS	9n[        US
SS9nUR                  [        U 5      :X  d   eUR                  SS9n	[        U	5      n
U
R                  SS9  U
SS  U
S S -
  n[        S U 5       5      (       d   eg s  snf )Nr5   r"   r!   r0   r3   i-     Fr      rb  )r   scalingr   rf  r{   c              3   B   #    U  H  oS :  =(       a    US:*  v   M     g7f)&   r2  NrG   )ri  r(   s     r+   rl  &test_log_warp_polar.<locals>.<genexpr>G  s     1DqBw"17"Ds   )r#   expintr;   r   r   r   r2   r	   r   r   sortr   )r2   rk  r(   r   rn  ro  rp  rq  r  rr  peaks_coordgapss               r+   test_log_warp_polarr  8  s4   VVAYq	266!9bffQiQq	TUVE"#USVUE#HHc3Z E)#sC8bf  LLUL+Ec59F<<07777kkqk!G )K!qr?["--D1D11111 $s   Ec                  P   [         R                  " [        5         [        [        R
                  " S5      SSS9  S S S 5        [         R                  " [        5         [        [        R
                  " S5      SS S9  S S S 5        g ! , (       d  f       NQ= f! , (       d  f       g = f)Nr   r/   invalid)rx  r   r   r   r   r#   r;   rG   r-   r+   test_invalid_scaling_polarr  J  sa    	z	"288H%vyA 
#	z	"288H%vt< 
#	" 
#	"	"	"s    B B
B
B%c                     [         R                  " [        5         [        [        R
                  " S5      S5        S S S 5        [         R                  " [        5         [        [        R
                  " S5      SSS9  S S S 5        [         R                  " [        5         [        [        R
                  " S5      SSS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       Nb= f! , (       d  f       g = f)Nr   r/   r   r{   r   )r   r   r   r"   r  rG   r-   r+   test_invalid_dimensions_polarr  Q  s    	z	"288K(&1 
#	z	"288H%vB? 
#	z	"288O,f2F 
#	"	 
#	"	"	"	"	"s#   !C	 C  C+	
C
C(+
C9c                      [         R                  " S[        S9n SU SS2SS24'   [        U S5      n[         R                  " S	5      nSUS
S2SS24'   [	        X5        g )N      r1   Fr5   r!   r$  rw   	   r3   r{   )r#   rn   r   r   r   r  resexpecteds      r+   test_bool_img_rescaler  Z  s^    
''($
'CC"ad
O
#s
CwwvH HQrT1R4Zs%r-   c                      [         R                  " S[        S9n SU SS2SS24'   [        U S5      n[         R                  " S5      nSUS	S
2SS24'   [	        X5        g )Nr  r1   Fr5   r  r!   r  r  r3   r{   )r#   rn   r   r   r   r  s      r+   test_bool_img_resizer  e  s^    
''($
'CC"ad
O
f
CwwvH HQrT1R4Zs%r-   c                  2   [         R                  " S[        S9n [        R                  " [
        5         [        U SSS9  S S S 5        [        R                  " [
        5         [        U SSS9  S S S 5        g ! , (       d  f       N== f! , (       d  f       g = f)Nr   r1   r$  T)rc   r/   )r#   r;   r   r   r   r   r   r   )r  s    r+   "test_bool_and_anti_aliasing_errorsr  p  sc    
((84
(C	z	"S- 
# 
z	"sF$/ 
#	" 
#	" 
#	"s   A7"B7
B
B)r3   r5   r"   r!   r0   c                    [         R                  " S[        S9n[        R                  " [
        5         [        USU S9  S S S 5        [        R                  " [
        5         [        USU S9  S S S 5        [        R                  " [
        5         [        U[         R                  " S5      U S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       Nb= f! , (       d  f       g = f)Nr   r1   r$  r9   r/   r"   )
r#   r;   r   r   r   r   r   r   r   r%   )r:   r  s     r+   test_bool_nonzero_order_errorsr  z  s    
((84
(C	z	"S& 
# 
z	"sF%( 
# 
z	"S"&&)5) 
#	" 
#	" 
#	" 
#	"s#   B9"C
 C9
C

C
C)c                 J   [        [        5       S S2S S2S4   U 5      n[        USSS9R                  U :X  d   e[	        USSS9R                  U :X  d   e[        USSS9R                  U :X  d   e[        USS9R                  U :X  d   e[        USS9R                  U :X  d   eg Nr   r   r  r  r9   r$  rl   )r   r   r   r2   r   r   r   r   )r2   r  s     r+   test_order_0_warp_dtyper    s    
9;ssCRC{+U
3C#xq)//588831%++u444#r#))U222c#))U222A$$---r-   )r3   r"   r0   c                 \   [        [        5       S S2S S2S4   U 5      n[        U 5      n[        USUS9R                  U:X  d   e[        USUS9R                  U:X  d   e[        USUS9R                  U:X  d   e[        X!S9R                  U:X  d   e[        X!S9R                  U:X  d   eg r  )	r   r   r	   r   r2   r   r   r   r   )r2   r:   r  r   s       r+   test_nonzero_order_warp_dtyper    s     9;ssCRC{+U
3C'.K#xu-33{BBB35)//;>>>#r'--<<<c'--<<<"((K777r-   c                      [         R                  " S[         R                  S9n SU S'   [        U S5      n[         R                  " S5      nSUSS2SS24'   [	        X5        g )Nr/   r1   r3   rE   r   r5   r!   r#   r;   r<   r   r   r   s      r+   test_resize_local_mean2dr    sV    
rzz*AAdG8,G
((8
CC!QqSMg+r-   )r   r3   r5   r{   r  c                 V   Sn[         R                  " SSU4[         R                  S9nSUSSS S 24'   [         R                  " USU 5      n[	        USU S9n[         R                  " X0S5      n[
        R                  " [        5         [	        US5        S S S 5        [         R                  " S	S	U45      nSUS
S2S
S2S S 24'   [        X45        XR                  -  n SnUS U  U4-   XPS  -   n[	        X&5      n[         R                  " X0S5      n[        X45        g ! , (       d  f       N= f)Nr"   r0   r1   r3   r{   r   r  r   r   r5   r!   )
r#   r;   r<   r   r   r   r   r   r   ndim)r   nchr(   r   r   spatial_shaper   s          r+   test_resize_local_mean3d_keepr    s    C
!QBJJ/AAaAgJ
Ar<(A8,GGkk'4G	z	"!U# 
# ((BC=
!CC!QqS!g+&&(LMm|,v5m8TTI-Gkk'4Gg+ 
#	"s   D
D(c                  L   [         R                  " S[         R                  S9n SU SSS S 24'   [        U S5      n[         R                  " S5      nSUSS2SS24'   [	        X5        [
        R                  " [        5         [        U SSS9  S S S 5        g ! , (       d  f       g = f)	Nr   r1   r3   r   r5   r!   r{   r  )r#   r;   r<   r   r   r   r   r   r   s      r+   test_resize_local_mean3d_resizer    s    
"**-AAaAgJ;/G
((;
CC!QqSMg+ 
z	"![r: 
#	"	"s    B
B#c                      [         R                  " S[         R                  S9n SU S'   [        U S5      n[         R                  " S5      nSUSS2SS24'   [	        X5        g )Nr/   r1   r3   rE   r   r5   r!   r  r   s      r+   #test_resize_local_mean3d_2din_3doutr    sV    
rzz*AAdG;/G
((;
CC!QqSMg+r-   c                      [         R                  " S[         R                  S9n SU S'   Sn[        X5      n[         R                  " U5      nSUSS2SS2S4'   [	        X#5        g )	Nr/   r1   r3   rE   r   r5   r!   .r  r   s       r+   test_resize_local_mean2d_4dr    s\    
rzz*AAdGI-G
((9
CC!QqS#g+r-   rY   c                 $   S[         R                  " U 5      S-  -   n[         R                  " U5      n[         R                  " U5      S-  R	                  [
        5      n[        X#5      nSU-  n[        UR                  U5        [        US5        g )Nr5   r   r3   )	r#   r   rn   r   r   r}  r   r   rZ   r   s         r+   test_resize_local_mean_ndr    so    		#""E
AE"S(005I-G5[Nw}}n5w"r-   c                     [         R                  " S[         R                  S9n SU S'   SU S'   [        U S5      n[         R                  " S5      nSUS	S
2S	S
2S S 24'   [	        X5        [        U SSS9nSUSSS S 24'   SUS	S	S S 24'   SUSSS S 24'   S=USS	S S 24'   US	SS S 24'   S=USSS S 24'   USSS S 24'   S=US	SS S 24'   USS	S S 24'   [	        X5        g )Nr   r1   r   r   r3   r   r   r$  r5   r!   F)	grid_modeg      ?g     ?r"   g      ?g      ?g      ?r  r   s      r+   test_resize_local_mean3dr    s    
"**-AAgJAgJ;/G
((;
CC!QqS!g+;%@GC1aLC1aLC1aL"((C1aL3q!Qw<"++C1aL3q!Qw<"((C1aL3q!Qw<g+r-   c                  F   [         R                  " S5      n U R                  [         R                  5      nU R                  [         R                  5      nU R                  [
        5      n[        U SSS9R                  U R                  :X  d   e[        U SSS9R                  U R                  :X  d   e[        USSS9R                  [         R                  :X  d   e[        USSS9R                  [         R                  :X  d   e[        USSS9R                  [         R                  :X  d   e[        USSS9R                  [         R                  :X  d   e[        USSS9R                  UR                  :X  d   e[        USSS9R                  UR                  :X  d   eg r   )	r#   r;   r   r   r   r   r   r2   r<   r   s       r+   test_resize_local_mean_dtyper    sI   
AHHRZZ E88BHHD
((4.CQ?EEPPPQ>DDOOOT8EBHHBJJVVVT8DAGG2::UUUS(5AGG2::UUUS(4@FF"**TTTUHUCIIU[[XXXUHTBHHEKKWWWr-   c                     [         R                  " S[         R                  S9n SU SS2SS24'   SU SS2SS24'   [        U S	S
S9n[         R                  " [         R
                  " U5      [         R
                  " U 5      5      (       d   eg)zIssue #6467r  r1   r0   r!   rU   r3   rk   r   )rU   rU   r   r9   N)r#   r;   int16r   array_equalunique)r  r   s     r+   test_nn_resize_int_imgr    sv    
((8288
,CC!QqSMC!QrT	NS&*G>>"))G,biin====r-   _typec                     [         R                  R                  SS5      nU " SS/5      n[        X5      R                  [        U5      :X  d   eg )Nr"   r0   )r#   r  r+  r   rZ   tuple)r  r  rJ  s      r+   test_output_shape_arg_typer     sA    
))..A
C!Q=L#$**eL.AAAAr-   )}numpyr#   r   numpy.testingr   r   r   scipy.ndimager   skimage._shared.testingr   r   skimage._shared.utilsr	   skimage.color.colorconvr
   skimage.datar   r   skimage.draw.drawr   skimage.feature.peakr   skimage.transform._warpsr   r   r   r   r   r   r   r   r   r   r   r   skimage.transform._geometricr   r   r   skimage.util.dtyper   r   r  seedr,   rC   rN   rS   r_   rg   markparametrizers   rv   r&   r~   r   r   r  r   r<   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  int32r  r   r"  r&  r(  r.  r<  r>  rD  rL  rP  rR  r_  rc  rt  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r   listr  rG   r-   r+   <module>r     s     X X ) F 7 , 0 1 /    
 6 		q 0
0
* $ $.&	- ),2 -2 ),2 -2 %(+? ,?& %(+- ,-(0  2::rzz2::"FG0 H0!%%#
+&U#+L 7& 8&',,,,,$,M  1a&))D%=94-82::rxx"89. : 9 : *., 2::rzz2::"FGM HM.>
00 bhh"**bjj"**E5542
j
< bhh"**bjj"**E$$	$ bhh"**bjj"**E00";
O@'T;-.-. 2::rzz2::"FG0 H0 2::rzz2::"FG2 H2"=G&&0 /2
* 3
* 288T2::rzz"JK. L. 288RZZRZZ"PQ),	8 - R	8, )>?, @,4;,, a,# -#,$X > 5"**d";<B =Br-   