
    k h                        d dl Zd dlZd dlmZmZmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z# d dl$m%Z%m&Z&m'Z' d dl(m)Z)m*Z* ejV                  jY                  d        d Z-d Z.d Z/ e       d        Z0d Z1d Z2ejf                  ji                  dg d      d        Z5ejf                  ji                  dg d      d        Z6ejf                  ji                  d e7d            d        Z8ejf                  ji                  d e7d            d        Z9d Z:ejf                  ji                  dejv                  ejx                  ejz                  g      d        Z>d Z?d Z@d ZAd  ZBd! ZCd" ZDd# ZEejf                  ji                  d$g d%      d&        ZFd' ZGd( ZHd) ZId* ZJd+ ZKd, ZLd- ZMd. ZNd/ ZOejf                  ji                  dd d0g      ejf                  ji                  d1d2d3g      ejf                  ji                  d4d2d3g      ejf                  ji                  dejz                  ej                  g      d5                             ZQejf                  ji                  dejv                  ejx                  ejz                  g      d6        ZRd7 ZSd8 ZTd9 ZUejf                  ji                  dej                  ej                  ejv                  ejx                  ejz                  g      d:        ZWd; ZXd< ZYejf                  ji                  dej                  ej                  ejv                  ejx                  ejz                  g      d=        ZZd> Z[d? Z\ejf                  ji                  dej                  ej                  ejv                  ejx                  ejz                  g      d@        Z]dA Z^dB Z_dC Z`dD ZadE ZbdF ZcdG Zdejf                  ji                  dejv                  ejx                  ejz                  g      dH        Zeejf                  ji                  dejv                  ejx                  ejz                  g      dI        ZfdJ ZgdK ZhdL ZidM ZjdN Zkejf                  ji                  dg dO      dP        Zlejf                  ji                  dej                  emejx                  ejz                  g      dQ        Znejf                  ji                  dej                  ejv                  ejx                  ejz                  g      ejf                  ji                  dg dR      dS               ZodT Zpejf                  ji                  d$g dU      dV        ZqdW ZrdX ZsdY Ztejf                  ji                  dZ e7d0d            d[        Zud\ Zvd] Zwd^ Zxejf                  ji                  d_eyej                  e{g      d`        Z|y)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                      d} t        j                  dd| f      }t        j                  dd      }t        ||       t	        |       D ]  }t        |d|f   |        y )N      .)npemptyeyer   ranger   )layersxyis       ~/home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/skimage/transform/tests/test_warps.pytest_stackcopyr,   %   sY    F
!Q A
q!Aq!6] 0!!CF)Q/0    c                  d   t        j                  dt         j                        } d| d<   t         j                   dz  }t	        d|d      }t        | |d      }t        |t        j                  |              t        | |j                  d      }t        |t        j                  |              y )	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
q%q
!Cc288A;/
q%--q
)Cc288A;/r-   c                      t        j                  dt         j                        } d| d<   t        j                  dt         j                        }d|d<   d }t        | |d      }t	        ||       y )Nr/   r1   r3   r4   r3   r3   c                     | dz   S )Nr3    xys    r+   shiftz!test_warp_callable.<locals>.shiftA   s    Avr-   r9   )r#   r;   r<   r   r   )r(   refxrJ   outxs       r+   test_warp_callablerM   ;   s[    
rzz*AAdG88F"**-DDJ 5"DdD)r-   c                  8   t        j                  dt         j                        } d| d<   t        j                  dt         j                        }d|d<   t        j                  g dg dg dg      }t	        | |d	      }t        ||       t	        | |d
	      }y )Nr/   r1   r3   r4   rE   )r3   r   r3   )r   r3   r3   r   r   r3   r9   r0   )r#   r;   r<   arrayr   r   )r(   rK   matrixrL   s       r+   test_warp_matrixrR   H   sy    
rzz*AAdG88F"**-DDJXXy)Y78F 6#DdD)6#Dr-   c                     t        dd      D ]  } | dz  }t        j                  |t        j                        }| dz  }d||<   t        j                  |t        j                        }| dz  }d||<   | t	        dd	d      fz  }t        j
                  t        j                  |         dz   }t        ||dd
      }t        ||        y )Nr5      )r0   r1   )r5   r3   )r3   r   r0   )r:   cval)	r&   r#   r;   r<   slicerP   mgridr   r   )	dimshaper(   x_crK   refx_c
