
    ij~                         d dl Z d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 dZd ddZh dZh dZh d	Zdd
ZddZddZ	 	 	 	 	 	 	 ddZ	 	 	 	 ddZ	 	 	 ddZd Z	 ddZ	 ddZ	 	 	 	 	 	 	 ddZ	 ddZddZy)    N)backend)convert_to_tensor)	draw_seed)bilinearnearestlanczos3lanczos5bicubic   )r   r   >   wrapmirrorr   reflectconstant>   cubiclinearr
   r   r   r	   tricubic	trilinearc                 d   t        |       } t        j                  |      }|dk(  rdnd}t        | j                        dvrt        d| j                         | j                  |   dvrt        d| j                         | j                  |   dk(  r| S | j                  }t        j                  | j                  t              }| j                  |      } t        g d	| j                  
      }t        j                  | ||df      } t        j                  | |      } | j                  |      S )Nchannels_last      yInvalid images rank: expected rank 3 (single image) or rank 4 (batch of images). Received input with shape: images.shape=)r   r   zaInvalid channel size: expected 3 (RGB) or 1 (Grayscale). Received input with shape: images.shape=r   )gŏ1w-!?gbX9?gv/?dtype)axesaxis)r   r   standardize_data_formatlenshape
ValueErrorr   result_typefloatastypejnp	tensordotexpand_dims)imagesdata_formatchannels_axisoriginal_dtypecompute_dtypergb_weightss         p/var/www/html/emotional.easysim.app/public_html/venv/lib/python3.12/site-packages/keras/src/backend/jax/image.pyrgb_to_grayscaler2   /   s!   v&F11+>K%8BbM
6<<&"LL>+
 	

 ||M"&077=||nF
 	
 ||M"a'\\N''e<M]]=)F $ K ]]6;mR5HIF__V-8F==((    c                    t        |       } | j                  }t        j                  |      }|dk(  rdnd}t	        | j
                        dvrt        d| j
                         t        j                  |      s!t        dt        j                  |             t        j                  |      j                  }t        j                  t        j                  |       |k  d|       } t        j                  | d|      \  }}}t        j                  ||      }t        j                  ||      }t        j                  ||      }d	 }t        j                    ||||      |
      } | S )Nr   r   r   r   r   CInvalid images dtype: expected float dtype. Received: images.dtype=        r   c                 z   t        j                  t        j                  | |      |      }t        j                  t        j                  | |      |      }||z
  }t        j                  |dkD  |d      }t        j                  |dkD  |d      }t        j                  |dkD  ||z  d      }dd|z  z  }	t        j                  ||k(  |	|| z
  z  dz   |	| |z
  z  dz         }
t        j                  || k(  |	||z
  z  |
      }
t        j                  |dkD  |
d      |
dk  j	                  |
j
                        z   }
|
||fS )Nr         ?r6         @gUUUUUU?gUUUUUU?)r(   maximumminimumwherer'   r   )rgbvaluer;   range_
safe_value
safe_range
saturationnormhues              r1   rgb_planes_to_hsv_planesz,rgb_to_hsv.<locals>.rgb_planes_to_hsv_planesf   s'   CKK1-q1++ckk!Q/3YYuqy%5
YYvz637
YYuqy&:*=sC
cJ&'iiQJAENY&AENY&

 ii
DAENC8ii
C-s0B0B3990MMJ%%r3   r   )r   r   r   r!   r"   r#   r$   is_float_dtypestandardize_dtyper(   finfoepsr<   abssplitsqueezestack)	r+   r,   r   r-   rK   redgreenbluerG   s	            r1   
rgb_to_hsvrS   N   sE   v&FLLE11+>K%8BbM
6<<&"LL>+
 	

 !!%(&&-&?&?&F%GI
 	
 ))E


CYYswwv,c6:FyyM:C
++c=
)CKK}-E;;t]+D&( YY eT2F Mr3   c                 8   t        |       } | j                  }t        j                  |      }|dk(  rdnd}t	        | j
                        dvrt        d| j
                         t        j                  |      s!t        dt        j                  |             t        j                  | d|      \  }}}t        j                  ||      }t        j                  ||      }t        j                  ||      }d }t        j                   ||||      |	      } | S )
