
    if                        S SK Jr  S SK Jr  S SK Jr  S SK Jr  S SKrS\R                  S'   S SKrS SKrS SK	r
S SKJr  S SKrS S	KJrJrJr  S S
KJr   " S S\R,                  5      r " S S\R,                  5      r " S S\R,                  5      rS rS\
R6                  4S jrS+S jr " S S\R,                  5      r " S S\R,                  5      r " S S\R,                  5      r  " S S\R,                  5      r! " S S\R,                  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),    )absolute_import)division)print_function)unicode_literalsN1NO_ALBUMENTATIONS_UPDATE)BytesIO)ImageImageOps	ImageDraw)zoomc                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Erosion!   c                    > [         TU ]  X#S9  [        U5      [        L d  [        U5      [        L a  [        U5      S:X  d   eXl        g X4U l        g Nalways_applyp   super__init__typetuplelistlenscaleselfr   r   r   	__class__s       h/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddleocr/ppocr/data/imaug/unimernet_aug.pyr   Erosion.__init__"   H    l8;%4;$#6u:?"?JDJ    c           
          [         R                  " [         R                  [        [        R
                  R                  U R                  S   U R                  S   S5      5      5      n[         R                  " XSS9nU$ Nr      r   )
iterations)	cv2getStructuringElementMORPH_ELLIPSEr   nprandomrandintr   eroder    imgparamskernels       r"   applyErosion.apply*   s^    **uRYY%6%6tzz!}djjQRmUV%WX
 ii2
r%   r   F      ?__name__
__module____qualname____firstlineno__r   r5   __static_attributes____classcell__r!   s   @r"   r   r   !       ( r%   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Dilation2   c                    > [         TU ]  X#S9  [        U5      [        L d  [        U5      [        L a  [        U5      S:X  d   eXl        g X4U l        g r   r   r   s       r"   r   Dilation.__init__3   r$   r%   c           
          [         R                  " [         R                  [        [        R
                  R                  U R                  S   U R                  S   S5      5      5      n[         R                  " XSS9nU$ r'   )	r*   r+   r,   r   r-   r.   r/   r   dilater1   s       r"   r5   Dilation.apply;   s^    **uRYY%6%6tzz!}djjQRmUV%WX
 jj3
r%   r7   r8   r:   rA   s   @r"   rD   rD   2   rB   r%   rD   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )BitmapC   c                 8   > [         TU ]  X4S9  X l        Xl        g Nr   )r   r   lowervalue)r    rQ   rP   r   r   r!   s        r"   r   Bitmap.__init__E   s    l8

r%   c                 \    UR                  5       nU R                  XU R                  :  '   U$ N)copyrQ   rP   )r    r2   r3   s      r"   r5   Bitmap.applyJ   s'    hhj $

$**
r%   )rP   rQ   )r      Fr9   r:   rA   s   @r"   rL   rL   C   s    
 r%   rL   c                     U R                   S   n[        [        R                  " U[	        U5      -  5      5      nX#-
  S-  n[        XXC-   2XDU-   24   XS4SS9n U R                   S   U-
  S-  nXXR-   2XUU-   24   $ )Nr(   r   )orderr   )shapeintr-   ceilfloatscizoom)r2   zoom_factorhchtoptrim_tops         r"   clipped_zoomrd   P   s    		!A	RWWQ{++,	-B6a-C
#(NC(N*+k-JRSC 		!q Q&H(,&a<(??@@r%   皙?c                 P   U S::  a  [         R                  " SS5      nSnO[         R                  " U * U S-   5      nSn[         R                  " X35      u  pV[         R                  " US-  US-  -   U S-  :*  US9nU[         R                  " U5      -  n[
        R                  " XtUS	9$ )
