
    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 dl
mZ d dl
mZ d dl
mZ d dl
mZ d d	l
mZ d d
l
mZ d dlmZ d dlmZ d ddZh dZh dZddddZdddZ ee       ee      z   Zd/dZd/dZd/dZ	 	 	 	 	 	 	 d0dZ d Z!	 	 	 	 d1dZ"d Z#	 	 	 d2dZ$d  Z%d! Z&	 d3d"Z'	 d4d#Z(	 	 	 	 	 	 	 d5d$Z)d% Z*d& Z+d' Z,e*e+d( d) d*Z-d+ Z.d, Z/	 d6d-Z0d/d.Z1y)7    N)Type)backend)
DTYPES_MAX)
DTYPES_MIN)OpenVINOKerasTensor)cast)convert_to_numpy)convert_to_tensor)get_ov_output)_random_normal)	draw_seed   )nearestbilinear>   wrapmirrorr   reflectconstant>   cubiclinearbicubicr   lanczos3lanczos5tricubic	trilinearr   r   r   )r   r   r   r   r   )r   r   c                 j   t        |       } t        j                  |      }| j                         j                  dvrt        d| j                         |dk(  rdnd}| j                  |   dvrt        d| j                         | j                  |   dk(  r| j                         }t        j                  g d	|
      j                  d      }|dk(  r(t        j                  |ddg      j                  d      }t        j                  | |      j                  d      }t        j                  ||g      j                  d      }t        j                  ||g      j                  d      }|j                         |k7  r%t        j                  ||      j                  d      }t              S )N      yInvalid images rank: expected rank 3 (single image) or rank 4 (batch of images). Received input with shape: images.shape=channels_first)r   r   zaInvalid channel size: expected 3 (RGB) or 1 (Grayscale). Received input with shape: images.shape=r   )gŏ1w-!?gbX9?gv/?dtyper   axes)reduction_axes)r   r   standardize_data_formatget_partial_shaperank
ValueErrorshapeget_element_typeov_opsetr   output	unsqueezemultiply
reduce_sumconvertr   )imagesdata_formatchannel_axisoriginal_typergb_weights
grayscaless         u/var/www/html/emotional.easysim.app/public_html/venv/lib/python3.12/site-packages/keras/src/backend/openvino/image.pyrgb_to_grayscaler=   5   s   6"F11+>K!&&f4"LL>+
 	

 %(882bL||L!/77=||nF
 	

 ||L!Q&//1''$M

&) 	 **",,[BxHOOK &&v{;BB1E
((~

&) 	 ''
,HOO

 &&(M9 "))*mDKKANJz**    c                 x  
 | j                   }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                  d      }t        j                  t        j                  t        j                  |       |      t        j                  d	
      |       j                  d      } t        j                   | |d
      }|j                  d      |j                  d      |j                  d      }}}
fd}	t        j"                   |	|||      |      j                  d      } t%        |       S )Nchannels_lastr#   r"   r   r    CInvalid images dtype: expected float dtype. Received: images.dtype=r$   r           r   axis
num_splitsr      c                    t        j                  t        j                  | |      |      j                  d      }t        j                  t        j                  | |      |      j                  d      }t        j                  ||      j                  d      }t        j
                  t        j                  |t        j                  d            |t        j                  d            j                  d      }t        j
                  t        j                  |t        j                  d            |t        j                  d            j                  d      }t        j
                  t        j                  |t        j                  d            t        j                  ||      t        j                  d            j                  d      }t        j                  t        j                  d      t        j                  t        j                  d      |            j                  d      }	t        j
                  t        j                  ||      t        j                  t        j                  |	t        j                  ||             t        j                  d            t        j                  t        j                  |	t        j                  | |            t        j                  d                  j                  d      }
t        j
                  t        j                  ||       t        j                  |	t        j                  ||            |
      j                  d      }
t        j
                  t        j                  |t        j                  d            |
t        j                  d            j                  d      }
t        j                  |
t        j                  t        j                  |
t        j                  d                        j                  d      }
|
||fS )Nr   rB   r$         ?      @gUUUUUU?gUUUUUU?)r0   maximumr1   minimumsubtractselectgreaterr   divider3   equaladdr5   less)rgbvaluerK   range_
safe_value
safe_range
saturationnormhueov_types              r<   rgb_planes_to_hsv_planesz,rgb_to_hsv.<locals>.rgb_planes_to_hsv_planes{   sK     !1!1!Q!7;BB1E""8#3#3Aq#91=DDQG""5'299!<__UH$5$5c$IJc1
 &)	 	
 __VX%6%6s'%JKc1
 &)	 	 __UH$5$5c$IJOOFJ/c1
 &)	 	
 c1!!#W5z

 &) 	 ooNN5!$LL!!$(9(9!Q(?@!!)7; LL!!$(9(9!Q(?@!!)7;

 &) 	 ooNN5!$dH$5$5a$;<
 &)	 	
 ooVX%6%6s'%JKc1
 &)	 	
 llc8#4#4S#HI
 &) 	 J%%r>   rD   )r%   r   r/   r   r*   lenr.   r-   is_float_dtyper0   r   epsilonr1   rM   rR   abssplitconcatr   )r6   r7   r%   channels_axisepsrgb_channelsrS   rT   rU   r^   r]   s             @r<   
rgb_to_hsvri   ]   s   LLE6"F%%'G11+>K%8BbM
6<<&"LL>+
 	

 !!%(&&+W.
 	
 

GOO-W
=
D
DQ
GC__hll6*C0#W- fQi	 
 >>&}KLAAA qA8&t __ Aq)fQi  v&&r>   c                 D  	 | j                   }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                  | |d      }|j                  d	      |j                  d
      |j                  d      }}}	fd}t        j                   ||||      |      j                  d	      } t        |       S )Nr@   r#   r"   r   r    rA   r   rC   r   r   rF   c           	      @   fd}t        j                  t        j                  | t        j                  d            t        j                  d            j	                  d      }t        j                  d      j	                  d      }t        j                  d      j	                  d      }t        j                  d      j	                  d      }t        j                  d      j	                  d      }t        j
                  t        j                  t        j
                  ||            |      j	                  d      }	t        j                  |	d	d      j	                  d      }	t        j
                  |t        j                  t        j
                  ||                  j	                  d      }
t        j                  |
d	d      j	                  d      }
t        j
                  |t        j                  t        j
                  ||                  j	                  d      }t        j                  |d	d      j	                  d      }t        j
                  |      j	                  d      } ||	|      } ||
|      } |||      }|||fS )
Nc           
          t        j                  t        j                  |t        j                  |                   S N)r0   r3   rQ   )channel_deltaone_minus_saturationrZ   rV   s     r<   channel_valuezChsv_to_rgb.<locals>.hsv_planes_to_rgb_planes.<locals>.channel_value   s8    $$(%%j-@ r>   rH   r$   rI   r          @      @      @rB   )r0   r3   modr   r1   rL   rc   clamp)r\   rZ   rV   rp   dh	one_const	two_constthree_const
four_constdrdgdbro   redgreenbluer]   s    ``             r<   hsv_planes_to_rgb_planesz,hsv_to_rgb.<locals>.hsv_planes_to_rgb_planes   s"   	 LLh//7CDc1
 &) 	 %%c9@@C	%%c9@@C	''7;BB1E&&s':AA!D
LL**2{;<i

&) 	 ^^BS)003x||H$5$5b)$DE

&) 	 ^^BS)003x||H$5$5b*$EF

&) 	 ^^BS)003'00JGNN 
 B 45b"67R!56E4r>   r_   )r%   r   r/   r   r*   r`   r.   r-   ra   r0   rd   r1   re   r   )
r6   r7   r%   rf   hsv_channelsr\   rZ   rV   r   r]   s
            @r<   
hsv_to_rgbr      s#   LLE6"F%%'G11+>K%8BbM
6<<&"LL>+
 	

 !!%(&&+W.
 	
 >>&}KLAAA C% N __ j%8}fQi  v&&r>   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        |       } t	        | j                               }|dvrt        d	| j                                |d
