
    1-Ph                     
   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j+        ,                    d            d Z-d Z.d Z/ e            d             Z0d Z1d Z2ej3        4                    dg d          d             Z5ej3        4                    dg d          d             Z6ej3        4                    d e7d                    d             Z8ej3        4                    d e7d                    d             Z9d Z:ej3        4                    dej;        ej<        ej=        g          d             Z>d Z?d Z@d ZAd  ZBd! ZCd" ZDd# ZEej3        4                    d$g d%          d&             ZFd' ZGd( ZHd) ZId* ZJd+ ZKd, ZLd- ZMd. ZNd/ ZOej3        4                    dd d0g          ej3        4                    d1d2d3g          ej3        4                    d4d2d3g          ej3        4                    dej=        ejP        g          d5                                                 ZQej3        4                    dej;        ej<        ej=        g          d6             ZRd7 ZSd8 ZTd9 ZUej3        4                    dejP        ejV        ej;        ej<        ej=        g          d:             ZWd; ZXd< ZYej3        4                    dejP        ejV        ej;        ej<        ej=        g          d=             ZZd> Z[d? Z\ej3        4                    dejP        ejV        ej;        ej<        ej=        g          d@             Z]dA Z^dB Z_dC Z`dD ZadE ZbdF ZcdG Zdej3        4                    dej;        ej<        ej=        g          dH             Zeej3        4                    dej;        ej<        ej=        g          dI             ZfdJ ZgdK ZhdL ZidM ZjdN Zkej3        4                    dg dO          dP             Zlej3        4                    dejP        emej<        ej=        g          dQ             Znej3        4                    dejP        ej;        ej<        ej=        g          ej3        4                    dg dR          dS                         ZodT Zpej3        4                    d$g dU          dV             ZqdW ZrdX ZsdY Ztej3        4                    dZ e7d0d                    d[             Zud\ Zvd] Zwd^ Zxej3        4                    d_eyejz        e{g          d`             Z|dS )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         |           d S )N      .)npemptyeyer   ranger   )layersxyis       b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/transform/tests/test_warps.pytest_stackcopyr,   %   su    F
!Q  A
q!Aq!6]] 0 0!!CF)Q////0 0    c                  n   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        |                      d S )	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    
rz***AAdGUFQJEa%VLLLE
q%q
!
!
!Cc28A;;///
q%-q
)
)
)Cc28A;;/////r-   c                      t          j        dt           j                  } d| d<   t          j        dt           j                  }d|d<   d }t          | |d          }t	          ||           d S )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{    
rz***AAdG8F"*---DDJ   5"""DdD)))))r-   c                  <   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
	          }d S )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   s    
rz***AAdG8F"*---DDJXyyy)))YYY788F 6###DdD)))6###DDDr-   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          ||           d S )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
HU"*---Dj#xRZ000tVE!QNN,,
"(:.//!3AvQQ///!$----. .r-   c                  `   t          j        dt           j                  } d| d<   t          | ddddd          }|                                d	k     sJ t          | ddd
dd          }t          |                                d	           t          |                                d           d S )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   s    
rz***AAdG1aquE
SSSD88::>>>>1aqt5zRRRDdhhjj!,,,dhhjj!,,,,,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           d S )	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   su     	
+++AfAdG!Ru1TEEEDbiooq111biooq1111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           d S )
Nrh   r1   r5   r0   rk   Trl   r3   )r#   rm   r<   r   rn   r   ro   rp   rq   s      r+   test_warp_clip_cval_is_nanru      s     	
+++AAadAbDjM!Ru26$TJJJDbiooq111biooq11111r-      c           	         t          j        dt           j                  }t          | dk    rdgnd           5  t	          |d| ddd          }d d d            n# 1 swxY w Y   t          |d         |d	         |d
         |d         gd           | dk    rCt          j        t          j        d|          t          j        |d          z            dk    sJ d S d S )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}      s7    	
