
    ijύ                     N   d dl Z d dlZd dlZ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Z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 Zd Zd Zd Z	 d'dZ	 d(dZ 	 	 	 	 	 	 	 d)dZ!d Z"d Z#d Z$e"e#d d dZ%d Z&d  Z'	 d*d!Z(d#d"Z)y)+    N)backend)convert_to_tensor)moveaxis)	draw_seed)bilinearnearestlanczos3lanczos5bicubicarea)r   r   )constantr   wrapreflect>   r   mirrorr   r   r   >   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t        j                  |       S | j                  }t        j                  | j                  t              }t        j                  | |      } t        g d	| j                  
      }t        j                  | ||df      } t        j                  | |      } t        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   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tfidentityr   result_typefloatcast	tensordotexpand_dims)imagesdata_formatchannels_axisoriginal_dtypecompute_dtypergb_weightss         w/var/www/html/emotional.easysim.app/public_html/venv/lib/python3.12/site-packages/keras/src/backend/tensorflow/image.pyrgb_to_grayscaler6   3   s/   v&F11+>K%8BbM
6<<&"LL>+
 	

 ||M"&077=||nF
 	
 ||M"a'{{6""\\N''e<MWWV]+F $ K \\&+]B4GHF^^F7F776>**    c                    t        |       } | j                  }t        j                  |      }t	        | j
                        dvrt        d| j
                         t        j                  |      s!t        dt        j                  |             |dk(  rEt	        | j
                        dk(  rt        j                  | d      } nt        j                  | d      } t        j                  j                  |       } |dk(  r^t	        | j
                        dk(  rt        j                  | d      } | S t	        | j
                        d	k(  rt        j                  | d
      } | S Nr   r   zCInvalid images dtype: expected float dtype. Received: images.dtype=channels_firstr   r      r   r   r   r<   r   r   r   r   r<   r   r<   r   r   )r   r   r   r$   r%   r&   r'   is_float_dtypestandardize_dtyper(   	transposeimage
rgb_to_hsvr/   r0   r   s      r5   rD   rD   R   8   v&FLLE11+>K
6<<&"LL>+
 	

 !!%(&&-&?&?&F%GI
 	
 &&v||!\\&,7F\\&)4FXX  (F&&v||!\\&,7F M !#\\&)4FMr7   c                    t        |       } | j                  }t        j                  |      }t	        | j
                        dvrt        d| j
                         t        j                  |      s!t        dt        j                  |             |dk(  rEt	        | j
                        dk(  rt        j                  | d      } nt        j                  | d      } t        j                  j                  |       } |dk(  r^t	        | j
                        dk(  rt        j                  | d      } | S t	        | j
                        d	k(  rt        j                  | d
      } | S r9   )r   r   r   r$   r%   r&   r'   r@   rA   r(   rB   rC   
hsv_to_rgbrE   s      r5   rH   rH   o   rF   r7   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vrt        d	 j                         |d
k(  rEt	         j                        dk(  rt        j                   d       nt        j                   d       |rt        j                         }	|	d   |	d   c|\  }
}t        j                  t        j                  |
z  d      |z  d      }t        j                  t        j                  |      d      }t        j                  |d      }t        j                  t        j                  |z  d      |
z  d      }t        j                  t        j                  |      d      }t        j                  |d      }t        j                  t        j                  |z
  d      dz  d      }t        j                  t        j                  |z
  d      dz  d      }t	         j                        dk(  r d d |||z   |||z   d d f    nM |||z   |||z   d d f    n7|r4t        j                         }	|	d   |	d   c|\  }
}t        j                  t        j                  |
z  d      |z  d      }t        j                  |      }t        j                  |d      }t        j                  t        j                  |z  d      |
z  d      }t        j                  |      }t        j                  |d      }t        j                  t        j                  |z
  d      dz  d      t        j                  t        j                  |z
  d      dz  d      t	         j                        dk(  r|t        j                         d   t        j                         d   t        j                  dkD   fd fd      t        j                  dkD   fdfd      nat        j                         d   t        j                  dkD   fd fd      t        j                  dkD   fdfd       t        j                  j                   |||      }|d