k(  rd\  }}nd\  }}d }d }d }t        j                  | t        j                        j                  d      }||z  }||z  } |||      } |||      }t        j                  |	gt        j                        j                  d      }t        j                  |
gt        j                        j                  d      }t        j                  dgt        j                        j                  d      }t        j                  dgt        j                        j                  d      }|r |t        j                  ||      j                  d      |      }t        j                  ||      j                  d      }t        j                   ||      j                  d      } |t        j                  ||      j                  d      |      }t        j                  ||      j                  d      }t        j                   ||      j                  d      } |t        j"                  ||      j                  d      t        j                  dgt        j                        j                  d            } |t        j"                  ||      j                  d      t        j                  dgt        j                        j                  d            }t        j$                  ||      j                  d      }t        j$                  ||      j                  d      }g } g }!dg|z  }"dg|z  }#t'        |      D ]  }$|$|k(  r-| j)                  |       |!j)                  |       d|"|$<   d|#|$<   5|$|k(  r-| j)                  |       |!j)                  |       d|"|$<   d|#|$<   g| j)                  |       |!j)                  |        t        j*                  |  ||        ||!      t        j                  dg|z  t        j                        j                  d      |"|#      j                  d      } nN|rK |t        j                  ||      j                  d      |      }%t        j                   ||%      j                  d      }% |t        j                  ||      j                  d      |      }&t        j                   ||&      j                  d      }& |t        j"                  |%|      j                  d      t        j                  dgt        j                        j                  d            }' |t        j"                  |&|      j                  d      t        j                  dgt        j                        j                  d            }(g })g }*t'        |      D ]t  }$|$|k(  r#|)j)                  |'       |*j)                  |'       +|$|k(  r#|)j)                  |(       |*j)                  |(       S|)j)                  |       |*j)                  |       v t        j                  || j-                               j                  d      }t        j.                  |  ||)       ||*      d|      j                  d      } |t0        v rt        j                  | t        j                        j                  d      }+t        j2                   ||+|      t        j4                        j                  d      },t        j2                   ||+|      t        j4                        j                  d      }-t        j6                  t        j                  t9        |	      t        j4                        j                  d      |,      j                  d      }.t        j6                  t        j                  t9        |
      t        j4                        j                  d      |-      j                  d      }/t        j:                  |.|/gd      j                  d      }0t        j                  ddgt        j4                        j                  d      }1||	||
i}2||g}3t<        t0        |      }4t?        | |2|3|0|1|4|      S ||z  ||z  g}5t        j                  |	|
gt        j                        j                  d      }t        j                  |5t        j                        j                  d      }5| j-                         }6t        j4                  t        j@                  t        jB                  t        jD                  t        jF                  t        j                  t        jH                  h}7d}8d}9|6t        jF                  k(  rB|dk7  r=t        j2                  | t        j4                        j                  d      } d}8|dk(  r:d}9n7|6|7vr3t        j2                  | t        j4                        j                  d      } tJ        |   d||5d}:|dk(  rd|:d<   d|:d<   n|dk(  rd |:d<   d!|:d"<   nd |:d<   t        jL                  | |fi |:j                  d      };|8rt        jN                  |;d#      j                  d      };|9rt        jP                  t        jR                  |;t        j                  dt        j4                              t        jT                  |;t        j                  d$t        j4                                    j                  d      }<t        jP                  t        jV                  |;t        j                  d$t        j4                              t        jT                  |;t        j                  d%t        j4                                    j                  d      }=t        j$                  |;t        j2                  |<t        j4                              j                  d      }>t        j"                  |>t        j2                  |=t        j4                              j                  d      };t        jX                  |;dd%      j                  d      };|;j-                         |6k7  r%t        j2                  |;|6      j                  d      };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`.rF   zPArgument `size` must be a tuple of two elements (height, width). Received: size=r   r    r@   )r"   r&   )r&   r#   c                    t        j                  |gt        j                        j	                  d      }t        j                  dt        j                        j	                  d      }t        j
                  | ||      j	                  d      S Nr   )r0   r   r   i32r1   gather)shape_tensorrD   	axis_nodeaxis0s       r<   _gather_dimzresize.<locals>._gather_dim1  sd    %%tfdhh7>>qA	!!!TXX.55a8|Y>EEaHHr>   c                    t        j                  | t        j                        j	                  d      }t        j                  |t        j                        j	                  d      }t        j
                  ||      j	                  d      }t        j                  |      j	                  d      }t        j                  |t        j                        j	                  d      S r   )r0   r5   r   f32r1   rO   floorr   )	numeratordenominatornumerator_fdenominator_fquotientflooreds         r<   _floor_div_intzresize.<locals>._floor_div_int6  s    &&y$((;BB1E ((dhh?FFqI??;>EEaH..*11!4299!<<r>   c                 N    t        j                  | d      j                  d      S )Nr   r_   )r0   re   r1   )nodess    r<   _concat_scalarszresize.<locals>._concat_scalars=  s    u1-44Q77r>   r   r   )databeginendstrides
begin_maskend_maskr_   rB   r$   Fr   Tr   sizes)modeshape_calculation_mode	antialiasr(   tf_half_pixel_for_nncoordinate_transformation_modesimplenearest_mode
half_pixel      
cube_coeffhalf_to_eveng      `@g     o@).r   r*   ALL_RESIZE_INTERPOLATIONSr-   r`   tupler   r+   r0   shape_ofr   r   r1   r   r3   rK   rJ   rL   rQ   rangeappendstrided_slicer/   padLANCZOS_INTERPOLATIONSr5   r   rO   floatre   _ov_kernels_ov_scale_and_translatef16bf16i8u8i64RESIZE_INTERPOLATIONSinterpolateroundlogical_andrN   rR   greater_equalru   r   )?r6   sizeinterpolationr   crop_to_aspect_ratiopad_to_aspect_ratio	fill_mode
fill_valuer7   target_heighttarget_widthr,   height_axis
width_axisr   r   r   
shape_nodeheight_axis_indexwidth_axis_indexheightwidthtarget_height_nodetarget_width_nodeone_i32zero_i32crop_height
crop_widthcrop_box_hstartcrop_box_wstartcrop_box_hendcrop_box_wendbegin_parts	end_partsr   r   rD   
pad_height	pad_widthimg_box_hstartimg_box_wstartpads_begin_partspads_end_partspost_crop_shapesrc_hsrc_wscale_hscale_wscale_ovtranslation_ovoutput_shape_mapspatial_dimskernelr(   r9   supported_typesshould_round_before_castshould_adjust_uint8_bicubicinterpolate_kwargsresizedlow_mask	high_maskplus_ones?                                                                  r<   resizer      s    11+>K55J() **O-
 	

 J11:=
 	
 3
 	
 t9>//3f6
 	

 #(+M<6"Fv'')*D6"44679
 	
 o%"*Z"*ZI
=8 ""64884;;A>J#d*!D(%67F
$45E!**M?DHHELLQO ))<.$((CJJ1MTXX.55a8G  !dhh/66q9H$e%78??B
 &&v{;BB1E&&w<CCAF#f&78??B

 %%eZ8??B
%%gz:AA!D
(fk299!<qc488,33A6
 )eZ077:qc488,33A6

 !_kBII!L _jAHHK	S4Z
3:$K 	+D((""?3  /#$
4 !"))""?3  /#$
4 !"""8,  *	+ ''!+.	*%%qcDj$((;BB1E!
 &) 	 
#e%78??B

 %%fj9@@C
"f&78??B
	 $$UI6==a@	'j&188;qc488,33A6
 (i/66q9qc488,33A6

 $K 		0D(( ''7%%n5)) ''7%%n5 ''1%%h/		0 &&//1

&) 	 ,-N+
 &) 	 .. #++FDHH=DDQG  ):;TXX

&) 	   )9:DHH

&) 	 //eM2DHH=DDQG
 &) 	 //eL1488<CCAF
 &) 	 ??GW#5A>EEaH!**C:TXXFMMaP}l
 *+;<3MBC&
 	
 $
T 12Dm\:DHHELLQODT488,33A6D++-M		O  %"'MY$>!!&$((3::1=#' I%*.'	o	-!!&$((3::1= &m4")	 	!" 	;< .6>*	)	#?K;<+/<(?K;<""64F3EFMMaPG...9@@C&  ++  (*;*;C*JKgx'8'8'IJ fQi  !,,&&X..udhh? gx'8'8'IJ	
 fQi   ||  4884 fQi  ''  DHH5 fQi  ..#u5<<Q?!]2""7M:AA!Dw''r>   c                   9: t        j                  | t        j                        j	                  d      :t        j
                  dt        j                        j	                  d      99:fd} |d      } |d      } |d      } |d      }t        j                  |t        j                        j	                  d      }t        j                  |t        j                        j	                  d      }t        j                  |t        j                        j	                  d      }	t        j
                  dt        j                        j	                  d      }
t        j
                  dt        j                        j	                  d      }t        j                  |
||t        j                        j	                  d      }t        j                  |
||t        j                        j	                  d      }t        j                  |
|	|t        j                        j	                  d      }d	 }t        j                   ||       ||       ||      gd
      j	                  d      }t        j                  t        j                  |t        j                   ||      t        j
                  ddgt        j                        j	                  d      gd
      j	                  d      d      j	                  d      |      j	                  d      }t        j                  t        j                  |t        j                  t        j
                  dgt        j                        j	                  d       ||      t        j
                  dgt        j                        j	                  d      gd
      j	                  d      d      j	                  d      |      j	                  d      }t        j                  t        j                  |t        j                  t        j
                  ddgt        j                        j	                  d       ||      gd
      j	                  d      d      j	                  d      |      j	                  d      }t        j
                  dgt        j                        j	                  d      }t        j                  ||d      j	                  d      }t        j                  ||d      j	                  d      }t        j                  t        j
                  dt        j                        j	                  d      t        j                  |t        j                        j	                  d            j	                  d      }t        j                  t        j                  |dg      j	                  d      t        j                  |dg      j	                  d      t        j                  |dg      j	                  d      gd
      j	                  d      }fd} |d       |d       |d      }}} |d       |d       |d      }}}t        j                  t        j
                  dt        j                        j	                  d      t        j                  |t        j                        j	                  d            j	                  d      } t        j                  t        j
                  dt        j                        j	                  d      t        j                  |t        j                        j	                  d            j	                  d      }!d }" |"|||!      }# |"|||!      }$ |"|!|!|       }%t        j                  |#|$|%gd
      j	                  d      }&t        j                  |dg      j	                  d      }'t        j                  |dg      j	                  d      }(t        j                  t        j
                  dt        j                        j	                  d      t        j                  |t        j
                  dgt        j                        j	                  d      d      j	                  d            j	                  d      })t        j                  |)dg      j	                  d      })t        j                  |'|(|)gd
      j	                  d      }*t        j                  |dg      j	                  d      }+t        j                  |t        j                        j	                  d      },t        j                   ||      |,gd
      j	                  d      }-t        j                  |+|-      j	                  d      }+t        j                  |+|&dd      j	                  d      }.t        j                  |*dg      j	                  d      }/t        j                  |.|/      j	                  d      }.t        j                  |.t        j
                  g dt        j                        j	                  d            j	                  d      }0t        j                   t        j"                  |0t        j
                  dgt        j                        j	                  d      t        j
                  dt        j                        j	                  d            j	                  d      dg      j	                  d      }1t        j                   t        j"                  |0t        j
                  dgt        j                        j	                  d      t        j
                  dt        j                        j	                  d            j	                  d      dg      j	                  d      }2t        j                   ||       ||       ||       ||      gd
      j	                  d      }3t        j                  |1|3d      j	                  d      }1t        j                  |2|3d      j	                  d      }2t        j                  t        j                  t        j                  ||d      j	                  d      t        j                  t        j
                  dgt        j                        j	                  d       ||       ||       ||      gd
      j	                  d      d      j	                  d      |3      j	                  d      }4t        j
                  dt        j                        j	                  d      }
t        j
                  dt        j                        j	                  d      }t        j                  |t        j                        j	                  d      }5t        j                  |
|5|t        j                        j	                  d      }6t        j                  t        j                  |6t        j                   ||      t        j
                  g dt        j                        j	                  d      gd
      j	                  d      d      j	                  d      |3      j	                  d      }7t        j                  t        j                  |7dg      j	                  d      t        j                  |1dg      j	                  d      t        j                  |2dg      j	                  d      t        j                  |4dg      j	                  d      gd
      j	                  d      }8|8S )u   Build transformed coordinates for affine_transform using OV opsets.

    images_ov: [B, H, W, C] f32
    transform_ov: [B, 8] f32 (TF-convention flat transform)
    Returns coords: [4, B, H, W, C] f32 — (batch, row, col, chan) per pixel.
    output_typer   c                     t        j                  t        j                  | t        j                        j                  d            j                  d      S r   r0   r   r   r   r   r1   ir   r   s    r<   dimz$_ov_build_affine_coords.<locals>.dim%  @    ))!TXX6==a@%

&)	r>   r   rF   r   rB   rH   c                     t        j                  | t        j                  dgt        j                        j                  d      d      j                  d      S Nr   r   Fr0   reshaper   r   r   r1   scalars    r<   s1dz$_ov_build_affine_coords.<locals>.s1d8  C    H%%qc4884;;A>

&)	r>   r_   Fr#   r'   c                    t        j                  t        j                  | t        j                        j                  d      t        j                  dt        j                        j                  d            j                  d      S )Nr   r   r   )r   transform_ovs    r<   t_colz&_ov_build_affine_coords.<locals>.t_colr  s`    a*11!4a*11!4
 &)		r>   r      c                    t        j                  t        j                  | dg      j                  d      t        j                  |dg      j                  d      t        j                  |dg      j                  d      gd      j                  d      }t        j                  |dg      j                  d      S )Nr   r'   r   r_   rF   r0   re   r2   r1   )c0c1c2cols       r<   make_colz)_ov_build_affine_coords.<locals>.make_col  s    oo""2QC077:""2QC077:""2QC077:
 
 &) 	 !!#QC077::r>   )r   rF   r   r   r   r   )r0   r   r   r   r1   r   r5   r   r   re   	broadcastr  r2   matmulrQ   	transposesqueezer   );	images_ovr	  r   BHWCH_fW_fC_fzero_fone_fr_hr_wr_cr  	hwc_shapegrid_hgrid_wgrid_cneg1flat_hflat_wone_vecptsr
  a0a1a2b0b1b2ones_bzeros_br  col0col1col2mat
