+
    œ°³j$)  ã                   óÆ   € ^ RI t ^ RIt^ RIHt ^RIHt ^RIHtH	t	H
t
 ^RIHt ^RI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# )é    N)Ú
functional)ÚTorchvisionBackend)ÚBatchFeatureÚget_patch_output_sizeÚselect_best_resolution)Údivide_to_patches)ÚChannelDimensionÚPILImageResamplingÚSizeDictÚget_image_size)ÚImagesKwargsÚUnpack)Ú
TensorTypeÚauto_docstringc                   ó0   a € ] tR t^!t o RtV 3R ltRtV tR# )ÚAriaImageProcessorKwargsaŠ  
max_image_size (`int`, *optional*, defaults to `self.max_image_size`):
    Maximum image size. Must be either 490 or 980.
min_image_size (`int`, *optional*, defaults to `self.min_image_size`):
    Minimum image size. Images smaller than this in any dimension will be scaled up.
split_resolutions (`list[list[int]]`, *optional*, defaults to `self.split_resolutions`):
    A list of possible resolutions as (height, width) pairs for splitting high-resolution images into patches.
split_image (`bool`, *optional*, defaults to `self.split_image`):
    Whether to split the image into patches using the best matching resolution from `split_resolutions`.
c                ój   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[S[S[ ,          ,          ;R&   S[;R&   # )é   Úmax_image_sizeÚmin_image_sizeÚsplit_resolutionsÚsplit_image)ÚintÚlistÚbool)ÚformatÚ__classdict__s   "€Úo/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/aria/image_processing_aria.pyÚ__annotate__Ú%AriaImageProcessorKwargs.__annotate__!   sA   ø‡ ‚ ñ Ññ ñ Ññ ñ ™D¡�I•Ñ&ñ ñ Ñò ó    © 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^3t o. ROt]t]P                  t	. ROt
. ROtRtRtRtRtRtRtRtV3R lV 3R lltV3R lR	 ltV3R
 lR l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V3R lR lltRtVtV ;t# )ÚAriaImageProcessoréÔ  éP  FNTc                ó0   <€ V ^8„  d   QhRS[ S[,          /# )r   Úkwargs)r   r   )r   r   s   "€r   r   ÚAriaImageProcessor.__annotate__C   s   ø€ ÷ #ñ #¡Ñ(@Õ!Añ #r!   c                óÄ   <€ VP                  R 4      f7   . ROpV Uu. uF"  q3^ ,          R,          V^,          R,          .NK$  	  upVR &   \        SV `  ! R/ VB  R# u upi )r   Néê  ))é   r   )r5   é   )r5   é   )r5   é   )r5   é   )r5   é   )r5   é   )r   r7   )r   r6   )r   r   )r   r5   )r6   r5   )r6   r   )r7   r5   )r7   r   )r8   r5   )r9   r5   )r:   r5   )r;   r5   r"   )ÚgetÚsuperÚ__init__)Úselfr1   Údefault_resolutionsÚelÚ	__class__s   &,  €r   r>   ÚAriaImageProcessor.__init__C   sa   ø€ Ø�:‰:Ð)Ó*Ò2ò #{ÐÙPcÓ*dÑPcÈ"¨q­E°C­K¸¸A½À½Ó+EÑPcÑ*dˆFÐ&Ñ'Ü‰ÒÑ"˜6Ô"ùò +es   �(Ac                ó<   <€ V ^8„  d   QhRS[ RS[ RS[S[,          /# )r   Úoriginal_resolutionÚtarget_resolutionÚreturn)Útupler   r   )r   r   s   "€r   r   r2   I   s.   ø€ ÷ @ñ @±Uð @Éuð @ÑY]Ñ^aÕYbñ @r!   c                ó„   € Vw  r4Vw  rV\        Wd,
          ^4      w  rx\        WS,
          ^4      w  ršWyWx,           Wš,           .# )zNGet padding size for patching, returns [left, top, right, bottom] for tvF.pad.)Údivmod)r?   rE   rF   Úoriginal_heightÚoriginal_widthÚtarget_heightÚtarget_widthÚpaste_xÚr_xÚpaste_yÚr_ys   &&&        r   Ú_get_padding_sizeÚ$AriaImageProcessor._get_padding_sizeI   sE   € à*=Ñ'ˆØ&7Ñ#ˆÜ˜lÕ;¸QÓ?‰ˆÜ˜mÕ=¸qÓA‰ˆØ '¥-°µÐ?Ð?r!   c                ó,   <€ V ^8„  d   QhRRRS[ RRRR/# )r   Úimageútorch.TensorrF   Úresampleú7PILImageResampling | tvF.InterpolationMode | int | NonerG   ©rH   )r   r   s   "€r   r   r2   Q   s:   ø€ ÷ 
Zñ 
Zàð
Zñ !ð
Zð Lð	
Zð
 
ñ
Zr!   c                óv   € \        W\        P                  R7      w  rEV P                  V\	        WER7      V4      # )zFResize an image to a target resolution while maintaining aspect ratio.©Úinput_data_format©ÚheightÚwidth)r   r	   ÚFIRSTÚresizer   )r?   rV   rF   rX   Ú
new_heightÚ	new_widths   &&&&  r   Ú_resize_for_patchingÚ'AriaImageProcessor._resize_for_patchingQ   s8   € ô !6ØÔ8H×8NÑ8Nô!
Ñˆ
ð �{‰{˜5¤(°*Ô"NÐPXÓYÐYr!   c                ó(   <€ V ^8„  d   QhRRRS[ RR/# )r   rV   rW   rF   rG   rZ   )r   r   s   "€r   r   r2   ]   s)   ø€ ÷ /ñ /àð/ñ !ð/ð 
ñ	/r!   c                óˆ   € \        W\        P                  R7      pV P                  W24      p\        P
                  ! WR7      # )zCPad an image to a target resolution while maintaining aspect ratio.r\   )Úpadding)r   r	   ra   rS   ÚtvFÚpad)r?   rV   rF   Únew_resolutionri   s   &&&  r   Ú_pad_for_patchingÚ$AriaImageProcessor._pad_for_patching]   s6   € ô /¨uÔ[k×[qÑ[qÔrˆØ×(Ñ(¨ÓKˆÜ�wŠw�uÔ.Ð.r!   c                ób   <€ V ^8„  d   QhRRRS[ S[ S[,          ,          RS[RRRS[ R,          /# )r   rV   rW   Úgrid_pinpointsÚ
patch_sizerX   rY   rG   )r   r   )r   r   s   "€r   r   r2   g   sK   ø€ ÷ ñ àðñ ™T¡#�Y�ðñ ð	ð
 Lðñ 
ˆnÕ	ñr!   c                óò   € \        V\        4      '       g   \        R4      h\        V\        P
                  R7      p\        WR4      pV P                  WV4      pV P                  Wv4      p\        WƒR7      p	V	# )a:  
Process an image with variable resolutions by dividing it into patches.

Args:
    image (`torch.Tensor`):
        The input image to be processed (channels-first format).
    grid_pinpoints (`list[list[int]]`):
        A list of possible resolutions as (height, width) pairs.
    patch_size (`int`):
        Size of each square patch to divide the image into.
    resample (`PILImageResampling | tvF.InterpolationMode | int | None`):
        Resampling filter to use when resizing.

Returns:
    `list[torch.Tensor]`: A list of image patches in channels-first format.
z6grid_pinpoints must be a list of possible resolutions.)Úchannel_dim)rq   )
Ú
isinstancer   Ú	TypeErrorr   r	   ra   r   re   rm   r   )
r?   rV   rp   rq   rX   Ú
image_sizeÚbest_resolutionÚresized_imageÚpadded_imageÚpatchess
   &&&&&     r   Úget_image_patchesÚ$AriaImageProcessor.get_image_patchesg   sk   € ô. ˜.¬$×/Ò/ÜÐTÓUÐUä# EÔ7G×7MÑ7MÔNˆ
