
    a6dф                     
   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test_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       Blib/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eGaKE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>.shift9   s    Avr-   r9   )r#   r;   r<   r   r   )r(   refxrJ   outxs       r+   test_warp_callablerM   3   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   @   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^   P   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   c   s    
rz***AAdG1aquE"$ $ $D88::>>>>1aqt5"$ $ $D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   q   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}      s@    	
+++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;#E{DL:;<> > > 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  iVDDDI	EQJJ/00D	I	I  AyzQ                 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
26%==BF5MM/156%==BF5MM155557 	8 	8A q.q119  C 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!! ! !C 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     s]   
A	z	"	" I I6!Z	I 	I 	I 	II I I I I I I I I I I I I I I 
z	"	" G G9u:	G 	G 	G 	GG G G G G G G G G G G G G G G G G G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Q5$& & &F<7""""QU$& & &F<7"""" 	"*---AQ5$& & &F<;&&&&QU$& & &F<;&&&& 	RZ000AQ5$& & &F<?****QU$& & &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   8  sx    
"*---A
Ar<((AQfAL#(z; ; ;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   B  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   L  sz    
rz***AAdGQ$& & &G
(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   V  sK   
"*---AAaAAAgJQ$& & &G	z	"	" I Iq&ZHHHHI I I I I I I I I I I I I I I (;

CC!QqS!!!gs+++Q1E$& & &G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   g  s    
"*---AAaAAAgJQ1E$& & &G
(;

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   r  sz    
rz***AAdGQ1E$& & &G
(;

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	%$& & &G
(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%%+	IQY',. . .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:#(* * *G
(;

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  }t          |d| ||          }|                                |k    sJ d S )Nr      g      ?r/   r1   r   )r:   r   rb   )r#   r   rm   r   re   )r:   r   rb   r2   expected_maxr(   r   s          r+   test_resize_clipr     s     n


e$$$A	SQeN#02 2 2G ;;==L((((((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    sR   
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E$& &G'?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    s)   
,,,AAdGAvQdLLLF<6!!!!6&!RaR.1$%%%%%!""aaa%=!####!!!QRR%=!####EH
1haj5: : : :
1haf5: : : :
1hak5: : : :
1hai5: : : :
1haf5: : : : 
z	"	" > >q(!.!u	> 	> 	> 	>> > > > > > > > > > > > > > > > > >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!  4  sa   
,,,A	z	"	"    q&2	  	  	  	                               
FG	H	H ; ;q'$#)		; 	; 	; 	;q'$#)		; 	; 	; 	;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;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%  @  s     	'''AAac1Q3hKQ1E"&Z9 9 9F#(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'  P  s    
,,,AAdGQ1D"&Z9 9 9F<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;  b  s6    YuE***221a88F//D8E??/366%%BJK:$$$$2r(*& ' 'Iy$'''YuE***221a88F//D:$$$$3+*& ' 'I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=  x  s    	z	"	" $ $RW\"" ""	$ 	$ 	$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $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
%5t1!EK K KC7799>>>>7799>>>>
%4d!!EK K KC7799>>>>7799>>>>
%,,rx((!E!E1& & &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    sE   	z	"	" $ $RXa[[ ""	$ 	$ 	$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 
z	"	" $ $RXg ""	$ 	$ 	$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 
z	"	" $ $RXg ""	$ 	$ 	$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 
z	"	" $ $RXk"" ""	$ 	$ 	$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $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    Hq!fWXX !W #Y #Y "X' ( (M 8c3Z!3Z!3Z!3Z!3ZX!1X*L9; < <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    Hq!f "g #h #h!1g!3i!3i!2h( ) )M 8c3Z!3Z #Y!2Y)3/'-!9-*L9; < <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          j	        	fd	|D                       sJ d S )
N)r0   r   ri   r   3   rL  Fr   )r   r   axisc                     g | ]}|v S rG   rG   ).0peakradiis     r+   
<listcomp>z*test_linear_warp_polar.<locals>.<listcomp>  s    777tu}777r-   )
r#   r;   r   r   r   r2   r	   r   r   alltrue)
r2   r   radrrccvalr  profilepeaksri  s
            @r+   test_linear_warp_polarrr    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:77777778888888r-   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          j        d |
D                       sJ d S )Nr5   r"   r!   r0   r3   c                 ,    g | ]}t          |          S rG   )intrg  r(   s     r+   rj  z'test_log_warp_polar.<locals>.<listcomp>  s    ###SVV###r-   i-     Fr      r`  )r   scalingr   rd  rz   c                 &    g | ]}|d k    o|dk    S )&   r1  rG   rv  s     r+   rj  z'test_log_warp_polar.<locals>.<listcomp>   s%    999qqBw*17999r-   )r#   expr;   r   r   r   r2   r	   r   r   sortrk  )r2   ri  r   rl  rm  rn  ro  r  rp  peaks_coordgapss              r+   test_log_warp_polarr    sl   VAYYq		26!99bfQiiVAYYq["&))A+'E##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:99D999:::::::r-   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    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  
  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    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    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  )  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  3  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  A  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  M  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  h  s    C
!QBJ///AAaAAAgJ
Ar<((A8,GGGGk'<44G	z	"	" % %!V$$$% % % % % % % % % % % % % % % (BC=
!
!CC!QqS!!!gs+++!&(LMm|m$v-lmm0LL   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   ru  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    s   
AHHRZ  E88BHD
((4..CQ,13 3 338AGD D D DQ,02 2 22717C C C CT8,13 3 338BJG G G GT8,02 2 2272:F F F FS(,13 3 338BJG G G GS(,02 2 2272:F F F FUH,13 3 338EKH H H HUH,02 2 2275;G G G G G Gr-   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  rr  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	       / / / / / / / / / / ) ) ) ) ) ) D D D D D D D D 7 7 7 7 7 7 , , , , , , 0 0 0 0 0 0 0 0 1 1 1 1 1 1 / / / / / /9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9? ? ? ? ? ? ? ? ? ? 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! ! !% % %% % %# # #
+ + +&G G G+ + +@ 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 54> > >6	; 	; 	; bh"*bj"*E 
$ 
$ 
$$ $ $   bh"*bj"*E 0 0 0&$ $ $O O O@ @ @  &$ $ $- - -0- - -0 2:rz2:"FGG9 9 HG9 2:rz2:"FGG; ; HG;$= = =G G G& & && & &0 0 0 ///22
* 
* 32
* 28T2:rz"JKK. . LK. Xrz2:rz2  ))),,
8 
8 -,	 

8, , , )>)>)>??, , @?,8; ; ;, , ,, , , a,,# # -,#, , ,$G G G0> > > 5"*d";<<B B =<B B Br-   