offset_row
offset_coloffset_chanoffset_3pts_b	pts_shapeB_N_3transformedoffset_btransformed_t	coord_row	coord_col
bhwc_shape	chan_bhwcB_fr_b
batch_bhwccoordsr   r   s;    `                                                       @@r<   _ov_build_affine_coordsrL    s    ""9$((CJJ1MJa*11!4E
 	AAAAAAAA


1dhh
'
.
.q
1C


1dhh
'
.
.q
1C


1dhh
'
.
.q
1CsDHH-44Q7Fc488,33A6E
..e
B
I
I!
LC
..e
B
I
I!
LC
..e
B
I
I!
LC
 QQQ 8qAHHKIOOQ**Aq6488<CCAFGafQi	
 &)	 fQi  OO%%qc4884;;A>F%%qc4884;;A>
  fQi	
 &) fQi  OO""Aq64884;;A>AGafQi	
 &)	 fQi  bT488,33A6DfdE299!<FfdE299!<F  #txx(//2&dhh7>>qA fQi  //vQC077:vQC077:waS188;	

  fQi  q58U1XBBq58U1XBB#txx(//2"$((3::1= fQi    #txx(//2"$((3::1= fQi 	; BG$DBG$DGWf-D
//4t,1
5
<
<Q
?C##BaS188;J##BaS188;J$$#txx(//2x  !dhh/66q95	

&)	
 fQi  $$[s;BB1EK	Z-AfQi  s!-44Q7E!!#488<CCAFIOOSVY/a8??BEue,33A6E//%eU;BB	K !!(!5<<Q?H,,{H5<<Q?K&&X&&y$((;BB1EfQi    qc488,33A6a*11!4	
 &)S fQi    qc488,33A6a*11!4	
 &)S fQi  	QQQQ(qfQi    J>EEaHI  J>EEaHI""VT5188;OO%%qc4884;;A>FFF	  fQi	
 &) fQi   sDHH-44Q7Fc488,33A6E


1dhh
'
.
.q
1C
..e
B
I
I!
LC##OOQ**9dhh?FFqIJ fQi	
 &)
 fQi  __z4;;A>ys3::1=ys3::1=ys3::1=		
  fQi  Mr>   c                    t        j                  |      }|t        vr,t        dt	        t        j                                d|       |t        vrt        dt         d|       t        |       } t        |      }t        |       }t        |      }t        | j                        dvrt        d| j                         t        |j                        dvrt        d|j                         |j                         }t        j                  }	d	}
t        | j                        d
k(  r)t        j                  |dg      j!                  d      }d}
t        |j                        dk(  r't        j                  |dg      j!                  d      }|dk(  rXt        j"                  |t        j$                  g dt        j&                        j!                  d            j!                  d      }t        j(                  ||	      j!                  d      }t        j(                  ||	      j!                  d      }t+        ||      }t-        t/        |      t/        |      t        |   ||      }t        |      }|j1                         r&t        j2                  |d      j!                  d      }t        j(                  ||      j!                  d      }|dk(  rXt        j"                  |t        j$                  g dt        j&                        j!                  d            j!                  d      }|
r't        j4                  |dg      j!                  d      }t/        |      S )Nr   r   8Invalid value for argument `fill_mode`. Expected of one . Received: fill_mode=r   r    )r   rF   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   rF   r   r   orderr   r   r   r   r   r   r   rF   )r   r*   AFFINE_TRANSFORM_INTERPOLATIONSr-   setkeysAFFINE_TRANSFORM_FILL_MODESr
   r   r`   r.   r/   r   r   r0   r2   r1   r  r   r   r5   rL  map_coordinatesr   is_integralr   r  )r6   	transformr   r   r   r7   r  r	  r]   compute_typeneed_squeezerK  affineds                r<   affine_transformr_    s    11+>K;;J2779:; <*O-
 	

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

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

 9??6)(/1
 	
 ((*G88LL
6<<A&&ys;BB1E	
9??q )),aSAHHK&&&&lDHH5<<Q?
 &) 	
   L9@@CI##L,?FFqIL$Y=FI&F#-m<G G$G..~>EEaHw077:G&&$$lDHH5<<Q?
 &) 	 ""7!5<<Q?w''r>   c           	         t        | d      } t        |d      }t        |       }t        |      }t        j                  dt        j
                        j                  d      }t        j                  dt        j
                        j                  d      fd} ||      } ||      }t        j                  |t        j
                        j                  d      }t        j                  |t        j                  dt        j
                        j                  d      |      j                  d      fdfdd	 d
 fd}	g }
