+
    œ°³jÛ)  ã                   óÒ   € R t ^ RIt^ RIt^ RIt^ RIHt ^RIHt ^RI	H
t
 ^RIHtHt ^RIHtHtHtHtHt ^RIHtHt ^RIHtHt  ! R	 R
]RR7      t] ! R R]4      4       tR.tR# )z!Image processor class for Gemma3.N)Ú
functional)ÚTorchvisionBackend)ÚBatchFeature)Úgroup_images_by_shapeÚreorder_images)ÚIMAGENET_STANDARD_MEANÚIMAGENET_STANDARD_STDÚ
ImageInputÚPILImageResamplingÚSizeDict)ÚImagesKwargsÚUnpack)Ú
TensorTypeÚauto_docstringc                   ó0   a € ] tR t^'t o RtV 3R ltRtV tR# )ÚGemma3ImageProcessorKwargsa‰  
do_pan_and_scan (`bool`, *optional*):
    Whether to apply `pan_and_scan` to images.
pan_and_scan_min_crop_size (`int`, *optional*):
    Minimum size of each crop in pan and scan.
pan_and_scan_max_num_crops (`int`, *optional*):
    Maximum number of crops per image in pan and scan.
pan_and_scan_min_ratio_to_activate (`float`, *optional*):
    Minimum aspect ratio to activate pan and scan.
c                óJ   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[;R&   S[;R&   # )é   Údo_pan_and_scanÚpan_and_scan_min_crop_sizeÚpan_and_scan_max_num_cropsÚ"pan_and_scan_min_ratio_to_activate)ÚboolÚintÚfloat)ÚformatÚ__classdict__s   "€Ús/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/gemma3/image_processing_gemma3.pyÚ__annotate__Ú'Gemma3ImageProcessorKwargs.__annotate__'   s9   ø‡ ‚ ñ Ññ ñ !$Ñ#ñ ñ !$Ñ#ñ ñ ).Ñ-ò ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r   '   s   ø‡ € ñ	÷ ƒ r    r   F)Útotalc                   óö   a a€ ] tR t^9t o]P
                  t]t]	t
R^àR^à/tRtRtRtRtRtRtRtRtRt]tRR.tV3R lV 3R llt]V3R	 lV 3R
 ll4       tV3R lR ltV3R lR ltRV3R lR lltRtVtV ;t # )ÚGemma3ImageProcessorÚheightÚwidthTNÚpixel_valuesÚ	num_cropsc                ó0   <€ V ^8„  d   QhRS[ S[,          /# )r   Úkwargs)r   r   )r   r   s   "€r   r   Ú!Gemma3ImageProcessor.__annotate__K   s   ø€ ÷ #ñ #¡Ñ(BÕ!Cñ #r    c                ó(   <€ \         SV `  ! R/ VB  R # )Nr!   )ÚsuperÚ__init__)Úselfr2   Ú	__class__s   &,€r   r6   ÚGemma3ImageProcessor.__init__K   s   ø€ Ü‰ÒÑ"˜6Ô"r    c                ó<   <€ V ^8„  d   QhRS[ RS[S[,          RS[/# )r   Úimagesr2   Úreturn)r	   r   r   r   )r   r   s   "€r   r   r3   O   s)   ø€ ÷ 4ñ 4¡ð 4±vÑ>XÕ7Yð 4Ñ^jñ 4r    c                ó&   <€ \         SV `  ! V3/ VB # )N)r5   Ú
