
    is                     F    S r SSKrSSKrSSKJr  SSKJr   " S S\5      r	g)z
This code is refer from:
https://github.com/open-mmlab/mmocr/blob/main/mmocr/datasets/pipelines/textdet_targets/drrg_targets.py
    N)check_install)normc                      ^  \ rS rSr             SU 4S jj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\4S jrS rS rSrU =r$ )DRRGTargets   c                    > [         TU ]  5         Xl        X l        X@l        X0l        XPl        X`l        Xpl        Xl	        Xl
        Xl        Xl        Xl        Xl        SU l        g N:0yE>)super__init__orientation_thrresample_stepnum_max_compsnum_min_comps	min_width	max_widthcenter_region_shrink_ratiocomp_shrink_ratiocomp_w_h_ratiotext_comp_nms_thrmin_rand_half_heightmax_rand_half_heightjitter_leveleps)selfr   r   r   r   r   r   r   r   r   r   r   r   r   kwargs	__class__s                  g/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddleocr/ppocr/data/imaug/drrg_targets.pyr   DRRGTargets.__init__   sc    " 	.***""*D'!2,!2$8!$8!(    c           	         UR                   S:  a*  U[        USS9U R                  -   R                  S5      -  nOU[        USS9U R                  -   -  nUR                   S:  a*  U[        USS9U R                  -   R                  S5      -  nOU[        USS9U R                  -   -  n[        R
                  " [        R                  " [        R                  " X4-  SS9SS5      5      $ )N   axisr#   r"   g            ?)ndimr   r   reshapenparccosclipsum)r   vec1vec2	unit_vec1	unit_vec2s        r   vector_angleDRRGTargets.vector_angle;   s    99q=T 3dhh >GGPPIT 3dhh >?I99q=T 3dhh >GGPPIT 3dhh >?Iyy	(=B!GsSTTr    c                 f    [        U5      S:X  d   e[        US   US   U R                  -   -  5      $ )N   r"   r   )lenabsr   r   vecs     r   vector_slopeDRRGTargets.vector_slopeF   s3    3x1}}3q6SVdhh./00r    c                 `    [        U5      S:X  d   eUS   [        U5      U R                  -   -  $ )Nr5   r"   r6   r   r   r8   s     r   
vector_sinDRRGTargets.vector_sinJ   .    3x1}}1vcTXX-..r    c                 `    [        U5      S:X  d   eUS   [        U5      U R                  -   -  $ )Nr5   r   r=   r8   s     r   
vector_cosDRRGTargets.vector_cosN   r@   r    c                 
   UR                   S:X  d   eUR                  S   S:  d   eUR                  S   S:X  d   e[        U[        5      (       d   e[	        U5      S:  Ga  [
        R                  " XS   /5      nUSS  US S -
  n/ n/ n[        U5       H  u  pxUS-
  US-   4 V	s/ s H  o[	        U5      -  PM     n
n	XJ   n[
        R                  " U R                  X5      5      nU R                  US   US   5      nUR                  U5        UR                  U5        M     [
        R                  " U5      [
        R                  -  n[
        R                  " U5      [
        R                  -  n[
        R                  " USS9n[
        R                  " [        USS  U-
  SS9[        US S U-
  SS95      nU[
        R                   " U5      U R"                  -   -  n[
        R$                  " [	        U5      5      nSU-  SU-  -   nUS	U-  -  n[	        U5      S-  S:X  a)  U[	        U5      S-  S-
  ==   S-  ss'   US==   S-  ss'   US
U-  -  n[
        R&                  " UU/5      n[
        R$                  " [	        U5      [	        U5      S-
  45      n[
        R(                  " [	        U5      S-
  5      [        [	        U5      S-
  5      -  n	S[
        R*                  " S[
        R                  -  5      S-  -  [
        R,                  " [
        R.                  " U	S-
  S-  S5      * S-  5      -  nU[
        R                   " U5      -  n[1        [	        U5      5       H-  nUU   UUS-   U[	        U5      -   S-
   U-  S-  -   UUS S 24'   M/     [
        R2                  " UR5                  5       UR                  5      u  nnUU-   S-   [	        U5      -  nUS-   [	        U5      -  nUS-   [	        U5      -  nUU:  a  UUnnUUnnUU/nUU/nUU4$ U R7                  US   US   -
  5      U R7                  US   US   -
  5      -   U R7                  US   US   -
  5      U R7                  US   US   -
  5      -   :  a  SS/SS//nSS/SS//n OSS/SS//nSS/SS//n [        UU S   S      UU S   S      -
  5      [        UU S   S      UU S   S      -
  5      -   n![        UUS   S      UUS   S      -
  5      [        UUS   S      UUS   S      -
  5      -   n"U!U"U-  :  a  US   nUS   nUU4$ U S   nU S   nUU4$ s  sn	f )Nr5   r      r"   r#   r$         ?g333333?gffffff?g?   r'          @333333?)r(   shape
isinstancefloatr6   r*   vstack	enumerater-   r2   appendarraypimeanmaximumr   maxr   zerosconcatenatearangesqrtexppowerrangeunravel_indexargmaxr:   )#r   pointsr   
pad_pointsedge_vec	theta_sumadjacent_vec_thetai	edge_vec1xadjacent_indadjacent_edge_vectemp_theta_sumtemp_adjacent_thetatheta_sum_scoreadjacent_theta_scorepoly_center	edge_dist
dist_scoreposition_scorescore	pad_scorescore_matrixgaussian
head_starttail_increment
tail_starthead_endtail_end	head_inds	tail_indshorizontal_edge_indsvertical_edge_indsvertical_len_sumhorizontal_len_sums#                                      r   find_head_tailDRRGTargets.find_head_tailR   s   {{a||A!###||A!###/51111v;?F1I#67J!!"~
3B7HI!# )( 3<=E1q5>J>aCM 1>J$,$:!!#(9(9)(W!X&*&7&7%a(*;A*>'#   0"))*=> !4 !hhy1BEE9O#%88,>#?"%%#G ''&q1K

Z^k1;Z_{2<I #bffY&7$((&BCJXXc(m4N/)D3G,GGETJ&&E6{Q!#E
a! 35:5r"a'"S>))Eu~6I88SZUa$@AL		#e*q.)E#e*q.,AAA773;'#-/&&"((AGs?C881<=> 
  "&&"22H3u:&!HQ1s5z>A+=?(JSPQ QT" ' *,)9)9##%|'9'9*&J %~59S[HJ"Q#f+5H"Q#f+5H(")3ZJ
%-x(#X.I#X.I> )##;   VAY!67$:K:Kq	F1I%; !!&)fQi"784;L;Lq	F1I%< 
 *+AA'7$'(!fq!f%5")*AA'7$'(!fq!f%5"#)!,Q/06:LQ:OPQ:R3SS )!,Q/06:LQ:OPQ:R3SS 
 "&+A.q12V<PQR<STU<V5WW"+A.q12V<PQR<STU<V5WW"  "4"FF03	03	
 )## /q1	.q1	)##a  Ks   )Uc                    UR                   S:X  d   eUR                  S   S:  d   eUR                  S   S:X  d   eU R                  XR                  5      u  p#X   X   pT[        R
                  " X/5      nUS   S:  a  [        U5      US'   XbS   US    nXcS   US   [        U5      -    n[        R                  " USS9[        R                  " USS9-
  n	U	S   S:  a  XpOXxpXEX4$ )Nr5   r   rE   r"   r$   )r(   rJ   r   r   r*   rM   r6   rR   )r   r^   ry   rz   	head_edge	tail_edger_   	sideline1	sideline2sideline_mean_shifttop_sidelinebot_sidelines               r   reorder_poly_edgeDRRGTargets.reorder_poly_edge   s   {{a||A!###||A!####226;O;OP	%0&2C9YY/0
Q<!v;IaL|il;	|y|c&k/IK	 ggia82779ST;UUq!A%)2,)2,\??r    c                     UR                   S:X  d   e[        U5      S:  d   e[        R                  " USS 2S4   US S2S4   -
  S-  USS 2S4   US S2S4   -
  S-  -   5      n[        R                  " U5      nX#4$ )Nr5   r"   r   r#   )r(   r6   r*   rX   r-   )r   lineedges_lengthtotal_lengths       r   cal_curve_lengthDRRGTargets.cal_curve_length   s    yyA~~4yA~~ww!"a%[4Q<'A-ab!etCRCF|1KPQ0QQ
 vvl+))r    c                 z   UR                   S:X  d   eUR                  S   S:  d   eUR                  S   S:X  d   e[        U[        5      (       d   eUS:  d   eU R	                  U5      u  p4[
        R                  " [
        R                  " U5      SS5      nXBS-
  -  n[
        R                  " SUS-
  [
        R                  S9U-  nSnUS   /n	U H  n
U[        U5      S-
  :  a/  XUS-      :  a$  US-  nU[        U5      S-
  :  a  XUS-      :  a  M$  XX   XXS-      p[
        R                  " X-
  X-
  /[
        R                  S9X-
  U R                  -   -  n[
        R                  " XXS-   /   5      nU	R                  U5        M     U	R                  US   5        [
        R                  " U	5      nU$ )Nr5   r   r"   dtyper#   )r(   rJ   rK   intr   r*   insertcumsumrW   float32r6   rP   r   dotrO   rM   )r   r   nr   r   t_orgunit_tt_equidistantedge_indr^   tt_lt_rweightp_coordsresampled_lines                   r   resample_lineDRRGTargets.resample_line   s   yyA~~zz!}!!!zz!}!!!!S!!!!1uu%)%:%:4%@"		"))L11a8Q'		!QU"**=Fq'AS.22qA;N7NA S.22qA;N7Nl(;XXsw0

C	DHH$F vvfHl+C&DEHMM(#  	d2h6*r    c                    UR                   UR                   s=:X  a  S:X  d   e   eUR                  S   UR                  S   s=:X  a  S:X  d   e   eUR                  S   S:  d   eUR                  S   S:  d   e[        U[        5      (       d   eU R	                  U5      u  pEU R	                  U5      u  pFXV-   S-  n[        [        [        U5      U-  5      S-   S5      nU R                  X5      n	U R                  X(5      n
X4$ )Nr5   r"   r   rG   )r(   rJ   rK   rL   r   rT   r   r   )r   r   r   r   _length1length2
avg_lengthresample_point_numresampled_line1resampled_line2s              r   resample_sidelinesDRRGTargets.resample_sidelines   s
   ~~4144444q!Y__Q%7<1<<<<<q!Q&&&q!Q&&&-////**95
**95
'1,
 U:%6%F!G!!KQO,,YK,,YK//r    c                     [        U[        5      (       d   eUu  p4[        [        R                  " XC-
  X-
  5      5      [        XC-
  5      S-   -  nU$ r	   )rK   tupler7   r*   crossr   )r   pointr   point1point2ds         r   dist_point2lineDRRGTargets.dist_point2line   sP    $&&&&%.9:!D(
 r    c
                    UR                   UR                   s=:X  a  UR                   :X  d   e   eUR                   UR                   s=:X  a4  UR                   s=:X  a#  UR                   s=:X  a  UR                   :X  d    e   e[        U	[        5      (       d   eUR                   u  p[        S[	        U5      S-
  5       GH  nX   XS-      -   S-  nX,   X,S-      -   S-  nU R                  X-
  5      nU R                  X-
  5      nX<   X   X<   -
  U	-  -   nX<S-      XS-      X<S-      -
  U	-  -   nX<S-      X,S-      X<S-      -
  U	-  -   nX<   X,   X<   -
  U	-  -   n[        R                  " UUUU/5      R                  [        R                  5      n[        R                  " UU/SS9  [        R                  " UU/US9  [        R                  " UU/US9  [        R                  " US S 2S4   SUS-
  5      US S 2S4'   [        R                  " US S 2S4   SU
S-
  5      US S 2S4'   [        R                  " USS9R                  [        R                  5      n[        R                  " USS9R                  [        R                  5      nUU-
  nUU-
  S-   n[        R                   " US   US   4[        R"                  S9n[        R                  " UU/SS9  [        R$                  " US:  5      nUUS   US   4-   n[        R&                  " U5      nU R)                  UX   XS-      45      UUS S 2S4   US S 2S4   4'   U R)                  UX,   X,S-      45      UUS S 2S4   US S 2S4   4'   GM     g )Nr   r"   r5   )colorr$   r   )rJ   rK   rL   r[   r6   r>   rB   r*   rM   astypeint32cv2fillPolyr,   minrT   rU   uint8argwherefliplrr   )r   top_linebot_linecenter_linecenter_region_masktop_height_mapbot_height_mapsin_mapcos_mapregion_shrink_ratiohwrc   top_mid_pointbot_mid_point	sin_theta	cos_thetatltrbrblcurrent_center_box	min_coord	max_coordbox_szcenter_box_maskindsinds_xys                               r   draw_center_region_maps#DRRGTargets.draw_center_region_maps  s    ~~D;3D3DDDDDD$$#### }} }}		
	
 -u5555!''q#k*Q./A%[8E?:a?M%[8E?:a?M(EFI(EFI8;#?CV"VVBE"E?[Q%77;NNO 
 E"E?[Q%77;NNO  8;#?CV"VVB!#BB+;!<!C!CBHH!MLL+.@-AKLL#5"6iHLL#5"6iH')ww/A!Q$/GAPQE'Rq!t$')ww/A!Q$/GAPQE'Rq!t$1:AA"((KI1:AA"((KI!3i!?*Q.F hhq	6!9'=RXXNOLL+=*>aH;;23D9Q<166DiioG7;7K7K(+xA78NDAJQT
34 8<7K7K(+xA78NDAJQT
34O 0r    c                 
   [        U[        5      (       d   eUu  p4/ n[        R                  " X44[        R                  5      n[        R                  " X44[        R
                  S9n[        R                  " X44[        R
                  S9n[        R                  " X44[        R
                  S9n	[        R                  " X44[        R
                  S9n
U GH"  nUnU R                  U5      u    pnU R                  XU R                  5      u  nnUS S S2   nUU-   S-  nU R                  US   US   -
  5      S:  a+  US   US   -
  S   S:  a  US S S2   nUS S S2   nUS S S2   nO*US   US   -
  S   S:  a  US S S2   nUS S S2   nUS S S2   n[        R                  " [        US   US   -
  5      U R                  -  U R                  U R                  5      S-  n[        R                  " [        US   US   -
  5      U R                  -  U R                  U R                  5      S-  n[        UU R                  -  5      n[        UU R                  -  5      n[!        U5      UU-   S-   :  a3  UU[!        U5      U-
   nUU[!        U5      U-
   nUU[!        U5      U-
   nUR#                  UR%                  [        R&                  5      5        U R)                  UUUUUUU	U
U R*                  5	        GM%     UUUUU	U
4$ )Nr   r#   r5   r   r"   )rK   r   r*   rU   r   r   r   r   r   r:   r,   r   r   r   r   r   r6   rO   r   r   r   r   )r   img_size
text_polysr   r   center_linesr   r   r   r   r   polypolygon_pointsr   r   r   resampled_top_lineresampled_bot_liner   line_head_shrink_lenline_tail_shrink_lennum_head_shrinknum_tail_shrinks                          r    generate_center_mask_attrib_maps,DRRGTargets.generate_center_mask_attrib_mapsH  sB   (E****XXqfbhh71&

;1&

;((A64((A64D!N'+'='=n'M$AqH595L5LD$6$662 2 "4DbD!9-0BBaGK  R;q>!ABQFOk!n4a81<"-dd"3K);DbD)A&);DbD)A&Ok!n4a81<"-dd"3K);DbD)A&);DbD)A& (1+34t7J7JJNNNN
  ! (2,"569L9LLNNNN
  ! ""6$:L:L"LMO!"6$:L:L"LMO;/O"Ca"GG)#c+&6&H &8#c*<&=&O&" &8#c*<&=&O&"  2 2288 <=(("""//
e ~ 
 	
r    c           
         [        U[        5      (       d   eUS:  d   eUR                  S:X  d   eUR                  u  p4U R                  nU R
                  nUS-  n[        R                  " XpR                  -  U R                  U R                  5      n[        [        R                  " US-  S-  US-  S-  -   5      5      S-   n	SU	-  S-   [        X45      :  a  [        X45      [        R                  " S5      U R                  S-   -  :  d   e[        [        X45      S-  U R                  S-  S-   5      n[        US-  U R                  S-  5      nUS-  n[        R                  " XpR                  -  U R                  U R                  5      n[        [        R                  " US-  S-  US-  S-  -   5      5      S-   n	[        R                  " U5      n
X)X9-
  2XU	-
  24   XX9-
  2XU	-
  24'   [        [        R                  " USS5      5      n[        R                   " U
[        R"                  " X4[        R$                  5      5      n
[        R&                  " U
S:  5      n[)        U5      n[        R*                  R-                  X5      nX   n[        R*                  R/                  Xe[)        U5      S4S9n[        R*                  R/                  Xe[)        U5      S4S9nS[        R*                  R+                  [)        U5      S4S9-  S-
  nS[        R*                  R+                  [)        U5      S4S9-  S-
  n[        R                  " SUS-  US-  -   S	-   -  5      nUU-  nUU-  nUU-   n[        R                  " UU R                  -  U R                  U R                  5      n[        R0                  " US S 2S S S
24   UUUU[        R                  " U5      /5      R3                  [        R4                  5      nU$ )Nr   r5   r"   rE         sizer'   r
   r#   )rK   r   r(   rJ   r   r   r*   r,   r   r   r   rX   r   rT   
zeros_liker   erodeonesr   r   r6   randomchoicerandinthstackr   r   )r   num_rand_compscenter_sample_maskr   r   r   r   max_rand_heightmax_rand_widthmargininner_center_sample_maskkernel_sizecenter_candidatesnum_center_candidatessample_indsrand_centersrand_top_heightrand_bot_heightrand_cosrand_sinscaleheightwidthrand_comp_attribss                           r   generate_rand_comp_attribs&DRRGTargets.generate_rand_comp_attribs  s   .#....!!!!&&!+++!''#88#88.21114>>4>>
 1,2nq6HQ5NNOPSTT 	 v:>CI%q9
dnnq.@ ABBB#&s1y1}dnnq6H16L#M #&';a'?RSAS#T 2Q6OWW"5"55t~~t~~N BGG_q0Q6.1:LQR9RRSTWXX  $&==1C#D 
2FZ4GGH 	!!*!4f6z6I!IJ "''"62>?#&99$bgg{.H"((&S$
  KK(@1(DE #$5 6ii&&'<M(5))++ c,>OQR=S , 
 ))++ c,>OQR=S , 
 ryy''c,.?-C'DDqHryy''c,.?-C'DDqHx{Xq[84?@Ae#e# ?2!4!44dnndnnUIIQ"W%h'	
 &
 	 ! r    c           	         UR                   S   S:X  d   eUR                   S   S:  d   e[        U[        5      (       d   eUSS2S4   R                  S5      nUSS2S4   R                  S5      nUSS2S4   R                  S5      nUSS2S4   R                  S5      nUSS2S4   R                  S5      nUSS2S	4   R                  S5      nUSS2S
4   R                  S5      n	U[        R
                  R                  [        U5      S4S9S-
  U[        R                  " U5      -  U[        R                  " U5      -  -   -  U-  -  nU[        R
                  R                  [        U5      S4S9S-
  U[        R                  " U5      -  U[        R                  " U5      -  -   -  U-  -  nU[        R
                  R                  [        U5      S4S9S-
  U-  U-  -  nU[        R
                  R                  [        U5      S4S9S-
  U-  U-  -  nU[        R
                  R                  [        U5      S4S9S-
  S-  U-  -  nU[        R
                  R                  [        U5      S4S9S-
  S-  U-  -  n[        R                  " SUS-  US-  -   S-   -  5      n
Xz-  nX-  n[        R                  " X4XVXxU	/5      nU$ )a9  Jitter text components attributes.

Args:
    comp_attribs (ndarray): The text component attributes.
    jitter_level (float): The jitter level of text components
        attributes.

Returns:
    jittered_comp_attribs (ndarray): The jittered text component
        attributes (x, y, h, w, cos, sin, comp_label).
r"   r   r   Nr&   r5   rG   rE         r   rF   r'   r
   )
rJ   rK   rL   r)   r*   r   r6   r7   rX   r   )r   comp_attribsr   re   yr   r   cossincomp_labelsr  jittered_comp_attribss               r   jitter_comp_attribsDRRGTargets.jitter_comp_attribs  s    !!!$)))!!!$q(((,....A&&w/A&&w/A&&w/A&&w/1a4 ((11a4 ((1"1a4(009	YYC$5q#9:S@266#;RVVC[02	

 	
YYC$5q#9:S@266#;RVVC[02	
 	
biiS%6$:;cAQFUU	biiS%6$:;cAQFUU		  s<'8!&< =CqH<WW		  s<'8!&< =CqH<WWsAvQ567kk "		1s*M N$$r    c           	         [        U[        5      (       d   eUR                  UR                  s=:X  aE  UR                  s=:X  a4  UR                  s=:X  a#  UR                  s=:X  a  UR                  :X  d    e   e[        R                  " U5      n[
        R                  " XSSS5        X-  n[        R                  " US:  5      n	U	SS2S4   n
U	SS2S4   nXJU4   R                  S5      U R                  -  nXZU4   R                  S5      U R                  -  nXjU4   R                  S5      nXzU4   R                  S5      nU	[        R                  " X-  X-  /5      -   nU	[        R                  " X-  X-  /5      -
  nX-   U R                  -  n[        R                  " UU R                  U R                  5      nUS-  nUSS2SSS24   [        R                  " U* U-  UU-  /5      -
  nUSS2SSS24   [        R                  " U* U-  UU-  /5      -   nUSS2SSS24   [        R                  " U* U-  UU-  /5      -   nUSS2SSS24   [        R                  " U* U-  UU-  /5      -
  n[        R                  " UUUU/5      R                  [        R                   5      n[        R"                  " UR                  S   S4[        R                   S9n[        R                  " UU/5      n[%        SS	5        SS
KJn  U" UU R*                  5      nUR                  S   S:  Ga  UR                  u  nn[        R                  " USS2SSS24   SUS-
  5      USS2SSS24'   [        R                  " USS2SSS24   SUS-
  5      USS2SSS24'   [        R,                  " USS2SS24   R                  S5      SS9R                  [        R.                  5      n	U	SS2S4   nU	SS2S4   n
XJU4   XZU4   -   R                  S5      n[        R                  " UU R                  -  U R                  U R                  5      nXzU4   R                  S5      nXjU4   R                  S5      n[
        R0                  " USS9u  nnUX4   R                  S5      R                  [        R                   5      n UR                  S5      R                  [        R                   5      nU
R                  S5      R                  [        R                   5      n
[        R                  " XUUXU /5      n!U R3                  U!U R4                  5      n!U!R                  S   U R6                  :  aI  U R6                  U!R                  S   -
  n"U R9                  U"SU-
  5      n#[        R:                  " U!U#/5      n!OU R9                  U R6                  SU-
  5      n![        R"                  " U!R                  S   S4[        R                   S9U!R                  S   -  n$[        R                  " U$U!/5      n!U!R                  S   U R<                  :  a(  U!SU R<                  2SS24   n!U R<                  U!SS2S4'   [        R>                  " U R<                  U!R                  S   4[        R                   S9n%U!U%SU!R                  S   2SS24'   U%$ )a  Generate text component attributes.

Args:
    center_lines (list[ndarray]): The list of text center lines .
    text_mask (ndarray): The text region mask.
    center_region_mask (ndarray): The text center region mask.
    top_height_map (ndarray): The map on which the distance from points
        to top side lines will be drawn for each pixel in text center
        regions.
    bot_height_map (ndarray): The map on which the distance from points
        to bottom side lines will be drawn for each pixel in text
        center regions.
    sin_map (ndarray): The sin(theta) map where theta is the angle
        between vector (top point - bottom point) and vector (1, 0).
    cos_map (ndarray): The cos(theta) map where theta is the angle
        between vector (top point - bottom point) and vector (1, 0).

Returns:
    pad_comp_attribs (ndarray): The padded text component attributes
        of a fixed size.
r   r"   Nr&   r5   r#   r   lanmsz	lanms-neo)merge_quadrangle_n9   )r#   rE   r5   r$   )connectivity) rK   listrJ   r*   r   r   	polylinesr   r)   r   r   r   r,   r   r   r   r   r   r   r  r  r   rR   r   connectedComponentsr  r   r   r  rM   r   rU   )&r   r   	text_maskr   r   r   r   r   center_lines_maskcomp_centersr  re   
top_height
bot_heightr  r  top_mid_pointsbot_mid_pointsr
  rr   r   r   r   
text_compsrp   la_nmsimg_himg_wr	  r   comp_label_maskr  r  r   r  	num_compspad_comp_attribss&                                         r   generate_comp_attribs!DRRGTargets.generate_comp_attribs  sr   @ ,----OO!''## ## }}	
 }}	
	
 MM*<='q!Q?-B{{#4q#89AA#qD)11':T=S=SS
#qD)11':T=S=SS
dm##G,dm##G,%		:3CZEU2V(WW%		:3CZEU2V(WW(D,?,??t~~t~~>AIAttG$ryy1"s(AG1D'EEAttG$ryy1"s(AG1D'EEAttG$ryy1"s(AG1D'EEAttG$ryy1"s(AG1D'EEYYBB/077

C
))!,a0

CYY
E23
g{+7J(>(>?
A!#-33LE5#%77:a1Qh+?EAI#NJq!Aa%x #%77:a1Qh+?EAI#NJq!Aa%x 771ac6"**:6QfRXX  QT"AQT"A$T*^qD-AAJJ7SFGG,,,dnndnnE Q$-''0CQ$-''0C!$!8!8""A *!$/77@GG

SK		'"))"**5A		'"))"**5A99aFE3[%QRL33L$BSBSTL!!!$t'9'99!%!3!3l6H6H6K!K$($C$C"A	M%!  "yy,8I)JK::""A	ML
 GG\''*A.bjjA  #$ 	 yy)\!:;a 4#5#55'(<$*<*<(<a(?@L!%!3!3LA88!3!3A!67rzz
 8D0<--a00!34r    c                 (   [        U[        5      (       d   eUu  p4[        R                  " X44[        R                  S9nU HL  n[        R
                  " U[        R                  S9R                  S5      n[        R                  " XWS5        MN     U$ )zGenerate text center region mask and geometry attribute maps.

Args:
    img_size (tuple): The image size (height, width).
    text_polys (list[list[ndarray]]): The list of text polygons.

Returns:
    text_region_mask (ndarray): The text region mask.
r   )r"   r#   r5   r"   )
rK   r   r*   rU   r   rP   r   r)   r   r   )r   r   r   r   r   text_region_maskr   polygons           r   generate_text_region_mask%DRRGTargets.generate_text_region_mask  su     (E****88QF"((;Dhht2884<<ZHGLL)A6   r    	mask_sizec                     [         R                  " U[         R                  S9nU HJ  nUR                  [         R                  5      R                  SSS5      n[        R                  " X5S5        ML     U$ )a  Generate effective mask by setting the ineffective regions to 0 and
effective regions to 1.

Args:
    mask_size (tuple): The mask size.
    polygons_ignore (list[[ndarray]]: The list of ignored text
        polygons.

Returns:
    mask (ndarray): The effective mask of (height, width).
r   r"   r#   r5   r   )r*   r   r   r   r   r)   r   r   )r   r7  polygons_ignoremaskr   instances         r   generate_effective_mask#DRRGTargets.generate_effective_mask  sX     wwy1#D{{288,44QA>HLL+ $ r    c           	         [        U[        5      (       d   eUS   nUS   nUS   nUR                  u  pVn/ n/ n	[        XC5       H.  u  pU
SL a  U	R	                  U5        M  UR	                  U5        M0     U R                  XV4U5      nU R                  XV4U	5      nU R                  XV4U5      u  nnnnnnU R                  UUUUUUU5      nUUUUUUUS.nUR                  U5        UUS'   U$ )zGenerate the gt targets for DRRG.

Args:
    data (dict): The input result dictionary.

Returns:
    data (dict): The output result dictionary.
imagepolysignore_tagsT)gt_text_maskgt_center_region_maskgt_maskgt_top_height_mapgt_bot_height_map
gt_sin_map
gt_cos_mapgt_comp_attribs)
rK   dictrJ   ziprO   r5  r<  r   r0  update)r   datar?  polygonsrA  r   r   r   polygon_maskspolygon_masks_ignoretagr4  rB  rD  r   rC  rE  rF  rG  rH  rI  mappings                         r   generate_targetsDRRGTargets.generate_targets  s8    $%%%%W==)++a!6LCd{$++G4$$W-	 7 55qfmL..v7KL 111&-H	
! 44!
 )%:!2!2$$
 	G"1r    c                 (    U R                  U5      nU$ )N)rS  )r   rM  s     r   __call__DRRGTargets.__call__   s    $$T*r    )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )rH          @	   iX  rX        8@rI   r'   rI   g      ?rX  rZ  g?)__name__
__module____qualname____firstlineno__r   r2   r:   r>   rB   r   r   r   r   r   r   r   r   r  r  r0  r5  r   r<  rS  rV  __static_attributes____classcell__)r   s   @r   r   r      s     #& !B	U1//]$~@,*60$@DQ
fG!R0%dB H , (:x r    r   )
__doc__r   numpyr*   ppocr.utils.utilityr   numpy.linalgr   objectr    r    r   <module>rg     s&   
   - i& ir    