g }t        d      D ]F  }||   \  }}||   \  }} |	||||      \  }}|
j                  ||g       |j                  ||g       H t        j                  |
D cg c])  }t        j                  |dg      j                  d      + c}d      j                  d      }t        j                  |D cg c])  }t        j                  |dg      j                  d      + c}d      j                  d      }t        j                  |dg      j                  d      }t        j                  |d      j                  d      }t        j                  ||dd      j                  d      }t        j                  |dg      j                  d      }|S c c}w c c}w )Nfloat32r$   r   r   c                 h   t        d      D cg c]  }t        j                  t        j                  | t        j                  |gt
        j                        j                  d            j                  d      dg      j                  d       }}g }|D ]  }t        j                  t        j                  |t        j                  dgt
        j                        j                  d            j                  d      dg      j                  d      }t        j                  t        j                  |t        j                  dgt
        j                        j                  d            j                  d      dg      j                  d      }|j                  ||f        |S c c}w )Nr   r   r   r'   )	r   r0   r  r   r   r   r   r1   r   )pts_ovccornersresultptxyaxis1s          r<   _split_pointsz0compute_homography_matrix.<locals>._split_pointsT  sv    1X

  %%qc4884;;A> &)S fQi

 

  	"B  ))1#txx8??BE&)S	
 fQi    ))1#txx8??BE&)S	
 fQi  MM1a&!	" 5

s   BF/r   c            
      \   t        j                  t        j                  dt        j                        j                  d      t        j                   t        j                  dgt        j                        j                  d      d      j                  d            j                  d      S )NrH   r   r   Fr0   r  r   r   r   r1   r  r   r  s   r<   onesz'compute_homography_matrix.<locals>.onesy  |    !!c488,33A68$$aS$((3::1=ufQi	

 &)	r>   c            
      \   t        j                  t        j                  dt        j                        j                  d      t        j                   t        j                  dgt        j                        j                  d      d      j                  d            j                  d      S )NrB   r   r   Frm  rn  s   r<   zerosz(compute_homography_matrix.<locals>.zeros  rp  r>   c                     t        j                  | t        j                  dt        j                        j                  d            j                  d      S )Ng      r   )r0   r3   r   r   r   r1   rh  s    r<   negz&compute_homography_matrix.<locals>.neg  s?      x  txx077:

&)	r>   c                 L    t        j                  | |      j                  d      S r   )r0   r3   r1   )arU   s     r<   mulz&compute_homography_matrix.<locals>.mul  s       A&--a00r>   c                             }        }d } || ||||| 
 	||              
 	||            g      } ||||| || 
 	||              
 	||            g      }||fS )Nc           	          t        j                  | D cg c])  }t        j                  |dg      j                  d      + c}d      j                  d      S c c}w )Nr   r'   r   r_   r  )elemses     r<   row_from_elemszHcompute_homography_matrix.<locals>.make_two_rows.<locals>.row_from_elems  sL    ??DIJq##AQC077:J fQiJs   .A )exeysxsyozr}  row1row2rx  ru  ro  rr  s            r<   make_two_rowsz0compute_homography_matrix.<locals>.make_two_rows  s    FG	 Q1aSR[!13s2r{3CD
 1b"aSR[!13s2r{3CD
 Tzr>   r   r'   r_   rF   F)adjoint)r
   r   r0   r   r   r   r1   r   r   r   extendre   r2   inverser  r  ) start_points
end_pointssp_ovep_ovr   rk  end_pts	start_ptsB_shaper  rowsrhs_colscornerr  r  r  r  r1r2rS   	coeff_matrd  rhs_2drhs	coeff_invhr  rj  rx  ru  ro  rr  s                              @@@@@@r<   compute_homography_matrixr  K  s   $\CL":Y?J,'E*%Ea*11!4Ea*11!4E: E"Ge$I488<CCAFG""1dhh/66q95	fQi 
1$ DH( "B6"Br2r2.BRHR!" <@Aq		AQC	(	/	/	2AfQi  __<DEq		AQC	(	/	/	2EAfQi  

V1#
.
5
5a
8C  E:AA!DI	3u5<<Q?A!%,,Q/AH 	B 	Fs    .K<.Lc                 Z   ;<=>? t        j                  |      }|t        vr,t        dt	        t        j                                d|       t        |       } t        |      }t        |      }t        |       }t        |      }t        |      }t        | j                        dvrt        d| j                         t        |j                        dvst        |j                        dd  dk7  rt        d|j                         t        |j                        dvst        |j                        dd  dk7  rt        d	|j                         |j                         }	t        j                  }
d
}t        | j                        dk(  r)t        j                  |dg      j!                  d      }d}t        |j                        dk(  r't        j                  |dg      j!                  d      }t        |j                        dk(  r't        j                  |dg      j!                  d      }|dk(  rXt        j"                  |t        j$                  g dt        j&                        j!                  d            j!                  d      }t        j(                  ||
      j!                  d      }t        t+        ||            ?t        j,                  |t        j&                        j!                  d      >t        j$                  dt        j&                        j!                  d      <<>fd} |d      } |d      } |d      } |d      }t        j(                  |t        j                        j!                  d      }t        j(                  |t        j                        j!                  d      }t        j$                  dt        j                        j!                  d      }t        j$                  dt        j                        j!                  d      }t        j.                  |||t        j                        j!                  d      }t        j.                  |||t        j                        j!                  d      }d }t        j0                   ||       ||      gd      j!                  d      }t        j2                  t        j4                  |t        j0                   ||      t        j$                  dgt        j&                        j!                  d      gd      j!                  d      d
      j!                  d      |      j!                  d      }t        j2                  t        j4                  |t        j0                  t        j$                  dgt        j&                        j!                  d       ||      gd      j!                  d      d
      j!                  d      |      j!                  d      }t        j$                  dgt        j&                        j!                  d      }t        j4                  ||d
      j!                  d      }t        j4                  ||d
      j!                  d      }t        j$                  dt        j&                        j!                  d      ==?fd} |d       |d       |d      }!} } |d       |d       |d      }$}#}" |d       |d      }&}%t        j,                  |t        j&                        j!                  d      }'t        j0                  t        j4                  |t        j$                  dgt        j&                        j!                  d      d
      j!                  d      |'gd      j!                  d      ;;fd}(t        j2                  t        j                  |dg      j!                  d      ;      j!                  d      })t        j2                  t        j                  |dg      j!                  d      ;      j!                  d      }*t        j2                  t        j$                  dt        j                        j!                  d      ;      j!                  d      }+t        j6                  t        j6                  t        j8                   |(|%      |)      j!                  d      t        j8                   |(|&      |*      j!                  d            j!                  d      |+      j!                  d      },t        j:                  t        j6                  t        j6                  t        j8                   |(|      |)      j!                  d      t        j8                   |(|       |*      j!                  d            j!                  d       |(|!            j!                  d      |,      j!                  d      }-t        j:                  t        j6                  t        j6                  t        j8                   |(|"      |)      j!                  d      t        j8                   |(|#      |*      j!                  d            j!                  d       |(|$            j!                  d      |,      j!                  d      }.t        j0                   ||       ||       ||      gd      j!                  d      }/t        j4                  |.|/d
      j!                  d      }.t        j4                  |-|/d
      j!                  d      }-t        j(                  |t        j                        j!                  d      }0t        j.                  ||0|t        j                        j!                  d      }1t        j0                   ||       ||       ||       ||      gd      j!                  d      }2t        j2                  t        j                  |.dg      j!                  d      |2      j!                  d      }3t        j2                  t        j                  |-dg      j!                  d      |2      j!                  d      }4t        j2                  t        j4                  |1t        j0                  t        j$                  g d t        j&                        j!                  d       ||      gd      j!                  d      d
      j!                  d      |2      j!                  d      }5t        j(                  |t        j                        j!                  d      }6t        j.                  ||6|t        j                        j!                  d      }7t        j2                  t        j4                  |7t        j0                   ||      t        j$                  g d t        j&                        j!                  d      gd      j!                  d      d
      j!                  d      |2      j!                  d      }8t        j0                  t        j                  |8dg      j!                  d      t        j                  |3dg      j!                  d      t        j                  |4dg      j!                  d      t        j                  |5dg      j!                  d      gd      j!                  d      }9t=        t?        |      t?        |9      t        |   d!|"      }:t        |:      }:|	jA                         r&t        jB                  |:d#$      j!                  d      }:t        j(                  |:|	      j!                  d      }:|dk(  rXt        j"                  |:t        j$                  g d%t        j&                        j!                  d            j!                  d      }:|r't        jD                  |:dg      j!                  d      }:t?        |:      S )&Nr   r   r   r    )rF   r   r&   )r   rF   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: Fr   r   r'   TrF   r!   rP  r   c                     t        j                  t        j                  | t        j                        j                  d            j                  d      S r   r   r   s    r<   r   z"perspective_transform.<locals>.dim  r   r>   r   rB   rH   c                     t        j                  | t        j                  dgt        j                        j                  d      d      j                  d      S r  r  r  s    r<   p1dz"perspective_transform.<locals>.p1d  r  r>   r_   r#   c           	          t        j                  t        j                  t        j                  | gt        j
                        j                  d            j                  d      dg      j                  d      S )Nr   r   r'   )r0   r  r   r   r   r   r1   )r   rj  
