
    ijݢ                     8   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 Zd Zd Zd Zd Zd Zeeeed d dZ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)scipy)bilinearnearestlanczos3lanczos5bicubic   )r   r   >   wrapmirrorr   reflectconstant>   cubiclinearr   r   r	   r
   tricubic	trilinearc                    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| j                         S | j                  }t        j                  | j                  t              }| j                  |      } t        j                  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
ValueErrorcopyr   result_typefloatastypenparray	tensordotexpand_dims)imagesdata_formatchannels_axisoriginal_dtypecompute_dtypergb_weights
grayscaless          r/var/www/html/emotional.easysim.app/public_html/venv/lib/python3.12/site-packages/keras/src/backend/numpy/image.pyrgb_to_grayscaler7   .   s*   v&F11+>K%8BbM
6<<&"LL>+
 	

 ||M"&077=||nF
 	
 ||M"a'{{}\\N''e<M]]=)F ((36<<HKfk8KLJ
?J^,,    c                    t        |       } t        j                  | j                        }t        j                  |      }|dk(  rdnd}t        | j                        dvrt        d| j                         t        j                  |      st        d|       t        j                  |      j                  }t        j                  t        j                  |       |k  d|       } t        j                  | d|      \  }}}t        j                   ||      }t        j                   ||      }t        j                   ||      }d	 }t        j"                   ||||      |
      } | 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         ?r;         @gUUUUUU?gUUUUUU?)r+   maximumminimumwherer*   r   )rgbvaluer@   range_
safe_value
safe_range
saturationnormhues              r6   rgb_planes_to_hsv_planesz,rgb_to_hsv.<locals>.rgb_planes_to_hsv_planesc   s'   