Nr   r   r   r   r   r5   r   c                    t        j                  | d      dz  }t        j                  t        j                  |dz
        dz
  dd      }t        j                  dt        j                  |dz
        z
  dd      }t        j                  dt        j                  |dz
        z
  dd      }d|z
  }||||z  z   z  }||||z  z   z  }	||||z  z   z  }
||	|
fS )Nr8   r9   g      @r6   g       @g      @)r(   modcliprL   )rF   rD   r@   dhdrdgdbone_minus_srP   rQ   rR   s              r1   hsv_planes_to_rgb_planesz,hsv_to_rgb.<locals>.hsv_planes_to_rgb_planes   s    WWS#$XXcggb3h'#-sC8XXcCGGBH--sC8XXcCGGBH--sC8J&{Z"_45zB67j2o56E4r3   r   )r   r   r   r!   r"   r#   r$   rH   rI   r(   rM   rN   rO   )r+   r,   r   r-   rF   rD   r@   r]   s           r1   
hsv_to_rgbr^      s   v&FLLE11+>K%8BbM
6<<&"LL>+
 	

 !!%(&&-&?&?&F%GI
 	
 !YYvq-@CU
++c=
)CZ7JKK}-E
  YY j%8}F Mr3   c	           
         t        j                  |      }|t        vrt        dt         d|       |dk7  rt        d|       |r|rt        d      t	        |      dk(  st        d|       t        |      }|\  }	}
t	        | j                        dk(  r[|d	k(  r%| j                  d
   f|z   | j                  d   fz   }n!| j                  d
   | j                  d   f|z   }| j                  d
   }n]t	        | j                        dk(  r-|d	k(  r|| j                  d   fz   }n,| j                  d
   f|z   }nt        d| j                         |rM| j                  }|d	k(  r|d   |d   }}n
|d   |d   }}t        t        ||	z        |
z        }t        t        ||      d      }t        t        ||
z        |	z        }t        t        ||      d      }t        t        ||z
        dz        }t        t        ||z
        dz        }|d	k(  rGt	        | j                        dk(  r| d d |||z   |||z   d d f   } ng| |||z   |||z   d d f   } nQt	        | j                        dk(  r| d d d d |||z   |||z   f   } n | d d |||z   |||z   f   } n
|r| j                  }|d	k(  r|d   |d   |d   }}}n|d   |d   |d   }}}t        t        ||	z        |
z        }t        ||      }t        t        ||
z        |	z        }t        ||      }t        t        ||z
        dz        }t        t        ||z
        dz        }|d	k(  r|d
kD  rt	        | j                        dk(  rht        j                  t        j                  |||f| j                        |z  | t        j                  ||||f| j                        |z  gd      }nt        j                  t        j                  |||f| j                        |z  | t        j                  |||f| j                        |z  gd
      }nd|d
kD  rt	        | j                        dk(  rht        j                  t        j                  |||f| j                        |z  | t        j                  ||||f| j                        |z  gd      }nt        j                  t        j                  |||f| j                        |z  | t        j                  |||f| j                        |z  gd      }ny| }nu|d
kD  rt	        | j                        dk(  rPt        j                  t        j                  |||f      |z  | t        j                  ||||f      |z  gd      }nt        j                  t        j                  |||f      |z  | t        j                  |||f      |z  gd      }n|d
kD  rt	        | j                        dk(  rOt        j                  t        j                  |||f      |z  | t        j                  ||||f      |z  gd      }nOt        j                  t        j                  |||f      |z  | t        j                  |||f      |z  gd      }n| }|} t        j                   j#                  | |||      S )N<Invalid value for argument `interpolation`. Expected of one . Received: interpolation=r   z\Invalid value for argument `fill_mode`. Only `'constant'` is supported. Received: fill_mode=zIOnly one of `pad_to_aspect_ratio` & `crop_to_aspect_ratio` can be `True`.   zPArgument `size` must be a tuple of two elements (height, width). Received: size=r   r   r   r   r   r   r   r   r   r   )method	antialias)r   r!   RESIZE_INTERPOLATIONSr$   r"   tupler#   intr&   maxminr(   concatenateonesr   jaximageresize)r+   sizeinterpolationre   crop_to_aspect_ratiopad_to_aspect_ratio	fill_mode
fill_valuer,   target_heighttarget_width
batch_sizer#   heightwidthcrop_height
crop_widthcrop_box_hstartcrop_box_wstartchannels
pad_height	pad_widthimg_box_hstartimg_box_wstart
padded_imgs                            r1   ro   ro      s    11+>K11J$%%?P
 	
 J11:=
 	
 3
 	
 t9>//3f6
 	
 ;D"&M<
