
    iQ.                         S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SK	J
s  Jr  S SKJr   " S S5      r " S S5      r " S S	5      r " S
 S5      r " S S5      r " S S5      r " S S5      rg)    N)Image)check_installc                   *    \ rS rSrSS jrS rS rSrg)RandomScale   c                     Xl         g N
short_sizeselfr   kwargss      e/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddleocr/ppocr/data/imaug/ct_process.py__init__RandomScale.__init__       $    c                     UR                   SS u  p4[        X2-  S-   5      n[        XB-  S-   5      nUS-  S:w  a  USUS-  -
  -   nUS-  S:w  a  USUS-  -
  -   n[        R                  " XU4S9nXS-  nXd-  nXU4$ )Nr            ?    dsize)shapeintcv2resize)	r   imgscaleohowhwfactor_hfactor_ws	            r   scale_alignedRandomScale.scale_aligned    s    1Q
S !
S !r6Q;R!b&[!Ar6Q;R!b&[!AjjF+66h&&r   c                    US   nUR                   SS u  p4[        R                  " / SQ5      n[        R                  R	                  U5      U R
                  -  [        X45      -  nU R                  X&5      u  p'nX4US'   X!S'   U$ )Nimager   r   )ffffff?g?g?      ?g?g333333?g?scale_factor)r   nparrayrandomchoicer   minr&   )	r   datar   r"   r#   random_scaler   r$   r%   s	            r   __call__RandomScale.__call__-   s    7myy1~xx CD!!,/$//ASYN"&"4"4S"@x (3^Wr   r
   N  )__name__
__module____qualname____firstlineno__r   r&   r4   __static_attributes__ r   r   r   r      s    %'
r   r   c                   :    \ rS rSrS	S jrS rS rS
S jrS rSr	g)
MakeShrink:   c                     Xl         g r	   kernel_scale)r   rC   r   s      r   r   MakeShrink.__init__;   s    (r   c                 D    [         R                  R                  X-
  SSS9$ )Nr   r   )ordaxis)r-   linalgnorm)r   abs      r   distMakeShrink.dist>   s    yy~~qu11~55r   c           	          Sn[        UR                  S   5       H.  nX R                  X   XS-   UR                  S   -     5      -  nM0     U$ )Ng        r      )ranger   rL   )r   bboxperiis       r   	perimeterMakeShrink.perimeterA   sL    tzz!}%AIIdgtUdjjm,C'DEED &r   c                    [        SS5        SS KnX"-  n/ nU GH"  nUR                  U5      R                  5       nU R                  U5      n [        R
                  " 5       n	U	R                  U[        R                  [        R                  5        [        [        USU-
  -  US-   -  S-   5      U5      n