transformss    r<   h_colz$perspective_transform.<locals>.h_col:  s`    OOH--qc488<CCAFfQi	

 &)	r>   r   r        c                     t        j                  t        j                  | dg      j                  d            j                  d      S )Nr   r'   r   )r0   r  r2   r1   )vBN_shapes    r<   bcastz$perspective_transform.<locals>.bcastQ  s>    !!qs+2215x

&)	r>   r  r   rQ  r   rS  rT  )#r   r*   rU  r-   rV  rW  r
   r   r`   r.   r   r/   r   r   r0   r2   r1   r  r   r   r5   r  r   r   re   r  r  rQ   r3   rO   rY  r   rZ  r   r  )@r6   r  r  r   r   r7   r  r  r  r]   r\  r]  r   r  r  r  r  r  r  r   r!  r"  r#  r  hw_shaperi  rh  r)  x_flaty_flatr  r.  r/  r0  a3a4a5a6a7N_shaper  x_bny_bnone_bndenomx_iny_in	bhw_shaper  r$  rF  	y_in_bhwc	x_in_bhwcrG  rH  rI  rJ  rK  rf  r  r   rj  r   r  s@                                                              @@@@@r<   perspective_transformr    s    11+>K;;J2779:; <*O-
 	
 v&F$\2L":.Jf%I,'E*%E
6<<&"LL>+
 	

 <f,l6H6H0I
1	1 88D8J8J7KM
 	
 :F*eJ4D4D.Ebc.J O / 88B8H8H7IK
 	

 ((*G88LL
6<<A&&ys;BB1E	
<!#""5s3::1=
:!""5s3::1=&&&&lDHH5<<Q?
 &) 	
   L9@@CI!,
;J ""9$((CJJ1MJa*11!4E
 	AAAAAAAA


1dhh
'
.
.q
1C


1dhh
'
.
.q
1CsDHH-44Q7Fc488,33A6E
..e
B
I
I	C ..e
B
I
I	C
 AA/a8??BHOOQ**A39@@CD1fQi	
 &)		 fQi  	OO""A3188;SVD1fQi	
 &)		 fQi  bT488,33A6Dau-44Q7Fau-44Q7Fa*11!4E q58U1XBBq58U1XBB1XuQxBDHH=DDQGG8$$aS$((3::1=ufQi		
  fQi 
 6,33A6fQi 	 6,33A6fQi 	
 #txx(//2HfQi  LLeBi.55a8eBi.55a8	
 &) fQi 
 ??LL!!%)T299!<!!%)T299!< fQi"I	
 &)	 fQi 	 ??LL!!%)T299!<!!%)T299!< fQi"I	
 &)	 fQi 	 QQQ 8qAHHKID)U3::1=DD)U3::1=D


1dhh
'
.
.q
1C
..e
B
I
I	C 	QQQQ(qfQi  ""4qc*11!4jfQi  ""4qc*11!4jfQi  ""OO""9dhh7>>qA3q6J fQi	
 &)
 fQi  

1dhh
'
.
.q
1C
..e
B
I
I!
LC##OOQ**9dhh?FFqIJ fQi	
 &)
 fQi  __z4;;A>ys3::1=ys3::1=ys3::1=		
  fQi  I&F#-m<F 6"F^<CCAFfg.55a8F&&##lDHH5<<Q?
 &) 	 !!&s3::1=v&&r>   c                    t        j                  dt        j                        j	                  d      }t        j                  dt        j                        j	                  d      }t        j                  dt        j                        j	                  d      }t        j
                  ||      j	                  d      }t        j                  ||      j	                  d      }t        j                  ||      j	                  d      }t        j
                  t        j                  t        j                  | |      |      |      j	                  d      }t        j
                  ||      j	                  d      }	t        j                  ||	      j	                  d      }
t        j                  ||      j	                  d      }t        j                  |||
      j	                  d      S )size_node: OV i32 scalar node.r   r$   r   rF   )r0   r   r   r   r1   rL   r3   rJ   rt   rQ   rP   rM   )index	size_nodeone_ctwo_czero_css2safe_s2diffneg_diffrf  size_is_ones               r<   _mirror_index_fixerr    sh   atxx077:Eatxx077:Eq188;F)U+2215A			5!	$	+	+A	.Br5)003GX\\%+W5qfQi 	
   .55a8HdH-44Q7F..E299!<K??;7>>qAAr>   c                 @   t        j                  dt        j                        j	                  d      }t        j                  dt        j                        j	                  d      }t        j
                  t        j                  ||       |      j	                  d      }t        j
                  t        j                  ||      |      j	                  d      }t        ||      }t        j                  t        j                  ||      |      j	                  d      S )r  rF   r$   r   r   )
r0   r   r   r   r1   rQ   r3   r  rO   rL   )r  r  r  r  idx2size2_plus1mirroreds          r<   _reflect_index_fixerr    s     atxx077:Eatxx077:E<<))%7?FFqID,,%+UfQi  #45H??8,,Xu=uELLQOOr>   c           
         h d}|vrt        d| d       |dvrt        d|       t        |       } t        |      }t        |       }t        |      }|j                         }|j                  j                         }	|j                         }