preprocess)r7   r;   r2   r8   s   &&,€r   r>   ÚGemma3ImageProcessor.preprocessN   s   ø€ ä‰wÒ! &Ñ3¨FÑ3Ð3r    c                ó0   <€ V ^8„  d   QhRRRS[ RS[ RS[/# )r   r;   útorch.Tensorr   r   r   )r   r   )r   r   s   "€r   r   r3   R   s9   ø€ ÷ B
ñ B
àðB
ñ %(ðB
ñ %(ð	B
ñ
 -2ñB
r    c           
     ó  € VP                   RR w  rVWe8¼  d…   We,          V8  d   . # \        \        P                  ! We,          R,           4      4      p\	        \        \        P                  ! Wb,          4      4      V4      p\        ^V4      p\	        W74      p^pMƒWV,          V8  d   . # \        \        P                  ! WV,          R,           4      4      p\	        \        \        P                  ! WR,          4      4      V4      p\        ^V4      p\	        W84      p^p\        \        P                  ! Wg,          4      4      p	\        \        P                  ! WX,          4      4      p
\	        Wš4      V8  d   . # \        V4       Uu. uF  q¹V,          NK  	  pp\        V4       Uu. uF  qºV,          NK  	  pp\        P                  ! WÜ4       UUu. uF!  w  rïVRWîV
,           1WÿV	,           13,          NK#  	  upp# u upi u upi u uppi )aõ  
Pan and Scan an image, by cropping into smaller images when the aspect ratio exceeds
minimum allowed ratio.

Args:
    images (`torch.Tensor`):
        Image to resize.
    pan_and_scan_min_crop_size (`int`, *optional*):
        Minimum size of each crop in pan and scan.
    pan_and_scan_max_num_crops (`int`, *optional*):
        Maximum number of crops per image in pan and scan.
    pan_and_scan_min_ratio_to_activate (`float`, *optional*):
        Minimum aspect ratio to activate pan and scan.
Ng      à?.éþÿÿÿ)
Úshaper   ÚmathÚfloorÚminÚmaxÚceilÚrangeÚ	itertoolsÚproduct)r7   r;   r   r   r   r-   r.   Únum_crops_wÚnum_crops_hÚcrop_size_wÚcrop_size_hÚiÚcrop_positions_wÚcrop_positions_hÚpos_hÚpos_ws   &&&&&           r   Úpan_and_scan_batchedÚ)Gemma3ImageProcessor.pan_and_scan_batchedR   sÍ  € ð* Ÿ™ R SÐ)‰ˆð Œ?à�~Ð BÔBØ�	ô œdŸjšj¨­¸#Õ)=Ó>Ó?ˆKÜœc¤$§*¢*¨UÕ-OÓ"PÓQÐS^Ó_ˆKô ˜a Ó-ˆKÜÐ8ÓFˆKØ‰Kð
 �~Ð BÔBØ�	ô œdŸjšj¨­¸#Õ)=Ó>Ó?ˆKÜœc¤$§*¢*¨VÕ-PÓ"QÓRÐT_Ó`ˆKô ˜a Ó-ˆKÜÐ8ÓFˆKØˆKäœ$Ÿ)š) EÕ$7Ó8Ó9ˆÜœ$Ÿ)š) FÕ$8Ó9Ó:ˆô ˆ{Ó(Ð+EÔEØˆIä5:¸;Ô5GÓHÑ5G°¨!ŸO˜OÑ5GÐÐHÜ5:¸;Ô5GÓHÑ5G°¨!ŸO˜OÑ5GÐÐHô !*× 1Ò 1Ð2BÔ Uô
á U‘�ð �3˜¨Õ 3Ð3°UÀ[Õ=PÐ5PÐP×QÐQÙ Uò
ð 	
ùò IùÚHùó
s   ÆG?Æ(HÇ'H	c          
      óF   <€ V ^8„  d   QhRS[ R,          RS[RS[RS[RS[/# )r   r;   rA   r   r   r   r   )Úlistr   r   r   )r   r   s   "€r   r   r3   –   sB   ø€ ÷ %ñ %á�^Õ$ð%ñ ð%ñ %(ð	%ñ
 %(ð%ñ -2ñ%r    c                óp   € V P                  VVVVR 7      pV Uu. uF  p\        V4      NK  	  ppWh3# u upi ))r;   r   r   r   )rV   Úlen)	r7   r;   r   r   r   r   Ú
pas_imagesÚ_r0   s	   &&&&&&   r   Ú _process_images_for_pan_and_scanÚ5Gemma3ImageProcessor._process_images_for_pan_and_scan–   sM   € ð ×.Ñ.ØØ'AØ'AØ/Qð	 /ó 
ˆ
ñ /5Ó5©f¨”S˜–_©fˆ	Ð5ØÐ$Ð$ùò 6s   š3c                 óF  <€ V ^8„  d   QhRS[ R,          RS[RS[RRRS[RS[R	S[R
S[S[ S[,          ,          R,          RS[S[ S[,          ,          R,          RS[R,          RS[S[,          R,          RS[R,          RS[R,          RS[R,          RS[R,          RS[/# )r   r;   rA   Ú	do_resizeÚsizeÚresamplez7PILImageResampling | tvF.InterpolationMode | int | NoneÚ
do_rescaleÚrescale_factorÚdo_normalizeÚ
image_meanNÚ	image_stdÚdisable_groupingÚreturn_tensorsr   r   r   r   r<   )rY   r   r   r   Ústrr   r   r   )r   r   s   "€r   r   r3   §   sý   ø€ ÷ P
ñ P
á�^Õ$ðP
ñ ðP
ñ ð	P
ð
 LðP
ñ ðP
ñ ðP
ñ ðP
ñ ™D¡�KÕ'¨$Õ.ðP
ñ ™4¡�;Õ&¨Õ-ðP
ñ  �+ðP
ñ ™jÕ(¨4Õ/ðP
ñ  �ðP
ñ %(¨$¥JðP
ñ %(¨$¥JðP
ñ  -2°D­Lð!P
ñ$ 
ñ%P
r    c           	     ó‚  € / p/ p\        WR 7      w  ppVP                  4        Fð  w  ppV'       d¬   V P                  VVVVVR7      w  ppV.V,           p/ p\        VV
R 7      w  ppVP                  4        F  w  ppV P                  VVVR7      pVVV&   K!  	  \	        VV4      p\
        P                  ! V^ R7      P                  ^ ^4      P                  4       pM-V Uu. uF  p^ NK  	  ppV'       d   V P                  VVVR7      pVVV&   VVV&   Kò  	  \	        VV4      p V'       d   V  U!U"u. uF  p!V! F  p"V"NK  	  K  	  p p!p"\	        VV4      p\        V V
R 7      w  pp/ pVP                  4        F  w  ppV P                  VWVWxV	4      pVVV&   K!  	  \	        VV4      p#\        RV#RV/VR7      # u upi u up"p!i ))ri   )r;   r   r   r   r   )Úimagerb   rc   )Údimr/   r0   )ÚdataÚtensor_type)r   Úitemsr^   Úresizer   ÚtorchÚstackÚ	transposeÚ
contiguousÚrescale_and_normalizer   )$r7   r;   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   r   r   r   r   r2   Úprocessed_images_groupedÚnum_crops_groupedÚgrouped_imagesÚgrouped_images_indexÚshape_imagesÚstacked_imagesr\   r0   Úprocessed_image_patches_groupedÚgrouped_image_patchesÚgrouped_image_patches_indexrD   Ústacked_image_patchesÚprocessed_image_patchesr]   Úresized_imagesÚimages_listrm   Úprocessed_imagess$   &&&&&&&&&&&&&&&&,                   r   Ú_preprocessÚ Gemma3ImageProcessor._preprocess§   s5  € ð( $&Ð ØÐÜ/DÀVÔ/oÑ,ˆÐ,Ø,:×,@Ñ,@Ö,BÑ(ˆL˜.ßØ(,×(MÑ(MØ)Ø$3Ø/IØ/IØ7Yð )Nó )Ñ%�
˜Ið #1Ð!1°JÕ!>�à24Ð/ÜEZØ"Ð5EôFÑBÐ%Ð'Bð 5J×4OÑ4OÖ4QÑ0�EÐ0Ø,0¯K©KØ3Ø!Ø!)ð -8ó -Ð)ð
 >SÐ3°EÓ:ñ 5Rô +9Ð9XÐZuÓ*vÐ'ä!&§¢Ð-DÈ!Ô!L×!VÑ!VÐWXÐZ[Ó!\×!gÑ!gÓ!i‘á(6Ó7© 1›Q©�	Ð7çØ%)§[¡[Ø,Ø!Ø!)ð &1ó &�Nð
 /8Ð˜lÑ+Ø5CÐ$ \Ó2ñI -CôJ (Ð(@ÐBVÓWˆçÙ7EÔ_±~¨ÓS^È%›eÑS^™e±~ˆNÑ_Ü"Ð#4Ð6JÓKˆ	ô 0EÀ^ÐfvÔ/wÑ,ˆÐ,Ø#%Ð Ø%3×%9Ñ%9Ö%;Ñ!ˆE�>à!×7Ñ7Ø 
¸LÐV_óˆNð /=Ð$ UÓ+ñ &<ô *Ð*BÐDXÓYÐÜØ Ð"2°KÀÐKÐYgô
ð 	
ùò9 8ùó `s   Ã!F6Ä1F;r!   )NNNN)!r"   r#   r$   r%   r
   ÚBILINEARrc   r   rg   r   rh   rb   Údefault_to_squareÚdo_convert_rgbra   rd   rf   r   r   r   r   r   Úvalid_kwargsÚmodel_input_namesr6   r   r>   rV   r^   r†   r(   r)   Ú__classcell__)r8   r   s   @@r   r,   r,   9   sµ   ù‡ € à!×*Ñ*€HØ'€JØ%€IØ�c˜7 CÐ(€DØÐØ€NØ€IØ€JØ€LØ€OØ!%ÐØ!%ÐØ)-Ð&Ø-€LØ'¨Ð5Ð÷#ó #ð ÷4ò 4ó ð4÷B
ð B
÷H%ð %÷"P
÷ P
ò P
r    r,   )r&   rK   rE   rs   Útorchvision.transforms.v2r   ÚtvFÚimage_processing_backendsr   Úimage_processing_utilsr   Úimage_transformsr   r   Úimage_utilsr   r   r	   r
   r   Úprocessing_utilsr   r   Úutilsr   r   r   r,   Ú__all__r!   r    r   Ú<module>r—      sk   ðñ (ã Û ã Ý 7å ;Ý 2ß E÷õ ÷ 5÷ô. °Uõ .ð$ ô}
Ð-ó }
ó ð}
ð@ "Ð
"‚r    