
    9i                        S SK rS SKJrJrJr  S SKrS SKJr  S SK	J
r
  S SKJrJrJrJrJrJrJrJrJrJrJrJrJrJr  S SKJr  S rS r\" 5       S	 5       rS
 rS r S r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.S r/S r0S r1S r2S r3S r4S  r5S! r6S" r7S# r8S$ r9S% r:S& r;S' r<S( r=S) r>S* r?S+ r@S, rAS- rB\R                  R                  \
(       + S.S/9S0 5       rE\R                  R                  \
(       + S.S/9S1 5       rFS2 rGS3 rHS4 rI\R                  R                  \
(       + S.S/9S5 5       rJ\R                  R                  \
(       + S.S/9S6 5       rK\R                  R                  \
(       + S.S/9S7 5       rL\R                  R                  \
(       + S.S/9S8 5       rM\R                  R                  \
(       + S.S/9S9 5       rN\R                  R                  \
(       + S.S/9S: 5       rOg);    N)assert_array_equalassert_equalassert_almost_equal)run_in_parallel)has_mpl)	set_colorlineline_aapolygonpolygon_perimeterdiskcircle_perimetercircle_perimeter_aaellipseellipse_perimeter_bezier_segmentbezier_curve	rectanglerectangle_perimeter)regionpropsc                      [         R                  " S5      n [        SSSS5      u  p[        XU4S5        [         R                  " S5      nSUSS S 24'   [	        X5        g )N
   r   r         )npzerosr	   r   r   imgrrccimg_s       \/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/draw/tests/test_draw.pytest_set_colorr$      sS    
((8
C!Q2FBc8Q88HDDAJs!    c                  V   [         R                  " S5      n [        SSSS5      u  pn[        XU4SUS9  [        R
                  " [        5         [        XU4SUS9  S S S 5        [         R                  " S5      n [        SSSS5      u  pn[        XU4SUS9  g ! , (       d  f       NC= f)	Nr   r   r   r   alpha)   r   r   )r   r      )r   r   r   )r   r   r
   r   pytestraises
ValueError)r   r    r!   r(   s       r#   test_set_color_with_alphar.   '   s    
((8
CAq!R(MBEc8Qe, 
z	"#BxE: 
# ((;
CAq!R(MBEc8Ye4 
#	"s   B
B(c                      [         R                  " S5      n [        SSSS5      u  pSXU4'   [         R                  " S5      nSUSS S 24'   [        X5        g Nr   r   	   r   r   r   r	   r   r   s       r#   test_line_horizontalr3   7   sP    
((8
C!Q1FBCBK88HDDAJs!r%   c                      [         R                  " S5      n [        SSSS5      u  pSXU4'   [         R                  " S5      nSUS S 2S4'   [        X5        g r0   r2   r   s       r#   test_line_verticalr5   D   sP    
((8
C!Q1FBCBK88HDDAJs!r%   c                      [         R                  " S5      n [        SSSS5      u  pSXU4'   [         R                  " S5      nSUSS S 24'   [        X5        g r0   r2   r   s       r#   test_line_reverser7   P   sP    
((8
C!Q1FBCBK88HDDAJs!r%   c                      [         R                  " S5      n [        SSSS5      u  pSXU4'   [         R                  " S5      n[	        X5        g )N   r:   r      r   r:   )r   r   r	   eyer   r   s       r#   test_line_diagr=   \   sB    
((6
C!Q1FBCBK66!9Ds!r%   c                      [         R                  " S5      n [        SSSS5      u  pn[        XU4SUS9  [         R                  " S5      nSUSS S 24'   [	        X5        g )Nr   r   r1   r   r'   )r   r   r
   r   r   r   r    r!   valr"   s        r#   test_line_aa_horizontalrA   g   sW    
((8
C!Q1%KBCc8Qc*88HDDAJs!r%   c                      [         R                  " S5      n [        SSSS5      u  pnX0X4'   [         R                  " S5      nSUS S 2S4'   [        X5        g r0   )r   r   r
   r   r?   s        r#   test_line_aa_verticalrC   s   sP    
((8
C!Q1%KBCK88HDDAJs!r%   c                      [         R                  " S5      n [        SSSS5      u  pnSXU4'   [        SSSS5      u  pE[	        XE5       H  u  pg[        XU4   S5        M     g )Nr   r   r1      r   )r   r   r
   r	   zipr   )r   r    r!   r@   rcr_ic_is           r#   test_line_aa_diagonalrK      sc    
((8
C!Q1%KBCCBK 1aDAISc]A& r%   c                      [         R                  " S5      n [         R                  " S5      n[        SSSS5      u  p#nX@X#4'   [        SSSS5      u  p#nXAX#4'   [        XR                  5        g )N   rN   r            )r   r   r
   r   T)img0img1r    r!   r@   s        r#   0test_line_equal_aliasing_horizontally_verticallyrU      sj    88HD88HD "aR(KBCL !RR(KBCL tVV$r%   c                      [         R                  " SS5      n [         R                  " S5      n[        US S 2S4   US S 2S4   5      u  p#SXU4'   [         R                  " SS5      nSUSS2SS24'   [	        X5        g )Nr   uint8)r   r   )r;   r   r;   r;   )r   r;   rX   r   r   r:   r   r   arrayr   r   r   polyr    r!   r"   s        r#   test_polygon_rectangler^      sw    
((8W
%C88<=DT!Q$Zad,FBCBK88Hg&DD1acNs!r%   c                  "   [         R                  " SS5      n [         R                  " S5      n[        US S 2S4   US S 2S4   5      u  p#SXU4'   [         R                  " / SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/
S5      n[	        X5        g )Nr   rW   )r   r*   )r;      )ra   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   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   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   r   r   r   rZ   r\   s        r#   test_polygon_rectangle_angularre          
((8W
%C88<=DT!Q$Zad,FBCBK88**********	
 	D  s!r%   c                  "   [         R                  " SS5      n [         R                  " S5      n[        US S 2S4   US S 2S4   5      u  p#SXU4'   [         R                  " / SQ/ SQ/ SQ/ S	Q/ S	Q/ S	Q/ S
Q/ SQ/ SQ/ SQ/
S5      n[	        X5        g )Nr   rW   )rX   )r:   r   )ra   rE   )r*   rE   rX   r   r   rd   
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   r   r   r   r   r   r   r   r   r   
r   r   r   r   r   r   r   r   r   r   rZ   r\   s        r#   test_polygon_parallelogramrj      rf   r%   c                     [         R                  " SS5      n [         R                  " S5      n[        US S 2S4   US S 2S4   U R                  5      u  p#SXU4'   [         R                  " S5      nSUSS 2S S 24'   [        X5        g )Nr   rW   ))r   )d   rl   )rm   rm   )r   rm   rX   r   r   )r   r   r[   r   shaper   r\   s        r#   test_polygon_exceedro      su    
((8W
%C88FGDT!Q$ZadSYY7FBCBK88HDDQKs!r%   c                  l    [        SS5      u  pU R                  UR                  s=:X  a  S:X  d   e   eg )Nr   r   )r   sizer    r!   s     r#   test_polygon_0d_inputrs      s0    Q]FB77bgg""""""r%   c                      [         R                  " SS5      n [        SS5      u  pSXU4'   [         R                  " / SQ/ SQ/ SQ/ SQ/ S	Q/ S	Q/ S	Q/ S	Q/ S	Q/ S	Q/ S	Q/ SQ/ SQ/ SQ/ SQ/5      n[	        X5        g )
N   rv   rW   )ra   ra   rE   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   )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   r   r   r[   r   r   s       r#   	test_diskrz      st    
((8W
%C&!_FBCBK88999999999999999	
D( s!r%   c                     [         R                  " SS5      n [        SSSSS9u  pSXU4'   [         R                  " U 5      S:X  d   eU S   S   S:X  d   e[         R                  " SS5      n [        SSSSS9u  pSXU4'   [         R                  " / S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S
Q/ S	Q/ SQ/ SQ/5      n[        X5        g )Nru   rW   ra   r   	bresenhammethodr      rv   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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   r   r   r   r   r   r   r   r   r   r   r   r   r   rw   r   r   r   sumr[   r   r   s       r#   test_circle_perimeter_bresenhamr     s    
((8W
%CaAk:FBCBK66#;!q6!9>>
((8W
%CaAk:FBCBK8899999999999999999#	
D* s!r%   c                      [         R                  " SS5      n [        SSSSSS9u  pSXU4'   S	n[         R                  " S
SU-  -   S4S5      n[        SU-   SSSS S9u  pSXAU4'   [        XX3* 2S S 24   5        g )Nrv   rQ   rW   ra   r   r1   r|   )r~   rn   r   r:   rv   rO   rQ   )r   r   r   r   r   r    r!   shiftr"   s        r#   %test_circle_perimeter_bresenham_shaper   0  s    
((8W
%CaQ{(KFBCBKE88R!e)^R('2Da%iQ{$OFBDRLsvq12r%   c                     [         R                  " SS5      n [        SSSSS9u  pSXU4'   [         R                  " U 5      S:X  d   eU S   S   S:X  d   e[         R                  " SS5      n [        SSSSS9u  pSXU4'   [         R                  " / S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S
Q/ S	Q/ SQ/ SQ/5      n[        X5        g )Nru   rW   ra   r   andresr}   r   r   rx   )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   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rw   r   r   s       r#   test_circle_perimeter_andresr   ;  s    
((8W
%CaAh7FBCBK66#;!q6!9>>
((8W
%CaAh7FBCBK8899999999999999999#	
D* s!r%   c                     [         R                  " SS5      n [        SSS5      u  pnSXU4'   [         R                  " U 5      S:X  d   eU S   S   S:X  d   e[         R                  " SS5      n [        SSS5      u  pnUS-  XU4'   [         R                  " / S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S
Q/ S	Q/5      n[        X5        g )Nru   rW   ra   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   r   r   r   r   r   r   )r   r   r   r         J      r   r   r   r   r   r   r   r   r   )r   r   r      rN   r   r   r   r   r   r   r   rN   r   r   r   r   )r   r   r   rN   r   r   r   r   r   r   r   r   r   rN   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   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   r   r   r   r   r   r   r   r)   r   )r   r   r   r   r[   r   r?   s        r#   test_circle_perimeter_aar   ]  s    
((8W
%C%aA.KBCCBK66#;!q6!9>>
((8W
%C%aA.KBC)CBK88	^	^	^	^	^	^	^	^	^	^	^	^	^	^	^	^	^!	`D( s!r%   c                     [         R                  " SS5      n [        SSSSS9u  pnUS-  XU4'   Sn[         R                  " S	S
U-  -   S4S5      n[        SU-   SSS S9u  pnUS-  XQU4'   [        XXD* 2S S 24   5        g )Nr   rW   ra   r   r1   rn   r)   r:   rv   rO   rQ   )r   r   r   r   )r   r    r!   r@   r   r"   s         r#   test_circle_perimeter_aa_shaper     s    
((8W
%C%aQh?KBC)CBKE88R!e)^R('2D%a%iQdCKBC9DRLsvq12r%   c                  ^   [         R                  " SS5      n [        SSSS5      u  pSXU4'   [         R                  " SS/SS//5      n[	        X5        [         R                  " SS5      n [        SSSS5      u  pSXU4'   [         R                  " SS/SS//5      n[	        X5        [         R                  " SS5      n [        SSSS5      u  pSXU4'   [         R                  " / S	Q/ S
Q/ S	Q/5      n[	        X5        [         R                  " SS5      n [        SSSS5      u  pSXU4'   [         R                  " / S
Q/ SQ/ S
Q/5      n[	        X5        [         R                  " SS5      n [        SSSS5      u  pSXU4'   [         R                  " / SQ/ SQ/ SQ/5      n[	        X5        g )NrO   rO   rW   g      ?r   r   皙?r*   r*   g?)r   r   r   )r   r   r   )r   r   r         ?r   r   r   r[   r   )r   r    r!   img_corrects       r#   test_ellipse_trivialr     s   
((67
#CS#sC(FBCBK((QFQF+,Ks(
((67
#CS#sC(FBCBK((FF	
K s(
((67
#CQ3$FBCBK((	
K s(
((67
#CQ3$FBCBK((	
K s(
((67
#CQ3$FBCBK((	
K s(r%   c                     [         R                  " SS5      n [        SSSS5      u  pSXU4'   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[	        X5        [         R                  " S	S5      n [        S
S
SS5      u  pSXU4'   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      n[	        X5        [         R                  " SS5      n [        SSSS5      u  pSXU4'   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/
5      n[	        X5        [         R                  " SS5      n [        SSSS5      u  pSXU4'   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/
5      n[	        X5        [         R                  " SS5      n [        SSSS5      u  pSXU4'   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[	        X5        g )NrY   rW   r   r   333333?r   )r   r   r   r   r   r   r   r   r9   rO   r   r   r   r   r   r   r   r   r   r   r   r:   r*   r;   rd   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   g      @g      @ru   ra   rw   ry   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s       r#   test_ellipse_genericr     s   
((67
#CS#sC(FBCBK88		
D s!
((67
#CQ3$FBCBK88	
D s!
((8W
%CQ1a FBCBK88**********	
D s!
((8W
%CS!S!$FBCBK88**********	
D s!
((8W
%CQ1a FBCBK88999999999999999	
D& s!r%   c                  *   [         R                  " SS5      n [        SSSSU R                  S9u  pSXU4'   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S	Q/ S	Q/ S	Q/ S	Q/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        X5        [         R                  " S
S5      n [        SSSSU R                  S9u  pSXUS4'   [         R                  " U 5      n[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/
5      US'   [        X5        g )Nru   rW   ra   r*   r   r   r   rw   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r1   r*   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   .r   )r   r   r   rn   r[   r   
zeros_liker   s       r#   test_ellipse_with_shaper     s   
((8W
%CQ1b		2FBCBK88999999999999999	
D( s!
((:w
'CQ1b		2FBCB	N==D88''''''''''	
DL s!r%   c            
          [        SSSS5      u  p[        R                  " [        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      5      u  p#[	        XS-
  5        [	        XS-
  5        g )Nr   r   r   r:   )r   r   nonzeror[   r   )r    r!   rr_cc_s       r#   test_ellipse_negativer   Q  s^    RS#&FBzz
	

HC r7#r7#r%   c                     [         R                  " S[         R                  S9n [         R                  " S[         R                  S9n[        SSS5       H  nU R	                  S5        [        SSSS	[         R                  " U5      S
9u  p4SXU4'   UR	                  S5        [        SSSS	[         R                  " US-   5      S
9u  p4SXU4'   [        X5        M     g )N   r   dtyper   r   rv   P   F   <   (   rotationr   )r   r   rW   rangefillr   deg2radr   )rT   img2angler    r!   s        r#   test_ellipse_rotation_symmetryr   c  s    88Jbhh/D88Jbhh/Dq#r"		!RR"**U2CDV		!RR"**US[2IJV4& #r%   c            	         [         R                  " S[         R                  S9n [        SSS5       H  nU R	                  S5        [         R
                  " U5      n[        SSSS	US
9u  p4SXU4'   [        U 5      S   R                  n[         R                  " US5      [         R                  S-  -  n[        Xb[         R                  S-  -  S5        M     g )N)i  i  r   r   r   r   i  iX     i  r   r   r*   rO   )r   r   rW   r   r   r   r   r   orientationroundpir   )r   rotr   r    r!   angle_estim_rawangle_estims          r#   test_ellipse_rotatedr   p  s    
((<rxx
0CQR 

3c3e<F%c*1-99hh2beeai@K"%%!))<a@ !r%   c                      [         R                  " SS5      n [        SSSSS5      u  pSXU4'   [         R                  " U 5      S:X  d   eU S   S   S:X  d   eg Nr   rv   rW   rv   ra   r   r   r   r   r   r   r   r    r!   s      r#   $test_ellipse_perimeter_dot_zeroangler   }  [    
((8W
%Cr1aA.FBCBK66#;!r71:??r%   c                      [         R                  " SS5      n [        SSSSS5      u  pSXU4'   [         R                  " U 5      S:X  d   eU S   S   S:X  d   eg r   r   r   s      r#   %test_ellipse_perimeter_dot_nzeroangler     r   r%   c                      [         R                  " SS5      n [         R                  " SS5      n[        SSSSS5      u  p#SXU4'   [        SSSS	5      u  p#SXU4'   [	        X5        g )
N)rQ   r   rW   rE   ra   r   r:   r   rO   rP   )r   r   r   r	   r   )r   r"   r    r!   s       r#   %test_ellipse_perimeter_flat_zeroangler     sf    
((8W
%C88Hg&Dq!Q1-FBCBK!Q2FBDRLs!r%   c            !      V   [         R                  " SS5      n [        SSSSS5      u  pSXU4'   [         R                  " / S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S
Q/5      n[	        X5        g )Nr   rW   rv   ra      rE   r   r   rw   )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   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   r   r   r   r[   r   r   s       r#    test_ellipse_perimeter_zeroangler     s    
((8W
%Cr1b!Q/FBCBK88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99=	
!DF s!r%   c            !      V   [         R                  " SS5      n [        SSSSS5      u  pSXU4'   [         R                  " / S	Q/ S	Q/ S	Q/ S	Q/ S	Q/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S	Q/ S	Q/ S	Q/ S	Q/ S	Q/5      n[	        X5        g )N)r   rN   rW   rv      rP   rE   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   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   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   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   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   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   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   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   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   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   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   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   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   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   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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s       r#   !test_ellipse_perimeter_nzeroangler     s    
((8W
%Cr2r1c2FBCBK88WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW=	
!DD s!r%   c            	          [         R                  " SS5      n [        SSSSSSS9u  pSXU4'   S	n[         R                  " S
SU-  -   S4S5      n[        SU-   SSSSS S9u  pSXAU4'   [        XX3* 2S S 24   5        g )Nr   rW   ra   r   r1   r   r   r   r:   rv   rO   rQ   )r   r   r   r   r   s        r#   test_ellipse_perimeter_shaper     s    
((8W
%Cq"aAX>FBCBKE88R!e)^R('2Dq5y"aATBFBDRLsvq12r%   c            	          [         R                  " S[        S9n Su  pnSu  pEn[        XX%X6S5      u  pxSXU4'   [         R                  " S[        S9n	[	        XX65      u  pxSXU4'   [        X	5        g )Nr   r   r   )2   r   r   )r   r   r   r   r   )r   r   intr   r	   r   )
imager0r1r2c0c1c2r    r!   image2s
             r#   test_bezier_segment_straightr     sr    HHZs+EJBBJBBRRRQ7FBEb&MXXj,F""!FBFr6Nu%r%   c                     [         R                  " SS5      n Su  pSu  p4Su  pV[        XX4XVS5      u  pxSXU4'   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S	Q/ S	Q/ S
Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n	[	        XU4   S5        [	        XU4   S5        [        X	5        g )NrM   rW   )rQ   rQ   )rQ   rO   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   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   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   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   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   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   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   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   r   r   r   r   r   )r   r   r   r[   r   r   
r   r   r   r   r   r   r   r    r!   r"   s
             r#   test_bezier_segment_curvedr     s    
((8W
%CFBFBFBRRRQ7FBCBK88WWWWWWWWWWWWWWWWWWWWWWWWW3	
D: Va Va s!r%   c            	          [         R                  " S[        S9n Su  pSu  p4Su  pV[        XX4XVS5      u  pxSXU4'   [         R                  " S[        S9n	[	        XXV5      u  pxSXU4'   [        X	5        g )Nr   r   )r   r   )r   r   r   r   r   )r   r   r   r   r	   r   )
r   r   r   r   r   r   r   r    r!   r   s
             r#   test_bezier_curve_straightr   0  su    HHZs+EFBFBFB"""!4FBEb&MXXj,F""!FBFr6Nu%r%   c                     [         R                  " SS5      n Su  pSu  p4Su  pV[        XX4XVS5      u  pxSXU4'   [        XU4   S5        [        XU4   S5        [         R                  " / SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S
Q/ S	Q/ SQ/ SQ/5      n	[        X	5        g )N)   r   rW   rX   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   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   r   r   r[   r   s
             r#   test_bezier_curved_weight_eq_1r   >  s    
((7G
$CFBFBFB"""!4FBCBKVa Va 88$$$$$$$$$$$$$$$$$$$$$$$/	
D6 r%   c                     [         R                  " SS5      n Su  pSu  p4Su  pV[        XX4XVS5      u  pxSXU4'   [        XU4   S5        [        XU4   S5        [         R                  " / SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S
Q/ S	Q/ SQ/5      n	[        X	5        g )N)r   r   rW   rX   r   r   rO   r   rd   rh   )
r   r   r   r   r   r   r   r   r   r   rb   rc   )
r   r   r   r   r   r   r   r   r   r   ri   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   r   r   s
             r#   test_bezier_curved_weight_neq_1r   e  s    
((8W
%CFBFBFB"""!4FBCBKVa Va 88***********************/	
D6 r%   c                  ,   [         R                  " SS5      n Su  pSu  p4Su  pV[        XX4XVSSS9u  pxSXU4'   S	n	[         R                  " S
SU	-  -   S4S5      n
SU	-   S	p!SU	-   SpCSU	-   Spe[        XX4XVSS S9u  pxSXU4'   [        X
X* 2S S 24   5        g )Nr   rW   )r   r:   )rE   r   )r   r   rO   r   r   r:   rv   rQ   rE   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r    r!   r   r"   s              r#   test_bezier_curve_shaper     s    
((8W
%CFBFBFB"""!8DFBCBKE88R!e)^R('2DYYY"""!4@FBDRLsvq12r%   zmatplotlib not installed)reasonc                     [         R                  " / SQ/ SQ/ SQ/5      n [         R                  " U 5      n[        / SQ/ SQ5      u  p#SXU4'   [	        X5        [         R                  " U 5      n[        / SQ/ SQUR
                  SS	9u  p#SXU4'   [	        X5        [        R                  " [        5         [        S
/S/SS9  S S S 5        g ! , (       d  f       g = f)Nr   )r   r   r   r   )r   rO   rO   r   )r   r   r*   r*   r   rl   rl   r*   r*   rl   r;   r;   rl   T)rn   clipr   )r  )	r   r[   r   r   r   rn   r+   r,   r-   )expectedoutr    r!   s       r#   test_polygon_perimeterr    s    xx|\BCH
--
!C|\:FBCBKs%
--
!CciidFB CBKs%	z	"1#s. 
#	"	"s   6C
Cc                  z    [        / SQ/ SQSS9u  p[        [        U 5      S5        [        [        U5      S5        g )Nr  r  )r*   r;   r   r   )r   r   lenrr   s     r#   $test_polygon_perimeter_outside_imager    s.    ~~VLFBR!R!r%   c                     [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[         R                  S9n SnSn[         R                  " S[         R                  S9n[	        XUR
                  S9u  pESX4U4'   [        X05        [         R                  " S[         R                  S9n[	        XUR
                  S	9u  pESX4U4'   [        X05        [         R                  " S[         R                  S9n[	        S
SUR
                  S9u  pESX4U4'   [        X05        [         R                  " S[         R                  S9n[	        S
SUR
                  S	9u  pESX4U4'   [        X05        g )Nr   r   r   )r   r   r   r9   endrn   r   r  startrn   )r*   r   r`   r  r  rn   r   r[   rW   r   r   rn   r   r  r  r  r   r    r!   s         r#   test_rectangle_endr    s%   xx	
 hh	H E
C
((6
*CuSYY7FBCBKs% ((6
*C5399=FBCBKs% ((6
*CVsyyAFBCBKs%
((6
*C6syyAFBCBKs%r%   c                     [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[         R                  S9n SnSn[         R                  " S[         R                  S9n[	        XUR
                  S9u  pESX4U4'   [        X05        [         R                  " S[         R                  S9n[	        XUR
                  S	9u  pESX4U4'   [        X05        [         R                  " S[         R                  S9n[	        S
SUR
                  S9u  pESX4U4'   [        X05        [         R                  " S[         R                  S9n[	        S
SUR
                  S	9u  pESX4U4'   [        X05        g )Nr   r   r   )皙?皙?)@333333@r9   r  r   r  )r  r  )r  r  r  r  r  s         r#   test_rectangle_float_inputr    s%   xx	
 hh	H E
C
((6
*CuSYY7FBCBKs% ((6
*C5399=FBCBKs% ((6
*CZZsyyIFBCBKs%
((6
*C:ZsyyIFBCBKs%r%   c                     [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[         R                  S9n SnSn[         R                  " S[         R                  S9n[	        XUR
                  S9u  pESX4U4'   [        X05        [         R                  " S	[         R                  S9n[	        XUR
                  S9u  pESX4US
4'   [         R                  " U5      nXS'   [        X65        g )Nr   r   r   rX   r   r9   extentrn   r   )r:   r:   r*   r   r   )r   r[   rW   r   r   rn   r   r   )r  r  r  r   r    r!   
expected_2s          r#   test_rectangle_extentr    s    xx	
 hh	H EF
((6
*Cu399=FBCBKs%
((9BHH
-Cu399=FBCB	Ns#J!vs'r%   c                  0   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[         R                  S9n SnSn[         R                  " U R                  [         R                  S9n[        XUR                  S9u  pESX4U4'   [        XUR                  S9u  pES	X4U4'   [        X05        [         R                  " U R                  [         R                  S9n[        XUR                  S9u  pES	X4U4'   [        XUR                  S9u  pESX4U4'   [        X05        g )
Nr   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   rO   rO   r   r   )r*   r:   )rl   r  r   rO   )r   r[   rW   r   rn   r   r   r   )r  r  r  r   r    r!   s         r#   test_rectangle_extent_negativer$    s     xx	
 hh	H EF
((8>>
2C SYYGFBCBKu399=FBCBKs% ((8>>
2Cu399=FBCBK SYYGFBCBKs%r%   c                  p   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[         R                  S9n SnSn[         R                  " U R                  [         R                  S9n[        XUR                  S9u  pESX4U4'   [        X05        [         R                  " U R                  [         R                  S9n[        XUR                  S	9u  pESX4U4'   [        X05        [         R                  " U R                  [         R                  S9nSnS
n[        XUR                  S9u  pESX4U4'   [        X05        g )Nr!  r"  )r   r   r   r   r   r   r   )rO   r*   )rO   r;   r   r   r  )r   rO   r  )r   r[   rW   r   rn   r   r   )r  r  r  r   r    r!   r  s          r#   test_rectangle_perimiterr&  =  s    xx	
 hh	H E
C
((8>>
2C 399=FBCBKs% ((8>>
2C USYYGFBCBKs%
((8>>
2CEF SYYGFBCBKs%r%   c                      [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[         R                  S9n [         R                  " S[         R                  S9nSnSn[	        X#UR
                  SS	9u  pES
XU4'   [        X5        [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[         R                  S9n [         R                  " S[         R                  S9n[	        X#UR
                  SS	9u  pES
XU4'   [        X5        g )Nr   r   r   r   r   r   r   r   r   r   r   r   r9   r   r   F)r  rn   r  r   r   r   r   r   r   Tr   r[   rW   r   r   rn   r   )r  r   r  r  r    r!   s         r#   *test_rectangle_perimiter_clip_bottom_rightr,  _  s     xx	
 hh	H ((6
*CEF SYYUSFBCBKs% xx	
 hh	H ((6
*C SYYTRFBCBKs%r%   c                      [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[         R                  S9n [         R                  " S[         R                  S9nSnSn[	        X#UR
                  SS	9u  pES
XU4'   [        X5        [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[         R                  S9n [         R                  " S[         R                  S9n[	        X#UR
                  SS	9u  pES
XU4'   [        X5        g )N)r   r   r   r   r   )r   r   r   r   r   r   r   r9   )r.  r   Fr  rn   r  r   )r   r   r   r   r   Tr+  r  r   r  r  r    r!   s         r#   &test_rectangle_perimiter_clip_top_leftr1    s     xx	
 hh	H ((6
*CE
C syyuMFBCBKs% xx	
 hh	H ((6
*C syytLFBCBKs%r%   c                      [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[         R                  S9n [         R                  " S[         R                  S9nSnSn[	        X#UR
                  SS	9u  pES
XU4'   [        X5        [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[         R                  S9n [         R                  " S[         R                  S9n[	        X#UR
                  SS	9u  pES
XU4'   [        X5        g )Nr(  r*  r   r   r9   )irO   )rO   r   Tr/  r   r)  Fr+  r0  s         r#   'test_rectangle_perimiter_clip_top_rightr3    s    xx	
 hh	H ((6
*CE
C syytLFBCBKs%xx	
 hh	H ((6
*C syyuMFBCBKs%r%   c                      [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[         R                  S9n [         R                  " S[         R                  S9nSnSn[	        X#UR
                  SS	9u  pES
XU4'   [        X5        [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[         R                  S9n [         R                  " S[         R                  S9n[	        X#UR
                  SS	9u  pES
XU4'   [        X5        g )Nr   )r   r   r   r   r   )r   r   r   r   r   r   r9   )rO   r   )r   r   Tr/  r   )r   r   r   r   r   Fr+  r0  s         r#   )test_rectangle_perimiter_clip_bottom_leftr5    s    xx	
 hh	H ((6
*CE
C syytLFBCBKs%xx	
 hh	H ((6
*C syyuMFBCBKs%r%   )Pnumpyr   numpy.testingr   r   r   r+   skimage._shared.testingr   "skimage._shared._dependency_checksr   skimage.drawr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   skimage.measurer   r$   r.   r3   r5   r7   r=   rA   rC   rK   rU   r^   re   rj   ro   rs   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markskipifr  r  r  r  r  r$  r&  r,  r1  r3  r5   r%   r#   <module>r?     s    O O  3 6     (	"5  	" 	"	"	""	"	"
'% 
""4"4
"#":"D3"D"D	34)nX"v1"h$$
'
A"("V'"T3
&&"R&$N$N3" K(BC/ D/( K(BC D!&H!&H(4 K(BC& D&B K(BC& D&B K(BC!& D!&H K(BC!& D!&H K(BC& D&D K(BC & D &r%   