+++A 
EQJJ/00D	I	I J Ja5qDIIIJ J J J J J J J J J J J J J J tDz4;UT&\RTUVVV
 qyyvbga&&q)9)99::Q>>>> y>>s   AA"Ac           	      L   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            n# 1 swxY w Y   t          |                                d           d S )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HHHI	EQJJ/00D	I	I S SAyzQTRRRS S S S S S S S S S S S S S S dhhjj!,,,,,s   A77A;>A;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        |                      d S )
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    
rz***AAdGUFQJE
VE]]RVE]]NA.VE]]BF5MM1-II	
	 	A q1!44<A
F
F
FCc28A;;/////r-   r2   c                     t          j        d|           }d|d<   t          |d          }|j        t	          |           k    sJ t          |t          j        |                     d S )Nr/   r1   r3   rE   Z   )r#   r;   r   r2   r	   r   r>   )r2   r(   rB   s      r+   test_rotater      sf    
u%%%AAdG
B--C9-e444444c28A;;/////r-   c                      t          j        dt           j                  } t          | dd          }|j        dk    sJ t          | dd          }|j        dk    sJ d S )N
   r   r1   rk   Fr   T   r   )r#   r;   r<   r   rY   )r(   x45s     r+   test_rotate_resizer      sl    
,,,A
Bu
%
%
%C9    
Bt
$
$
$C9      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	          ||            d S )Nr   r1   r3   )r!   r!   )r5   r0      r   ry   )r:   centeri)r#   r;   r<   r   r   )r(   rK   x20x0s       r+   test_rotate_centerr      s    
,,,AAdG8HBJ///DDJ
Ba
/
/
/Cc4(((	S&	1	1	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          ||           d S )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      s    
,,,AAdGhxrz222GGDMGDM
BtF!)
L
L
LC9    sG$$$$$r-   c                      t          t          j        dt          j                  dd          } | j        dk    sJ d S )N)     r1   r   Tr   )r   r   )r   r#   r;   r<   rY   )rB   s    r+   test_rotate_resize_90r      s@    
*BJ777D
I
I
IC9
""""""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	          ||           d S )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    
rz***AAdGQ%jIIIF
(8

CC!QqSMfc*** 	rz***AAdGQau:NNNF
(7

CC!QKfc*****r-   c                  D   t          j        d          } t          j        t                    5  t          | dd dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          | dddd           d d d            d S # 1 swxY w Y   d S )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     sA   
A	z	"	" T T6E
SSSST T T T T T T T T T T T T T T	z	"	" U U92UTTTTU U U U U U U U U U U U U U U U U Us#   AAA3BBBc                  ^   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 d S )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     s   
rz***A	1ABe*  F <7""""	1ADJ  F <7"""" 	"*---A	1ABe*  F <;&&&&	1ADJ  F <;&&&& 	RZ00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 d S )
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  s    
"*---A
Ar<((A	!  F [r2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 d S )Nr   r1   r5   r   Fr`   r   r   r   r   r   r   s     r+   "test_rescale_multichannel_defaultsr   Q  s    
rz***AQ%jIIIF<7""""
"*---AQ%jII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	          ||           d S )Nr/   r1   r3   rE   r   r   Fr`   r   r5   r!   r#   r;   r<   r   r   r(   resizedr   s      r+   test_resize2dr   [  ss    
rz***AAdGQZPP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            n# 1 swxY w Y   t          j        d
          }d|ddddd d f<   t          ||           t          | d
ddd          }t          ||           d S )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AAAgJQZPPPG	z	"	" H Hq%qJGGGGH H H H H H H H H H H H H H H (;

CC!QqS!!!gs+++Q1E
SSSGgs+++++s   A99A= A=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	          ||           d S )Nr   r1   r3   r   r   r3   r   Fr`   r   r5   r!   r   r   s      r+   test_resize3d_resizer   s  s}    
"*---AAaAAAgJQ1E
SS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	          ||           d S )Nr/   r1   r3   rE   r   r   Fr`   r   r5   r!   r   r   s      r+   test_resize3d_2din_3doutr   }  ss    
rz***AAdGQ1E
SS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	          ||           d S )Nr/   r1   r3   rE   r   r   r3   r3   r   Fr`   r   r5   r!   .r   r(   	out_shaper   r   s       r+   test_resize2d_4dr     s{    
rz***AAdGIQ	%jQQQG
(9

CC!QqS#gs+++++r-   c                  F   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              sJ d S )	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{{ $ $BIcNNQ&&GENNJu%%+	IQYeTTTu7=.999vgl######$ $r-   c                  :   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	          ||           d S )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SSSG
(;

CC!QqS!!!C!QqS!!!C!QqS!!!C!QqS!!!gs+++++r-   c                     t          j        d          } |                     t           j                  }|                     t           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 d S Nr/   r   F)preserve_rangeT)	r#   r;   astypefloat32uint8boolr   r2   r<   r(   x_f32x_u8x_bs       r+   test_resize_dtyper     sp   
AHHRZ  E88BHD
((4..C!Xe444:agEEEE!Xd3339QWDDDD$777=KKKK$666<
JJJJ#x666<DDDD#x555;tCCCC%%888>%+MMMM%$777=LLL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 d S )	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 9W------r-   c           	      0   t          t                                                    | 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n J 	 d d d            n# 1 swxY w Y   t          j        t          j	        ||z
                      dk     sJ |
                    d           t	          dg          5  t          |fd	d
i|}t          |fd	di|}|j        |j        cxk    r|k    sn J 	 d d d            n# 1 swxY w Y   t          j        t          j	        |ddddf         |ddddf         z
                      dk     sJ d S )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     sf   ((//E/BBE'..K a!YOOL	/0	1	1 ? ?;;;l;;'@@C@<@@	}	>>>>;>>>>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
 726%)+,,--4444V	/0	1	1 ? ?;;;l;;'@@C@<@@	}	>>>>;>>>>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
 726%"ad
+i"ad
.CCDDEELLLLLLs$   :BB"%B"=:EEEc                      t           j                            dd          } d}t          | t	          d          |          }t          j        ||k              dk    sJ d S )Nd   r   r   r8   )rU   il  )r#   randomrandnr   r   r{   )imgrU   warpeds      r+   test_const_cval_out_of_ranger    sa    
)//#s
#
#CD#8<<<4HHHF6&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 d S )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    sM   
x	,,
-
-Csy>>Q;sDoq&A&A&ABBCCCCC{3S/3*G*G*G H HIIIIIl2:sBM#,>,>&DEEyQQG'?C#@#@#@AAN;wWoq.I.I.I J JKKKKK{7N333336!~aaaAg..///////r-   c                     t                                          t          j                  } d| j        d         k    sJ t          d          }t          |d          }t          | d d d d df         |d d                    d S )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    KKrz**EAH555E,,FE!!!QQQ'NF2A2J/////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                                         dk    sJ |d d dd f                                         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                                         dk    sJ |d d dd f                                         dk    sJ t          j        d|           }t          |dddd	
          }t           j	        
                    |t          j        d                     d S )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  	  s0    	'''AAac1Q3hKAvQe*MMMF#(BJ#6#6RZZEN<>))))<6!!!!$<1!""aaa%=!####!!!QRR%=!####
'''AAac1Q3hKAvQe*MMMF#(BJ#6#6RZZEN<>))))<6!!!!$<1!""aaa%=!####!!!QRR%=!####
rAAvQe*MMMFJ!!&"&))4444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
k              sJ |d	d d d f                                         d
k    sJ |d d d	d f                                         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            d S # 1 swxY w Y   d S )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  &  sG   
,,,AAdGAvQdLLLF<6!!!!6&!RaR.1$%%%%%!""aaa%=!####!!!QRR%=!####EH
	!    	816SX    	!    	!    	816SX    
z	"	" 
 
 %	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   ?E""E&)E&c            	      x   t          j        dt           j                  } t          j        t
                    5  t          | ddddd           d d d            n# 1 swxY w Y   t          d	g          5  t          | d
dddd           t          | d
dddd           d d d            d S # 1 swxY w Y   d S )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!  [  sr   
,,,A	z	"	" 
 
 "	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
FG	H	H 
 
 &	
 	
 	
 	
 	 &	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s#   AA #A 7+B//B36B3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                                         dk    sJ |d d dd f                                         dk    sJ d S )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 $)BJ#6#6RZZEN<>))))<6!!!!$<1!""aaa%=!####!!!QRR%=!######r-   c                  x   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k              sJ |d
d d d f                                         dk    sJ |d d d
d f                                         dk    sJ d S )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!!!!6&!RaR.1$%%%%%!""aaa%=!####!!!QRR%=!######r-   c                      t           j                            dd          } t          | d          }|j        dk    sJ d S )Nr"   r!   MbP?r3   )r#   r  randr   size)r  outs     r+   test_downscale_to_the_limitr-    s9    
)..A

C
#t

C8q======r-   c                 L   t          j        d|                               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|                               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          |||           d S )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(    YuE***221a88F//D8E??/366%%BJK:$$$$3*tTl344Iy$'''YuE***221a88F//D:$$$$4,c
344IBJ&&44DDIt$//////r-   c                      t          j        t                    5  t          t	          j        d          t                                 d d d            d S # 1 swxY w Y   d S )N)r!   r"   r"   r"   )r   r   r   r   r#   rm   r   rG   r-   r+   test_invalidr=    s    	z	"	" ; ;RW\""$7$9$9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   /AAAc                  x   t          dd          } t          t          j                            | j                            }t          j        d                              dd                              t          j                  }t          t          ||          t          || j                             d S )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    s    cC888E'ry}}U\/J/JKKKMIg&&r2..55bjAAEtE=114u}3M3MNNNNNr-   c                      t           j                            dd          } t          j        t
                    5  t          | d d           d d d            n# 1 swxY w Y   t          | d d           d S )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    s    INN1a  E	z	"	" > >UMM====> > > > > > > > > > > > > > > 	,>??????s   AA!Ac            
      V   t          j        ddd                              dd          } t          | dddddd d          }|                                dk    sJ |                                dk    sJ t          | dddddd d          }|                                dk    sJ |                                dk    sJ t          |                     t           j                  dddd ddd	          }|                                dk    sJ |                                dk    sJ d S )
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?   K1b!!))!Q//E
		 	 	C 7799>>>>7799>>>>
		 	 	C 7799>>>>7799>>>>
RX		 	 	C 7799>>>>7799>>>>>>r-   c                      t          j        t                    5  t          t	          j        d          t                                 d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          t                                 d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          t                                 d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          t                                 d d d            d S # 1 swxY w Y   d S )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 1RXa[[-//0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1	z	"	" 7 7RXg 3 5 56667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	z	"	" 7 7RXg 3 5 56667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	z	"	" ; ;RXk""$7$9$9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;sG   /AAA9/B44B8;B8/DDD7/E33E7:E7c                  4   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 d S )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    H
Q!R1c(QHr1gCy2s)bRTXV M 8#J#J#J#J#JH!H<(		
 L QYGHF"='8VLLF;v|,,,,,,,r-   c                  ^   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 d S )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    H
Q!R1c(QHr1gCy2s)bRTXV M 8#J#JI"I#)<(		
 L QYGRVC[[ HFw&IIF;v|,,,,,,,r-   c                   	 g d	t          j        ddg          }	D ]}t          dd|          \  }}}||||f<   |                    | d          }t	          |d          }|j        t          |           k    sJ |                    d          }t          |          }t          	fd	|D                       sJ d S )
N)r0   r   ri   r   3   rL  Fr   )r   r   axisc              3       K   | ]}|v V  	d S rF  rG   ).0peakradiis     r+   	<genexpr>z)test_linear_warp_polar.<locals>.<genexpr>5  s'      //tu}//////r-   )
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    OOEHb"XE  )"b#66Bb"fLLUL++Eb)))F<077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 |D             }t          j        ddg          }|D ]}t          dd|          \  }}}||||f<   |                    | d	
          }t          |dd          }|j        t          |           k    sJ |                    d          }t          |          }	|	
                    d           |	dd          |	d d         z
  }
t          d |
D                       sJ d S )Nr5   r"   r!   r0   r3   c                 ,    g | ]}t          |          S rG   )intrg  r(   s     r+   
<listcomp>z'test_log_warp_polar.<locals>.<listcomp>;  s    ###SVV###r-   i-     Fr      r`  )r   scalingr   rd  rz   c              3   .   K   | ]}|d k    o|dk    V  dS )&   r1  NrG   ru  s     r+   rj  z&test_log_warp_polar.<locals>.<genexpr>G  s/      11qqBw"17111111r-   )r#   expr;   r   r   r   r2   r	   r   r   sortr   )r2   ri  r   rk  rl  rm  rn  r  ro  peaks_coordgapss              r+   test_log_warp_polarr  8  sh   VAYYq		26!99bfQiiQq		TUVE##U###EHc3Z  E  )#sC88Bb"fLLUL++Ec5999F<0777777kkqk!!G ))K!qrr?["--D11D1111111111r-   c                  \   t          j        t                    5  t          t	          j        d          dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          dd            d d d            d S # 1 swxY w Y   d S )Nr   r/   invalid)ry  r   r   r   r   r#   r;   rG   r-   r+   test_invalid_scaling_polarr  J  s*   	z	"	" B B28H%%vyAAAAB B B B B B B B B B B B B B B	z	"	" = =28H%%vt<<<<= = = = = = = = = = = = = = = = = =s#   %AAA/%B!!B%(B%c                     t          j        t                    5  t          t	          j        d          d           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          dd           d d d            d S # 1 swxY w Y   d S )Nr   r/   r   rz   r   )r   r   r   r"   r  rG   r-   r+   test_invalid_dimensions_polarr  Q  s   	z	"	" 2 228K((&1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	z	"	" @ @28H%%vB????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @	z	"	" G G28O,,f2FFFFG G G G G G G G G G G G G G G G G Gs5   #A		AA-%BB"%B"%C44C8;C8c                      t          j        dt                    } d| ddddf<   t          | d          }t          j        d	          }d|d
dddf<   t	          ||           d S )N      r1   Fr5   r!   r#  rv   	   r3   rz   )r#   rm   r   r   r   r  resexpecteds      r+   test_bool_img_rescaler  Z  ss    
'($
'
'
'CC"ad
O
#s

Cwv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	          ||           d S )Nr  r1   Fr5   r  r!   r  r  r3   rz   )r#   rm   r   r   r   r  s      r+   test_bool_img_resizer  e  ss    
'($
'
'
'CC"ad
O
f