|
j                  j                  rB|
j                  j                         dk  r%t        dt        |
j                                      |
d   j                  rO|
d   j                         |	k7  r9t        d	t        |j                                d
|
d   j                                |j                         }t        j                  |t        j                        j                  d      }t        j                  dt        j                         j                  d      }t#        |	      D cg c]Z  }t        j$                  |t        j                  |t        j                         j                  d      |      j                  d      \ }}t        j&                  |t        j                         j                  d      }t#        |	      D cg c]Z  }t        j$                  |t        j                  |t        j                         j                  d      |      j                  d      \ }}fd}fd}g }t)        |      D ]  \  }}||   }|dk(  rlt        j                  t        j*                  |d      t        j                         j                  d      }|j-                   |||       |||      d fg       }t        j.                  |      j                  d      }t        j0                  ||      j                  d      }t        j0                  t        j                  dt        j                        |      j                  d      }t        j                  |t        j                         j                  d      }t        j2                  |t        j                  dt        j                               j                  d      }|j-                   |||       |||      |f |||       |||      |fg        t        j                  t        j                  t5        |      t        j                        |      j                  d      }d }t7        j8                  | D ]  }t;        | \  }} }!t        j<                  |D cg c])  }t        j>                  |dg      j                  d      + c}d      j                  d      }"t        j@                  ||"      j                  d      }#dk(  rZ| d   }$| dd  D ]'  }%t        jB                  |$|%      j                  d      }$) t        jD                  |$|#|      j                  d      }#tG        d |!D              r|jI                         s|nt        j                  }&t        j                  |#|&      j                  d      }'|!D ]M  }(|(t        jJ                  |'t        j                  |(|&      j                  d            j                  d      }'O n|#}'||'n$t        j2                  ||'      j                  d      } |jI                         r|dk(  rzt        j                  t        j*                  t        j                  |t        j                        j                  d      d      j                  d      |      j                  d      }tM        |      S c c}w c c}w c c}w )N>   r   r   r   r   r   z8Invalid value for argument `fill_mode`. Expected one of rO  )r   r   zLInvalid value for argument `order`. Expected one of [0, 1]. Received: order=rF   zOInvalid coordinates rank: expected at least rank 2. Received input with shape: r   zaFirst dim of `coordinates` must be the same as the rank of `inputs`. Received inputs with shape: z and coordinate leading dim of r$   r   c                    dv rt        j                  dt        j                        j	                  d      }t        j
                  |t        j                  dt        j                              j	                  d      }t        j                  t        j                  | |      |      j	                  d      S dk(  r%t        j                  | |      j	                  d      S dk(  rt        | |      S t        | |      S )N)r   r   r   r$   r   r   r   )r0   r   r   r   r1   rL   rK   rJ   	floor_modr  r  )r  r  zerosize_m1r   s       r<   	fix_indexz"map_coordinates.<locals>.fix_index1  s    //$$Qdhh7>>qAD''8,,Qdhh?fQi  ##  -wfQi & %%eY7>>qAA("&ui88'y99r>   c           	          dk7  ry t        j                  t        j                  | t        j                  dt        j
                              t        j                  | |            j                  d      S )Nr   r   r$   )r0   r   r   r   r   r   rR   r1   )r  r  r   s     r<   is_validz!map_coordinates.<locals>.is_validA  s[    
"##""5(*;*;ATXX*NOMM%+
 &)	r>   r   rS  rH   r   r#   r'   r_   r   c              3   $   K   | ]  }|d u 
 y wrm   r~  ).0ws     r<   	<genexpr>z"map_coordinates.<locals>.<genexpr>  s     .q}.s   )'r-   r
   r   r+   r,   
get_length	is_staticr   to_shaper/   r0   r5   r   r   r1   r   r   r   r   r   	enumerater   r   r   rL   rQ   r   	itertoolsproductzipre   r2   	gather_ndr   rM   anyrZ  r3   r   ))inputscoordinatesrR  r   r   
fill_modes	inputs_ov	coords_ovinput_shapendimcoords_shaper]   axis_0r   
coord_listinput_shape_node
size_nodesr  r  interp_nodes_per_dimcoordr  idxlower_fupper_wlower_w	lower_idx	upper_idx
fill_constr1   itemsindices
validitiesweightsstackedgatheredvalidr  result_typecontributionr  s)      `                                     r<   rY  rY    s    FJ
"Fl0=
 	
 F'',g/
 	

 v&F#K0Kf%Ik*I--/K&&(D..0L""|'8'8'C'C'E'I++01F1F1H+I*JL
 	
 A  \!_%?%?%AT%I++01E1E1G+H*I J))5a)C)C)E(FH
 	
 ((*G   DHH5<<Q?I q188;F t  	atxx077:	
 &)		J   ((txxfQi  t  	atxx077:	
 &)		J :  j)  5qM	A:""u>:DHHfQi  !''C+Xc9-EtLM nnU+2215G''w7>>qAG''!!#TXX6fQi  !(($((;BB1EI 8,,Qdhh?fQi  !'' ")Y7 I6 ")Y7 I6' D !!%
+488<gfQi  F""$89  
'*E{$W //ELMcX2$/66q9M
 &) 	 %%i9@@C
"qME^ A ,,UA6==a@Auh
CJJ1MH.g..)0)<)<)>'DHHK#++HkBII!LL  =#+#4#4$ ((K8??B$ fQi !  $L ~ fl3::1= 	9 
D !!!NN  299!<# fQi
 &) 	 v&&C^ Ns   A]./A]30.]8
c           
         d }t        j                  |      }t        |       } | j                  }t	        |       j                         }t        |      dvrt        d|       |t        j                  t        j                  fv rt        j                  n|}t	        |       } ||k7  r%t        j                  | |      j                  d      } d}t        |      dk(  r)t        j                  | dg      j                  d      } d}|d	k(  rXt        j                   | t        j"                  g d
t        j$                        j                  d            j                  d      } t        j&                  t        j(                  | t        j$                        j                  d      t        j"                  dgt        j$                        j                  d      t        j"                  dt        j$                        j                  d            j                  d      }	 |||      }
t        j                  |
|      j                  d      }
t        j*                  |
t        j"                  dd|d   |d   gt        j$                        j                  d      d      j                  d      }
t        j,                  |	t        j"                  dd|d   |d   gt        j$                        j                  d      gd      j                  d      }t        j.                  |
|      j                  d      }
t        j0                  | |
ddg|d   dz
  dz  |d   dz
  dz  g|d   dz
  |d   dz
  dz  z
  |d   dz
  |d   dz
  dz  z
  gddg      j                  d      }||k7  r%t        j                  ||      j                  d      }|d	k(  rXt        j                   |t        j"                  g dt        j$                        j                  d            j                  d      }|r't        j2                  |dg      j                  d      }t5        |      S )Nc                 &    d fd} || |      S )Nc                    t        j                  t        j                  d| dt        j                        j                  d      t        j                  | dz
  dz  t        j                        j                  d            j                  d      }t        j                  t        |      t        j                        j                  d      }t        j                  ||      j                  d      }t        j                  ||      j                  d      }t        j                  |t        j                  dt        j                        j                  d            j                  d      }t        j                  |      j                  d      }t        j                  |dd      j                  d      }t        j                  ||      j                  d      S )Nr   r   r   rq   r   F)r)   	keep_dims)r0   rL   r   r   r   r1   r   r   rO   r3   expr4   )r   sigmarh  sigma_constexponentkernel1dkernel1d_sums          r<   _get_gaussian_kernel1dzNgaussian_blur.<locals>._create_gaussian_kernel.<locals>._get_gaussian_kernel1d  sa   !!q$txx@GGJ!!4!8s"2DHH=DDQG fQi 
 #++E%L$((CJJ1MKq+6==a@H((8<CCAFH(((++D$((;BB1EfQi   ||H-44Q7H#..efQi  ??8\:AA!DDr>   c           
          | d   |d         } | d   |d         }t        j                  |t        j                  dt        | d         gt        j
                        j                  d      d      j                  d      }t        j                  |t        j                  t        | d         dgt        j
                        j                  d      d      j                  d      }t        j                  ||      j                  d      S )Nr   r   F)r0   r  r   intr   r   r1   r3   )r   r  
kernel1d_x
kernel1d_yr  s       r<   _get_gaussian_kernel2dzNgaussian_blur.<locals>._create_gaussian_kernel.<locals>._get_gaussian_kernel2d  s    /QqBJ/QqBJ "))!!1c$q'l"3TXX>EEaH fQi	  "))!!3tAw<"3TXX>EEaH fQi	 
 $$Z<CCAFFr>   r~  )kernel_sizer  r  r  s      @r<   _create_gaussian_kernelz.gaussian_blur.<locals>._create_gaussian_kernel  s    	E&	G& &k599r>   r   r    r   Fr   r'   Tr@   rT  r   r_   rF   rP  )r   r*   r
   r.   r   r/   r`   r-   r   r   r   r   r0   r5   r1   r2   r  r   r   r   r   r  re   r  group_convolutionr  r   )r6   r  r  r7   r  r  r]   r\  r]  num_channelsr   target_shapeblurred_imagess                r<   gaussian_blurr    s   ):V 11+>Kv&F,,KF#446G
;v%'=*
 	
  '499dhh*??488WL6"Fw!!&,7>>qAL