k(  r^t	         j                        dk(  rt        j                  |d      }|S t	         j                        dk(  rt        j                  |d      }|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`.r<   zPArgument `size` must be a tuple of two elements (height, width). Received: size=r   r   r:   r   r;   r=   r   float32int32r   r   r   c            
          t        j                  t        j                   fj                        z  t        j                   fj                        z  gd      S Nr   r   r"   r(   concatonesr   )
batch_sizechannels
fill_valuer/   img_box_hstartwidths   r5   <lambda>zresize.<locals>.<lambda>   sq    		'I"(,, %	%
 'I"(,, %	%  r7   c                       S N r/   s   r5   rY   zresize.<locals>.<lambda>	       r7   c            
          t        j                  t        j                   fj                        z  t        j                   fj                        z  gd      S )Nr   r<   r"   rQ   )rT   rU   rV   heightr/   img_box_wstart
padded_imgs   r5   rY   zresize.<locals>.<lambda>  sq    		'J"(,, %	%
 #'J"(,, %	%  r7   c                       S r[   r\   rb   s   r5   rY   zresize.<locals>.<lambda>      
 r7   c            	          t        j                  t        j                   fj                        z  t        j                   fj                        z  gd      S )Nr   r   r"   rQ   )rU   rV   r/   rW   rX   s   r5   rY   zresize.<locals>.<lambda>#  sm    		+UH="(,, %	%
 +UH="(,, %	%  r7   c                       S r[   r\   r]   s   r5   rY   zresize.<locals>.<lambda>3  r^   r7   c            	          t        j                  t        j                   fj                        z  t        j                   fj                        z  gd      S rP   rQ   )rU   rV   r`   r/   ra   rb   s   r5   rY   zresize.<locals>.<lambda>7  sm    		#^X>"(,, %	%
 ##^X>"(,, %	%  r7   c                       S r[   r\   rd   s   r5   rY   zresize.<locals>.<lambda>G  re   r7   )method	antialiasr>   r?   )r   r$   RESIZE_INTERPOLATIONSr'   r%   tupler&   r(   rB   r,   maximumminimumcondrC   resize)r/   sizeinterpolationrk   crop_to_aspect_ratiopad_to_aspect_ratio	fill_moderV   r0   r&   target_heighttarget_widthcrop_height
crop_widthcrop_box_hstartcrop_box_wstart
pad_height	pad_widthresizedrT   rU   r`   rW   ra   rb   rX   s   `      `           @@@@@@@r5   rq   rq      s:    11+>K11J$%%?P
 	
 J11:=
 	
 3
 	
 t9>//3f6
 	
 ;D
6<<&"LL>+
 	

 &&v||!\\&,7F\\&)4F b	59&*#|ggGGEM)95D
 jjFK!@!Dggk73WWGGF\)95E

 ZZ

5* =qA
WWZ1
''GGF[()4q8'
 ''GGEJ&	2Q6
 v||!/K"??/J">>F /K"??/J">>F
 
 b	59&*#|WWGGEM)95D

 ZZ
3
WWZ1
GGGGF\)95E
	 JJui0	GGIw/	GGJ'3a7
 GGI%y1A5w
 v||!&)!,Jxx'*H"   %J( "   #%J* xx'*H"  %J( "   #%J( hhoo]i  G &&v||!ll7L9G N !#ll7I6GNr7   c           	         t        j                  |      }|t        vrt        dt         d|       |t        vrt        dt         d|       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      } t        j                  j                  | t        j                  |t        j                        t        j                  |       dd ||j                         |j                               }t        j                  || j                        }|dk(  rt        j                  |d      }|rt        j                   |d      }|S )NrJ   rK   8Invalid value for argument `fill_mode`. Expected of one . Received: fill_mode=r   r   )r   r<   zInvalid transform rank: expected rank 1 (single transform) or rank 2 (batch of transforms). Received input with shape: transform.shape=Fr   r   r"   Tr   r:   r;   r   r   )r/   
transformsoutput_shaperV   rs   rv   r>   )r   r$   AFFINE_TRANSFORM_INTERPOLATIONSr'   AFFINE_TRANSFORM_FILL_MODESr%   r&   r(   r.   rB   raw_opsImageProjectiveTransformV3r,   rM   upperensure_shapesqueeze)r/   	transformrs   rv   rV   r0   need_squeezeaffineds           r5   affine_transformr   V  s    11+>K;;J./ 0*O-
 	

 33F*++A)N
 	
 6<<&"LL>+
 	

 9??6)(/1
 	
 L
6<<AQ/
9??q NN915	&&fl3jj33779BJJ7XXf%a+#))+//# 4 G oogv||4G&&,,w5**W1-Nr7   c                    t        j                  |      }t        |t        j                        }t        |t        j                        }|t
        vrt        dt
         d|       t        | j                        dvrt        d| j                         |j                  j                  dvs|j                  dd  dk7  rt        d	|j                         |j                  j                  dvs|j                  dd  dk7  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      } t        ||      }t        |j                        dk(  rt        j                  |d      }t        j                  j                  | t        j                  |t        j                        t        j                  |       dd ||j!                               }t        j"                  || j                        }|dk(  rt        j                  |d      }|rt        j$                  |d      }|S )Nr   rJ   rK   r   r   )r<   r   rL   )r   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"   Tr<   r:   r;   r   r   )r/   r   r   rV   rs   r>   )r   r$   r   r(   rM   r   r'   r%   r&   rankr.   rB   compute_homography_matrixr   r   r,   r   r   r   )	r/   start_points
end_pointsrs   rV   r0   r   r   outputs	            r5   perspective_transformr     s    11+>K$\DL":RZZ@J;;J./ 0*O-
 	

 6<<&"LL>+
 	
 f,0B0B230G L 1 88D8J8J7KM
 	
 F*j.>.>rs.Cv.M88B8H8H7IK
 	
 Z---,,8,>,>+? @  * 0 013
 	
 L
6<<AQ/
<!#~~l;
:!^^JQ7
&&fl3),
CI
9??q NN915	ZZ22779BJJ7XXf%a+#))+ 3 F __VV\\2F&&fl3F+Mr7   c                 p	   | 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      }t         j
                  j                  ||      }t        j                  |ddg      }|S )Nr   r   r<   r   r   r"      )r(   stack	ones_like
zeros_liker.   linalgsolvereshape)r   r   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                        r5   r   r     s   %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		(:MJ

#4r1g>r7   c                 N    |dz
  }t        j                  | |z   d|z  z  |z
        S )Nr   r<   )r(   abs)indexrr   ss      r5   _mirror_index_fixerr   n  s,    qA66519Q'!+,,r7   c                 t    t         j                  j                  t        d| z  dz   d|z  dz         dz
  d      S )Nr<   r   )r(   mathfloordivr   )r   rr   s     r5   _reflect_index_fixerr   t  s:    77AIM1t8a<81<a r7   c                     | j                   j                  r| nt        j                  |       } t        j                  | t        j
                        }t        j                  d| j                         }||fgS Nr   )r   
is_integerr(   roundr,   rN   r   )
coordinater   weights      r5   _nearest_indices_and_weightsr   z  s\     &&11
rxx
7K  GGJ)E[[J,,-FFOr7   c                     t        j                  |       }| |z
  }d|z
  }t        j                  |t         j                        }||f|dz   |fgS r   )r(   floorr,   rN   )r   lowerupper_weightlower_weightr   s        r5   _linear_indices_and_weightsr     sQ    HHZ E%L|#LGGE288$EL!EAI|#<==r7   c                 d   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        ||j                        }t        j                  |d	      }|dk(  rt        }n|d
k(  rt        }nt        d      fd}g }	t        ||j                        D ]J  \  }
} ||
      }g }|D ]%  \  }} |||      \  }}|j                  |||f       ' |	j                  |       L g }t        j                   |	 D ]'  }t        | \  }}}t        j"                  t        j$                  |            }t        j"                  t        j&                  ||            }|d   j                  }t        j(                  ||      }t        j(                  ||d   j                        }dk(  rDt        j*                  |d	      }t        j(                  ||      }t        j,                  |||      }|j                  t/        j0                  t2        j4                  |      |z         * t/        j0                  t2        j6                  |      }|j                  j8                  rt        j:                  |      }t        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 r<   zOInvalid coordinates rank: expected at least rank 2. Received input with shape: z8Invalid value for argument `fill_mode`. Expected one of r   r   r"   r   z+map_coordinates currently requires order<=1c                    dk(  r)| dk\  | |k  z  }t        j                  | d|dz
        }||fS dk(  r?t        j                  | d|dz
        t        j                  | t         j                        fS dv rt        j                  |       } |dz  }t         j
                  j                  | |      }||k  }| }t        j                  ||||z
        } dk(  rt        j                  || dz
  |       } | t        j                  | t         j                        fS d	k(  rGt         j
                  j                  | |      } | t        j                  | t         j                        fS t        d
       )Nr   r   r   r   r   )r   r   r<   r   r   zUnknown fill_mode: )	r(   clip_by_valuer   boolr   r   modwherer'   )	coordsrr   validsafe_coordssize_2r   underoverrv   s	           r5   process_coordinatesz,map_coordinates.<locals>.process_coordinates  sX   
"q[Vd]3E**61dQh?K%%)###FAtax8",,bgg;   //VVF^FAXF''++ff-C$JE6DXXeS&3,7FI%$
F;2<<bgg>>>& WW[[.F2<<bgg>>>29+>??r7   r   )r   r&   r%   r'   MAP_COORDINATES_FILL_MODESsetkeysr   r(   unstackr   r   NotImplementedErrorzipappend	itertoolsproductrB   r   	gather_ndr,   
reduce_allr   	functoolsreduceoperatormuladdr   r   )inputscoordinatesorderrv   rV   	input_arrcoordinate_arrs
interp_funr   valid_1d_interpolationsr   rr   interp_nodesvalid_interpr   r   
safe_indexr   outputsitemsindices
validitiesweightsgatheredr   	all_validfill_value_typedresults      `                        r5   map_coordinatesr     s    "&)I'4OQ3y#77++4??*; <-33A679
 	
 ?  !A%++:+@+@*AC
 	
 22F-22456 7"%
 	
 #:Y__EJjjq9Oz1
	!0
!"OPP@6 !A 5
D!*-) 	=ME6 3E4 @JUF ;<	= 	 &&|45 G""$;< K'*E{$W,,rxx01<<Y @A 
  778U+778WQZ%5%56