CwvH HQrT1R4ZsH%%%%%r-   c                  J   t          j        dt                    } t          j        t
                    5  t          | dd           d d d            n# 1 swxY w Y   t          j        t
                    5  t          | dd           d d d            d S # 1 swxY w Y   d S )Nr   r1   r#  T)rb   r/   )r#   r;   r   r   r   r   r   r   )r  s    r+   "test_bool_and_anti_aliasing_errorsr  p  s   
(84
(
(
(C	z	"	" . .S----. . . . . . . . . . . . . . . 
z	"	" 0 0sF$////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s#   AAA8BBB)r3   r5   r"   r!   r0   c                    t          j        dt                    }t          j        t
                    5  t          |d|            d d d            n# 1 swxY w Y   t          j        t
                    5  t          |d|            d d d            n# 1 swxY w Y   t          j        t
                    5  t          |t          j	        d          |            d d d            d S # 1 swxY w Y   d S )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))))* * * * * * * * * * * * * * * * * *s5   AAA8BBB;%C--C14C1c                 v   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 d S 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
3
3C#xq)))/5888831%%%+u4444#r###)U2222c###)U2222A$------r-   )r3   r"   r0   c                    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 d S 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
3
3C'..K#xu---3{BBBB35)))/;>>>>#r'''-<<<<c'''-<<<<E"""(K777777r-   c                      t          j        dt           j                  } d| d<   t          | d          }t          j        d          }d|ddddf<   t	          ||           d S )Nr/   r1   r3   rE   r   r5   r!   r#   r;   r<   r   r   r   s      r+   test_resize_local_mean2dr    sj    
rz***AAdG8,,G
(8

CC!QqSMgs+++++r-   )r   r3   r5   rz   r  c                    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            n# 1 swxY w Y   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          ||           d S )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BJ///AAaAAAgJ
Ar<((A8,GGGGk'<44G	z	"	" $ $!U###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ (BC=
!
!CC!QqS!!!gs+++!&(LMm|m,v5lmm8TTI9--Gk'<44Ggs+++++s   B$$B(+B(c                  `   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            d S # 1 swxY w Y   d S )	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AAAgJ;//G
(;

CC!QqSMgs+++ 
z	"	" ; ;![r::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   B##B'*B'c                      t          j        dt           j                  } d| d<   t          | d          }t          j        d          }d|ddddf<   t	          ||           d S )Nr/   r1   r3   rE   r   r5   r!   r  r   s      r+   #test_resize_local_mean3d_2din_3doutr    sj    
rz***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	          ||           d S )	Nr/   r1   r3   rE   r   r5   r!   .r  r   s       r+   test_resize_local_mean2d_4dr    sr    
rz***AAdGI9--G
(9

CC!QqS#gs+++++r-   rX   c                 4   dt          j        |           dz  z   }t          j        |          }t          j        |          dz                      t
                    }t          ||          }d|z  }t          |j        |           t          |d           d S )Nr5   r   r3   )	r#   r   rm   r   r   rt  r   r   rY   r   s         r+   test_resize_local_mean_ndr    s    	#""E
AE""S(0055I9--G5[Nw}n55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	          ||           d S )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    sI   
"*---AAgJAgJ;//G
(;

CC!QqS!!!gs+++;%@@@GC1aaaLC1aaaLC1aaaL"((C1aaaL3q!QQQw<"++C1aaaL3q!QQQw<"((C1aaaL3q!QQQw<gs+++++r-   c                  &   t          j        d          } |                     t           j                  }|                     t           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 d S r   )	r#   r;   r   r   r   r   r   r2   r<   r   s       r+   test_resize_local_mean_dtyper    st   
AHHRZ  E88BHD
((4..CQ???EPPPPQ>>>DOOOOT8EBBBHBJVVVVT8DAAAG2:UUUUS(5AAAG2:UUUUS(4@@@F"*TTTTUHUCCCIU[XXXXUHTBBBHEKWWW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 dS )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    s    
(828
,
,
,CC!QqSMC!QrT	NS&***G>")G,,binn=======r-   _typec                     t           j                            dd          } | ddg          }t          ||          j        t          |          k    sJ d S )Nr"   r0   )r#   r  r*  r   rY   tuple)r  r  rH  s      r+   test_output_shape_arg_typer     sT    
)..A

C5!Q==L#|$$*eL.A.AAA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 X X X X X X X X ) ) ) ) ) ) F F F F F F F F 7 7 7 7 7 7 , , , , , , 0 0 0 0 0 0 0 0 1 1 1 1 1 1 / / / / / /                                    
 6 5 5 5 5 5 5 5 	q   0 0 0
0 
0 
0
* 
* 
* $ $ $. . .&	- 	- 	- ))),,2 2 -,2 ))),,2 2 -,2 %%((++? ? ,+?& %%((++- - ,+-(0 0 0  2:rz2:"FGG0 0 HG0! ! !% % %% % %# # #
+ + +&U U U#+ #+ #+L 77& & 87&' ' ', , ,, , ,, , ,, , ,, , ,$ $ $, , ,M M M  1a&)))D%=994-882:rx"899. . :9 98 :9 *)., 2:rz2:"FGGM M HGM.> > >
0 
0 
00 0 0 bh"*bj"*E 5 5 542
 2
 2
j
 
 
< bh"*bj"*E $ $ $	$ 	$ 	$   bh"*bj"*E 0 0 0"; ; ;
O O O@ @ @' ' 'T; ; ;- - -.- - -. 2:rz2:"FGG0 0 HG0 2:rz2:"FGG2 2 HG2"= = =G G G& & && & &0 0 0 ///22
* 
* 32
* 28T2:rz"JKK. . LK. 28RZRZ"PQQ))),,	8 	8 -, RQ	8, , , )>)>)>??, , @?,4; ; ;, , ,, , , a,,# # -,#, , ,$X X X > > > 5"*d";<<B B =<B B Br-   