6<<A/)LLO%,R0@/BBDLLOV\\!_5<D\\!_
	V\\	a	/)6<<+--DLLO%,D"LL>+
 	
 /)!"IuRyEF!"IuRyEF% 56EF#fk2A6v45EF
UJ/3
eF[$89A=>eEJ$67!;</)6<< A%#o&CC#o
&BB  #o&CC#o
&BB 6<< A%#o&CC#o
&BBD  #o&CC#o
&BBD
 
/)&+BirE"I8EF&+BirE"I8EFu}45DE
,
f|34}DE	y)	U:#67!;<U9u#459:/)!v||$)!$HH!+^UH M&,ll )	)
 #HH!+^UH M&,ll )	) "J" "%HH!/ A&,ll )	)
 #HH!/ A&,ll )	) "J   !#v||$)!$HH!+V^X N&,ll )	)
 #HH!+V^X N&,ll )	) "J" "%HH!' B&,ll )	)
 #HH!' B&,ll )	) "J" $
!v||$)!$HH!+X~u M )) #HH!+X~u M ))
 "J "%HHh%FG()"HHh%FG()	 	"J  !#v||$)!$HH!+Xv~ N )) #HH!+Xv~ N ))
 "J "%HHh%GH()"HHh%GH()	 	"J $
99]i   r3   c           	      Z   t        j                  |      }|t        j                         vr,t	        dt        t        j                                d|       |t        vrt	        dt         d|       t        |      }t        | j                        dvrt	        d| j                         t        |j                        dvrt	        d|j                         d	}t        | j                        d
k(  rt        j                  | d      } d}t        |j                        dk(  rt        j                  |d      }|dk(  rt        j                  | d      } | j                  d   }t        j                  | j                  dd  D cg c]  }t        j                  |       c}ddi}	t        j                  |	D 
cg c]  }
t        j                  |
d       c}
d      }t        j                   ||ddddf      }|d d df   }|d d df   }|d d df   }|d d df   }|j"                  d d df   j                  |      }|j"                  d d df   j                  |      }|j"                  d d df   j                  |      }|j"                  d d df   j                  |      }t        j$                  |ddgddggd      }t        j&                  ||d
d
f      }|d d dddf   }t        j$                  |ddgddgg      }|j"                  d d dddf   j                  d      }t        j(                  d||      }t        j*                  |dd      }|t        j&                  |g |j                  ddd      z  }t-        j.                  t0        j2                  j4                  j6                  t        |   ||      } t1        j8                  |      | |      }|dk(  rt        j                  |d      }|rt        j:                  |d      }|S c c}w c c}
w )Nr`   ra   8Invalid value for argument `fill_mode`. Expected of one . Received: fill_mode=r   r   )r   rb   zInvalid transform rank: expected rank 1 (single transform) or rank 2 (batch of transforms). Received input with shape: transform.shape=Fr   r   r   Tr   channels_firstr   rb   r   r   indexingijr   rb   r      )r   constant_values)r   zBhwij, Bjk -> Bhwik)sourcedestination)r#   ordermodecvalr   r   r   rb   )r   r!   AFFINE_TRANSFORM_INTERPOLATIONSkeysr$   setAFFINE_TRANSFORM_FILL_MODESr   r"   r#   r(   r*   	transposemeshgridarangerk   tileatpadreshapeeinsummoveaxis	functoolspartialrm   scipyndimagemap_coordinatesvmaprN   )r+   	transformrq   rt   ru   r,   need_squeezerx   rp   r   xindicesa0a2b1b2offsetcoordinates_map_coordinatesaffineds                       r1   affine_transformr     s	    11+>K;@@BBJ2779:; <*O-
 	

 33F*++A)N
 	

 "),I
6<<&"LL>+
 	

 9??6)(/1
 	
 L
6<<Aa0
9??q OOIA6	&&v|4aJ ||'-||AB'7	8t#**T
	8CGH oo.67	$7bG hhwQ1a 89G 
1a4B	1a4B	1a4B	1a4BQT"&&r*IQT"&&r*IQT"&&r*IQT"&&r*I q!fq!f-qI I
Aq'9:Iq!A#qy!FWWVAA'78FQ!QY'++A.I **2GYGK,,{21EK3;;v-Ev||-EQ-E-E1-EFFK !((		))-m<	 )chh'(=G&&--6++gA.NY 
9 	8s   
P# P(c                    t        j                  |      }t        j                         vr,t	        dt        t        j                                d       t        | j                        dvrt	        d| j                         |j                  dd  dk7  s|j                  dvrt	        d|j                         |j                  dd  dk7  s|j                  dvrt	        d	|j                         |j                  |j                  k7  r%t	        d
|j                   d|j                         d}t        | j                        dk(  rt        j                  | d      } d}t        |j                        dk(  rt        j                  |d      }t        |j                        dk(  rt        j                  |d      }|dk(  rt        j                  | d      } | j                  \  }}t        t        j                  |d      t        j                  |d            }t        j                  t        j                        t        j                        d      \  }	}
t        j                   |	j#                         |
j#                         t        j$                  |	      j#                         gd      fd} t'        j(                  |      |      }fd} t'        j(                  |d      | |      }t        j*                  |dd      }|dk(  rt        j                  |d      }|rt        j,                  |d      }|S )Nr`   ra   r   r   rc   )r   rb   )rb   r   zfInvalid start_points shape: expected (4,2) for a single image or (N,4,2) for a batch. Received shape: zdInvalid end_points shape: expected (4,2) for a single image or (N,4,2) for a batch. Received shape: zRstart_points and end_points must have the same shape. Received start_points.shape=z, end_points.shape=Fr   r   r   Trb   r   r   float32r   xy)r   c                     | d   d   z  | d   d   z  z   dz   }| d   d   z  | d   d   z  z   | d   z   |z  }| d   d   z  | d   d   z  z   | d	   z   |z  }t        j                  ||gd
      S )N   r      r   r8   rb   r   r   r   r   )r(   rO   )r   denomx_iny_ingrids       r1   transform_coordinatesz4perspective_transform.<locals>.transform_coordinates:  s    !tAw&1Q)??#EaL47"Yq\DG%;;ilJ aL47"Yq\DG%;;ilJ yy$A..r3   c                 |    fd} t        j                  |d      t        j                  | dd            S )Nc                     t         j                  j                  j                  | t           d      j                        S )Nr   r   )rm   r   r   r   r   r   )channel_imgcoordsru   ry   rq   rz   s    r1   interpolate_channelzMperspective_transform.<locals>.interpolate_image.<locals>.interpolate_channelG  sG    99$$445mD 5  gfe$%r3   r   in_axesr   )rm   r   r(   r   )rn   r   r   ru   ry   rq   rz   s    ` r1   interpolate_imagez0perspective_transform.<locals>.interpolate_imageF  s:    	% 	% 8sxx+Q7LLA&
 	