N   i	   )   ri   r(   )   rj   r   dtype)ksizesigmaX)r-   arangemeshgridasarraysumr*   GaussianBlur)radius
alias_blurrl   coordsrm   xyaliased_disks           r"   diskrz   \   s    {2u%F7FQJ/;;v&DA::q!tad{vqy8FLBFF<((LLjIIr%   c                   ^ ^^^^^ T T S-
  -  S:X  d   e[         R                  " T T 4[         R                  S9mSTS'   T mSmTc  [         R                  R	                  5       mUU4S jmUU UU4S jnUU UU4S jnTS	:  a   U" 5         U" 5         TS	-  mTU-  mTS	:  a  M   TTR                  5       -  mTTR                  5       -  $ )
z
Generate a heightmap using diamond-square algorithm.
Return square 2d array, side length 'mapsize', of floats in range 0-255.
'mapsize' must be a power of two.
r(   r   rk   )r   r   d   c                 R   > U S-  TTR                  T* TU R                  5      -  -   $ )N   )uniformrZ   )arrayrngwibbles    r"   wibbledmean#plasma_fractal.<locals>.wibbledmeanx   s*    qy6CKK$MMMMr%   c                     > TSTT2STT24   n U [         R                  " U SSS9-   nU[         R                  " USSS9-  nT" U5      TTS-  TT2TS-  TT24'   g)z[For each square of points stepsize apart,
calculate middle value as mean of points + wibbler   )shiftaxisr(   r   Nr-   roll)	cornerrefsquareaccummaparraymapsizestepsizer   s     r"   fillsquares#plasma_fractal.<locals>.fillsquares{   s     Qwx/781CCD	"'')2A"FFrww{"1== $ 	MGh.A(0RR	
r%   c                  v  > TT
S-  T	T
2T
S-  T	T
24   n TST	T
2ST	T
24   nU [         R                  " U SSS9-   nU[         R                  " USSS9-   nX#-   nT" U5      TST	T
2T
S-  T	T
24'   U [         R                  " U SSS9-   nU[         R                  " USSS9-   nXV-   nT" U5      TT
S-  T	T
2ST	T
24'   g)z\For each diamond of points stepsize apart,
calculate middle value as mean of points + wibbler   r   r(   r   r   Nr   )drgridulgridldrsumlulsumltsumtdrsumtulsumttsumr   r   r   r   s           r"   filldiamonds$plasma_fractal.<locals>.filldiamonds   s    MGh.A(0RR
 !GH,a.@@A"''&!!44"''&"155KVL
78#X]Wx%GGH "''&!!44"''&"155KVL
Q83Qwx5GGHr%   r   )r-   emptyfloat_r.   default_rngminmax)	r   wibbledecayr   r   r   r   r   r   r   s	   ` `  @@@@r"   plasma_fractalr   j   s     gk"a'''xx'*"))<HHTNHF
{ii##%N% %
 
( a-Q+	 a- Hhlln$$r%   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Fog   c                 r   > [         TU ]  X#S9  [        R                  R	                  5       U l        Xl        g rO   r   r   r-   r.   r   r   magr    r   r   r   r!   s       r"   r   Fog.__init__   ,    l899((*r%   c           	         [         R                  " UR                  [        R                  5      5      nUR
                  u  p4/ SQnU R                  S:  d  U R                  [        U5      :  a&  U R                  R                  S[        U5      5      nOU R                  nXV   n[        UR                  5       5      nUS:H  n[        R                  " U5      S-  nUR                  5       n	S[        R                  " [        R                  " [        X45      5      S-   5      -  n
US   [!        XS   U R                  S9S U2S U24   S[        R"                  4   -  nU(       a  [        R$                  " U5      nO[        R&                  " USSS	9nX-  n[        R(                  " X-  XS   -   -  SS5      S
-  nUR                  [        R                  5      $ )N))      ?r   )g       @r   )g      @g333333?r   r(        o@r   )r   r   r   .ri   r      )r
   	fromarrayastyper-   uint8sizer   r   r   integersgetbandsrq   r   mathr\   log2r   newaxissqueezerepeatclip)r    r2   r3   wr`   cindex
n_channelsisgraymax_valmax_sizefogs               r"   r5   	Fog.apply   sv   oocjj23xx,88a<488s1v-HH%%aQ0EHHEH(
qjjo%'')		$))CI"6":;;aDXQ4TXXNrPQrSUTUSUvVRZZ 	 **S/C))C+C
ggcmw1~61=Czz"((##r%   r   r   r   Fg      ?r:   rA   s   @r"   r   r      s    
$ $r%   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Frost   c                 r   > [         TU ]  X#S9  [        R                  R	                  5       U l        Xl        g rO   r   r   s       r"   r   Frost.__init__   r   r%   c           
         [         R                  " UR                  [        R                  5      5      nUR
                  u  p4/ SQnU R                  S:  d  U R                  [        U5      :  a&  U R                  R                  S[        U5      5      nOU R                  nXV   n[        R                  R                  [        5      n[        R                  R                  USS5      [        R                  R                  USS5      [        R                  R                  USS5      [        R                  R                  USS5      [        R                  R                  USS5      [        R                  R                  USS	5      /nU R                  R                  S[        U5      5      nX   n[         R                  " U5      R!                  S
5      n	U	R
                  u  pX4-  X-  :  a  [#        X-  U
-  5      nUn
O[#        X-  U-  5      n
Un[        R$                  " U	R'                  X45      5      n	U R                  R                  SX-
  S-   5      U R                  R                  SX-
  S-   5      pXX-   2XU-   24   n	[        UR)                  5       5      nUS:H  n[        R$                  " U5      nU(       a+  [        R*                  " USS9n[        R,                  " USSS9n[        R.                  " [        R"                  " US   U-  US   U	-  -   5      SS5      nUR                  [        R                  5      nU(       a  [        R0                  " U5      nU$ )N))g(\?g)\(?)g{Gz?g
ףp=
?)r9   r9   r   	frost_imgz
frost1.jpgz
frost2.pngz
frost3.pngz
frost4.jpgz
frost5.jpgz
frost6.jpgRGBr(   r   r   ri   r   )r
   r   r   r-   r   r   r   r   r   r   ospathdirname__file__joinopenconvertroundrq   resizer   expand_dimsr   r   r   )r    r2   r3   r   r`   r   r   file_dirfilenamefrostf_wf_hy_startx_startr   r   s                   r"   r5   Frost.apply   s   oocjj23xx488a<488s1v-HH%%aQ0EHHEH77??8,GGLL;=GGLL;=GGLL;=GGLL;=GGLL;=GGLL;=
 !!!S]3?

8$,,U3::539#&CC#&CC

5<<
34  88,,Q!<dhh>O>Osw{?
 +W{-BBC(
qjjo..1-C))C+CggbhhqtczAaD5L891cBjj"**S/C
r%   r   r   r:   rA   s   @r"   r   r      s    
3 3r%   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Snowi  c                 r   > [         TU ]  X#S9  [        R                  R	                  5       U l        Xl        g rO   r   r   s       r"   r   Snow.__init__  r   r%   c           	         SSK Jn  [        R                  " UR                  [        R
                  5      5      nUR                  u  pE/ SQnU R                  S:  d  U R                  [        U5      :  a&  U R                  R                  S[        U5      5      nOU R                  nXg   n[        UR                  5       5      nUS:H  n	[        R                  " U[        R                  S9S-  nU	(       a+  [        R                  " USS9n[        R                  " US	SS9nU R                  R!                  UR"                  S S US   US   S
9n
SXUS	   :  '   [        R                  " [        R$                  " U
R'                  5       SS5      S-  R                  [        R
                  5      SS9n
[)        5       nU
R+                  USS9  U" UR-                  5       S9n
U
R/                  US   US   U R                  R1                  SS5      S9  [2        R4                  " [        R6                  " U
R9                  5       [        R
                  5      [2        R:                  5      S-  n
U
S[        R<                  4   n
US   U-  nSUS   -
  [        R>                  " U[2        R@                  " U[2        RB                  5      RE                  XTS5      S-  S-   5      -  nX-  n[        R$                  " X-   [        RF                  " U
SS9-   SS5      S-  nUR                  [        R
                  5      nU	(       a  [        R&                  " U5      nU$ )Nr   )r
   ))re   333333?ri   r9   
   r~   g?)皙?r   r   r9      r~   ffffff?)g?r   r~   g?r   rg   r   r(   rk   r   r   r   ri   )r   locr   r   L)modePNG)format)blobr~   rj   iyi)rt   sigmaangle.   r   r9   )k)$
wand.imager
   r   r   r-   r   r   r   r   r   r   r   rq   float32r   r   normalrZ   r   r   r	   savegetvaluemotion_blurr   r*   imdecode
frombuffer	make_blobIMREAD_UNCHANGEDr   maximumcvtColorCOLOR_RGB2GRAYreshaperot90)r    r2   r3   	WandImager   r`   r   r   r   r   
snow_layeroutputgray_imgs                r"   r5   
Snow.apply  s   1oocjj23xx

 88a<488s1v-HH%%aQ0EHHEH(
qjjBJJ/%7..1-C))C+CXX__#))BQ-QqT1_N
()
!$%__WWZ'')1a036>>rxxHs

 u-FOO$56
Q4qt488+;+;D#+F 	 	

 LLj224bhh?AUAU  	  RZZ0
dSj!H

c3#5#56>>qQG#MPSS!
 
 	ggc&*)BBAqICOjj"**S/C
r%   r   r   r:   rA   s   @r"   r   r     s    
9 9r%   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )RainiG  c                 r   > [         TU ]  X#S9  [        R                  R	                  5       U l        Xl        g rO   r   r   s       r"   r   Rain.__init__H  r   r%   c                    [         R                  " UR                  [        R                  5      5      nUR                  5       nUR                  u  p4[        UR                  5       5      nUS:H  nU R                  R                  SS5      n/ SQnU R                  S:  d  U R                  [        U5      :  a  Sn	OU R                  n	X   nU R                  R                  XS-   5      n
U R                  R                  SS5      nU(       a  SOS	n[        R                  " U5      n[        X4S
5      n[        SU
5       H  nU R                  R                  SU5      nU R                  R                  SUU-
  5      nU R                  R                  SUU-
  5      nUU[         R"                  " U[         R$                  -  S-  5      -  -   nUU[         R&                  " U[         R$                  -  S-  5      -  -   n[)        U5      n[)        U5      nUR+                  UU4UU4/X|S9  M     [        R,                  " U5      R                  [        R                  5      nU$ )Nr(   r   )rE   F   Z   r      i<   rW   )rW   rW   rW   r   rj   g     f@)widthfill)r
   r   r   r-   r   rU   r   r   r   r   r   r   r   Drawr   ranger   sinpicosr[   linerq   )r    r2   r3   r   r`   r   r   
line_widthr   r   n_rainsslant	fillcolordraw
max_lengthilengthx1y1x2y2s                        r"   r5   
Rain.applyM  s   oocjj23hhjxx(
qXX&&q!,
88a<488s1v-EHHEH((##A2v.!!#r*!C	~~c"r]
q'"AXX&&q*5F""1a&j1B""1a&j1Bftxx%(?@@@Bftxx%(?@@@BRBRBIIBx"b**IM # jjo$$RXX.
r%   r   r   r:   rA   s   @r"   r  r  G  s    
 r%   r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Shadowio  c                 r   > [         TU ]  X#S9  [        R                  R	                  5       U l        Xl        g rO   r   r   s       r"   r   Shadow.__init__p  r   r%   c                 P   [         R                  " UR                  [        R                  5      5      nUR
                  u  p4[        UR                  5       5      nUS:H  n/ SQnU R                  S:  d  U R                  [        U5      :  a  SnOU R                  nXx   nUR                  S5      n[         R                  " SUR
                  S5      n	[        R                  " U	5      n
U R                  R                  XwS-   5      nU R                  R                  SUS-  5      nSnU R                  R                  US-  U5      nSnU R                  R                  US-  U5      nUS-
  nU R                  R                  SUS-  5      nUS-
  nU
R                  X4X4UU4UU4/SSSU4S9  [         R                   " X5      nUR                  S	5      nU(       a  ["        R$                  " U5      n[        R&                  " U5      R                  [        R                  5      nU$ )
Nr(   )@   `      r   RGBA)r   r   r   r       r   )r  r   )r
   r   r   r-   r   r   r   r   r   r   newr   r  r   r   polygonalpha_compositer   	grayscalerq   )r    r2   r3   r   r`   r   r   r   r   overlayr   transparencyr$  r%  r&  r'  x3y3x4y4s                       r"   r5   Shadow.applyu  s   oocjj23xx(
q88a<488s1v-EHHEHkk&!))FCHH.@A~~g&xx((F3XXq!q&)XXqAvq)XXqAvq)UXXq!q&)UXx"bB84Aq!\;R 	 	
 ##C1kk% $$S)Cjjo$$RXX.
r%   r   r   r:   rA   s   @r"   r*  r*  o  s    
& &r%   r*  c                   $    \ rS rSrSS jrS rSrg)UniMERNetTrainTransformi  c                    Xl         [        R                  " [        R                  " [        SS9[        R                  " [        5       [        5       [        5       [        5       [        5       /SS9[        R                  " [        S5      [        S5      /SS9[        R                  " SSSSS/ S	QSS
9[        R                  " SSS/ S	QSS9/SS9[        R                  " SSSSS9[        R                  " SSS9[        R                   " SSSSS9[        R"                  " SSS9[        R$                  " SS9[        R&                  " SS5      /5      U l        g )Ng?)r   r   )r   ri   r   )g333333ÿr   r(   ri   )r   r   r   )shift_limitscale_limitrotate_limitborder_modeinterpolationrQ   r   re   r9   )distort_limitrD  rE  rQ   r   g333333?   r   )r_shift_limitg_shift_limitb_shift_limitr   r   )gɿr   T_   r   穤N@a?rN  rN  ??rP  rP  )bitmap_probAComposerL   OneOfr   r   r   r  r*  r   rD   ShiftScaleRotateGridDistortionRGBShift
GaussNoiseRandomBrightnessContrastImageCompressionToGray	Normalizetrain_transform)r    rQ  kwargss      r"   r    UniMERNetTrainTransform.__init__  s   & yy		 JcR(62B CsK**()(2)*()*+"1 ((*-()*+"1!* -0 

2RSVWR3'**4DCH""2-d+46NO=! 
r%   c                     US   n[         R                  R                  5       U R                  :  a  SX"S:g  '   U R                  US9S   nX!S'   U$ )Nimager   r   ra  )r-   r.   rQ  r]  r    datar2   s      r"   __call__ UniMERNetTrainTransform.__call__  sU    7m99 0 00Cs
O"""-g6Wr%   )rQ  r]  N)g{Gz?r;   r<   r=   r>   r   re  r?    r%   r"   r?  r?    s    #
Jr%   r?  c                        \ rS rSrS rS rSrg)UniMERNetTestTransformi  c                     [         R                  " [         R                  " SS9[         R                  " SS5      /5      U l        g )NTrL  rM  rO  )rR  rS  r[  r\  test_transformr    r^  s     r"   r   UniMERNetTestTransform.__init__  s4    iid+46NO
r%   c                 <    US   nU R                  US9S   nX!S'   U$ )Nra  rb  rl  rc  s      r"   re  UniMERNetTestTransform.__call__  s/    7m!!!,W5Wr%   rp  Nrg  rh  r%   r"   rj  rj    s    
r%   rj  c                   @    \ rS rSrS
S jrS rS rSS jrS rS r	S	r
g)GoTImgDecodei  c                     Xl         X l        g rT   
input_sizerandom_paddingr    rv  rw  r^  s       r"   r   GoTImgDecode.__init__      $,r%   c                    [         R                  " UR                  S5      5      nUR                  [         R                  5      nUR                  5       nUR                  5       nX4:X  a  U$ X$-
  X4-
  -  S-  nSUS:  R                  [         R                  5      -  n[        R                  " U5      n[        R                  " U5      u  pxpUR                  XxX-   X-   45      $ Nr   r   rW   r-   r   r   r   r   r   r   r*   findNonZeroboundingRectcropr    r2   rd  r   min_valgrayrv   abr   r`   s              r"   crop_marginGoTImgDecode.crop_margin      xxC(){{288$((*((*J7#45;dSj((22&%%f-
axxquae,--r%   c                     [        US5      (       a  [        UR                  5       5      nOUR                  nUR                  u  p4X$U/$ Nr   hasattrr   r   channelsr   r    r2   r  r  heights        r"   get_dimensionsGoTImgDecode.get_dimensions  >    3
##3<<>*H||H%((r%   Nc                 2   [        U5      S:X  a}  Uu  pEXT::  a  XT4OXE4u  pg[        U[        5      (       a  UOUS   nU[        X-  U-  5      pUb,  X8::  a  [        SU SU 35      eX:  a  [        X9-  U
-  5      UpXT::  a  X4OX4u  pX/$ US   US   pX/$ Nr(   r   zmax_size = zN must be strictly greater than the requested size for the smaller edge size = r   
isinstancer[   
ValueErrorr    
image_sizer   r   r`   r   shortlongrequested_new_short	new_shortnew_longnew_wnew_hs                r"   _compute_resized_output_size)GoTImgDecode._compute_resized_output_size      t9>DA$%F1&KE*4T3*?*?$T!W"5s#*U28x #2$%hZ 0<<@6C  &*-h.BX.M*NPXx45FI0@ULE ~  7DG5~r%   c                     U R                  U5      u  p4n[        U[        5      (       a  U/nS nU R                  XE4X&5      nUR	                  [        US S S2   5      SS9nU$ Nr   r   )resampler  r  r[   r  r   r   r    r2   r   _image_heightimage_widthr   output_sizes           r"   r   GoTImgDecode.resize  o    '+':':3'?$dC  6D77'
 jj{4R401Aj>
r%   c                    US   n[         R                  " U5      n U R                  UR                  S5      5      nUR
                  S:X  d  UR                  S:X  a  g U R                  U[        U R                  5      5      nUR                  U R                  S   U R                  S   45        U R                  S   UR                  -
  nU R                  S   UR
                  -
  nU R                  (       aC  [        R                  R                  SUS-   S9n[        R                  R                  SUS-   S9nO
US-  nUS-  nUUXF-
  XW-
  4n[        R                  " [         R"                  " X85      5      US'   U$ ! [         a     g f = fNr   r   r   r(   lowhighr   ra  r
   r   r  r   OSErrorr  r  r   r   rv  	thumbnailrw  r-   r.   r/   r   r   expand	r    rd  r   r2   delta_widthdelta_height	pad_width
pad_heightpaddings	            r"   re  GoTImgDecode.__call__  c   
#jj"	""3;;u#56C ::?cii1nkk#s4??34tq)4??1+=>?ooa(3994q)CJJ6		))akAo)FI**q|a7G*HJ#q(I%*J#%	
 !>?W-  		    E? ?
FFru  FrT   r;   r<   r=   r>   r   r  r  r  r   re  r?   rh  r%   r"   rs  rs         -.)0	r%   rs  c                   @    \ rS rSrS
S jrS rS rSS jrS rS r	S	r
g)UniMERNetImgDecodei8  c                     Xl         X l        g rT   ru  rx  s       r"   r   UniMERNetImgDecode.__init__9  rz  r%   c                    [         R                  " UR                  S5      5      nUR                  [         R                  5      nUR                  5       nUR                  5       nX4:X  a  U$ X$-
  X4-
  -  S-  nSUS:  R                  [         R                  5      -  n[        R                  " U5      n[        R                  " U5      u  pxpUR                  XxX-   X-   45      $ r|  r}  r  s              r"   r  UniMERNetImgDecode.crop_margin=  r  r%   c                     [        US5      (       a  [        UR                  5       5      nOUR                  nUR                  u  p4X$U/$ r  r  r  s        r"   r  !UniMERNetImgDecode.get_dimensionsJ  r  r%   Nc                 2   [        U5      S:X  a}  Uu  pEXT::  a  XT4OXE4u  pg[        U[        5      (       a  UOUS   nU[        X-  U-  5      pUb,  X8::  a  [        SU SU 35      eX:  a  [        X9-  U
-  5      UpXT::  a  X4OX4u  pX/$ US   US   pX/$ r  r  r  s                r"   r  /UniMERNetImgDecode._compute_resized_output_sizeR  r  r%   c                     U R                  U5      u  p4n[        U[        5      (       a  U/nS nU R                  XE4X&5      nUR	                  [        US S S2   5      SS9nU$ r  r  r  s           r"   r   UniMERNetImgDecode.resizej  r  r%   c                    US   n[         R                  " U5      n U R                  UR                  S5      5      nUR
                  S:X  d  UR                  S:X  a  g U R                  U[        U R                  5      5      nUR                  U R                  S   U R                  S   45        U R                  S   UR                  -
  nU R                  S   UR
                  -
  nU R                  (       aC  [        R                  R                  SUS-   S9n[        R                  R                  SUS-   S9nO
US-  nUS-  nUUXF-
  XW-
  4n[        R                  " [         R"                  " X85      5      US'   U$ ! [         a     g f = fr  r  r  s	            r"   re  UniMERNetImgDecode.__call__u  r  r  ru  r  rT   r  rh  r%   r"   r  r  8  r  r%   r  c                   @    \ rS rSrS
S jrS rS rSS jrS rS r	S	r
g)UniMERNetResizei  c                     Xl         X l        g rT   ru  rx  s       r"   r   UniMERNetResize.__init__  rz  r%   c                    [         R                  " UR                  S5      5      nUR                  [         R                  5      nUR                  5       nUR                  5       nX4:X  a  U$ X$-
  X4-
  -  S-  nSUS:  R                  [         R                  5      -  n[        R                  " U5      n[        R                  " U5      u  pxpUR                  XxX-   X-   45      $ r|  r}  r  s              r"   r  UniMERNetResize.crop_margin  s    xxC(){{288$((*((*J7#45;dSj((22&%%f-
axxquae,--r%   c                     [        US5      (       a  [        UR                  5       5      nOUR                  nUR                  u  p4X$U/$ r  r  r  s        r"   r  UniMERNetResize.get_dimensions  r  r%   Nc                 2   [        U5      S:X  a}  Uu  pEXT::  a  XT4OXE4u  pg[        U[        5      (       a  UOUS   nU[        X-  U-  5      pUb,  X8::  a  [        SU SU 35      eX:  a  [        X9-  U
-  5      UpXT::  a  X4OX4u  pX/$ US   US   pX/$ r  r  r  s                r"   r  ,UniMERNetResize._compute_resized_output_size  r  r%   c                     U R                  U5      u  p4n[        U[        5      (       a  U/nS nU R                  XE4X&5      nUR	                  [        US S S2   5      SS9  U$ r  r  r  s           r"   r   UniMERNetResize.resize  sm    '+':':3'?$dC  6D77'
 	

5TrT*+a
8
r%   c                     US   n[         R                  " U5      n U R                  U5      nUR                  S:X  d  UR
                  S:X  a  g U R                  U[        U R                  5      5      nUR                  U R                  S   U R                  S   45        U R                  S   UR
                  -
  nU R                  S   UR                  -
  nU R                  (       aC  [        R                  R                  SUS-   S9n[        R                  R                  SUS-   S9nO
US-  nUS-  nUUX5-
  XF-
  4n[        R                  " [        R                   " X'5      5      US'   U$ ! [         a     g f = f)Nra  r   r(   r  r   )r
   r   r  r  r  r  r   r   rv  r  rw  r-   r.   r/   r   r   r  )r    rd  r2   r  r  r  r  r  s           r"   re  UniMERNetResize.__call__  sY   7mooc"	""3'C ::?cii1nkk#s4??34tq)4??1+=>?ooa(3994q)CJJ6		))akAo)FI**q|a7G*HJ#q(I%*J#%	
 !>?W+  		s   E0 0
E=<E=ru  r  rT   r  rh  r%   r"   r  r    s     -.)0	r%   r  c                        \ rS rSrS rS rSrg)UniMERNetImageFormati  c                     g rT   rh  rm  s     r"   r   UniMERNetImageFormat.__init__  s    r%   c                 X   US   nUR                   S S u  p4[        R                  " US-  5      S-  n[        R                  " US-  5      S-  nUS S 2S S 2S4   n[        R                  " USXS-
  4SXd-
  44SS9nUS S 2S S 2[        R
                  4   R                  SSS5      nXqS'   U$ )Nra  r   r2  r   )r(   r(   )constant_valuesr(   )rZ   r   r\   r-   padr   	transpose)r    rd  r2   im_him_wdivide_hdivide_wimg_expandeds           r"   re  UniMERNetImageFormat.__call__  s    7mYYr]
99TBY'",99TBY'",!Q'lff1ho&HO(<=v
 1a+,66q!Q?$Wr%   rh  Nrg  rh  r%   r"   r  r    s    r%   r  )   ri   N))
__future__r   r   r   r   r   environr*   r   numpyr-   ior	   albumentationsrR  PILr
   r   r   scipy.ndimager   r^   ImageOnlyTransformr   rD   rL   rd   r   rz   r   r   r   r   r  r*  r?  rj  rs  r  r  r  rh  r%   r"   <module>r     s5   '  % ' 	),

% & 
     * * )a"" "q## "
Q!! 
	A  rzz J6%r#$!

 #$L9A   9x?1 ?D%1 %P,Q!! ,^, ,^  X XvX XvX Xv r%   