Ë
    ÜÓ^jÐ  ã                   ó¸   — d dl Z d dlmc mZ ddlmZ ddlmZ ddl	m
Z
mZ ddlmZmZ ddlmZ ddlmZ dd	lmZ e ed
¬«       G d„ de«      «       «       ZdgZy)é    Né   )ÚBatchFeature)ÚTorchvisionBackend)Úgroup_images_by_shapeÚreorder_images)ÚPILImageResamplingÚSizeDict)Úauto_docstring)Ú
TensorType)Úrequires)Útorch)Úbackendsc                   ó  — e Zd ZdZdZdddœZej                  Zde	d   de
ded	e
d
ede
dee	e   z  dz  dee	e   z  dz  de
dz  deez  dz  defd„Z	 ddej$                  de	ej$                     dede	eeej$                  f      fd„Zy)ÚUVDocImageProcessorTiÈ  iè  )ÚheightÚwidthÚimagesztorch.TensorÚ	do_resizeÚsizeÚ
do_rescaleÚrescale_factorÚdo_normalizeÚ
image_meanNÚ	image_stdÚdisable_groupingÚreturn_tensorsÚreturnc           	      óâ  — t        ||	¬«      \  }}i }|j                  «       D ]1  \  }}| j                  ||||||«      }|d d …g d¢d d …d d …f   }|||<   Œ3 t        ||«      }|j	                  «       }t        ||	¬«      \  }}i }|j                  «       D ];  \  }}|r/t        j                  ||j                  |j                  fdd¬«      }|||<   Œ= t        ||«      }t        ||dœ|
dg¬«      S )	N)r   )é   é   r   ÚbilinearT©r   ÚmodeÚalign_corners)Úpixel_valuesÚoriginal_imagesr&   )ÚdataÚtensor_typeÚskip_tensor_conversion)
r   ÚitemsÚrescale_and_normalizer   ÚcopyÚFÚinterpolater   r   r   )Úselfr   r   r   r   r   r   r   r   r   r   ÚkwargsÚgrouped_imagesÚgrouped_images_indexÚprocessed_images_groupedÚshapeÚstacked_imagesÚrescale_and_normalize_imagesr&   Úinterpolated_images_groupedr%   s                        ú{/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/uvdoc/image_processing_uvdoc.pyÚ_preprocesszUVDocImageProcessor._preprocess*   s9  € ô 0EÀVÐ^nÔ/oÑ,ˆÐ,Ø#%Ð Ø%3×%9Ñ%9Ó%;ò 	=Ñ!ˆE�>Ø!×7Ñ7Ø 
¨N¸LÈ*ÐV_óˆNð ,ªAªyº!ºQÐ,>Ñ?ˆNØ.<Ð$ UÒ+ð	=ô (6Ð6NÐPdÓ'eÐ$à6×;Ñ;Ó=ˆä/DØ(Ð;Kô0
Ñ,ˆÐ,ð ')Ð#à%3×%9Ñ%9Ó%;ò 	@Ñ!ˆE�>áÜ!"§¡Ø"¨$¯+©+°t·z±zÐ)BÈÐcgô"�ð 2@Ð'¨Ò.ð	@ô &Ð&AÐCWÓXˆäØ".À?ÑSØ&Ø$5Ð#6ô
ð 	
ó    Ú
predictionr&   Úscalec                 ó¬  — t        |«      }t        j                  t        |«      |j                  ¬«      }g }t        |«      D �]  \  }}|j                  dk(  r|j                  d«      }|j                  |j                  «      }|j                  dd \  }}	t        j                  |||dz    ||	fdd¬	«      }
|
j                  dddd«      }t        j                  ||d¬
«      }|j                  d«      j                  ddd«      }||z  }|j                  dg¬«      j                  t        j                   dd¬«      }|j#                  d|i«       �Œ |S )až  
        Post-process document rectification predictions to convert them into rectified images.

        Args:
            prediction: Predicted 2D Bezier mesh coordinates, shape (B, 2, H, W)
            original_images: List of original input tensors, each of shape (C, H_i, W_i). Images may have different sizes.
            scale: Scaling factor for output images (default: 255.0)

        Returns:
            List of dictionaries containing rectified images. Each dictionary has:
                - "images": Rectified image tensor of shape (H, W, 3) with dtype torch.uint8
                          and BGR channel order (suitable for OpenCV visualization)
        )Údevicer   r   r   Nr    r!   Tr"   )r$   éÿÿÿÿ)ÚdimsF)ÚdtypeÚnon_blockingr,   r   )Úlistr   ÚtensorÚfloatr>   Ú	enumerateÚndimÚ	unsqueezeÚtor4   r-   r.   ÚpermuteÚgrid_sampleÚsqueezeÚflipÚuint8Úappend)r/   r;   r&   r<   Ú
image_listÚresultsÚiÚoriginal_imageÚoriginal_heightÚoriginal_widthÚupsampled_meshÚrearranged_meshÚ	rectifiedÚimages                 r8   Ú#post_process_document_rectificationz7UVDocImageProcessor.post_process_document_rectification[   sW  € ô& ˜/Ó*ˆ
Ü—‘œU 5›\°*×2CÑ2CÔDˆØˆä!*¨:Ó!6ó 	.ÑˆAˆ~à×"Ñ" aÒ'Ø!/×!9Ñ!9¸!Ó!<�Ø+×.Ñ.¨z×/@Ñ/@ÓAˆNØ.<×.BÑ.BÀ1À2Ð.FÑ+ˆO˜^ô Ÿ]™]Ø˜1˜q 1™uÐ%Ø% ~Ð6ØØ"ô	ˆNð -×4Ñ4°Q¸¸1¸aÓ@ˆOô Ÿ™ n°oÐUYÔZˆIð ×%Ñ% aÓ(×0Ñ0°°A°qÓ9ˆEð ˜E‘MˆEà—J‘J R D�JÓ)×,Ñ,´5·;±;ÈTÐX]Ð,Ó^ˆEà�N‰N˜H eÐ,Ö-ð9	.ð< ˆr:   )g     ào@)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   ÚBILINEARÚresamplerC   Úboolr	   rE   Ústrr   r   r9   r   ÚTensorÚdictrZ   © r:   r8   r   r   "   s  „ ð €JØ€IØ CÑ(€DØ!×*Ñ*€Hð/
à�^Ñ$ð/
ð ð/
ð ð	/
ð
 ð/
ð ð/
ð ð/
ð ˜D ™KÑ'¨$Ñ.ð/
ð ˜4 ™;Ñ&¨Ñ-ð/
ð  ™+ð/
ð ˜jÑ(¨4Ñ/ð/
ð 
ó/
ðj ñ	5à—L‘Lð5ð ˜eŸl™lÑ+ð5ð ð	5ð
 
ˆd�3˜Ÿ™Ð$Ñ%Ñ	&ô5r:   r   )r   Útorch.nn.functionalÚnnÚ
functionalr-   Úfeature_extraction_utilsr   Úimage_processing_backendsr   Úimage_transformsr   r   Úimage_utilsr   r	   Úutilsr
   Úutils.genericr   Úutils.import_utilsr   r   Ú__all__rd   r:   r8   ú<module>rp      s\   ðó, ß Ð å 4Ý ;ß Eß 7Ý #Ý 'Ý *ð Ù	�:ÔôlÐ,ó ló ó ðlð^ !Ð
!�r:   