r3   )r   r   r   r   r   r   )r   r!   r   r   r$   r   r"   r#   ndimr(   r*   r   compute_homography_matrixasarrayr   r   rO   ravel	ones_likerm   r   r   rN   )r+   start_points
end_pointsrq   ru   r,   r   _
transformsr   yr   transformed_coordsr   outputr   ry   rz   s      ``          @@@r1   perspective_transformr     s    11+>K;@@BBJ2779:; <*O-
 	
 6<<&"LL>+
 	
 "#&(L,=,=V,K88D8J8J7KM
 	
 &*//*G88B8H8H7IK
 	
 Z---,,8,>,>+? @  * 0 013
 	
 L
6<<Aa0
<!#|!<
:!__Za8
&&v|4 ,,Avua*L	2Ji0J
 <<

5)3::f+=MDAq99aggiCMM!,<,B,B,DEAND/ 9"78D
 9SXX'8"F \\&!R(F&&v|4V!,Mr3   c                 
   | d   | d   }}|d   |d   }}t        j                  |      }t        j                  |      }t        j                  ||||||| |z  | |z  gd      }t        j                  ||||||| |z  | |z  gd      }	t        j                  ||	gd      }
t        j
                  t        j                  ||gd      d      }t         j                  j                  |
|      }|j                  d      S )N).r   ).r   r   r   r   )	r(   
zeros_liker   rO   rk   r*   linalgsolverN   )r   r   start_xstart_yend_xend_yzerosrl   x_rowsy_rowscoefficient_matrixtarget_vectorhomography_matrixs                r1   r   r   a  s(   #F+\&-AWGf%z&'95ENN5!E==DYYHuHu		
 F YYHuHu		
 F &&)9BOO'*42M 