;1##F!5<<Q?o%##lDHH5<<Q?
 &) 	
 ??&$((+22151#txx(//2!TXX&--a0 fQi	  %[%8Ffl3::1=F;q>;q>2DHH	

&) fQi  ??A{1~{1~6fQi		
  fQi  5<<Q?F//	
A
a.1
	"[^a%7A$=>NQ+a.1"4!::NQ+a.1"4!::	
 
A
 fQi  w!)).'BII!Lo%!++lDHH5<<Q?
 &) 	
 !)).sCJJ1M~..r>   c                 2  => t        j                  |      }|t        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        |       }|j                         }	t        j                  }
d}t        | j                        dk(  r)t        j                  |d	g
      j!                  d	      }d}|dk(  rYt        j"                  |t        j$                  g dt        j&                        j!                  d	            j!                  d	      }n|}t        j(                  ||
      j!                  d	      }t        j*                  |t        j&                        j!                  d	      >t        j$                  d	t        j&                        j!                  d	      ==>fd} |d	      } |d      } |d      } |d      }t-        |      }t-        |      }t/        d|z        dz  }t1        |      }t3        |t4              rt7        |      }n|j8                  }t;        dt/        |d	         dz        }t        |      dkD  rt;        dt/        |d         dz        nd}d }t        j<                   ||       ||       ||      gd	      j!                  d	      }t?        |t        j                  ||      }t?        |t        j                  |dz   |      }t        j$                  |t        j                        j!                  d	      }t        j@                  ||      j!                  d	      }t        j@                  ||      j!                  d	      }t        j                  |dg
      j!                  d	      }t        j                  |dg
      j!                  d	      }tC        t5        |      ||f||fd      } tC        t5        |      ||f||fd      }!t        jD                  t        |       dg
      j!                  d	      } t        jD                  t        |!      dg
      j!                  d	      }!t        j(                  |t        j                        j!                  d	      }"t        j(                  |t        j                        j!                  d	      }#t        j$                  dt        j                        j!                  d	      }$t        j$                  dt        j                        j!                  d	      }%t        jF                  |$|"|%t        j                        j!                  d	      }&t        jF                  |$|#|%t        j                        j!                  d	      }'t        j<                   ||       ||      gd	      j!                  d	      }(t        jH                  t        jJ                  |&t        j<                   ||      t        j$                  dgt        j&                        j!                  d	      gd	      j!                  d	      d      j!                  d	      |(      j!                  d	      })t        jH                  t        jJ                  |'t        j<                  t        j$                  dgt        j&                        j!                  d	       ||      gd	      j!                  d	      d      j!                  d	      |(      j!                  d	      }*t        j<                   ||       ||       ||      gd	      j!                  d	      }+t        jH                  t        j                  |)d	g
      j!                  d	      |+      j!                  d	      },t        jH                  t        j                  |*d	g
      j!                  d	      |+      j!                  d	      }-t        j$                  |t        j                        j!                  d	      }.t        jL                  |-t        j@                  |.|       j!                  d	            j!                  d	      }/t        jL                  |,t        j@                  |.|!      j!                  d	            j!                  d	      }0t        j(                  |t        j                        j!                  d	      }1t        jF                  |$|1|%t        j                        j!                  d	      }2t        j<                   ||       ||       ||       ||      gd	      j!                  d	      }3t        jH                  t        j                  |0dg
      j!                  d	      |3      j!                  d	      }4t        jH                  t        j                  |/dg
      j!                  d	      |3      j!                  d	      }5t        jH                  t        jJ                  |2t        j<                  t        j$                  g dt        j&                        j!                  d	       ||      gd	      j!                  d	      d      j!                  d	      |3      j!                  d	      }6t        j(                  |t        j                        j!                  d	      }7t        jF                  |$|7|%t        j                        j!                  d	      }8t        jH                  t        jJ                  |8t        j<                   ||      t        j$                  g dt        j&                        j!                  d	      gd	      j!                  d	      d      j!                  d	      |3      j!                  d	      }9t        j<                  t        j                  |9d	g
      j!                  d	      t        j                  |4d	g
      j!                  d	      t        j                  |5d	g
      j!                  d	      t        j                  |6d	g
      j!                  d	      gd	      j!                  d	      }:t        j"                  |t        j$                  g dt        j&                        j!                  d	            j!                  d	      };tO        t5        |;      t5        |:      t        |   ||      }<t        |<      }<|	jQ                         r&t        jR                  |<d      j!                  d	      }<t        j(                  |<|	      j!                  d	      }<|dk(  rXt        j"                  |<t        j$                  g dt        j&                        j!                  d	            j!                  d	      }<|r't        jD                  |<d	g
      j!                  d	      }<t5        |<      S )Nr   r   rN  rO  r   r    Fr   r   r'   Tr@   rT  r   c                     t        j                  t        j                  | t        j                        j                  d            j                  d      S r   r   r   s    r<   r   zelastic_transform.<locals>.dimZ  r   r>   r   rF   r  ic                     t        j                  | t        j                  dgt        j                        j                  d      d      j                  d      S r  r  r  s    r<   to_1dz elastic_transform.<locals>.to_1ds  r  r>   r_   r!   )r  r  r7   rB   rH   r  rP  rQ  r   rS  )*r   r*   rU  r-   rV  rW  rX  r`   r.   r
   r   r/   r   r   r0   r2   r1   r  r   r   r5   r   r   r  r   
isinstancer   r	   r   maxre   r   r3   r  r  r   r  r  rQ   rY  rZ  r   )?r6   alphar  r   r   r   seedr7   r  r]   r\  r]  images_ov_cfr   r  r  r  r  	sigma_val	alpha_valkernel_size_1dseed_valr  seed1seed2r  r  dxdyr	  dx_4ddy_4d
dx_blurred
dy_blurredr  r  r   r!  r"  r#  r  y_basex_base	bhw_bcasty_base_bx_base_balpha_constdistorted_xdistorted_yr  r$  rF  y_bhwcx_bhwcrG  rH  rI  rJ  rK  images_bhwcrf  r   r   s?                                                                @@r<   elastic_transformr:  &  sp    11+>K;;J2779:; <*O-
 	

 33F*++A)N
 	
 6<<&"LL>+
 	
 v&Ff%I((*G88LL
6<<A&&ys;BB1E	o%))lDHH5<<Q?
 &) 	
 !##L,?FFqIL""<TXXFMMaPJa*11!4E
 	AAAAAAAAeIeIY'!+N
 H(/0X&MM3qt9z)*E.1!fqjC3qt9z)*aE
 	q58U1X& fQi 
 
	488UE	:B		488UQY	>B ##Itxx8??BK			2{	+	2	21	5B			2{	+	2	21	5B r,33A6Er,33A6EE"#^4)$$	J E"#^4)$$	J !!-
";1#FMM	J !!-
";1#FMM	J 

1dhh
'
.
.q
1C


1dhh
'
.
.q
1CsDHH-44Q7Fc488,33A6E
..e
B
I
I!
LC
..e
B
I
I!
LCa%(3!<CCAFHOOq8,,aS$((;BB1EFQfQi	
 &)	 fQi  OO""A3188;U1XFQfQi	
 &)	 fQi  q58U1X >QGNN	I !!6,33A6	fQi  !!6,33A6	fQi  ##Itxx8??BK,,(##K<CCAFfQi  ,,(##K<CCAFfQi 
 

1dhh
'
.
.q
1C
..e
B
I
I!
LC	q58U1XuQx0qfQi  ;aS188;ZfQi  ;aS188;ZfQi  ""OO""9dhh7>>qA58L fQi	
 &)
 fQi  

1dhh
'
.
.q
1C
..e
B
I
I!
LC##OOq8,,YAHHKL fQi	
 &)
 fQi  __z4;;A>vQC077:vQC077:ys3::1=		
  fQi  $$,188; fQi 
 K(F#-m<F 6"F^<CCAFfg.55a8F&&##lDHH5<<Q?
 &) 	 !!&s3::1=v&&r>   c                     | j                         }t        j                  t        j                  t        j                  d|      |       dd      j                  d      S )NrH   r$   rB   r   )r/   r0   ru   rL   r   r1   )rh  ts     r<   _ov_fill_triangle_kernelr=    sK    	A>>(++Cq91=sCfQir>   c                    | j                         fd}t        j                  t        j                  t        j                  t        j                  t        j                   |d      |        |d            |       |        |d            j                  d      }t        j                  t        j                  t        j                  t        j                  t        j                  t        j                   |d      |        |d            |        |d            |        |d            j                  d      }t        j                  t        j                  |  |d            ||      j                  d      }t        j                  t        j                  |  |d             |d	      |      j                  d      S )