2::a+Q/**RZZ1-q1XXeai4
XXfqj&#6
XXeai*)<cB
cJ&'hhQJAENY&AENY&

 hhuz41q5>37hhvz3,c	/A/A#))/LLJ%%r8   r!   )r   r   standardize_dtyper   r#   r$   r%   r&   is_float_dtype	ml_dtypesfinfoepsr+   rA   abssplitsqueezestackr*   )	r/   r0   r   r1   rQ   redgreenbluerL   s	            r6   
rgb_to_hsvrY   K   sM   v&F%%fll3E11+>K%8BbM
6<<&"LL>+
 	

 !!%(&&+W.
 	
 //%
 
$
$CXXbffVns*C8Fxx=9C
**S-
(CJJum,E::dM*D&( XX eT2F ==r8   c                 V   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                   ||||      |	      } | j                  |      S )
Nr   r   r   r   r   r:   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 )Nr=   r>         @r;          @      @)r+   modcliprR   )rK   rI   rE   dhdrdgdbone_minus_srV   rW   rX   s              r6   hsv_planes_to_rgb_planesz,hsv_to_rgb.<locals>.hsv_planes_to_rgb_planes   s    VVC#WWRVVBH%+S#6WWS266"s(++S#6WWS266"s(++S#6J&{Z"_45zB67j2o56E4r8   r!   )r   r   r   r#   r$   r%   r&   rN   rM   r+   rS   rT   rU   r*   )r/   r0   r   r1   rK   rI   rE   rf   s           r6   
hsv_to_rgbrg   }   s   v&FLLE11+>K%8BbM
6<<&"LL>+
 	

 !!%(&&-&?&?&F%GI
 	
  XXfa?CU
**S-
(CJ6JJJum,E
  XX j%8}F ==r8   c	           
      t   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(  rL|d	k(  r%| j                  d
   f|z   | j                  d   fz   }n| j                  d
   | j                  d   f|z   }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   } nv| |||z   |||z   d d f   } n`t	        | j                        dk(  r| d d d d |||z   |||z   f   } n/| d d |||z   |||z   f   } n|r| j                  }| j                  d
   }|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        | |||      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   _resize)r/   sizeinterpolationrn   crop_to_aspect_ratiopad_to_aspect_ratio	fill_mode
fill_valuer0   target_heighttarget_widthr%   heightwidthcrop_height
crop_widthcrop_box_hstartcrop_box_wstart
batch_sizechannels
pad_height	pad_widthimg_box_hstartimg_box_wstart
padded_imgs                            r6   resizer      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"IefHu}45DE
,
f|34}DE	y)	U:#67!;<U9u#459:/)!v||$)!#GG!+^UH M&,ll )	)
 #GG!+^UH M&,ll )	) "J" "$GG!/ A&,ll )	)
 #GG!/ A&,ll )	) "J   !#v||$)!#GG!+V^X N&,ll )	)
 #GG!+V^X N&,ll )	) "J" "$GG!' B&,ll )	)
 #GG!' B&,ll )	) "J" $
!v||$)!#GG!+X~u M )) #GG!+X~u M ))
 "J "$GGX~u$EF()"GGX~u$EF()	 	"J  !#v||$)!#GG!+Xv~ N )) #GG!+Xv~ N ))
 "J "$GGXv~$FG()"GGXv~$FG()	 	"J $
64KKr8   c                 P   t        j                  ||      }d|z  }|rt        j                  |d      nd}t        j                  ||      dz   |z  ||z  z
  dz
  }	t        j                  |	t         j
                  d d f   t        j                  | |      d d t         j
                  f   z
        |z  }
 ||
      }t        j                  |dd      }t        j                  t        j                  |      dt        j                  t         j                        j                  z  kD  t        j                  |t        j                  |dk7  |d            d      }| dz
  }t        j                  t        j                  |	d	k\  |	|k        t         j
                  d d f   |d      S )
Nr=   r         ?r   T)r"   keepdimsg     @@r         )r+   r(   r?   arangerR   newaxissumrA   rP   float32rQ   dividelogical_and)
input_sizeoutput_sizescaletranslationkernelrn   r   	inv_scalekernel_scalesample_fxweightstotal_weight_suminput_size_minus_0_5s                 r6   _compute_weight_matr     s    NN5+.EeI1:2::i-L 
;e	,s	2i?
	
!	"
	  	RZZ]#ii
%0BJJ?@	
 		  QiGvvgA=hh
 6BHHRZZ,@,D,D#DD
		RXX.!35EqI	
 	
G &+88
x4'5I)IJJJM	
 		 r8   c           
      n    |dk(  rt               S t        j                  |d       }|t        d      t	         fdt        t                    D              }|D cg c]+  } j                  |   dk7  r|    j                  |   z  nd- }}t         ||dgt        |      z  ||      S c c}w )Nr   zUnknown resize methodc              3   N   K   | ]  }j                   |   |   k7  s|  y wN)r%   ).0iimager%   s     r6   	<genexpr>z_resize.<locals>.<genexpr>  s)      A%((Bs   %%r   r=   r;   )	_resize_nearest_kernelsgetr&   rp   ranger$   r%   _scale_and_translate)r   r%   rm   rn   r   spatial_dimsdr   s   ``      r6   rv   rv     s    ue,,fd+~011 U$ L
  &+[[^q%8a5;;q>!cAE 
  	L!! s   "0B2c                    | j                   t        fdt        t                    D              }|D ]  }|   |   }}t	        j
                  |t        j                        dz   |z  |z  }t	        j                  |      j                  t        j                        }t        d       gt              z  }|||<   | t        |         }  | S )Nc              3   :   K   | ]  }|   |   k7  s|  y wr    )r   r   input_shapeoutput_shapes     r6   r   z"_resize_nearest.<locals>.<genexpr>  s%      k!nQ.Os   r   r   )r%   rp   r   r$   r+   r   r   floorr*   int32slice)	r   r   r   r   mnoffsetsindicesr   s	    `      @r6   r   r     s    ''K [)* L  1~|A199Qbjj1C71<q@((7#**2884;-#k"22
eGn Hr8   c                 Z    t        j                  ddt        j                  |       z
        S Nr   r   )r+   r?   rR   r   s    r6   _fill_triangle_kernelr     s    ::aRVVAY''r8   c                     d| z  dz
  | z  | z  dz   }t        j                  | dk\  d| z  dz   | z  dz
  | z  dz   |      }t        j                  | dk\  d|      S )Ng      ?g      @r=   r   r^   r]   r;   )r+   rA   )r   outs     r6   _fill_keys_cubic_kernelr     sg    !GcMQ!
#c
)C
((18tax#~2S8A=CS
IC88AHc3''r8   c                    | t        j                  t         j                  |z        z  t        j                  t         j                  |z  | z        z  }t        j                  |dkD  t        j                  |t        j                  |dk7  t         j                  dz  |dz  z  d            d      }t        j                  || kD  d|      S )NgMbP?r   rk   r   r;   )r+   sinpirA   r   )radiusr   yr   s       r6   _fill_lanczos_kernelr     s    	""RVVBEEAI,>%??A
((	D"))ArxxQq1a4CDaC 88AJS))r8   c                     t        d|       S )Nr\   r   r   s    r6   <lambda>r         .sA6 r8   c                     t        d|       S )N      @r   r   s    r6   r   r     r   r8   )r   r   r   r   r	   r
   c           	         | j                   }t        |      dk(  r| S t        j                  | j                  t        j
                        r"| j                  t        j                        }d}	n| j                         }d}	t        |      D ]~  \  }
}|| j                  z  }||   ||   }}t        ||||
   ||
   ||      j                  |j                        }t        j                  |||df      }t        j                  |d|      } |	rat        j                  t        j                  |      | j!                         | j#                               }|j                  | j                        }|S )Nr   TFr   r   )r%   r$   r+   
issubdtyper   integerr*   r   r'   	enumeratendimr   r-   moveaxisr`   roundrs   rr   )r   r   r   r   r   r   rn   r   outputuse_roundingr   r   r   r   ws                  r6   r   r     s/    ''K
<A	}}QWWbjj)"**%,' ,1J1~|A1q%(KNFI

&
 	
 faq!f5VR+, &)1557AEEG<qww'Mr8   c                    t        j                  |      }|t        j                         vr,t	        dt        t        j                                d|       |t        vrt	        dt         d|       t        |       } t        |      }t        | j                        dvrt	        d| j                         t        |j                        dvrt	        d|j                         t        j                  | j                        }t        j                  |d	      }| j                  |      } |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   j+                         }|d d df   j+                         }|d d df   j+                         }|d d df   j+                         }||d d df<   ||d d df<   ||d d df<   ||d d df<   t        j,                  |ddgddggd      }t        j.                  ||	ddf      }|d d dddf   j+                         }t        j,                  |ddgddgg      }d|d d dddf<   t        j0                  d||      }t        j2                  |dd      }|t        j.                  |g |j                  ddd      z  }t        j4                  t7        |	      D cg c]  }t9        | |   ||   t        |   ||      ! c}d      }|dk(  rt        j                   |d      }|rt        j:                  |d      }|j                  |      S c c}
w c c}w c c}w )Nri   rj   8Invalid value for argument `fill_mode`. Expected of one . Received: fill_mode=r   r   )r   rk   zInvalid transform rank: expected rank 1 (single transform) or rank 2 (batch of transforms). Received input with shape: transform.shape=r   Fr   r   r!   Tr   channels_firstr   rk   r   r   indexingijr   rk   r      )r   constant_values)r   zBhwij, Bjk -> Bhwik)sourcedestinationorderr{   r|   r   r   r   rk   )r   r#   AFFINE_TRANSFORM_INTERPOLATIONSkeysr&   setAFFINE_TRANSFORM_FILL_MODESr   r$   r%   rM   r   r(   r*   r+   r.   	transposemeshgridr   rt   tiler'   padreshapeeinsumr   rU   r   map_coordinatesrT   )r/   	transformrx   r{   r|   r0   input_dtyper3   need_squeezer   rw   r   r   r   a0a2b1b2offsetcoordinatesr   affineds                         r6   affine_transformr   %  sI    11+>K;@@BBJ2779:; <*O-
 	

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

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

 9??6)(/1
 	
 ++FLL9K''Y?M]]=)F  /I L
6<<AQ/
9??q NN915	&&fl3aJ {{&,ll12&6	7d"))D/	7BFH nn-56	#6RG ggg
Aq!Q78G 
1a4			B	1a4			B	1a4			B	1a4			BIadOIadOIadOIadO yaVaV,<aPI

9z1a&89Iq!A#qy!&&(FVVF1v1v&67FIa1ai ))17IFK++k"!DK2::f&>&>a&>&>A&>??K hh :&		
  q	A5mD#%		
 G &&,,w5**W1->>+&&a 
8 	78		
s   ,Q"Q$Qc           	      H   t        j                  |      }t        |      }t        |      }|t        vrt	        dt         d|       t        | j                        dvrt	        d| j                         |j                  dvs|j                  dd  dk7  rt	        d|j                         |j                  dvs|j                  dd  dk7  rt	        d	|j                         |j                  |j                  k7  r%t	        d
|j                   d|j                         | j                  }|dk(  r| j                  d      } 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k(  rt        j                  |d      }|j                  d   dk(  r|dkD  rt        j                  ||df      }t        j                  t        j                   |
t        j"                        t        j                   |	t        j"                        d      \  }}t        j$                  ||	|
|f      }t'        |      D ]  }||   \  }}}}}}}}||z  ||z  z   dz   }||z  ||z  z   |z   |z  }||z  ||z  z   |z   |z  }t        j(                  |j+                         |j+                         gd      }g }t'        |      D ]G  }| |d d d d |f   }t-        ||t        |   d|      } |j/                  | j1                  |	|
             I t        j(                  |d      ||<    |dk(  rt        j                  |d      }|rt        j2                  |d      }|j                  |      }|S )Nri   rj   r   r   )rk   r   rl   )r   rk   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=float16r   Fr   r   r!   Trk   r   r   r   r   xy)r   r=   r   r   r   r   )r   r#   r   r   r&   r$   r%   r   r   r*   r+   r.   r   compute_homography_matrixr   r   r   r   emptyr   rU   ravelr   appendr   rT   )!r/   start_points
end_pointsrx   r|   r0   r   r   r   r   r   r   
transformsr   r   r   r   r   a1r   a3a4a5a6a7denomx_iny_incoordsmapped_channelschannelchannel_imgmapped_channels!                                    r6   perspective_transformr    s'    11+>K$\2L":.J;;J./ 0*O-
 	
 6<<&"LL>+
 	
 &,*<*<RS*AV*K88D8J8J7KM
 	
 f$
(8(8(=(G88B8H8H7IK
 	
 Z---,,8,>,>+? @  * 0 013
 	
 ,,Kiy)L
6<<AQ/
<!#~~l;
:!^^JQ7
&&fl3*0,,'Jx*<DJ
:!^^JQ7
aJNWWZ*a9
;;
		%rzz*
		&

+DAq XXz65(;<F: 7)3A&BBBBQa#%Qa"$-Qa"$-4::<6Q?X 
	JG Aq'!12K,5mD$%N "">#9#9&%#HI
	J HH_26q	+7. &&fl3F+]];'FMr8   c                 
   t        |       } t        |      }t        j                  | j                  |j                  t              }t        j                  |d      }| j                  |      } |j                  |      }| d d ddf   | d d ddf   }}| d d ddf   | d d ddf   }}| d d ddf   | d d ddf   }	}| d d ddf   | d d ddf   }}
|d d ddf   |d d ddf   }}|d d ddf   |d d ddf   }}|d d ddf   |d d ddf   }}|d d ddf   |d d ddf   }}t        j                  t        j                  ||t        j                  |      t        j                  |      t        j                  |      t        j                  |      | |z  | |z  gd      t        j                  t        j                  |      t        j                  |      t        j                  |      ||t        j                  |      | |z  | |z  gd      t        j                  ||t        j                  |      t        j                  |      t        j                  |      t        j                  |      | |z  | |z  gd      t        j                  t        j                  |      t        j                  |      t        j                  |      ||t        j                  |      | |z  | |z  gd      t        j                  ||t        j                  |      t        j                  |      t        j                  |      t        j                  |      | |z  | |z  gd      t        j                  t        j                  |      t        j                  |      t        j                  |      ||t        j                  |      |	 |z  |	 |z  gd      t        j                  ||t        j                  |      t        j                  |      t        j                  |      t        j                  |      |
 |z  |
 |z  gd      t        j                  t        j                  |      t        j                  |      t        j                  |      ||t        j                  |      | |z  | |z  gd      gd      }t        j                  ||||||	|
|gd      }t        j                  |d      }|j                  |      }|j                  |      }t        j                  j                  ||      }t        j                  |ddg      }|j                  |      S )	Nr   r   r   rk   r   r   r!      )r   r   r(   r   r)   r*   r+   rU   	ones_like
zeros_liker.   linalgsolver   )r  r  r   r3   start_x1start_y1start_x2start_y2start_x3start_y3start_x4start_y4end_x1end_y1end_x2end_y2end_x3end_y3end_x4end_y4coefficient_matrixtarget_vectorhomography_matrixs                          r6   r  r    s/   $\2L":.J 2 2J4D4DeLE''y9M&&u-L""5)J%aAg.Q1W0EhH%aAg.Q1W0EhH%aAg.Q1W0EhH%aAg.Q1W0EhH1a(*Q1W*=FF1a(*Q1W*=FF1a(*Q1W*=FF1a(*Q1W*=FFHHLL(MM&)MM&)MM&)I&I&	  HHMM&)MM&)MM&)LL(I&I&	  HHLL(MM&)MM&)MM&)I&I&	  HHMM&)MM&)MM&)LL(I&I&	  HHLL(MM&)MM&)MM&)I&I&	  HHMM&)MM&)MM&)LL(I&I&	  HHLL(MM&)MM&)MM&)I&I&	  HHMM&)MM&)MM&)LL(I&I&	 yi	
T Wl\ HH		
 M NN=r:M+22=A!((7M		(:MJ

#4r1g>##E**r8   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        j                                d|       |t        d      vrt        ddd	g d
|       t        || j                        D cg c]  \  }}t        t        j                  |j                               j                  t               d	z   d      t        t        j                  |j                               j                  t              d	z   |z
  d      f }}}t        ||      D cg c]  \  }}||d   z    }	}}ddddj!                  ||      }
|dk(  rt        j"                  | ||
|      }nt        j"                  | ||
      }t%        j&                  |j(                        r|j                  d      }t*        j,                  j/                  ||	|||      }|j                  | j(                        S c c}}w c c}}w )Nr   zaFirst dim of `coordinates` must be the same as the rank of `inputs`. Received inputs with shape: z and coordinate leading dim of rk   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=edger   	symmetric)r   r   r   r   )moder   r4  r   )r   r4  cval)r   r%   r$   r&   MAP_COORDINATES_FILL_MODESr   r   r   ziprr   r+   r   rs   r*   rq   ceilr   r   r   rN   r   r   ndimager   )inputsr   r   r{   r|   crw   paddingpshifted_coordspad_modepaddedresults                r6   r   r     s    v&F#K0Ks6<<00++1<<. 9)//235
 	
 ;!++6+<+<*=?
 	
 22F-22456 7"%
 	

 E!HB1vh(1
 	
 ;5
 At !%%'"))#..2A6 '',q047;	
G  ,/w+DE41aa!A$hENE 
c)Y	 
 JG(J
 h7 fll+y)]]**e)* + F ==&&5 Fs   BI8'I>c           	      Z   d }t        |       } t        |      }t        |      }t        j                  | j                        }t        j                  |d      }| j                  |      } |j                  |      }t        | j                        dvrt        d| j                         d}t        | j                        dk(  rt        j                  | d      } d	}|d
k(  rt        j                  | d      } | j                  \  }}	}
} |||||      }|j                  d   |j                  d   }}|dz
  dz  }|dz
  |z
  }|dz
  dz  }|dz
  |z
  }t        j                  |       }t        |      D ]r  }t        |      D ]b  }t        j                  | |d d d d |f   ||f||ffd      }t        j                   j#                  ||d d d d |f   d      ||d d d d |f<   d t |d
k(  rt        j                  |d      }|rt        j$                  |d      }|j                  |      S )Nc                     fdfd} || |      }|d d d d t         j                  f   }t        j                  |dd|f      }|j                        S )Nc                     t        j                  |       | dz
  dz  z
  }t        j                  d||z  dz  z        }|t        j                  |      z  S )Nr   r   rk   r   )r+   r   expr   )rw   sigmar   kernel1dr   s       r6   _get_gaussian_kernel1dzNgaussian_blur.<locals>._create_gaussian_kernel.<locals>._get_gaussian_kernel1d  sP    		$e,qA~=Avvda%iA%556HbffX...r8   c                     t        j                  |       }  | d   |d         } | d   |d         }t        j                  ||      S r   )r+   asarrayouter)rw   rG  
kernel1d_x
kernel1d_yrI  r   s       r6   _get_gaussian_kernel2dzNgaussian_blur.<locals>._create_gaussian_kernel.<locals>._get_gaussian_kernel2d  sL    ::dE*D/QqBJ/QqBJ88J
33r8   r   )r+   r   r   r*   )kernel_sizerG  num_channelsr   rO  r   rI  s      `  @r6   _create_gaussian_kernelz.gaussian_blur.<locals>._create_gaussian_kernel  sV    	/
	4 (U;1bjj()!Q!56}}U##r8   r   r   r   Fr   r   r!   Tr   r   r   rk   r   r5  validr   )r   r   rM   r   r(   r*   r$   r%   r&   r+   r.   r   
empty_liker   r   r   signal
convolve2drT   )r/   rP  rG  r0   rR  r   r3   r   r   r   r   rQ  r   kernel_hkernel_wpad_hpad_h_afterpad_wpad_w_afterblurred_imagesrD   chrA  s                          r6   gaussian_blurr_    s;   $" v&F#K0Ke$E++FLL9K''Y?M]]=)FLL'E
6<<&"LL>+
 	
 L
6<<AQ/&&fl3.4ll+J|$UL+F  a&,,q/hH\aEQ,&K\aEQ,&K]]6*N: 	% 	BVVq!Q{#%{';<F
 +0,,*A*Aq!Rx(w +B +N1aB;'		 &&nlCN;  --r8   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        |       } | j                  }t        ||      }t        ||      }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!                  |      }|j#                  |||fdd      j%                  |      |z  }|j#                  |||fdd      j%                  |      |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(  ret1        |      D ]V  }t        j2                  t1        |      D cg c]'  }t5        | |d|f   ||   ||   gt        |   ||      ) c}      |d|f<   X nlt1        |      D ]^  }t        j2                  t1        |      D cg c]'  }t5        | ||df   ||   ||   gt        |   ||      ) c}      |d d |d d d d f<   ` |
rt        j(                  |d      }|j%                  |      }|S c c}w c c}w )Nri   rj   r   r   r   r   r      r   Fr   r   r!   Tr   r   r;   r=   )rw   locr   )rP  rG  r0   .r   )r   r#   r   r   r&   r   r   r$   r%   r   r   rq   r+   r.   r   randomdefault_rngnormalr*   r_  rT   r   r   r  r   rU   r   )r/   alpharG  rx   r{   r|   seedr0   r   rP  r   r   r   r   r   channel_axisrngdxdyr   r   distorted_xdistorted_ytransformed_imagesr   rD   s                             r6   elastic_transformro    s
    11+>K;@@BBJ2779:; <*O-
 	

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

VU3C
HOO	
 	  	

VU3C
HOO	
 	  

r-en	
B 

r-en	
B 
BB	BB;;ryy'6):;DAqT1aZ=!D!QJ-qAebj.Kebj.Kv.o%x 	A)+ #:.	  $q#qy)$QQ8=mL"+#-	*sAv&	 x 	A-/XX #:.	  $q!Sy)$QQ8=mL"+#-	.q!Qz*	 ZZ(:C+22;?=		s   3,O
,O
c           	      d   |t         vrt        dt          d|       |dv rd}n|dv rd}t        |       } t        |      }t        |      }t        |   }t	        j
                  |j                  |j                        }|j                  |      }|j                  |      }t        | ||||||      S )Nz5Invalid value for argument `method`. Expected of one z. Received: method=)r   r   r   triangler   )r   r   r   r   )	SCALE_AND_TRANSLATE_METHODSr&   r   r   r   r(   r   r*   r   )	r/   r   r   r   r   rm   rn   r   r   s	            r6   scale_and_translaters    s     00C*++>vhH
 	
 @@	3	3v&Fe$E#K0KfF[->->?ELLE$$U+K r8   c           	         ddl m} t        |       } |dk(  rt        j                  | d      } | j
                  \  }}}}t        j                  ||||df| j                        }t        |      D ]f  }t        |      D ]V  }	|j                  | |d d d d |	f   d      ||d d d d |	df<   |j                  | |d d d d |	f   d      ||d d d d |	df<   X h |dk(  rt        j                  |d	      }|S )
Nr   )r:  r   r   rk   r   r!   r   )r   r   r   rk   r   )
r   r:  r   r+   r   r%   zerosr   r   sobel)
r/   r0   r:  batchr   r   r   edgesrD   r<  s
             r6   sobel_edgesry    s   v&F&&fl3%+\\"E65( HHeVUHa8ME5\ Mx 	MA#*==1a
1C!=#LE!Q1a- #*==1a
1C!=#LE!Q1a- 	MM &&UO4Lr8   r   )r   FFFr   r;   N)r   r   r   N)r   r   N)r   r;   ))r   r   )r=   r=   N)g      4@r   r   r   r;   NN)T)$rO   numpyr+   	keras.srcr   keras.src.backend.numpy.corer   keras.src.random.seed_generatorr   keras.src.utils.module_utilsr   ro   r   r   r7  rr  r7   rY   rg   r   r   rv   r   r   r   r   r   r   r   r  r  r   r_  ro  rs  ry  r   r8   r6   <module>r     s-      : 5 .  #   	 -:/ d% V mL`'T6 ((* $%$&66D j'b jZS+n BE:'| ?CI.\ 
	yF "Jr8   