(();]K$$R((r3   c                    t        |       } t        |      }|j                  d   t        | j                        k7  r(t        d| j                   d|j                  d          t        |j                        dk  rt        d|j                         |t        vrt        dt        t               d|       |t        d      vrt        ddd	g d
|       t        j                  j                  j                  | ||||      S )Nr   zaFirst dim of `coordinates` must be the same as the rank of `inputs`. Received inputs with shape: z and coordinate leading dim of rb   zOInvalid coordinates rank: expected at least rank 2. Received input with shape: z8Invalid value for argument `fill_mode`. Expected one of r   z4Invalid value for argument `order`. Expected one of r   z. Received: order=)r   r#   r"   r$   MAP_COORDINATES_FILL_MODESr   rangerm   r   r   r   )inputsr   r   rt   ru   s        r1   r   r     s5    v&F#K0Ks6<<00++1<<. 9)//235
 	
 ;!++6+<+<*=?
 	
 22F-./ 0"%
 	

 E!HB1vh(1
 	
 99,,UIz r3   c                 l   d }t        |       } t        j                  | j                        }t        ||      }t	        | j
                        dvrt        d| j
                         d}| j                  dk(  r| t        j                  df   } d}|d	k(  rt        j                  | d
      } | j
                  d   } ||||      }t        j                  ||dddf      }t        j                  j                  | |ddd|      }	|d	k(  rt        j                  |	d      }	|r|	j                  d      }	|	S )Nc                 ~    fdfd} || |      t         j                  t         j                  d d d d f   }|S )Nc                     t        j                  |       t        j                  | dz
  dz        z
  }t        j                  d||z  dz  z        }|t        j                  |      z  S )Nr   r   rb   g      )r(   r   arrayexpsum)rp   sigmar   kernel1dr   s       r1   _get_gaussian_kernel1dzNgaussian_blur.<locals>._create_gaussian_kernel.<locals>._get_gaussian_kernel1d  sb    

4u-		Qe1 A wwtq5yQ&667Hcggh///r3   c                 l     | d   |d         } | d   |d         }t        j                  ||      S )Nr   r   )r(   outer)rp   r   
kernel1d_x
kernel1d_yr   s       r1   _get_gaussian_kernel2dzNgaussian_blur.<locals>._create_gaussian_kernel.<locals>._get_gaussian_kernel2d  s<    /QqBJ/QqBJ99Z44r3   )r(   newaxis)kernel_sizer   r   r   kernelr   s     `  @r1   _create_gaussian_kernelz.gaussian_blur.<locals>._create_gaussian_kernel  s;    	0	5
 (U;KKa*
 r3   r   r   r   Fr   .Tr   r   r   r   r   SAMENCHWOIHWr   window_stridespaddingdimension_numbersfeature_group_countr   r   r   )r   r   rI   r   r"   r#   r$   r   r(   r   r   r   rm   laxconv_general_dilatedrN   )
r+   r   r   r,   r   r   r   num_channelsr   blurred_imagess
             r1   gaussian_blurr    s<   $ v&F%%fll3Ee51E
6<<&"LL>+
 	
 L{{aS()o%v|4<<?L$[%?FXXf|Q156FWW112( 2 N o%~|D'//Q/7r3   c                    t        j                  |      }|t        j                         vr,t	        dt        t        j                                d|       |t        vrt	        dt         d|       t        | j                        dvrt	        d| j                         t        |       } t        |      }t        |      }| j                  }t        d|z        dz  t        d|z        dz  f}	d	}
t        | j                        d
k(  rt        j                  | d      } d}
|dk(  r| j                  \  }}}}d}n| j                  \  }}}}d}t        |      }t        j                   j#                  ||||f|      |z  }t        j                   j#                  ||||f|      |z  }t%        t        j                  ||      |	||f|      }t%        t        j                  ||      |	||f|      }t        j&                  |      }t        j&                  |      }t        j(                  t        j*                  |      t        j*                  |            \  }}|d d d d d f   |d d d d d f   }}|||z  z   }|||z  z   }t        j,                  |       }|dk(  r~t/        |      D ]o  }|j0                  d|f   j                  t        j2                  t/        |      D cg c]'  }t5        | |d|f   ||   ||   gt        |   ||      ) c}            }q nt/        |      D ]w  }|j0                  d d |d d d d f   j                  t        j2                  t/        |      D cg c]'  }t5        | ||df   ||   ||   gt        |   ||      ) c}            }y |
rt        j&                  |d      }|j7                  |      }|S c c}w c c}w )Nr`   ra   r   r   r   r   r   r   Fr   r   r   Tr   r   )r#   r   )r   r   r,   .)r   rt   ru   )r   r!   r   r   r$   r   r   r"   r#   r   r   rh   r(   r*   r   rm   randomnormalr  rN   r   r   r   r   r   rO   r   r'   )r+   alphar   rq   rt   ru   seedr,   input_dtyper   r   rx   ry   rz   r   channel_axisdxdyr   r   distorted_xdistorted_ytransformed_imagesir?   s                            r1   elastic_transformr    s!    11+>K;@@BBJ2779:; <*O-
 	

 33F*++A)N
 	
 6<<&"LL>+
 	
 v&Fe$Ee$E,,Kq5y>A%s1u9~'9:KL