coord_gridcoordsrL   s	            r+   test_warp_ndr^   X   s    Q{ .d
HHU"**-Dj#xxRZZ0tVE!QN,,
"((:./!3AvQQ/!$-.r-   c                  .   t        j                  dt         j                        } d| d<   t        | ddddd      }|j	                         d	k  sJ t        | ddd
dd      }t        |j	                         d	       t        |j                         d       y )Nr/   r1   r3   r4   r"   Fconstant)r:   clipanti_aliasingmoder   T)r#   r;   r<   r   minr   max)r(   rL   s     r+   test_warp_cliprf   k   sy    
rzz*AAdG1aquE
SD88:>>1aqt5zRDdhhj!,dhhj!,r-   r:   )r   r3   r"   c                    t        j                  dt         j                        }t         j                  |d<   t	        |d| ddd      }t        t        j                  |      d       t        t        j                  |      d       y )	N   ri   r1   )   rj   -   r5   Tr:   rU   r   ra   r3   )r#   onesr<   nanr   r   nanminnanmaxr:   r(   rL   s      r+   $test_warp_clip_image_containing_nansrr   w   s]     	

+AffAdG!Ru1TEDbiioq1biioq1r-   c                    t        j                  dt         j                        }d|ddddf<   t        |d| t         j                  dd      }t        t        j                  |      d	       t        t        j                  |      d       y )
Nrh   r1   r5   r0   rk   Trl   r3   )r#   rm   r<   r   rn   r   ro   rp   rq   s      r+   test_warp_clip_cval_is_nanru      si     	

+AAadAbDjM!Ru266$TJDbiioq1biioq1r-      c           	         t        j                  dt         j                        }t        | dk(  rdgnd       5  t	        |d| ddd      }d d d        t        d   |d	   |d
   |d   gd       | dkD  rFt        j                  t        j                  d|      t        j                  |d      z        dkD  sJ y y # 1 sw Y   qxY w)Nrh   r1   r5   Bi-quadratic.*bugrk   Trl   r   r   )r   )rz   r   )rz   rz   r   r3   )r#   rm   r<   r   r   r   sumlessrq   s      r+   'test_warp_clip_cval_outside_input_ranger}      s     	

+A 
EQJ/0D	I Ja5qDIJ tDz4;UT&\RTUV
 qyvvbgga&q)99:Q>>> J Js   B;;Cc           	      $   t        j                  dt         j                        }d|ddddf<   t        dd      }t	        | dk(  rd	gnd       5  t        ||d
| dd      }d d d        t        j                         d       y # 1 sw Y   $xY w)Nrh   r1   r5   r0   rt   g<<<<<<?rE   )r6   r8   rx   r`   r   T)rc   r:   rU   ra   r3   )r#   rm   r<   r   r   r   r   rd   )r:   r(   	transformrL   s       r+   test_warp_clip_cval_not_usedr      s    
 	

+AAadAbDjM  mHI	EQJ/0D	I SAyzQTRS dhhj!,S Ss   BBc                     t        j                  dt         j                        } d| d<   t         j                   dz  }t        j                  t        j
                  |      t        j                  |       dgt        j                  |      t        j
                  |      dgg dg      }t        | t        |      j                  d	      }t        |t        j                  |              y )
Nr/   r1   r3   rE   r5   r   r!   rO   )inverse_mapr:   )r#   r;   r<   r=   rP   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                     t        j                  d|       }d|d<   t        |d      }|j                  t	        |       k(  sJ t        |t        j                  |             y )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                      t        j                  dt         j                        } t        | dd      }|j                  dk(  sJ t        | dd      }|j                  dk(  sJ y )N
   r   r1   rk   Fr   T   r   )r#   r;   r<   r   rY   )r(   x45s     r+   test_rotate_resizer      sV    