"jq9I!wwz59xx	85EFHy''g>IJ!K$ hllG4F!!&!7769??++r7   c                    d }t        |       } t        j                  | j                        }t        ||      }t        ||      }t	        | j
                        dvrt        d| j
                         d}t	        | j
                        dk(  rt        j                  | d      } d	}|d
k(  rt        j                  | d      } t        j
                  |       d   } |||||      }t        j                  j                  | |g dd      }	|d
k(  rt        j                  |	d      }	|rt        j                  |	d      }	|	S )Nc                     fdfd} || |      }t        j                  || d   | d   ddf      }t        j                  |dd|dg      }t        j                  |      }|S )Nc                     t        j                  |       | dz
  dz  z
  }t        j                  d||z  dz  z        }|t        j                  |      z  S )Nr   r   r<         )r(   rangeexp
reduce_sum)rr   sigmaxkernel1dr   s       r5   _get_gaussian_kernel1dzNgaussian_blur.<locals>._create_gaussian_kernel.<locals>._get_gaussian_kernel1d  sP    U+tax1n<Avvda%iA%556HbmmH555r7   c                     t        j                  |       }  | d   |d         } | d   |d         }t        j                  ||d      S )Nr   r   r    )r(   r,   r-   )rr   r   
kernel1d_x
kernel1d_yr  r   s       r5   _get_gaussian_kernel2dzNgaussian_blur.<locals>._create_gaussian_kernel.<locals>._get_gaussian_kernel2d  sN    774'D/QqBJ/QqBJ<<
JQ??r7   r   r   )r(   r   tiler,   )kernel_sizer   num_channelsr   r  kernelr  s      `  @r5   _create_gaussian_kernelz.gaussian_blur.<locals>._create_gaussian_kernel  sk    	6
	@ (U;F[^[^Q$JK!Qa!89'r7   r   r   r   Fr   r   r"   Tr:   r;   r   )r   r   r   r   SAME)stridespaddingr>   )r   r   rA   r   r%   r&   r'   r(   r.   rB   nndepthwise_conv2dr   )
r/   r	  r   r0   r  r   r   r
  r  blurred_imagess
             r5   gaussian_blurr    s/   $ v&F%%fll3E#Ku=Ke51E
6<<&"LL>+
 	
 L
6<<AQ/&&fl388F#B'L$[%uMFUU++f , N &&nlCN;r7   c                    t        j                  |      }|t        vrt        dt         d|       |t        vrt        dt         d|       t        | j                        dvrt        d| j                         t        |       } | j                  }t        ||      }t        ||      }t        |d      }	d	|	z  d
z  d	|	z  d
z  f}
d}t        | j                        dk(  rt        j                  | d      } d}|dk(  r| j                  \  }}}}d}n| j                  \  }}}}d
}t        |      }|d
}t        j                  j                  |||fdd||      |z  }t        j                  j                  |||fdd||      |z  }t        t        j                  ||      |
||f|      }t        t        j                  ||      |
||f|      }t        j                  ||      }t        j                  ||      }t        j                   t        j"                  ||      t        j"                  ||      d      \  }}t        j                  |d      }t        j                  |d      }|||z  z   }|||z  z   }g }|dk(  rt#        |      D ]p  }t        j$                  t#        |      D cg c]3  }t'        | |d|f   ||   ||   gt        j)                  |      ||      5 c}d      }|j+                  |       r t        j$                  |d      }nt#        |      D ]p  }t        j$                  t#        |      D cg c]3  }t'        | ||df   ||   ||   gt        j)                  |      ||      5 c}d      }|j+                  |       r t        j$                  |d
      }|rt        j                  |d      }t        j,                  ||      }|S c c}w c c}w )NrJ   rK   r   r   r   r   r   rN      r   Fr   r   r"   Tr   r                 ?)r&   meanstddevr   seed)r	  r   r0   xy)indexing.)r   rv   rV   )r   r$   r   r'   r   r%   r&   r   r   r(   r.   r   randomstateless_normalr  r   meshgridr   r   r   r   r   r,   )r/   alphar   rs   rv   rV   r  r0   input_dtypekernel_factorr	  r   rT   r`   rX   rU   channel_axisdxdyr  ydistorted_xdistorted_ychannel_outputsibchannel_transformedtransformed_imagess                               r5   elastic_transformr.  %  sY    11+>K;;J./ 0*O-
 	

 33F*++A)N
 	
 6<<&"LL>+
 	
 v&F,,Ke;7Ee;7E%e7;M}$q(!m*;a*?@KL
6<<AQ/o%.4ll+
FE8.4ll+
HfeT?D
 			""vu- 	# 	
 	  			""vu- 	# 	
 	  

r-en	
B 

r-en	
B 
B\	*B	B\	*B;;
k*
{+DAq
 	qq!A
qq!Aebj.Kebj.KOo%x 	8A"$(( #:.  $q#qy)$QQ8=CC) #,#- # ""#67!	8"  XXoB?x 	8A"$(( #:.  $q!Sy)$QQ8=CC) #,#- # ""#67!	8"  XXoA>ZZ(:C!3[AQ&s   =8O/
8O4
c                     t        j                  t        j                  d| j                        dt        j                  |       z
        S )Nr   r   r   )r(   rn   r   r   r   r  s    r5   _fill_triangle_kernelr1    s.    ::bkk!1773Q]CCr7   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   g      @g       @r  )r(   r   )r  outs     r5   _fill_keys_cubic_kernelr4    sg    !GcMQ!
#c
)C
((18tax#~2S8A=CS
IC88AHc3''r7   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   r<   r   r  )r(   sinnppir   divide)radiusr  r&  r3  s       r5   _fill_lanczos_kernelr;    s    	""RVVBEEAI,>%??A
((	D"))ArxxQq1a4CDaC 88AJS))r7   c                     t        d|       S )Ng      @r;  r0  s    r5   rY   rY         .sA6 r7   c                     t        d|       S )N      @r=  r0  s    r5   rY   rY     r>  r7   )r   r   r	   r
   c                    t        j                  |j                  |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        t        j                  t        j                        j                        z  kD  t        j                  |t        j                  |dk7  |d            d      }t        j                   | |      dz
  }t        j                  t        j"                  |	d	k\  |	|k        t        j                  d d f   |d      S )
Nr  r   g      ?r   T)r#   keepdimsg     @@r   r   )r   r*   r   r(   rn   r   r   newaxisr   r   r+   r7  finforM   epsr9  r,   logical_and)
input_sizeoutput_sizescaletranslationr  rk   r   	inv_scalekernel_scalesample_fr  r   total_weight_suminput_size_minus_0_5s                 r5   _compute_weight_matrP    s    [->->?EeI1:2::i-L	+U	+c	1Y>
	
!	"
	  	RZZ]#hhz/2::>?	
 		  QiG}}W1tDhh
 6E"((2::2F2J2J,K#KK
		RXX.!35EqI	
 	