6<<Aa0o%.4ll+
FE8.4ll+
HfeT?D

VU3; 	 	
 	  	

VU3; 	 	
 	  
.en	
B 
.en	
B 
RB	RB<<

5)3::f+=>DAqT1aZ=!D!QJ-qAebj.Kebj.K/o%x 	A!3!6!6sAv!>!B!B		 "'z!2  ("1c19-(^[^<"A -# '0'1"	$ x 	A!3!6!6q!Qz!B!F!F		 "'z!2  ("1a9-(^[^<"A -# '0'1"	$  [[);!D+22;?K$s   (,O.,Oc           	          |t         vrt        dt          d|       t        |       } t        |      }t        |      }t        j                  j                  | ||||||      S )Nz5Invalid value for argument `method`. Expected of one z. Received: method=)SCALE_AND_TRANSLATE_METHODSr$   r   rm   rn   scale_and_translate)r+   output_shapescaletranslationspatial_dimsrd   re   s          r1   r  r  o  s|     00C*++>vhH
 	
 v&Fe$E#K0K99(( r3   c                 D   t        |       } |dk7  rt        j                  | d      } | j                  d   }t        j                  g dg dg dg| j
                        t        j                  t        j                  d d d d f   }t        j                  g dg dg d	g| j
                        t        j                  t        j                  d d d d f   }t        j                  ||dddf      }t        j                  ||dddf      }t        j                  j                  | |d
dd|      }t        j                  j                  | |d
dd|      }|dk7  r,t        j                  |d      }t        j                  |d      }t        j                  ||gd      }	|	S )Nr   r   r   )r   r   r   )rc   r   rb   r   )r   rc   r   )r   r   r   )r   rb   r   r   r   r   r   r   r   r   )r   r(   r   r#   r   r   r   r   rm   r  r  rO   )
r+   r,   r  sobel_xsobel_ykernel_xkernel_yedges_xedges_yedgess
             r1   sobel_edgesr%    s{   v&F &&v|4<<?L ii	Z,FLL	kk3;;1$&G ii	y),FLL	kk3;;1$&G xx,1a!89Hxx,1a!89H gg**2( + G gg**2( + G &&--6--6 IIw(r2ELr3   )N)r   FFFr   r6   N)r   r   r   N)r   r   N)r   r6   ))r   r   )r8   r8   N)g      4@g      @r   r   r6   NN)T)r   rm   	jax.numpynumpyr(   	keras.srcr   keras.src.backend.jax.corer   keras.src.random.seed_generatorr   rf   r   r   r   r  r2   rS   r^   ro   r   r   r   r   r  r  r  r%   r3   r1   <module>r,     s     
   8 5  #   	 )>/d%V oj _L bJ*)\ BED ?C<B 
	~P 8.r3   