,A
Bu
%C99   
Bt
$C99   r-   c                     t        j                  dt         j                        } d| d<   t        j                  dt         j                        }d|d<   t        | ddd	      }t	        ||       t        |d
dd	      }t	        ||        y )Nr   r1   r3   )r!   r!   )r5   r0      r   ry   )r:   centeri)r#   r;   r<   r   r   )r(   rK   x20x0s       r+   test_rotate_centerr      sp    
,AAdG88HBJJ/DDJ
Ba
/Cc4(	S&	1Bb!$r-   c                     t        j                  dt         j                        } d| d<   t        j                  dt         j                        }d|d<   d|d<   t        | dd	d
dd      }|j                  dk(  sJ t        ||       y )Nr   r1   r3   ry   r   )rv   r   )rj   r   rk   Tr"   r"   r   reflect)r   r   r:   rc   )r#   r;   r<   r   rY   r   )r(   ref_x45r   s      r+   test_rotate_resize_centerr      su    
,AAdGhhxrzz2GGDMGDM
BtF!)
LC99   sG$r-   c                      t        t        j                  dt        j                        dd      } | j                  dk(  sJ y )N)     r1   r   Tr   )r   r   )r   r#   r;   r<   rY   )rB   s    r+   test_rotate_resize_90r      s1    
*BJJ7D
IC99
"""r-   c                     t        j                  dt         j                        } d| d<   t        | dddd	      }t        j                  d
      }d|ddddf<   t	        ||       t        j                  dt         j                        } d| d<   t        | dddd	      }t        j                  d      }d|dddf<   t	        ||       y )Nr/   r1   r3   rE   r5   r   Fr`   r:   rb   rc   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fc* 	rzz*AAdGQau:NF
((7
CC!QKfc*r-   c                  &   t        j                  d      } t        j                  t              5  t        | dd dd       d d d        t        j                  t              5  t        | dddd       d d d        y # 1 sw Y   <xY w# 1 sw Y   y xY w)Nr   r   r"   r4   Fr`   )channel_axisrb   rc   )r5   r5   r5   rz   )r#   r;   pytestraises
ValueErrorr   r(   s    r+   test_rescale_invalid_scaler     s    
A	z	" T6E
ST	z	" U92UTU UT TU Us   A;!B;BBc                  z   t        j                  dt         j                        } t        | ddddd      }|j                  d	k(  sJ t        | ddd dd      }|j                  d
k(  sJ t        j                  dt         j                        } t        | ddddd      }|j                  dk(  sJ t        | ddd dd      }|j                  dk(  sJ t        j                  dt         j                        } t        | ddddd      }|j                  dk(  sJ t        | ddd dd      }|j                  dk(  sJ y )NrT   r"   r1   r5   r   rz   Fr`   )r:   r   rb   rc   )   r"   r   rv   rT   rT   r"   )r   r   r"   r   r   rv   )rT   rT   rT   r"   )r   r   r   r"   )r   r   r   rv   r#   r;   r<   r   rY   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   rz   c                     t        j                  dt         j                        }t        j                  |d|       }t	        |dd| dd      }t        j                  || d      }|j
                  d	k(  sJ y )
Nr0   r0   r"   r1   rz   r   r   Fr`   )r6   r:   r   rb   rc   )r   r0   r"   )r#   r;   r<   moveaxisr   rY   )r   r(   r   s      r+   $test_rescale_channel_axis_multiscaler   A  sj    
"**-A
Ar<(A	!F [[r2F<<:%%%r-   c                     t        j                  dt         j                        } t        | dddd      }|j                  dk(  sJ t        j                  d	t         j                        } t        | dddd      }|j                  d
k(  sJ y )Nr   r1   r5   r   Fr`   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                      t        j                  dt         j                        } d| d<   t        | dddd	      }t        j                  d      }d|d
dd
df<   t	        ||       y )Nr/   r1   r3   rE   r   r   Fr`   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gs+r-   c                     t        j                  dt         j                        } d| ddd d f<   t        | dddd      }t	        j
                  t              5  t        | d	ddd       d d d        t        j                  d
      }d|ddddd d f<   t        ||       t        | d
ddd      }t        ||       y # 1 sw Y   UxY w)Nr   r1   r3   r   r   Fr`   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	" Hq%qJGH ((;
CC!QqS!gs+Q1E
SGgs+H Hs   B>>Cc                      t        j                  dt         j                        } d| ddd d f<   t        | dddd      }t        j                  d      }d|d	d
d	d
f<   t	        ||       y )Nr   r1   r3   r   r   r3   r   Fr`   r   r5   r!   r   r   s      r+   test_resize3d_resizer   s  sd    
"**-AAaAgJQ1E
SG
((;
CC!QqSMgs+r-   c                      t        j                  dt         j                        } d| d<   t        | dddd	      }t        j                  d      }d|d
dd
df<   t	        ||       y )Nr/   r1   r3   rE   r   r   Fr`   r   r5   r!   r   r   s      r+   test_resize3d_2din_3doutr   }  s^    
rzz*AAdGQ1E
SG
((;
CC!QqSMgs+r-   c                      t        j                  dt         j                        } d| d<   d}t        | |ddd	      }t        j                  |      }d|d
dd
ddf<   t	        ||       y )Nr/   r1   r3   rE   r   r   r3   r3   r   Fr`   r   r5   r!   .r   r(   	out_shaper   r   s       r+   test_resize2d_4dr     sf    
rzz*AAdGIQ	%jQG
((9
CC!QqS#gs+r-   c                  @   t        dd      D ]  } dt        j                  |       dz  z   }t        j                  |      }t        j                  |      dz  }t        ||ddd      }d|z  }t        |j                  |       t        j                  |dk(        rJ  y )	Nr3   rv   r5         ?r   r   Fr:   rc   rb   )	r&   r#   arangerm   asarrayr   r   rY   allrX   rY   r(   r   r   expected_shapes         r+   test_resize_ndr     s    Q{ $BIIcNQ&&GGENJJu%+	IQYeTu7==.9vvgl###$r-   c                  4   t        j                  dt         j                        } d| d<   d| d<   t        | dddd	
      }t        j                  d      }d|ddddd d f<   d|ddddd d f<   d|ddddd d f<   d|ddddd d f<   t	        ||       y )Nr0   r0   r5   r1   r   r3   r3   r   r3   r3   r3   r3   r   r`   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!gs+r-   c                  <   t        j                  d      } | j                  t         j                        }| j                  t         j                        }| j                  t
              }t        | dd      j                  | j                  k(  sJ t        | dd      j                  | j                  k(  sJ t        |dd      j                  t         j                  k(  sJ t        |dd      j                  t         j                  k(  sJ t        |dd      j                  t
        k(  sJ t        |dd      j                  t
        k(  sJ t        |dd      j                  |j                  k(  sJ t        |dd      j                  |j                  k(  sJ y 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   TFrb   c                    |t         j                  k(  r
|s| dk(  rd}nd}t        j                  d|      }|t         j                  k(  r|dz  }nt         j                  |d<   t	        |d| ||      }t        j
                  |      |k(  sJ y )	Nr      g      ?r/   r1   ry   r   )r:   r   rb   )r#   r   rm   rn   r   rp   )r:   r   rb   r2   expected_maxr(   r   s          r+   test_resize_clipr     s     n

e$A	S&&$	%#G 99W---r-   c           	         t        t                     j                  | d      }t        |       }ddddd}t	        dg      5  t        |fd	d
i|}t        |fd	di|}|j                  |j                  cxk(  r|k(  sJ  J 	 d d d        t        j                  t        j                  |z
              dk  sJ |j                  d       t	        dg      5  t        |fd	d
i|}t        |fd	di|}|j                  |j                  cxk(  r|k(  sJ  J 	 d d d        t        j                  t        j                  |ddddf   |ddddf   z
              dk  sJ y # 1 sw Y   xY w# 1 sw Y   XxY w)NFcopyP   r   r5   r   )radiusr7   r:   rc   rx   strengthr   g{Gz?rc   r3   rz   )r   r   r   r	   r   r   r2   r#   meanabspop)r2   imagefloat_dtypeswirl_paramsswirled	unswirleds         r+   
test_swirlr     s   (//E/BE'.K a!YOL	/0	1 ?;;l;'@C@<@	}}	>;>>>>>?
 77266%)+,-444V	/0	1 ?;;l;'@C@<@	}}	>;>>>>>?
 77266%"ad
+i"ad
.CCDELLL? ?? ?s   AE'AE3'E03E<c                      t         j                  j                  dd      } d}t        | t	        d      |      }t        j
                  ||k(        dk(  sJ y )Nd   r   r   r8   )rU   il  )r#   randomrandnr   r   r{   )imgrU   warpeds      r+   test_const_cval_out_of_ranger    sJ    
))//#s
#CD#8<4HF66&D.!&<===r-   c            	         t        t        t                           } t        | j                        dk(  sJ t        j                  | t        | t        d                  sJ t        j                  | t        | t        d                  rJ t        j                  t        j                  | t        j                  |       | g      d      }t        |t        d            }t        j                  |t        |t        d                  sJ t        j                  ||      rJ t        j                  d|d d d d df   k(        sJ y )Nr5   r   )r7   皙?)r3   r5   r   r3   )r   r
   r   lenrY   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{{3S/3*G HIIIll2::sBMM#,>&DEyQG'?C#@AN;;wWoq.I JKKK{{7N33366!~aAg..///r-   c                      t               j                  t        j                        } d| j                  d   k(  sJ t        d      }t        |d      }t        | d d d d df   |d d        y )Nr"   r5   )r   r   r   )   r  r"   r   )r   r   r#   r   rY   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                    t        j                  d|       }d|ddddf<   t        |dddd	
      }| t         j                  k(  rt         j                  n| }|j
                  |k(  sJ |j                  dk(  sJ |d   dk(  sJ |dd d d f   j                         dk(  sJ |d d dd f   j                         dk(  sJ t        j                  d|       }d|ddddf<   t        |dddd	
      }| t         j                  k(  rt         j                  n| }|j
                  |k(  sJ |j                  dk(  sJ |d   dk(  sJ |dd d d f   j                         dk(  sJ |d d dd f   j                         dk(  sJ t        j                  d|       }t        |dddd	
      }t         j                  j                  |t        j                  d             y )Nr   r1   r3   r5   r!   r/   r   Fr`   r   rE   r"   ry   r   r0   )r#   r;   r   float16r   r2   rY   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        j                  dt         j                        } d| d<   t        | dddd      }|j                  dk(  sJ t        j
                  |d d	d d	f   d
kD        sJ |d	d d d f   j                         d
k(  sJ |d d d	d f   j                         d
k(  sJ d}d}t        | |ddd|       t        | |ddd|       t        | |ddd|       t        | |ddd|       t        | |ddd|       t        j                  t              5  t        | |ddd|       d d d        y # 1 sw Y   y xY w)Nr   r1   r3   r4   r/   Tr`   r   r"   r   g      ?)r:   rc   rb   anti_aliasing_sigmaedge	symmetricr   wrapznon-existent)
r#   r;   r<   r   rY   r   r{   r   r   r   )r(   r   sigmaout_sizes       r+   test_downsize_anti_aliasingr  &  su   
,AAdGAvQdLF<<6!!!66&!RaR.1$%%%!"a%=!###!QR%=!###EH
	! 	816SX 	! 	! 	816SX 
z	" 
 %	

 
 
s   D88Ec            	      R   t        j                  dt         j                        } t        j                  t
              5  t        | ddddd       d d d        t        d	g      5  t        | d
dddd       t        | d
dddd       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)Nr   r1   r/   r   Trz   r`   )r:   rb   r  rc   z(Anti-aliasing standard deviation greater)r0   ri   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 
 &	
 	 &	

 

 

 
s   B%#BBB&c                    t        j                  d|       }d|ddddf<   t        |dddd d	
      }| t         j                  k(  rt         j                  n| }|j
                  |k(  sJ |j                  dk(  sJ |d   dk(  sJ |dd d d f   j                         dk(  sJ |d d dd f   j                         dk(  sJ y )Nr   r1   r3   r5   r!         ?r   Fr`   r:   rb   r   rc   r/   rE   )r#   r;   r   r  r   r2   rY   r{   r  s       r+   test_downscaler%  y  s     	'AAac1Q3hK	3au4jF $)BJJ#6RZZEN<<>)))<<6!!!$<1!"a%=!###!QR%=!###r-   c                  Z   t        j                  dt         j                        } d| d<   t        | dddd d      }|j                  d	k(  sJ t        j
                  |d d
d d
f   dkD        sJ |d
d d d f   j                         dk(  sJ |d d d
d f   j                         dk(  sJ y )Nr   r1   r3   r4   r#  Tr`   r$  r/   r"   r   )r#   r;   r<   r   rY   r   r{   r   s     r+   test_downscale_anti_aliasingr'    s    
,AAdG	3at$ZF <<6!!!66&!RaR.1$%%%!"a%=!###!QR%=!###r-   c                  ~    t         j                  j                  dd      } t        | d      }|j                  dk(  sJ y )Nr"   r!   MbP?r3   )r#   r  randr   size)r  outs     r+   test_downscale_to_the_limitr-    s2    
))..A
C
#t
C88q==r-   c                 J   t        j                  d|       j                  dd      }t        |d      }t        j                  |       j
                  dk(  r| nt         j                  }|j                  |k(  sJ t        j                  ddgd	d
gg      }t        ||       t        j                  d|       j                  dd      }t        |d      }|j                  |k(  sJ t        j                  ddgddgg      }| t         j                  k(  rdnd}t        |||       y )N   r1   r!   rv   )r5   r"   fg      @g      @g      0@g      3@(   r0   rT   )r!   r0   g      ,@g%@g      !@g@r)  gHz>)rtol)r#   r   reshaper   r2   kindr<   rP   r   r  r   )	r2   image1out1r   	expected1image2out2	expected2r2  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It$/r-   c                      t        j                  t              5  t        t	        j
                  d      t                      d d d        y # 1 sw Y   y xY w)N)r!   r"   r"   r"   )r   r   r   r   r#   rm   r   rG   r-   r+   test_invalidr=    s:    	z	" ;RWW\"$7$9:; ; ;s   (AAc                  \   t        dd      } t        t        j                  j                  | j                              }t        j
                  d      j                  dd      j                  t        j                        }t        t        ||      t        || j                               y )Nr#  r  )r6   r7   )rQ   r   r   )r   r#   linalginvparamsr   r3  r   r<   r   r   r?   )rA   inverse_tformr   s      r+   test_inverserC    so    cC8E'ryy}}U\\/JKMIIg&&r2.55bjjAEtE=14u}}3MNr-   c                      t         j                  j                  dd      } t        j                  t
              5  t        | d d       d d d        t        | d d       y # 1 sw Y   xY w)Nr0   c                     | S NrG   rH   s    r+   <lambda>z.test_slow_warp_nonint_oshape.<locals>.<lambda>  s    r r-   )g333333*@g     3@)output_shapec                     | S rF  rG   rH   s    r+   rG  z.test_slow_warp_nonint_oshape.<locals>.<lambda>  s    2 r-   )guq *@g9EGr3@)r#   r  r*  r   r   r   r   )r   s    r+   test_slow_warp_nonint_oshaperJ    sR    IINN1a E	z	" >UM=> 	,>?> >s   A""A+c            
         t        j                  ddd      j                  dd      } t        | dddddd d      }|j	                         dk(  sJ |j                         dk(  sJ t        | dddddd d      }|j	                         dk(  sJ |j                         dk(  sJ t        | j                  t         j                        dddd ddd	      }|j	                         dk(  sJ |j                         dk(  sJ y )
Nr   r5      r0   FTr`   )r   ra   r:   rc   r   rb   )r   rc   r   rb   ra   r:   )r#   linspacer3  r   rd   re   r   r   )r   r,  s     r+   test_keep_rangerN    s   KK1b!))!Q/E
		C 779>>779>>
		C 779>>779>>
RXX		C 779>>779>>r-   c                     t        j                  t              5  t        t	        j
                  d      t                      d d d        t        j                  t              5  t        t	        j
                  d      t                      d d d        t        j                  t              5  t        t	        j
                  d      t                      d d d        t        j                  t              5  t        t	        j
                  d      t                      d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   kxY w# 1 sw Y   y xY w)Nr   )r   r   )r   r   )r   r   r   )r   r   r   r   r#   r;   r   rG   r-   r+   test_zero_image_sizerP    s    	z	" 1RXXa[-/01	z	" 7RXXg 3 567	z	" 7RXXg 3 567	z	" ;RXXk"$7$9:; ;1 17 77 7; ;s/   (D&#(D2,(D>5(E
&D/2D;>E
Ec                  8   t        j                  ddgddgddgddgddgddgddgddgg      } t        j                  ddgddgddgddgddgd	dgdd	gd
d
gg      }ddt         j                  z  z  }d	}d}t        | |||      }t        j                  ||      sJ y )Nr   r        c   rk   r      r3   gA@e@h  r5   r   r   )r#   rP   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"='8VLF;;v|,,,r-   c                  d   t        j                  ddgddgddgddgddgddgddgddgg      } t        j                  ddgddgddgddgd	dgd
dgdd
gddgg      }ddt         j                  z  z  }dt        j                  d      z  }d}t	        | |||      }t        j
                  ||      sJ y )Nr   r   rR  rS  rT  rk   e   r   g+oh@gUZ @g1zd@rV  r5   rW  )r#   rP   r=   logr   r	  rX  s         r+   test_log_polar_mappingra    s    HH
Q!R1c(QHr1gCy2s)bRTXVM 88#J#JI"I#)<(		
L QYGRVVC[ HFw&IF;;v|,,,r-   c                 T  	 g d	t        j                  ddg      }	D ]  }t        dd|      \  }}}||||f<    |j                  | d      }t	        |d      }|j
                  t        |       k(  sJ |j                  d      }t        |      }t        	fd	|D              sJ y )
N)r0   r   ri   r   3   rL  Fr   )r   r   axisc              3   &   K   | ]  }|v  
 y wrF  rG   ).0peakradiis     r+   	<genexpr>z)test_linear_warp_polar.<locals>.<genexpr>5  s     /tu}/s   )
r#   r;   r   r   r   r2   r	   r   r   r   )
r2   r   radrrccvalr  profilepeaksri  s
            @r+   test_linear_warp_polarrq  )  s    EHHb"XE )"b#6Bb"f LLUL+Eb)F<<07777kkqk!G7#E/////r-   c                    t        j                  d      t        j                  d      t        j                  d      t        j                  d      t        j                  d      dz
  t        j                  d      dz   g}|D cg c]  }t        |       }}t        j                  ddg      }|D ]  }t	        dd|      \  }}}||||f<    |j                  | d	      }t        |d
d      }|j                  t        |       k(  sJ |j                  d      }	t        |	      }
|
j                  d       |
dd  |
d d z
  }t        d |D              sJ y c c}w )Nr5   r"   r!   r0   r3   i-     Fr      r`  )r   scalingr   rd  rz   c              3   4   K   | ]  }|d k\  xr |dk    yw)&   r1  NrG   )rg  r(   s     r+   rj  z&test_log_warp_polar.<locals>.<genexpr>G  s      1qqBw"17"1s   )r#   expintr;   r   r   r   r2   r	   r   r   sortr   )r2   ri  r(   r   rk  rl  rm  rn  r  ro  peaks_coordgapss               r+   test_log_warp_polarr}  8  s;   VVAYq	266!9bffQiQq	TUVE"#SV#E#HHc3Z E )#sC8Bb"f LLUL+Ec59F<<07777kkqk!G )K!qr?["--D1D1111 $s   Ec                  @   t        j                  t              5  t        t	        j
                  d      dd       d d d        t        j                  t              5  t        t	        j
                  d      dd        d d d        y # 1 sw Y   MxY w# 1 sw Y   y xY w)Nr   r/   invalid)ru  r   r   r   r   r#   r;   rG   r-   r+   test_invalid_scaling_polarr  J  sw    	z	" B288H%vyAB	z	" =288H%vt<= =B B= =s   "B"BBBc                     t        j                  t              5  t        t	        j
                  d      d       d d d        t        j                  t              5  t        t	        j
                  d      dd       d d d        t        j                  t              5  t        t	        j
                  d      dd       d d d        y # 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   y xY w)Nr   r/   r   rz   r   )r   r   r   r"   r  rG   r-   r+   test_invalid_dimensions_polarr  Q  s    	z	" 2288K(&12	z	" @288H%vB?@	z	" G288O,f2FG G	2 2@ @G Gs#    C	"C"C!	CC!C*c                      t        j                  dt              } d| ddddf<   t        | d      }t        j                  d	      }d|d
dddf<   t	        ||       y )N      r1   Fr5   r!   r#  rv   	   r3   rz   )r#   rm   r   r   r   r  resexpecteds      r+   test_bool_img_rescaler  Z  s`    
''($
'CC"ad
O
#s
CwwvH HQrT1R4ZsH%r-   c                      t        j                  dt              } d| ddddf<   t        | d      }t        j                  d      }d|d	d
ddf<   t	        ||       y )Nr  r1   Fr5   r  r!   r  r  r3   rz   )r#   rm   r   r   r   r  s      r+   test_bool_img_resizer  e  s`    
''($
'CC"ad
O
f
CwwvH HQrT1R4ZsH%r-   c                  *   t        j                  dt              } t        j                  t
              5  t        | dd       d d d        t        j                  t
              5  t        | dd       d d d        y # 1 sw Y   :xY w# 1 sw Y   y xY w)Nr   r1   r#  T)rb   r/   )r#   r;   r   r   r   r   r   r   )r  s    r+   "test_bool_and_anti_aliasing_errorsr  p  ss    
((84
(C	z	" .S-. 
z	" 0sF$/0 0. .0 0s   A=%B	=B	B)r3   r5   r"   r!   r0   c                    t        j                  dt              }t        j                  t
              5  t        |d|        d d d        t        j                  t
              5  t        |d|        d d d        t        j                  t
              5  t        |t        j                  d      |        d d d        y # 1 sw Y   }xY w# 1 sw Y   YxY w# 1 sw Y   y xY w)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#   C %C"C C	CC!c                 ^   t        t               d dd ddf   |       }t        |dd      j                  | k(  sJ t	        |dd      j                  | k(  sJ t        |dd      j                  | k(  sJ t        |d      j                  | k(  sJ t        |d      j                  | k(  sJ y Nr   r   r  r  r9   r#  rk   )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                 t   t        t               d dd ddf   |       }t        |       }t        |d|      j                  |k(  sJ t        |d|      j                  |k(  sJ t        |d|      j                  |k(  sJ t        ||      j                  |k(  sJ t        ||      j                  |k(  sJ y 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'--<<<E"((K777r-   c                      t        j                  dt         j                        } d| d<   t        | d      }t        j                  d      }d|ddddf<   t	        ||       y )Nr/   r1   r3   rE   r   r5   r!   r#   r;   r<   r   r   r   s      r+   test_resize_local_mean2dr    sX    
rzz*AAdG8,G
((8
CC!QqSMgs+r-   )r   r3   r5   rz   r  c                 Z   d}t        j                  dd|ft         j                        }d|ddd d f<   t        j                  |d|       }t	        |d|       }t        j                  || d      }t        j                  t              5  t	        |d       d d d        t        j                  d	d	|f      }d|d
dd
dd d f<   t        ||       | |j                  z  } d}|d |  |fz   || d  z   }t	        ||      }t        j                  || d      }t        ||       y # 1 sw Y   xY w)Nr"   r0   r1   r3   rz   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!gs+!&&(LMm|,v5lm8TTI9-Gkk'<4Ggs+$ $s   
D!!D*c                  J   t        j                  dt         j                        } d| ddd d f<   t        | d      }t        j                  d      }d|ddddf<   t	        ||       t        j                  t              5  t        | dd       d d d        y # 1 sw Y   y xY w)	Nr   r1   r3   r   r5   r!   rz   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gs+ 
z	" ;![r:; ; ;s   BB"c                      t        j                  dt         j                        } d| d<   t        | d      }t        j                  d      }d|ddddf<   t	        ||       y )Nr/   r1   r3   rE   r   r5   r!   r  r   s      r+   #test_resize_local_mean3d_2din_3doutr    sX    
rzz*AAdG;/G
((;
CC!QqSMgs+r-   c                      t        j                  dt         j                        } d| d<   d}t        | |      }t        j                  |      }d|dddddf<   t	        ||       y )	Nr/   r1   r3   rE   r   r5   r!   .r  r   s       r+   test_resize_local_mean2d_4dr    s`    
rzz*AAdGI9-G
((9
CC!QqS#gs+r-   rX   c                     dt        j                  |       dz  z   }t        j                  |      }t        j                  |      dz  j	                  t
              }t        ||      }d|z  }t        |j                  |       t        |d       y )Nr5   r   r3   )	r#   r   rm   r   r   ry  r   r   rY   r   s         r+   test_resize_local_mean_ndr    sq    		#""E
AE"S(005I9-G5[Nw}}n5w"r-   c                     t        j                  dt         j                        } d| d<   d| d<   t        | d      }t        j                  d      }d|d	d
d	d
d d f<   t	        ||       t        | dd      }d|ddd d f<   d|d	d	d d f<   d|ddd d f<   dx|dd	d d f<   |d	dd d f<   dx|ddd d f<   |ddd d f<   dx|d	dd d f<   |dd	d d f<   t	        ||       y )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!gs+;%@GC1aLC1aLC1aL"((C1aL3q!Qw<"++C1aL3q!Qw<"((C1aL3q!Qw<gs+r-   c                  d   t        j                  d      } | j                  t         j                        }| j                  t         j                        }| j                  t
              }t        | dd      j                  | j                  k(  sJ t        | dd      j                  | j                  k(  sJ t        |dd      j                  t         j                  k(  sJ t        |dd      j                  t         j                  k(  sJ t        |dd      j                  t         j                  k(  sJ t        |dd      j                  t         j                  k(  sJ t        |dd      j                  |j                  k(  sJ t        |dd      j                  |j                  k(  sJ y 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                     t        j                  dt         j                        } d| ddddf<   d| ddddf<   t        | d	d
      }t        j                  t        j
                  |      t        j
                  |             sJ y)zIssue #6467r  r1   r0   r!   rT   r3   rj   r   )rT   rT   r   r9   N)r#   r;   int16r   array_equalunique)r  r   s     r+   test_nn_resize_int_imgr    ss    
((8288
,CC!QqSMC!QrT	NS&*G>>"))G,biin===r-   _typec                     t         j                  j                  dd      } | ddg      }t        ||      j                  t        |      k(  sJ y )Nr"   r0   )r#   r  r*  r   rY   tuple)r  r  rH  s      r+   test_output_shape_arg_typer     sC    
))..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   rM   rR   r^   rf   markparametrizerr   ru   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=  rC  rJ  rN  rP  r]  ra  rq  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-   