U	R                  U
* 5      n[        U5      S:X  a  UR                  U5        M  [        R                  " US   5      nUR                   S   S::  a  UR                  U5        GM  UR                  U5        GM%     U$ ! ["         a  nUR                  U5         S nAGMK  S nAff = f)NPolygonPolygon3r   rO   gMbP?r   r   )r   rW   arearT   	pyclipperPyclipperOffsetAddPathJT_ROUNDET_CLOSEDPOLYGONr1   r   Executelenappendr-   r.   r   	Exception)r   bboxesratemax_shrplgshrinked_bboxesrQ   rY   rR   pcooffsetshrinked_bboxes                r   shrinkMakeShrink.shrinkG   s?   i,{D;;t$))+D>>$'D-//1D)"4"4i6P6PQST!2dUl!Cc!IJGT #VG 4}%*#**40 "q)9 : &&q)Q.#**40&&}5' .   -&&t,,-s%   BE*=E*E
E)E$$E)c                 x   US   nUS   nUS   nUS   n[         R                  " UR                  SS SS9n[         R                  " UR                  SS SS9n[         R                  " UR                  SS SS9n[	        [        U5      5       Ha  n	[         R                  " X9   US   US	   /X9   R                  S   S-  -  -  X9   R                  S   S-  S45      R                  S
5      X9'   Mc     [	        [        U5      5       Ho  n	[        R                  " XcU	   /SU	S	-   S5        [        R                  " XsU	   /SSS5        XI   S:X  d
  XI   S:X  d  MR  [        R                  " XU	   /SSS5        Mq     [         R                  " UR                  SS SS9n
U R                  X0R                  5      n[	        [        U5      5       HT  n	[        R                  " XU	   /SU	S	-   S5        XI   S:w  d  M-  XI   S:w  d  M7  [        R                  " X{U	   /SS	S5        MV     U
R                  5       nS	XS:  '   U
R                  5       n[         R                  " S[         R                  5      n[        R                  " XS	S9nUR                  5       n[        R                  " XS	S9nX-
  nUUUU
UUU/US'   U$ )Nr)   polystextsr,   r   r   uint8dtyperO   int32z###z???)   rv   )
iterations)r-   zerosr   onesrP   r`   reshapeastyper   drawContoursrl   rC   copyrq   erode)r   r2   r   rc   wordsr,   gt_instancetraining_masktraining_mask_distancerS   gt_kernel_instancekernel_bboxes	gt_kerneltmp1erode_kerneltmp2gt_kernel_inners                    r   r4   MakeShrink.__call__f   s   7mgWN+hhsyy1~W=		!Ag>!#1Qw!Gs6{#A

	 O\!_59Kq9PQS#q(!, fWo	 I $ s6{#A[!9+r1q5"E ]AYKQC x5 EH$5  !7)b!RP $  XXcii!nGDF,=,=>s6{#A/2B1CRQPRS x5 UX%6  q1A0BB2N $ '++-	#$	a-  "&&(wwvrxx0yy:yy{yy: + "
W r   rB   N)r*   )   )
r8   r9   r:   r;   r   rL   rT   rl   r4   r<   r=   r   r   r?   r?   :   s    )6>Dr   r?   c                   $    \ rS rSrSS jrS rSrg)GroupRandomHorizontalFlip   c                     Xl         g r	   p)r   r   r   s      r   r   "GroupRandomHorizontalFlip.__init__   s    r   c                     US   n[         R                   " 5       U R                  :  aB  [        [        U5      5       H*  n[        R
                  " X#   SS9R                  5       X#'   M,     X!S'   U$ )Nr)   rO   rG   )r/   r   rP   r`   r-   flipr}   )r   r2   imgsrS   s       r   r4   "GroupRandomHorizontalFlip.__call__   sY    G}==?TVV#3t9%''$'2779 &Wr   r   N)r   r8   r9   r:   r;   r   r4   r<   r=   r   r   r   r      s    r   r   c                        \ rS rSrS rS rSrg)GroupRandomRotate   c                     g r	   r=   r   r   s     r   r   GroupRandomRotate.__init__       r   c                 J   US   nSn[         R                   " 5       S-  U-  U-
  n[        [        U5      5       Ha  nX%   nUR                  S S u  px[        R
                  " US-  US-  4US5      n	[        R                  " XiX4[        R                  S9n
XU'   Mc     X!S'   U$ )Nr)   
   r   rO   )flags)r/   rP   r`   r   r   getRotationMatrix2D
warpAffineINTER_NEAREST)r   r2   r   	max_angleanglerS   r   r#   r"   rotation_matriximg_rotations              r   r4   GroupRandomRotate.__call__   s    G}	!#i/);s4y!A'C99Ra=DA!55q1ua!eneQOO>>qfC4E4EL #G " Wr   r=   Nr   r=   r   r   r   r      s    r   r   c                   $    \ rS rSrSS jrS rSrg)GroupRandomCropPadding   c                     Xl         g r	   target_size)r   r   r   s      r   r   GroupRandomCropPadding.__init__   s    &r   c                    US   nUS   R                   SS u  p4U R                  u  pVU R                  u  pxXE:X  a  X6:X  a  U$ Xc:  a  UOUnXT:  a  UOUn[        R                  " 5       S:  Ga  [        R                  " US   5      S:  a  [        R
                  " [        R                  " US   S:  5      SS9Xe4-
  n	SXS:  '   [        R                  " [        R                  " US   S:  5      SS9Xe4-
  n
SXS:  '   [        U
S   X6-
  5      U
S'   [        U
S   XE-
  5      U
S'   U	S   U
S   :  a  [        R                  " U	S   U
S   5      OSnU	S   U
S   :  a  [        R                  " U	S   U
S   5      OSnOFX6-
  S:  a  [        R                  " SX6-
  5      OSnXE-
  S:  a  [        R                  " SXE-
  5      OSn/ n[        [        U5      5       H  n[        X.   R                   5      S:X  at  [        X.   R                   S   5      nX.   XU-   2XU-   2S S 24   n[        R                  " USX-
  SXu-
  [        R                  [        S	 [        U5       5       5      S
9nO=X.   XU-   2XU-   24   n[        R                  " USX-
  SXu-
  [        R                  SS
9nUR                  U5        M     XS'   U$ )Nr)   r   r   g      ?rO   r   rv   ru   c              3   &   #    U  H  nS v   M	     g7f)r   Nr=   ).0rS   s     r   	<genexpr>2GroupRandomCropPadding.__call__.<locals>.<genexpr>   s     <+;a+;s   )
borderTypevalue)r   )r   r   r/   r-   maxr1   whererandintrP   r`   r   r   copyMakeBorderBORDER_CONSTANTtuplera   )r   r2   r   r"   r#   t_wt_hp_wp_htlbrrS   jn_imgsidx	s3_lengthr   img_ps                     r   r4   GroupRandomCropPadding.__call__   s   G}Aw}}Qq!####8KWc!Wc!==?Y&266$q'?Q+>a1-A6#CBBAvJa1-A6#CBBAvJ1qw'BqE1qw'BqE0211r!ube,1A0211r!ube,1A./gkq!'*qA./gkq!'*qAT#C49??#q(	 34	iGQS[! ;<**II"22<5+;<< iGQS[ 89**II"22 MM% 1 $4 Wr   r   N))r7   r7   r   r=   r   r   r   r      s    '7r   r   c                   &    \ rS rSrS rS rS rSrg)MakeCentripetalShifti  c                     g r	   r=   r   s     r   r   MakeCentripetalShift.__init__  r   r   c           
      b   UR                   S   nUR                   S   n[        R                  " [        R                  " US S 2[        R                  S S 24   R                  USS9U[        R                  S S 2S S 24   R                  USS9-
  S-  SS95      n[        R                  " USS9nU$ )Nr   rO   r   r   ru   )r   r-   sqrtsumnewaxisrepeatargmin)r   AsBsABdisinds          r   jaccardMakeCentripetalShift.jaccard  s    HHQKHHQKggFFq"**a'(///:Q)*11!!1<= 	
 	
 ii"%
r   c                    US   nUS   US   US   US   US   US   US   4u  nnnnnnn	[         R                  " U5      n
[         R                  " S/UR                  SS Q7[         R                  S	9n[        SU
S-   5       GH5  nX:H  n[         R                  " U5      S:X  a  SXTU:H  '   SXU:H  '   M2  [         R                  " [         R                  " U5      5      R                  S
5      S S 2S S S24   R                  S5      nXL:H  US:H  -  n[         R                  " U5      S:X  a  M  [         R                  " U5      n[         R                  " U5      R                  S
5      S S 2S S S24   R                  S5      nU R                  UU5      nUU   U-
  nUR                  S-  US S 2US   US   4'   GM8     [        R                  " U5      nUR                  S5      nX1S'   UR                  S5      US'   UR                  S5      US'   UR                  S5      US'   UR                  S5      US'   U	R                  S5      US'   UR                  S5      US'   U$ )Nr)   r   rO   r   rv            rr   )rO   r   ru   float32g?RGBint64r   r   r   r   r   gt_distance)r-   r   rx   r   r   rP   r   r.   r   	transposer{   r   Tr   	fromarrayconvert)r   r2   r   r   r   r   r   r   r   r   max_instancer   rS   r   kpointspixelspointsbbox_ind	offset_gts                      r   r4   MakeCentripetalShift.__call__&  sh   G} !Wd1gtAwQa$q'47K	
" vvk* hh3CIIaN32::Fq,*+A!&Cvvc{a23Q./;<&a'78 #'11&9!TrT'BII)T  #(:a(?@Cvvc{aXXc]FXXf%//74R4@GG	RF||FG4H)F2I3<;;3DK6!9fQi/01 ,4 ooc"kk% W%,,W5[ - 4 4W =_)009]%7%>%>w%G!")?)F)Fw)O%&)00;]r   r=   N)r8   r9   r:   r;   r   r   r4   r<   r=   r   r   r   r     s    &6r   r   c                   $    \ rS rSrSS jrS rSrg)ScaleAlignedShorti_  c                     Xl         g r	   r
   r   s      r   r   ScaleAlignedShort.__init__`  r   r   c                    US   nUR                   nUR                   SS u  pEU R                  S-  [        XE5      -  n[        XF-  S-   5      n[        XV-  S-   5      nUS-  S:w  a  USUS-  -
  -   nUS-  S:w  a  USUS-  -
  -   n[        R
                  " X%U4S9nUR                   n[        R                  " X7-   5      nXS'   X!S'   U$ )	Nr)   r   r   r+   r   r   r   r   )r   r   r1   r   r   r   r-   r.   )	r   r2   r   org_img_shaper"   r#   r   new_img_shape	img_shapes	            r   r4   ScaleAlignedShort.__call__c  s    7m		yy1~#%A	1	C 	C r6Q;R!b&[!Ar6Q;R!b&[!AjjF+		HH]:;	!WWr   r
   Nr6   r   r=   r   r   r   r   _  s    %r   r   )osr   paddler/   rZ   numpyr-   PILr   paddle.vision.transformsvision
transformsppocr.utils.utilityr   r   r?   r   r   r   r   r   r=   r   r   <module>r     sr    
 
      - - - <p pf  ,; ;|M M` r   