Ü0°ÓLˆØ×1Ñ1°%È(ÓSˆØ×-Ñ-¨mÓMˆÜ# LÔHˆØˆr!   c                ó0  <€ V ^8„  d   QhRS[ 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S[RS[ S[ S[,          ,          R,          RS[RRRS[/# )r   ÚimagesrW   Ú
do_rescaleÚrescale_factorÚdo_normalizeÚ
image_meanNÚ	image_stdÚdisable_groupingÚreturn_tensorsr   r   r   r   rX   rY   rG   )r   r   ÚfloatÚstrr   r   r   )r   r   s   "€r   r   r2   ˆ   sä   ø€ ÷ C
ñ C
á�^Õ$ðC
ñ ðC
ñ ð	C
ñ
 ðC
ñ ™D¡�KÕ'¨$Õ.ðC
ñ ™4¡�;Õ&¨Õ-ðC
ñ  �+ðC
ñ ™jÕ(¨4Õ/ðC
ñ ðC
ñ ðC
ñ  ¡¡S¥	�?¨TÕ1ðC
ñ ðC
ð LðC
ñ  
ñ!C
r!   c           
     óÀ  € V	R9  d   \        R4      h. p. pRpV EFi  pV'       d   V P                  VW¹V4      pMV.pVe   \        V4      V8”  d   \        V4      pV EF   pVP                  R,          VP                  R,          ppV	\	        VV4      ,          pVV8¼  d    \	        \        VV,          4      V
4      pT	pMT	p\	        \        VV,          4      V
4      pV P                  V\        VVR7      V4      pV	V,
          pV	V,
          p\        P                  ! V^ ^ VV.4      p\        P                  ! W™3\        P                  R7      pRVRV1RV13&   VP                  V4       VP                  V4       EK#  	  EKl  	  \        P                  ! V^ R7      pV P                  VW#WEV4      p\        P                  ! V^ R7      p\!        RVRVR	V/VR
7      # )r4   z(max_image_size must be either 490 or 980Nr^   )ÚdtypeT)ÚdimÚpixel_valuesÚ
pixel_maskÚ	num_crops)ÚdataÚtensor_type)r4   r.   éþÿÿÿéÿÿÿÿ)Ú
ValueErrorr{   ÚlenÚshapeÚmaxr   rb   r   rj   rk   ÚtorchÚzerosr   ÚappendÚstackÚrescale_and_normalizer   )r?   r~   r   r€   r�   r‚   rƒ   r„   r…   r   r   r   r   rX   r1   Úpixel_masksÚprocessed_cropsr�   rV   Úcrop_imagesÚ
crop_imageÚhÚwÚscaleÚnew_hÚnew_wÚpadding_bottomÚpadding_rightrŒ   Ústacked_imagesÚstacked_maskss   &&&&&&&&&&&&&&,                r   Ú_preprocessÚAriaImageProcessor._preprocessˆ   s×  € ð"  Ô+ÜÐGÓHÐHàˆØˆØˆ	äˆEßØ"×4Ñ4°UÐ<MÐ_gÓh‘à$˜g�àÒ ¤C¨Ó$4°yÔ$@Ü Ó,�	ä)�
Ø!×'Ñ'¨Õ+¨Z×-=Ñ-=¸bÕ-A�1�Ø&¬¨Q°«Õ2�Ø˜”6Ü¤ A¨¥I£°Ó?�EØ*‘Eà*�EÜ¤ A¨¥I£°Ó?�Eà!Ÿ[™[¨´XÀUÐRWÔ5XÐZbÓc�
à!/°%Õ!7�Ø .°Õ 6�Ü ŸWšW Z°!°Q¸À~Ð1VÓW�
ä"Ÿ[š[¨.Ð)IÔQV×Q[ÑQ[Ô\�
Ø-1�
˜6˜E˜6 6 E 6˜>Ñ*Ø×"Ñ" :Ô.Ø×&Ñ& z×2ô' *ñ ô< Ÿš _¸!Ô<ˆØ×3Ñ3Ø˜J¸ÐR[ó
ˆô Ÿš K°QÔ7ˆäà Ø˜mØ˜Yðð
 'ô
ð 	
r!   c                ó@   <€ V ^8„  d   QhRS[ RS[ RS[R,          RS[ /# )r   r_   r`   Úimages_kwargsNrG   )r   Údict)r   r   s   "€r   r   r2   Í   s1   ø€ ÷ ñ ±#ð ¹cð ÑRVÐY]ÕR]ð Ñilñ r!   c                óv  € T;'       g    / pVP                  RV P                  4      pVP                  RV P                  4      pVP                  RV P                  4      p\	        W3V4      w  rxV'       g   ^p	V	# \
        P                  ! Wu,          4      \
        P                  ! W…,          4      ,          p	V	# )aU  
A utility that returns number of image patches for a given image size.

Args:
    height (`int`):
        Height of the input image.
    width (`int`):
        Width of the input image.
    images_kwargs (`dict`, *optional*):
        Any kwargs to override defaults of the image processor.

Returns:
    `int`: Number of patches per image.
r   r   r   )r<   r   r   r   r   ÚmathÚceil)
r?   r_   r`   r«   r   r   r   Úresized_heightÚresized_widthÚnum_patchess
   &&&&      r   Úget_number_of_image_patchesÚ.AriaImageProcessor.get_number_of_image_patchesÍ   s´   € ð &×+Ð+¨ˆØ#×'Ñ'¨°t×7GÑ7GÓHˆØ&×*Ñ*Ð+;¸T×=PÑ=PÓQˆØ)×-Ñ-Ð.AÀ4×CYÑCYÓZÐä(>À¸ÐPaÓ(bÑ%ˆ÷ ð ð 	ð
 Ðô —’˜>Õ:Ó;¼d¿iºiÈÕHfÓ>gÕgð 	ð
 Ðr!   r"   )r‹   rŒ   r�   )ç      à?rµ   rµ   )r.   r/   NFN)N)r#   r$   r%   r&   Úmodel_input_namesr   Úvalid_kwargsr
   ÚBICUBICrX   r‚   rƒ   r   r   r   r   Údo_convert_rgbr   r�   r>   rS   re   rm   r{   r¨   r³   r)   r*   Ú__classcell__)rB   r   s   @@r   r-   r-   3   sœ   ù‡ € âCÐØ+€Là!×)Ñ)€HÚ €JÚ€IØ€NØ€NØ€KØÐØ€NØ€JØ€L÷#ó #÷@ð @÷
Zð 
Z÷/ð /÷ð ÷BC
ò C
÷J÷ ò r!   r-   )r®   r–   Útorchvision.transforms.v2r   rj   Úimage_processing_backendsr   Úimage_processing_utilsr   r   r   Úimage_transformsr   Úimage_utilsr	   r
   r   r   Úprocessing_utilsr   r   Úutilsr   r   r   r-   Ú__all__r"   r!   r   Ú<module>rÃ      s`   ðó( ã Ý 7å ;ß aÑ aÝ 1ß YÓ Yß 4ß /ô˜|°5õ ð$ ôsÐ+ó só ðsðl  Ð
 ‚r!   