G 77:U;cA88
x4'5I)IJJJM	
 		 r7   c                    t        |       } t        j                  |       }t        |      dk(  r| S t	        j
                  | j                        r't        j                  | t        j                        }d}	nt        j                  |       }d}	t        |      D ]y  \  }
}|| j                  z  }||   ||   }}t        j                  t        ||||
   ||
   ||      |j                        }t        j                  |||df      }t        |d|      }{ |	rpt        j                  t        j                   |      t        j"                  |       t        j$                  |             }t        j                  || j                        }|S )Nr   TFr    r   )r   r(   r&   r%   r   is_int_dtyper   r,   rM   r)   	enumeratendimrP  r-   r   r   r   
reduce_min
reduce_max)r  r   spatial_dimsrI  rJ  r  rk   input_shaper   use_roundingr*  dmnws                  r5   _scale_and_translater^    sL    	!A((1+K
<AAGG$BJJ'Q,' 
)1J1~|A1GG1eAhA	 LL	
 faq!f5&"a(
) !!HHVbmmA.a0@
 )Mr7   c           	      x   |t         vrt        dt          d|       |dv rd}n|dv rd}t        |       } t        |      }t        |      }t        |   }t	        j
                  |j                  |j                        }t        j                  ||      }t        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   _kernelsr   r*   r   r(   r,   r^  )	r/   r   rI  rJ  rW  rj   rk   r  r   s	            r5   scale_and_translaterc    s     00C*++>vhH
 	
 @@	3	3v&Fe$E#K0KfF[->->?EGGE5!E''+u-K r7   c                     t        |       } |dk(  rt        j                  | d      } t        j                  j	                  |       }|dk(  rt        j                  |d      }|S )Nr:   r;   )r   r   r   r<   r   )r   r(   rB   rC   sobel_edges)r/   r0   edgess      r5   re  re  >  sW    v&F&&fl3HH  (E&&UO4Lr7   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)*r   r   r   numpyr7  
tensorflowr(   	keras.srcr   !keras.src.backend.tensorflow.corer   "keras.src.backend.tensorflow.numpyr   keras.src.random.seed_generatorr   rl   r   r   r   ra  r6   rD   rH   rq   r   r   r   r   r   r   r   r   r  r.  r1  r4  r;  rb  rP  r^  rc  re  r\   r7   r5   <module>rm     s0         ? 7 5 #   	 +>:@ GZ 9@ K\K\-> BE_,F ?C5t 
	RjD(* $$66	"JN "Jr7   