Nc                 2    t        j                  |       S Nr$   r0   r   r  r<  s    r<   <lambda>z,_ov_fill_keys_cubic_kernel.<locals>.<lambda>'      (##AQ/ r>   g      ?g      @rH   r   r   rs   rq   rB   )r/   r0   rQ   r3   rL   r1   rM   r   )rh  rd  outout2r<  s       @r<   _ov_fill_keys_cubic_kernelrG  %  sr   	A/A
,,!!("3"3AcFA">#G 		
 	
# fQi  <<!!LL!2!21T7A!>#G #	 	
 	
# fQi 	 //(00AcF;T3
G
N
N	C ??q!C&)1S63fQir>   c                 B   |j                         fd}t        j                   |t        t        j
                              |      j                  d      }t        j                   |t        |             t        j                  t        j                  |      t        j                  t        j                  | |t        |                                     j                  d      }t        j                  t        j                  | |d             |d      t        j                   |t        t        j
                  dz              t        j                  ||                  j                  d      }t        j                  t        j                  | |d            t        j                  ||       |d            j                  d      }t        j                  t        j                  | |t        |                    |d      |      j                  d      S )Nc                 2    t        j                  |       S r@  rA  rB  s    r<   rC  z)_ov_fill_lanczos_kernel.<locals>.<lambda>I  rD  r>   r   rB   rH   rF   gMbP?)r/   r0   r3   r   nppir1   sinrO   rM   rP   rN   )radiusrh  rd  pi_xri  
safe_denomrE  r<  s          @r<   _ov_fill_lanczos_kernelrP  G  s   	A/AQuRUU|_a077:D	%-LLLLqv/?@A	
	 fQi  q!C&!	#!E"%%(O,h.?.?1.EF fQi	 
 //AdG$hooa&DaffQi  ??AeFm,-qvsfQir>   c                     t        d|       S )Nrr   rP  rt  s    r<   rC  rC  b      1#q9 r>   c                     t        d|       S )N      @rR  rt  s    r<   rC  rC  c  rS  r>   )r   r   r   r   c           
      	   t        j                  d|      j                  d      }t        j                  d|      j                  d      }t        j                  ||      j                  d      }	|r&t        j                  |	|      j                  d      }
n|}
t        j                  t        j                  |t
        j                        |      j                  d      }t        j                  t        j                  t        j                  t        j                  ||      |	      t        j                  ||	            |      j                  d      }t        j                  | |      j                  d      }t        j                  t        j                  d|      j                  d      |t        j                  d|      j                  d      |      j                  d      }t        j                  |dg      j                  d      }t        j                  |dg      j                  d      }t        j                  t        j                  t        j                  ||            |
      j                  d      } ||      }t        j                  dgt        j                         j                  d      }t        j"                  ||d	
      j                  d      }dt%        t        j&                  t
        j                        j(                        z  }t        j*                  t        j,                  |t        j                  d|            ||      j                  d      }t        j*                  t        j.                  t        j                  |      t        j                  ||            t        j                  ||      t        j                  d|            j                  d      }t        j                  |t        j                  d|            j                  d      }t        j0                  t        j2                  |t        j                  d|            t        j4                  ||            j                  d      }t        j                  |dg      j                  d      }t        j*                  ||t        j                  d|            j                  d      S )u   Build the [m, n] resampling weight matrix.

    input_size_node: OV i32 scalar node — supports dynamic spatial dimensions.
    output_size: Python int — always statically known from the output_shape arg.
    rH   r$   r   g      ?rB   r   r'   r   T)r  g     @@r   )r0   r   r1   rO   rJ   rJ  arangera  rL   r3   rQ   r5   r   r2   rc   r   r   r4   r   finforg   rM   rP   rN   r   r   
less_equal)input_size_nodeoutput_sizescale_itranslation_ir   r   r]   onehalf	inv_scalekernel_scalearange_nsample_finput_size_farange_msample_f_2darange_m_2drh  r  axes_0_consttotal_weight_sumeps_valrO  upper_bound	in_boundsin_bounds_2ds                             r<   _ov_compute_weight_matrn  g  s    

Cw
/
6
6q
9CS077:DW-44Q7I''	37>>qA   
		+RZZ0fQi    hll8T:IFmY7	
 	 fQi  ##OW=DDQGL~~#W-44Q7#W-44Q7	
 fQi  $$XQC8??BK$$XQC8??BKX&&{K@A	 fQi  QiG$$aS$((3::1=L**fQi  uRXXbjj15566G'):):3g)NO fQi	 
 ooLL)*gW5	
 	,#W- fQi  ##h''7;fQi  $$h''G<	
 	Hk2	
 fQi  %%iqc:AA!DL??gx00GDfQir>   c           
      h   | j                         }|j                  j                         }| j                         }	|j                         }
t	        |      dk(  rt        |       S |	j                         }|r4t        j                  | t        j                        j                  d      }n| }t        j                  dt        j                        j                  d      }t        |      D ]  \  }}||z  }t        j                  |t        j                        j                  d      }t        j                   |t        j                  |t        j                        j                  d      |      j                  d      }||   }t        j                  |t        j                        j                  d      }t        j                   |||      j                  d      }t        j                   |||      j                  d      }t#        |||||||
      }t        j                  ||j                               j                  d      }t%        t'        |            }|j)                  |       |j+                  |       t        j                  |t        j                        j                  d      }t        j,                  ||      j                  d      }t        j.                  ||dd      j                  d      }t%        t'        |            |dz
  gz   t%        t'        ||dz
              z   }t        j                  |t        j                        j                  d      }t        j,                  ||      j                  d      } |rt1        t2        |	         }t1        t4        |	         }t        j6                  |d      j                  d      }t        j8                  |||      j                  d      }t        j                  ||	      j                  d      }t        |      S )Nr   r$   r   Fr   r   rS  )r+   r,   r  r/   r`   r   rZ  r0   r5   r   r   r1   r   r   r  r   r   rn  listr   remover   r  r  r   r   r   r   ru   )rh  output_shaper   r   r   r   r   r  r  	x_ov_typeweight_ov_typeuse_roundingr1   r  r   doutput_shape_nodem_nodenidx_ir\  r]  r  perm
perm_constinv_perminv_perm_const	dtype_min	dtype_maxs                                r<   r   r     sV    %%'K&&(D""$I..0N
<A"1%%((*L!!!TXX.55a8q188;F,' F1H$--

&) 	 atxx077:
 &)	 	
 O!!!4884;;A>//(E6:AA!D vFMMaP"Awvy.
 Q 7 7 9:AA!D E$K AA&&t488<CCAF
##FJ7>>qAE59@@Ca>TAXJ.eAtax6H1II!**8488DKKAN##FN;BB1E?FB *Y/0	*Y/0	^<CCAF	9=DDQG!!&)4;;A>v&&r>   c           	         |t         vrt        dt          d|       |dv rd}n|dv rd}t        |       } t        |      }t        |      }t        j                  |j
                  |j
                        }t        ||      }t        ||      }t        |   }t        t        |       ||t        |      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   )	r6   rr  scaletranslationr   methodr   r%   r   s	            r<   scale_and_translater    s     00C*++>vhH
 	
 @@	3	3v&Fe$E#K0K[->->?EE{E*K F"fek" r>   c                     t        d      )Nz4`sobel_edges` is not supported with openvino backend)NotImplementedError)r6   r7   s     r<   sobel_edgesr    s    
> r>   rm   )r   FFFr   rB   r@   )r   r   r   N)r   r   N)r   r   ))r   r   )rH   rH   N)g      4@rU  r   r   rB   NN)T)2r  numpyrJ  openvino.opset16opset16r0   openvinor   	keras.srcr   keras.src.backend.openvino.corer   r   r   r   r	   r
   r   !keras.src.backend.openvino.randomr   keras.src.random.seed_generatorr   rU  rX  r  r   r   r   r   r=   ri   r   r   rL  r_  r  r  r  r  rY  r  r:  r=  rG  rP  r   rn  r   r  r  r~  r>   r<   <module>r     sx     #   6 6 ? 0 < = 9 < 5./Q"?  	      ""785<  
%+P['|B'P X(vZ@ P(flf S'lB*P BCj'\ ?CC/P 
	t'nD2 ''99	Nb:'H "Jr>   