
    %h,                     z    d dl Z d dlmZmZ d dlZd dlZddZddZddZ	dgfdZ
d Zd	 Zdd
Zd ZddZddZy)    N)ImageImageEnhancec                 T   |j                   | j                   k7  r|j                  | j                         }t        j                  |       dz  } t        j                  |      dz  }t	        | ||      }t        j                  |dz  j                  t        j                              }|S )N     o@r)	sizeresizenparray%FB_blur_fusion_foreground_estimator_2r   	fromarrayastypeuint8)imagemaskr   estimated_foregroundimage_maskeds        ,/var/www/html/mariraj/BiRefNet/image_proc.pyrefine_foregroundr      s    yyEJJ{{5::&HHUOe#E88D>E!D@PQR??$85$@#H#H#RSL    c                 d    |d d d d d f   }t        | | | ||      \  }}t        | |||d      d   S )N   r   r   )#FB_blur_fusion_foreground_estimator)r   alphar   Fblur_Bs        r   r   r      sC    !Q*E3ueUA'IAv.ua!LQOOr   c                    t        | t        j                        rt        j                  |       dz  } t	        j
                  |||f      d d d d d f   }t	        j
                  ||z  ||f      }||dz   z  }t	        j
                  |d|z
  z  ||f      }|d|z
  dz   z  }	||| ||z  z
  d|z
  |	z  z
  z  z   }t        j                  |dd      }||	fS )Nr   gh㈵>   r   )
isinstancer   r   r   cv2blurclip)
r   r   Br   r   blurred_alpha
blurred_FA	blurred_Fblurred_B1A	blurred_Bs
             r   r   r      s    %%%'HHUQF+Aq$J7M!e)aV,Jmd23I((1E	?QF3KM 1T9:IE	"	"a%i9%<	<> 	>A
1aAi<r   flipc                     d|v rt        | |      \  } }d|v rt        | |      \  } }d|v rt        | |      \  } }d|v rt        |       } d|v rt	        |       } | |fS )Nr*   croprotateenhancepepper)cv_random_fliprandom_croprandom_rotatecolor_enhancerandom_pepper)r   labelpreproc_methodss      r   preprocr7   )   sx     %eU3u "5%0u?"$UE2uO#e$?"e$%<r   c                     t        j                          dkD  r>| j                  t        j                        } |j                  t        j                        }| |fS )Ng      ?)random	transposer   FLIP_LEFT_RIGHT)imgr5   s     r   r0   r0   7   sB    }}mmE112 5 56:r   c                 ~   d}| j                   d   }| j                   d   }t        t        ||      dz        }t        j                  j                  ||z
  |      }t        j                  j                  ||z
  |      }||z
  dz	  ||z
  dz	  ||z   dz	  ||z   dz	  f}| j                  |      |j                  |      fS )N   r   r   皙?)r	   intminr   r9   randintr,   )r   r5   borderimage_widthimage_heightcrop_win_widthcrop_win_heightrandom_regions           r   r1   r1   >   s    F**Q-K::a=L[,/#56FYY&&{V';[INii''v(=|LO	~	%!+l_.LQR-RU`cqUqvwTw		'A-/M ::m$ejj&???r   c                     t         j                  }t        j                         dkD  rEt        j                  j	                  | |      }| j                  ||      } |j                  ||      }| |fS )Ng?)r   BICUBICr9   r   rB   r-   )r   r5   anglemoderandom_angles        r   r2   r2   K   s[    ==D}}yy((%7\40\40%<r   c                    t        j                  dd      dz  }t        j                  |       j	                  |      } t        j                  dd      dz  }t        j
                  |       j	                  |      } t        j                  dd      dz  }t        j                  |       j	                  |      } t        j                  dd      dz  }t        j                  |       j	                  |      } | S )N      g      $@r      r>   )r9   rB   r   
Brightnessr.   ContrastColor	Sharpness)r   bright_intensitycontrast_intensitycolor_intensitysharp_intensitys        r   r3   r3   T   s    ~~a,t3##E*223CDE2.5!!%(001CDEnnQ+d2Ou%--o>EnnQ+d2O""5)11/BELr   c                    ||fd}t        j                  |       }|j                  \  }} ||d d  j                         ||      }|j	                  ||g      }t        j                  t        j                  |            S )Nc                 z    t        t        |             D ]#  }| |xx   t        j                  ||      z  cc<   % | S )N)rangelenr9   gauss)immeansigma_is       r   gaussianNoisyz&random_gaussian.<locals>.gaussianNoisya   s7    B. 	0BrFfll4//F	0	r   )r   asarrayshapeflattenreshaper   r   r   )r   r`   ra   rc   r<   widthheights          r   random_gaussianrj   `   sk    #5 
 **U
CIIME6
A($
6C
++ufo
&C??288C=))r   c                    t        j                  |       } t        || j                  d   z  | j                  d   z        }t	        |      D ]l  }t        j                  d| j                  d   dz
        }t        j                  d| j                  d   dz
        }t        j                  dd      dz  | ||f<   n t        j                  |       S )Nr   r      )	r   r   r@   re   r\   r9   rB   r   r   )r<   NnoiseNumirandXrandYs         r   r4   r4   m   s    
((3-C1syy|#ciil23H8_ 7q#))A,"23q#))A,"23"NN1a036E5L7 ??3r   )Z   )rP   )r?   gffffff?)g~jtX?)r9   PILr   r   numpyr   r!   r   r   r   r7   r0   r1   r2   r3   rj   r4    r   r   <module>rv      sL     #  
P  ,2( 
@	
* r   