ó
    Eñi�¿  ã                   ót  • S SK r S SKrS SKrS SKrS SKrS SKJrJr  S SKJr  S SK	J
r
  S SKJrJrJrJr  S SKrS SKJr  SSKJrJrJr  SS	KJr  \\R&                  \R&                  \\R6                     \R6                  4   r\\R&                  \R&                  \\R6                     4   rS
r\ R>                  " \SS9r  " S S\\5      r! " S S\!5      r" " S S\!5      r# " S S\!5      r$ " S S\!5      r% " S S\!5      r& " S S\!5      r' " S S\!5      r( " S S\!5      r) " S S\!5      r* " S  S!\!5      r+g)"é    N)ÚABCÚabstractmethod)Úglob)ÚPath)ÚCallableÚcastÚOptionalÚUnion)ÚImageé   )Ú	_read_pfmÚdownload_and_extract_archiveÚverify_str_arg)ÚVisionDataset© )Úslice_channelsc                   ó@  ^ • \ rS rSrSrSrSS\\\4   S\	\
   SS4U 4S jjjrS	\\\4   S\R                  4S
 jr SS\S\	\   S\\\\	\   4      4S jjr\S	\S\\	\R&                     \	\R&                     4   4S j5       rS\S\\\4   4S jrS\4S jrSrU =r$ )ÚStereoMatchingDataseté   z+Base interface for Stereo matching datasetsFNÚrootÚ
transformsÚreturnc                 óH   >• [         TU ]  US9  X l        / U l        / U l        g)aÝ  
Args:
    root(str): Root directory of the dataset.
    transforms(callable, optional): A function/transform that takes in Tuples of
        (images, disparities, valid_masks) and returns a transformed version of each of them.
        images is a Tuple of (``PIL.Image``, ``PIL.Image``)
        disparities is a Tuple of (``np.ndarray``, ``np.ndarray``) with shape (1, H, W)
        valid_masks is a Tuple of (``np.ndarray``, ``np.ndarray``) with shape (H, W)
        In some cases, when a dataset does not provide disparities, the ``disparities`` and
        ``valid_masks`` can be Tuples containing None values.
        For training splits generally the datasets provide a minimal guarantee of
        images: (``PIL.Image``, ``PIL.Image``)
        disparities: (``np.ndarray``, ``None``) with shape (1, H, W)
        Optionally, based on the dataset, it can return a ``mask`` as well:
        valid_masks: (``np.ndarray | None``, ``None``) with shape (H, W)
        For some test splits, the datasets provides outputs that look like:
        imgaes: (``PIL.Image``, ``PIL.Image``)
        disparities: (``None``, ``None``)
        Optionally, based on the dataset, it can return a ``mask`` as well:
        valid_masks: (``None``, ``None``)
)r   N)ÚsuperÚ__init__r   Ú_imagesÚ_disparities)Úselfr   r   Ú	__class__s      €Úb/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torchvision/datasets/_stereo_matching.pyr   ÚStereoMatchingDataset.__init__   s)   ø€ ô, 	‰Ñ˜dÐÑ#Ø$ŒàˆŒØˆÕó    Ú	file_pathc                 ót   • [         R                  " U5      nUR                  S:w  a  UR                  S5      nU$ )NÚRGB)r   ÚopenÚmodeÚconvert)r   r#   Úimgs      r    Ú	_read_imgÚStereoMatchingDataset._read_img:   s/   € Ü�jŠj˜Ó#ˆØ�8‰8�uÓØ—+‘+˜eÓ$ˆCØˆ
r"   Úpaths_left_patternÚpaths_right_patternc                 ó¼  • [        [        [        U5      5      5      nU(       a  [        [        [        U5      5      5      nO[        S U 5       5      nU(       d  [        SU 35      eU(       d  [        SU 35      e[	        U5      [	        U5      :w  a*  [        S[	        U5       S[	        U5       SU SU S3	5      e[        S [        X45       5       5      nU$ )	Nc              3   ó&   #   • U  H  nS v •  M	     g 7f©Nr   ©Ú.0Ú_s     r    Ú	<genexpr>Ú4StereoMatchingDataset._scan_pairs.<locals>.<genexpr>L   s   é € Ð8ªZ¨�tªZùó   ‚z0Could not find any files matching the patterns: zFound z left files but z# right files using:
 left pattern: z
right pattern: Ú
c              3   ó,   #   • U  H
  u  pX4v •  M     g 7fr0   r   )r2   ÚleftÚrights      r    r4   r5   [   s   é € ÐSÒ6R¡{ t�d•]Ò6Rùs   ‚)ÚlistÚsortedr   ÚFileNotFoundErrorÚlenÚ
ValueErrorÚzip)r   r,   r-   Ú
left_pathsÚright_pathsÚpathss         r    Ú_scan_pairsÚ!StereoMatchingDataset._scan_pairs@   sä   € ô œ&¤Ð&8Ó!9Ó:Ó;ˆ
ö Üœv¤dÐ+>Ó&?Ó@ÓA‰KäÑ8©ZÓ8Ó8ˆKæÜ#Ð&VÐWiÐVjÐ$kÓlÐlæÜ#Ð&VÐWjÐVkÐ$lÓmÐmäˆz‹?œc +Ó.Ó.ÜØœ˜Z›Ð)Ð)9¼#¸kÓ:JÐ9Kð L!Ø!3Ð 4ð 5"Ø"5Ð!6°bð:óð ô ÑS´c¸*Ô6RÓSÓSˆØˆr"   c                 ó   • g r0   r   )r   r#   s     r    Ú_read_disparityÚ%StereoMatchingDataset._read_disparity^   s   € ð 	r"   Úindexc                 ó  • U R                  U R                  U   S   5      nU R                  U R                  U   S   5      nU R                  U R                  U   S   5      u  pEU R                  U R                  U   S   5      u  pgX#4nXF4n	XW4n
U R                  b  U R	                  X‰U
5      u  nn	n
U R
                  (       d  U
S   b*  US   US   U	S   [        [        R                  U
S   5      4$ US   US   U	S   4$ )a'  Return example at given index.

Args:
    index(int): The index of the example to retrieve

Returns:
    tuple: A 3 or 4-tuple with ``(img_left, img_right, disparity, Optional[valid_mask])`` where ``valid_mask``
        can be a numpy boolean mask of shape (H, W) if the dataset provides a file
        indicating which disparity pixels are valid. The disparity is a numpy array of
        shape (1, H, W) and the images are PIL images. ``disparity`` is None for
        datasets on which for ``split="test"`` the authors did not provide annotations.
r   r   )	r*   r   rG   r   r   Ú_has_built_in_disparity_maskr   ÚnpÚndarray)r   rI   Úimg_leftÚ	img_rightÚdsp_map_leftÚvalid_mask_leftÚdsp_map_rightÚvalid_mask_rightÚimgsÚdsp_mapsÚvalid_maskss              r    Ú__getitem__Ú!StereoMatchingDataset.__getitem__c   s  € ð —>‘> $§,¡,¨uÑ"5°aÑ"8Ó9ˆØ—N‘N 4§<¡<°Ñ#6°qÑ#9Ó:ˆ	à(,×(<Ñ(<¸T×=NÑ=NÈuÑ=UÐVWÑ=XÓ(YÑ%ˆØ*.×*>Ñ*>¸t×?PÑ?PÐQVÑ?WÐXYÑ?ZÓ*[Ñ'ˆàÐ$ˆØ Ð0ˆØ&Ð9ˆà�?‰?Ñ&ð
 —‘ °Ó<ñ	ØØØð ×,×,°¸A±Ñ0JØ˜‘7˜D ™G X¨a¡[´$´r·z±zÀ;ÈqÁ>Ó2RÐRÐRà˜‘7˜D ™G X¨a¡[Ð0Ð0r"   c                 ó,   • [        U R                  5      $ r0   )r>   r   )r   s    r    Ú__len__ÚStereoMatchingDataset.__len__†   s   € Ü�4—<‘<Ó Ð r"   )r   r   r   r0   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rK   r
   Ústrr   r	   r   r   r   r*   r;   ÚtuplerD   r   rL   rM   rG   ÚintÚT1ÚT2rW   rZ   Ú__static_attributes__Ú__classcell__©r   s   @r    r   r      s  ø† Ù5à#(Ð ñ˜U 3¨ 9Ñ-ð ¸8ÀHÑ;Mð ÐY]÷ ð ð8 5¨¨d¨Ñ#3ð ¸¿¹ô ð .2ñàðð & c™]ðð 
ˆe�C˜ #™Ð&Ñ'Ñ	(õ	ð< ð¨ð °°xÀÇ
Á
Ñ7KÈXÐVX×V`ÑV`ÑMaÐ7aÑ1bó ó ðð!1 ð !1¨¨r°2¨v©ô !1ðF!˜÷ !ò !r"   r   c                   ó˜   ^ • \ rS rSrSrSS\\\4   S\\	   SS4U 4S jjjr
S\S\\R                  S4   4S	 jrS
\S\4U 4S jjrSrU =r$ )ÚCarlaStereoéŠ   a"  
Carla simulator data linked in the `CREStereo github repo <https://github.com/megvii-research/CREStereo>`_.

The dataset is expected to have the following structure: ::

    root
        carla-highres
            trainingF
                scene1
                    img0.png
                    img1.png
                    disp0GT.pfm
                    disp1GT.pfm
                    calib.txt
                scene2
                    img0.png
                    img1.png
                    disp0GT.pfm
                    disp1GT.pfm
                    calib.txt
                ...

Args:
    root (str or ``pathlib.Path``): Root directory where `carla-highres` is located.
    transforms (callable, optional): A function/transform that takes in a sample and returns a transformed version.
Nr   r   r   c                 ó<  >• [         T	U ]  X5        [        U5      S-  n[        US-  S-  S-  5      n[        US-  S-  S-  5      nU R	                  X45      nXPl        [        US-  S-  S-  5      n[        US-  S-  S-  5      nU R	                  Xg5      nX€l        g )Nzcarla-highresÚ	trainingFÚ*úim0.pngúim1.pngúdisp0GT.pfmzdisp1GT.pfm©r   r   r   ra   rD   r   r   )
r   r   r   Úleft_image_patternÚright_image_patternrT   Úleft_disparity_patternÚright_disparity_patternÚdisparitiesr   s
            €r    r   ÚCarlaStereo.__init__¦   s³   ø€ Ü‰Ñ˜Ô*ä�D‹z˜OÑ+ˆä  ¨Ñ!3°cÑ!9¸IÑ!EÓFÐÜ! $¨Ñ"4°sÑ":¸YÑ"FÓGÐØ×ÑÐ 2ÓHˆØŒä!$ T¨KÑ%7¸#Ñ%=ÀÑ%MÓ!NÐÜ"% d¨[Ñ&8¸3Ñ&>ÀÑ&NÓ"OÐØ×&Ñ&Ð'=ÓWˆØ'Õr"   r#   c                 óN   • [        U5      n[        R                  " U5      nS nX#4$ r0   ©Ú_read_pfm_filerL   Úabs©r   r#   Údisparity_mapÚ
valid_masks       r    rG   ÚCarlaStereo._read_disparityµ   ó(   € Ü& yÓ1ˆÜŸš˜}Ó-ˆØˆ
ØÐ(Ð(r"   rI   c                 ó>   >• [        [        [        TU ]  U5      5      $ ©a•  Return example at given index.

Args:
    index(int): The index of the example to retrieve

Returns:
    tuple: A 3-tuple with ``(img_left, img_right, disparity)``.
    The disparity is a numpy array of shape (1, H, W) and the images are PIL images.
    If a ``valid_mask`` is generated within the ``transforms`` parameter,
    a 4-tuple with ``(img_left, img_right, disparity, valid_mask)`` is returned.
©r   rd   r   rW   ©r   rI   r   s     €r    rW   ÚCarlaStereo.__getitem__»   ó   ø€ ô ”Bœ™Ñ+¨EÓ2Ó3Ð3r"   ©r   r   r0   ©r\   r]   r^   r_   r`   r
   ra   r   r	   r   r   rb   rL   rM   rG   rc   rd   rW   rf   rg   rh   s   @r    rj   rj   Š   so   ø† ññ6(˜U 3¨ 9Ñ-ð (¸8ÀHÑ;Mð (ÐY]÷ (ð (ð)¨ð )°°r·z±zÀ4Ð7GÑ1Hô )ð4 ð 4¨÷ 4õ 4r"   rj   c            	       ó¦   ^ • \ rS rSrSrSrSS\\\4   S\S\	\
   SS4U 4S	 jjjrS
\S\\	\R                     S4   4S jrS\S\4U 4S jjrSrU =r$ )ÚKitti2012StereoéÊ   a†  
KITTI dataset from the `2012 stereo evaluation benchmark <http://www.cvlibs.net/datasets/kitti/eval_stereo_flow.php>`_.
Uses the RGB images for consistency with KITTI 2015.

The dataset is expected to have the following structure: ::

    root
        Kitti2012
            testing
                colored_0
                    1_10.png
                    2_10.png
                    ...
                colored_1
                    1_10.png
                    2_10.png
                    ...
            training
                colored_0
                    1_10.png
                    2_10.png
                    ...
                colored_1
                    1_10.png
                    2_10.png
                    ...
                disp_noc
                    1.png
                    2.png
                    ...
                calib

Args:
    root (str or ``pathlib.Path``): Root directory where `Kitti2012` is located.
    split (string, optional): The dataset split of scenes, either "train" (default) or "test".
    transforms (callable, optional): A function/transform that takes in a sample and returns a transformed version.
TNr   Úsplitr   r   c                 ór  >• [         TU ]  X5        [        USSS9  [        U5      S-  US-   -  n[	        US-  S-  5      n[	        US-  S-  5      nU R                  XE5      U l        US	:X  a)  [	        US
-  S-  5      nU R                  US 5      U l        g [        S U R                   5       5      U l        g )Nr�   ©ÚtrainÚtest©Úvalid_valuesÚ	Kitti2012ÚingÚ	colored_0z*_10.pngÚ	colored_1r�   Údisp_nocú*.pngc              3   ó&   #   • U  H  nS v •  M	     g7f©©NNNr   r1   s     r    r4   Ú+Kitti2012Stereo.__init__.<locals>.<genexpr>  ó   é € Ð$Hº<°a¥\º<ùr6   ©	r   r   r   r   ra   rD   r   r   r;   )r   r   r�   r   Úleft_img_patternÚright_img_patternÚdisparity_patternr   s          €r    r   ÚKitti2012Stereo.__init__ó   s»   ø€ Ü‰Ñ˜Ô*ä�u˜gÐ4EÒFä�D‹z˜KÑ'¨5°5©=Ñ9ˆä˜t kÑ1°JÑ>Ó?ÐÜ  {Ñ 2°ZÑ ?Ó@ÐØ×'Ñ'Ð(8ÓLˆŒà�GÓÜ # D¨:Ñ$5¸Ñ$?Ó @ÐØ $× 0Ñ 0Ð1BÀDÓ IˆDÕä $Ñ$H¸4¿<º<Ó$HÓ HˆDÕr"   r#   c                 ó†   • Uc  g[         R                  " [        R                  " U5      5      S-  nUS S S 2S S 24   nS nX#4$ ©Nrœ   g      p@©rL   Úasarrayr   r&   r}   s       r    rG   ÚKitti2012Stereo._read_disparity  óE   € àÑØäŸ
š
¤5§:¢:¨iÓ#8Ó9¸EÑAˆà% dªAªq jÑ1ˆØˆ
ØÐ(Ð(r"   rI   c                 ó>   >• [        [        [        TU ]  U5      5      $ ©aÉ  Return example at given index.

Args:
    index(int): The index of the example to retrieve

Returns:
    tuple: A 4-tuple with ``(img_left, img_right, disparity, valid_mask)``.
    The disparity is a numpy array of shape (1, H, W) and the images are PIL images.
    ``valid_mask`` is implicitly ``None`` if the ``transforms`` parameter does not
    generate a valid mask.
    Both ``disparity`` and ``valid_mask`` are ``None`` if the dataset split is test.
r„   r…   s     €r    rW   ÚKitti2012Stereo.__getitem__  ó   ø€ ô ”Bœ™Ñ+¨EÓ2Ó3Ð3r"   rˆ   ©r�   N©r\   r]   r^   r_   r`   rK   r
   ra   r   r	   r   r   rb   rL   rM   rG   rc   rd   rW   rf   rg   rh   s   @r    r‹   r‹   Ê   sŒ   ø† ñ$ðL $(Ð ñI˜U 3¨ 9Ñ-ð I°cð IÐQYÐZbÑQcð IÐos÷ Ið Ið"	)¨ð 	)°°xÀÇ
Á
Ñ7KÈTÐ7QÑ1Rô 	)ð4 ð 4¨÷ 4õ 4r"   r‹   c            	       ó¦   ^ • \ rS rSrSrSrSS\\\4   S\S\	\
   SS4U 4S	 jjjrS
\S\\	\R                     S4   4S jrS\S\4U 4S jjrSrU =r$ )ÚKitti2015Stereoi  a½  
KITTI dataset from the `2015 stereo evaluation benchmark <http://www.cvlibs.net/datasets/kitti/eval_scene_flow.php>`_.

The dataset is expected to have the following structure: ::

    root
        Kitti2015
            testing
                image_2
                    img1.png
                    img2.png
                    ...
                image_3
                    img1.png
                    img2.png
                    ...
            training
                image_2
                    img1.png
                    img2.png
                    ...
                image_3
                    img1.png
                    img2.png
                    ...
                disp_occ_0
                    img1.png
                    img2.png
                    ...
                disp_occ_1
                    img1.png
                    img2.png
                    ...
                calib

Args:
    root (str or ``pathlib.Path``): Root directory where `Kitti2015` is located.
    split (string, optional): The dataset split of scenes, either "train" (default) or "test".
    transforms (callable, optional): A function/transform that takes in a sample and returns a transformed version.
TNr   r�   r   r   c                 ó’  >• [         TU ]  X5        [        USSS9  [        U5      S-  US-   -  n[	        US-  S-  5      n[	        US-  S-  5      nU R                  XE5      U l        US	:X  a9  [	        US
-  S-  5      n[	        US-  S-  5      nU R                  Xg5      U l        g [        S U R                   5       5      U l        g )Nr�   r�   r’   Ú	Kitti2015r•   Úimage_2r™   Úimage_3r�   Ú
disp_occ_0Ú
disp_occ_1c              3   ó&   #   • U  H  nS v •  M	     g7fr›   r   r1   s     r    r4   Ú+Kitti2015Stereo.__init__.<locals>.<genexpr>Z  rž   r6   rŸ   ©	r   r   r�   r   r    r¡   ru   rv   r   s	           €r    r   ÚKitti2015Stereo.__init__K  sÎ   ø€ Ü‰Ñ˜Ô*ä�u˜gÐ4EÒFä�D‹z˜KÑ'¨5°5©=Ñ9ˆÜ˜t iÑ/°'Ñ9Ó:ÐÜ  yÑ 0°7Ñ :Ó;ÐØ×'Ñ'Ð(8ÓLˆŒà�GÓÜ%(¨°Ñ)<¸wÑ)FÓ%GÐ"Ü&)¨$°Ñ*=ÀÑ*GÓ&HÐ#Ø $× 0Ñ 0Ð1GÓ aˆDÕä $Ñ$H¸4¿<º<Ó$HÓ HˆDÕr"   r#   c                 ó†   • Uc  g[         R                  " [        R                  " U5      5      S-  nUS S S 2S S 24   nS nX#4$ r¥   r¦   r}   s       r    rG   ÚKitti2015Stereo._read_disparity\  r©   r"   rI   c                 ó>   >• [        [        [        TU ]  U5      5      $ r«   r„   r…   s     €r    rW   ÚKitti2015Stereo.__getitem__g  r­   r"   rˆ   r®   r¯   rh   s   @r    r±   r±     sŒ   ø† ñ'ðR $(Ð ñI˜U 3¨ 9Ñ-ð I°cð IÐQYÐZbÑQcð IÐos÷ Ið Ið"	)¨ð 	)°°xÀÇ
Á
Ñ7KÈTÐ7QÑ1Rô 	)ð4 ð 4¨÷ 4õ 4r"   r±   c                   óJ  ^ • \ rS rSrSr/ SQ/ SQ/ SQS.rSr     SS	\\\	4   S
\S\
\   S\S\
\   S\SS4U 4S jjjrS\\\	4   S\R                  4U 4S jjrS\S\\S   \\R$                  \R$                  4   4   4S jrS	\\\	4   SS4S jrS\S\4U 4S jjrSrU =r$ )ÚMiddlebury2014Stereoiw  aŽ  Publicly available scenes from the Middlebury dataset `2014 version <https://vision.middlebury.edu/stereo/data/scenes2014/>`.

The dataset mostly follows the original format, without containing the ambient subdirectories.  : ::

    root
        Middlebury2014
            train
                scene1-{perfect,imperfect}
                    calib.txt
                    im{0,1}.png
                    im1E.png
                    im1L.png
                    disp{0,1}.pfm
                    disp{0,1}-n.png
                    disp{0,1}-sd.pfm
                    disp{0,1}y.pfm
                scene2-{perfect,imperfect}
                    calib.txt
                    im{0,1}.png
                    im1E.png
                    im1L.png
                    disp{0,1}.pfm
                    disp{0,1}-n.png
                    disp{0,1}-sd.pfm
                    disp{0,1}y.pfm
                ...
            additional
                scene1-{perfect,imperfect}
                    calib.txt
                    im{0,1}.png
                    im1E.png
                    im1L.png
                    disp{0,1}.pfm
                    disp{0,1}-n.png
                    disp{0,1}-sd.pfm
                    disp{0,1}y.pfm
                ...
            test
                scene1
                    calib.txt
                    im{0,1}.png
                scene2
                    calib.txt
                    im{0,1}.png
                ...

Args:
    root (str or ``pathlib.Path``): Root directory of the Middleburry 2014 Dataset.
    split (string, optional): The dataset split of scenes, either "train" (default), "test", or "additional"
    use_ambient_views (boolean, optional): Whether to use different expose or lightning views when possible.
        The dataset samples with equal probability between ``[im1.png, im1E.png, im1L.png]``.
    calibration (string, optional): Whether or not to use the calibrated (default) or uncalibrated scenes.
    transforms (callable, optional): A function/transform that takes in a sample and returns a transformed version.
    download (boolean, optional): Whether or not to download the dataset in the ``root`` directory.
)
Ú
AdirondackÚ	JadeplantÚ
MotorcycleÚPianoÚPipesÚPlayroomÚ	PlaytableÚRecycleÚShelvesÚVintage)ÚBackpackÚBicycle1ÚCableÚ
Classroom1ÚCouchÚFlowersÚMaskÚShopvacÚSticksÚStorageÚSword1ÚSword2ÚUmbrella)ÚPlantsÚClassroom2EÚ
Classroom2Ú	AustraliaÚDjembeLÚCrusadePÚCrusadeÚHoopsÚBicycle2Ú	StaircaseÚNewkubaÚ
AustraliaPÚDjembeÚ
LivingroomÚComputer)r�   Ú
additionalr‘   TNr   r�   ÚcalibrationÚuse_ambient_viewsr   Údownloadr   c                 óÒ  >^• [         TU ]  X5        [        USSS9  X l        U(       a  [        USSS9  US:X  a  [	        S5      eOUS:w  a  [	        SU S	U S
35      eU(       a  U R                  U5        [        U5      S-  n[        R                  R                  X-  5      (       d  [        SU S35      eU R                  U   m[        U4S j[        R                  " X-  5       5       5      (       d  [        SU S35      eS/S/S/SS/S.U   nU HÅ  nSU-   n	[        X-  U	-  S-  5      n
[        X-  U	-  S-  5      nU =R                  U R!                  X«5      -  sl        US:X  a#  [#        S U R                   5       5      U l        M{  [        X-  U	-  S-  5      n[        X-  U	-  S-  5      nU =R$                  U R!                  XÍ5      -  sl        MÇ     X@l        g )Nr�   )r�   r‘   rè   r’   ré   )ÚperfectÚ	imperfectÚbothNr‘   zMSplit 'test' has only no calibration settings, please set `calibration=None`.zSplit 'zr' has calibration settings, however None was provided as an argument.
Setting calibration to 'perfect' for split 'zF'. Available calibration settings are: 'perfect', 'imperfect', 'both'.ÚMiddlebury2014zThe z7 directory was not found in the provided root directoryc              3   óZ   >#   • U  H   nT  H  nUR                  U5      v •  M     M"     g 7fr0   )Ú
startswith)r2   ÚsceneÚsÚsplit_sceness      €r    r4   Ú0Middlebury2014Stereo.__init__.<locals>.<genexpr>  s5   øé € ð 
ò 2�Ü!�ð ×Ñ˜Q×Ðá!ñ  Ú1ùó   ƒ(+z:Provided root folder does not contain any scenes from the z split.Ú z-perfectz
-imperfect)Nrí   rî   rï   rn   ro   rp   c              3   ó&   #   • U  H  nS v •  M	     g7fr›   r   r1   s     r    r4   rö     s   é € Ð(Lº|¸!­º|ùr6   z	disp0.pfmz	disp1.pfm)r   r   r   r�   r?   Ú_download_datasetr   ÚosÚpathÚexistsr=   ÚsplitsÚanyÚlistdirra   r   rD   r;   r   rê   )r   r   r�   ré   rê   r   rë   Úcalibrartion_suffixesÚcalibration_suffixÚscene_patternr    r¡   Úleft_dispartity_patternÚright_dispartity_patternrõ   r   s                 @€r    r   ÚMiddlebury2014Stereo.__init__á  s  ù€ ô 	‰Ñ˜Ô*ä�u˜gÐ4SÒTØŒ
æÜ˜;¨ÐDjÒkØ˜‹Ü Ð!pÓqÐqð ð ˜‹Ü Ø˜e˜Wð %EØEJÀGð  LRðSóð ö
 Ø×"Ñ" 4Ô(ä�D‹zÐ,Ñ,ˆä�w‰w�~‰~˜d™l×+Ñ+Ü# d¨5¨'Ð1hÐ$iÓjÐjà—{‘{ 5Ñ)ˆäô 
ô Ÿš D¡LÔ1ó
÷ 
ñ 
ô $Ð&`ÐafÐ`gÐgnÐ$oÓpÐpð �$Ø"�|Ø&˜Ø Ð.ñ	!
ð
 ñ!Ðó #8ÐØÐ"4Ñ4ˆMÜ" 4¡<°-Ñ#?À)Ñ#KÓLÐÜ # D¡L°=Ñ$@À9Ñ$LÓ MÐØ�LŠL˜D×,Ñ,Ð-=ÓQÑQ�Là˜‹Ü$(Ñ(L¸t¿|º|Ó(LÓ$L�Ö!ä*-¨d©l¸]Ñ.JÈ[Ñ.XÓ*YÐ'Ü+.¨t©|¸mÑ/KÈkÑ/YÓ+ZÐ(Ø×!Ò! T×%5Ñ%5Ð6MÓ%hÑh×!ñ #8ð "3Õr"   r#   c                 ób  >^• [        U[        5      (       d  [        U5      nUR                  S:X  ao  U R                  (       a^  UR                  m[        U4S jS 5       5      n[        [        S U5      5      nUR                  U5        [        R                  " U5      n[        TU ]-  U5      $ )zñ
Function that reads either the original right image or an augmented view when ``use_ambient_views`` is True.
When ``use_ambient_views`` is True, the dataset will return at random one of ``[im1.png, im1E.png, im1L.png]``
as the right image.
rp   c              3   ó.   >#   • U  H
  nTU-  v •  M     g 7fr0   r   )r2   Ú	view_nameÚ	base_paths     €r    r4   Ú1Middlebury2014Stereo._read_img.<locals>.<genexpr>0  s   øé € Ð%fÒMeÀ	 i°)Ö&;ÒMeùs   ƒ)zim1E.pngzim1L.pngc                 ó@   • [         R                  R                  U 5      $ r0   )rû   rü   rý   )Úps    r    Ú<lambda>Ú0Middlebury2014Stereo._read_img.<locals>.<lambda>2  s   € ´r·w±w·~±~ÀaÔ7Hr"   )Ú
isinstancer   Únamerê   Úparentr;   ÚfilterÚappendÚrandomÚchoicer   r*   )r   r#   Úambient_file_pathsr
  r   s      @€r    r*   ÚMiddlebury2014Stereo._read_img"  s�   ù€ ô ˜)¤T×*Ñ*Ü˜Y›ˆIà�>‰>˜YÓ&¨4×+A×+AØ!×(Ñ(ˆIä!%Ô%fÑMeÓ%fÓ!fÐä!%¤fÑ-HÐJ\Ó&]Ó!^Ðà×%Ñ% iÔ0ÜŸšÐ&8Ó9ˆIÜ‰wÑ  Ó+Ð+r"   rœ   c                 ó¤   • Uc  g[        U5      n[        R                  " U5      nSX"[        R                  :H  '   US:„  R	                  S5      nX#4$ )Nrœ   r   )r{   rL   r|   ÚinfÚsqueezer}   s       r    rG   Ú$Middlebury2014Stereo._read_disparity8  sR   € àÑØä& yÓ1ˆÜŸš˜}Ó-ˆØ12ˆ¤r§v¡vÑ-Ñ.Ø# aÑ'×0Ñ0°Ó3ˆ
ØÐ(Ð(r"   c           	      ó  ^• Sn[        T5      S-  mU R                  nUS:w  ae  U R                  U    HQ  nTU-  nS HC  nU SU 3nU SU S3nXW-  R                  5       (       a  M+  [	        UU S3[        U5      SS	9  ME     MS     g [        R                  " TS-  5        [        U4S
 jU R                  S    5       5      (       a¿  Sn	[	        U	[        T5      SS9  [        R                  " [        TS-  5      5       H`  u  p«nU HT  nTS-  n[        U
5      U-  n[        R                  " USS9  [        R                  " [        U5      [        U5      5        MV     Mb     [        R                  " [        TS-  5      5        g g )Nz8https://vision.middlebury.edu/stereo/data/scenes2014/ziprð   r‘   )rí   rî   Ú-Ú/z.zipT)ÚurlÚfilenameÚdownload_rootÚremove_finishedc              3   óZ   >#   • U  H   o[         R                  " TS -  5      ;  v •  M"     g7f)r‘   N)rû   r   )r2   rô   r   s     €r    r4   Ú9Middlebury2014Stereo._download_dataset.<locals>.<genexpr>Y  s#   øé € ÐSÒ?R¸!œBŸJšJ t¨f¡}Ó5Ö5Ò?Rùr÷   zEhttps://vision.middlebury.edu/stereo/submit3/zip/MiddEval3-data-F.zip)r   r"  r#  zMiddEval3/testF)Úexist_okÚ	MiddEval3)r   r�   rþ   rý   r   ra   rû   Úmakedirsrÿ   ÚwalkÚshutilÚmoveÚrmtree)r   r   Úbase_urlÚ
split_nameÚsplit_sceneÚ
split_rootré   Ú
scene_nameÚ	scene_urlÚtest_set_urlÚ	scene_dirÚscene_namesr3   ró   Úscene_dst_dirÚscene_src_dirs    `              r    rú   Ú&Middlebury2014Stereo._download_datasetC  sp  ø€ ØMˆä�D‹zÐ,Ñ,ˆØ—Z‘Zˆ
à˜ÓØ#Ÿ{™{¨:Ô6�Ø! JÑ.�
Û#;�KØ$/ =°°+°Ð!?�JØ#+ *¨A¨j¨\¸Ð >�Ià&Ñ3×;Ñ;×=Ó=Ü4Ø )Ø(2 |°4Ð%8Ü*-¨j«/Ø,0ô	ó $<ò  7ô �KŠK˜˜v™Ô&ÜÔS¸t¿{¹{È6Ò?RÓS×SÑSàf�ô -°ÌSÐQUËYÐhlÒmÜ13·²¼¸TÐDUÑ=UÓ9VÖ1WÑ-�I¨AÛ!,˜Ø(,¨v©˜Ü(,¨Y«¸%Ñ(?˜ÜŸš M¸DÒAÜŸš¤C¨Ó$6¼¸MÓ8JÖKó	 "-ñ 2Xô —’œc $¨Ñ"4Ó5Õ6ð Tr"   rI   c                 ó>   >• [        [        [        TU ]  U5      5      $ )aB  Return example at given index.

Args:
    index(int): The index of the example to retrieve

Returns:
    tuple: A 4-tuple with ``(img_left, img_right, disparity, valid_mask)``.
    The disparity is a numpy array of shape (1, H, W) and the images are PIL images.
    ``valid_mask`` is implicitly ``None`` for `split=test`.
©r   re   r   rW   r…   s     €r    rW   Ú Middlebury2014Stereo.__getitem__i  ó   ø€ ô ”Bœ™Ñ+¨EÓ2Ó3Ð3r"   )r   r�   rê   )r�   rí   FNF)r\   r]   r^   r_   r`   rþ   rK   r
   ra   r   r	   Úboolr   r   r   r*   rb   rL   rM   rG   rú   rc   re   rW   rf   rg   rh   s   @r    rÁ   rÁ   w  s)  ø† ñ6òr
ò
ò
ñ9-€Fð^ $(Ð ð
 Ø%.Ø"'Ø)-Øñ?3à�C˜�IÑð?3ð ð?3ð ˜c‘]ð	?3ð
  ð?3ð ˜XÑ&ð?3ð ð?3ð 
÷?3ð ?3ðB, 5¨¨d¨Ñ#3ð ,¸¿¹÷ ,ð,	)¨ð 	)°°u¸ZÑ7HÈ%ÐPR×PZÑPZÐ\^×\fÑ\fÐPfÑJgÐ7gÑ1hô 	)ð$7 e¨C°¨IÑ&6ð $7¸4ô $7ðL4 ð 4¨÷ 4õ 4r"   rÁ   c                   óž   ^ • \ rS rSrSrSr SS\\\4   S\	\
   SS4U 4S jjjrS	\S\\R                  S4   4S
 jrS\S\4U 4S jjrSrU =r$ )Ú	CREStereoiw  aü  Synthetic dataset used in training the `CREStereo <https://arxiv.org/pdf/2203.11483.pdf>`_ architecture.
Dataset details on the official paper `repo <https://github.com/megvii-research/CREStereo>`_.

The dataset is expected to have the following structure: ::

    root
        CREStereo
            tree
                img1_left.jpg
                img1_right.jpg
                img1_left.disp.jpg
                img1_right.disp.jpg
                img2_left.jpg
                img2_right.jpg
                img2_left.disp.jpg
                img2_right.disp.jpg
                ...
            shapenet
                img1_left.jpg
                img1_right.jpg
                img1_left.disp.jpg
                img1_right.disp.jpg
                ...
            reflective
                img1_left.jpg
                img1_right.jpg
                img1_left.disp.jpg
                img1_right.disp.jpg
                ...
            hole
                img1_left.jpg
                img1_right.jpg
                img1_left.disp.jpg
                img1_right.disp.jpg
                ...

Args:
    root (str): Root directory of the dataset.
    transforms (callable, optional): A function/transform that takes in a sample and returns a transformed version.
TNr   r   r   c                 ór  >• [         TU ]  X5        [        U5      S-  n/ SQnU H�  n[        X-  S-  5      n[        X-  S-  5      nU R	                  XV5      nU =R
                  U-  sl        [        X-  S-  5      n[        X-  S-  5      n	U R	                  X‰5      n
U =R                  U
-  sl        M‘     g )Nr?  )ÚshapenetÚ
reflectiveÚtreeÚholez
*_left.jpgz*_right.jpgz*_left.disp.pngz*_right.disp.pngrr   )r   r   r   Údirsrô   rs   rt   rT   ru   rv   rw   r   s              €r    r   ÚCREStereo.__init__£  sº   ø€ ô
 	‰Ñ˜Ô*ä�D‹z˜KÑ'ˆâ9ˆãˆAÜ!$ T¡X°Ñ%<Ó!=ÐÜ"% d¡h°Ñ&>Ó"?ÐØ×#Ñ#Ð$6ÓLˆDØ�LŠL˜DÑ �Lä%(¨©Ð4EÑ)EÓ%FÐ"Ü&)¨$©(Ð5GÑ*GÓ&HÐ#Ø×*Ñ*Ð+AÓ[ˆKØ×Ò Ñ,×ò r"   r#   c                 ó˜   • [         R                  " [        R                  " U5      [         R                  S9nUS S S 2S S 24   S-  nS nX#4$ )N©Údtypeg      @@©rL   r§   r   r&   Úfloat32r}   s       r    rG   ÚCREStereo._read_disparity¹  sB   € ÜŸ
š
¤5§:¢:¨iÓ#8ÄÇ
Á
ÑKˆà% dªAªq jÑ1°DÑ8ˆØˆ
ØÐ(Ð(r"   rI   c                 ó>   >• [        [        [        TU ]  U5      5      $ )at  Return example at given index.

Args:
    index(int): The index of the example to retrieve

Returns:
    tuple: A 4-tuple with ``(img_left, img_right, disparity, valid_mask)``.
    The disparity is a numpy array of shape (1, H, W) and the images are PIL images.
    ``valid_mask`` is implicitly ``None`` if the ``transforms`` parameter does not
    generate a valid mask.
r„   r…   s     €r    rW   ÚCREStereo.__getitem__À  r‡   r"   r   r0   r¯   rh   s   @r    r?  r?  w  sƒ   ø† ñ'ðR $(Ð ð
 *.ñ-à�C˜�IÑð-ð ˜XÑ&ð-ð 
÷	-ð -ð,)¨ð )°°r·z±zÀ4Ð7GÑ1Hô )ð4 ð 4¨÷ 4õ 4r"   r?  c            	       óœ   ^ • \ rS rSrSrSS\\\4   S\S\\	   SS4U 4S jjjr
S	\S\\R                  S4   4S
 jrS\S\4U 4S jjrSrU =r$ )ÚFallingThingsStereoiÏ  aK  `FallingThings <https://research.nvidia.com/publication/2018-06_falling-things-synthetic-dataset-3d-object-detection-and-pose-estimation>`_ dataset.

The dataset is expected to have the following structure: ::

    root
        FallingThings
            single
                dir1
                    scene1
                        _object_settings.json
                        _camera_settings.json
                        image1.left.depth.png
                        image1.right.depth.png
                        image1.left.jpg
                        image1.right.jpg
                        image2.left.depth.png
                        image2.right.depth.png
                        image2.left.jpg
                        image2.right
                        ...
                    scene2
                ...
            mixed
                scene1
                    _object_settings.json
                    _camera_settings.json
                    image1.left.depth.png
                    image1.right.depth.png
                    image1.left.jpg
                    image1.right.jpg
                    image2.left.depth.png
                    image2.right.depth.png
                    image2.left.jpg
                    image2.right
                    ...
                scene2
                ...

Args:
    root (str or ``pathlib.Path``): Root directory where FallingThings is located.
    variant (string): Which variant to use. Either "single", "mixed", or "both".
    transforms (callable, optional): A function/transform that takes in a sample and returns a transformed version.
Nr   Úvariantr   r   c                 óî  >• [         TU ]  X5        [        U5      S-  n[        USSS9  S/S/SS/S.U   n[        S5      S-  [        S5      S.nU HŸ  n[	        X-  XV   -  S	-  5      n[	        X-  XV   -  S
-  5      nU =R
                  U R                  Xx5      -  sl        [	        X-  XV   -  S-  5      n	[	        X-  XV   -  S-  5      n
U =R                  U R                  Xš5      -  sl        M¡     g )NÚFallingThingsrQ  )ÚsingleÚmixedrï   r’   rT  rU  rn   )rT  rU  z
*.left.jpgz*.right.jpgz*.left.depth.pngz*.right.depth.png©r   r   r   r   ra   r   rD   r   )r   r   rQ  r   ÚvariantsÚsplit_prefixrô   r    r¡   ru   rv   r   s              €r    r   ÚFallingThingsStereo.__init__ü  s  ø€ Ü‰Ñ˜Ô*ä�D‹z˜OÑ+ˆä�w 	Ð8SÒTð  �jØ�YØ˜wÐ'ñ
ð ñ	ˆô ˜3“i #‘oÜ˜#“Yñ
ˆó
 ˆAÜ" 4¡8¨l©oÑ#=ÀÑ#LÓMÐÜ # D¡H¨|©Ñ$>ÀÑ$NÓ OÐØ�LŠL˜D×,Ñ,Ð-=ÓQÑQ�Lä%(¨©°L±OÑ)CÐFXÑ)XÓ%YÐ"Ü&)¨$©(°\±_Ñ*DÐGZÑ*ZÓ&[Ð#Ø×Ò ×!1Ñ!1Ð2HÓ!bÑb×ò r"   r#   c                 ó’  • [         R                  " [        R                  " U5      5      n[	        U5      R
                  S-  n[        U5       n[        R                  " U5      nUS   S   S   S   nSu  pxXv-  U-  UR                  [         R                  5      -  n	U	S S S 2S S 24   n	S n
Xš4sS S S 5        $ ! , (       d  f       g = f)Nz_camera_settings.jsonÚcamera_settingsr   Úintrinsic_settingsÚfx)é   éd   )
rL   r§   r   r&   r   r  ÚjsonÚloadÚastyperK  )r   r#   ÚdepthÚcamera_settings_pathÚfÚ
intrinsicsÚfocalÚbaselineÚpixel_constantr~   r   s              r    rG   Ú#FallingThingsStereo._read_disparity  s²   € ä—
’
œ5Ÿ:š: iÓ0Ó1ˆô  $ I›×5Ñ5Ð8OÑOÐÜÐ&Ô'¨1äŸš 1›ˆJØÐ0Ñ1°!Ñ4Ð5IÑJÈ4ÑPˆEØ'-Ñ$ˆHØ%Ñ-°Ñ>À%Ç,Á,ÌrÏzÉzÓBZÑZˆMà)¨$²²1¨*Ñ5ˆMØˆJØ Ð,÷ (×'×'ús   ÁA B8Â8
CrI   c                 ó>   >• [        [        [        TU ]  U5      5      $ rƒ   r„   r…   s     €r    rW   ÚFallingThingsStereo.__getitem__(  r‡   r"   r   )rT  Nr‰   rh   s   @r    rP  rP  Ï  s   ø† ñ*ñXc˜U 3¨ 9Ñ-ð c¸ð cÐT\Ð]eÑTfð cÐrv÷ cð cð6-¨ð -°°r·z±zÀ4Ð7GÑ1Hô -ð"4 ð 4¨÷ 4õ 4r"   rP  c                   ó¦   ^ • \ rS rSrSr   SS\\\4   S\S\S\\	   SS4
U 4S	 jjjr
S
\S\\R                  S4   4S jrS\S\4U 4S jjrSrU =r$ )ÚSceneFlowStereoi7  aC  Dataset interface for `Scene Flow <https://lmb.informatik.uni-freiburg.de/resources/datasets/SceneFlowDatasets.en.html>`_ datasets.
This interface provides access to the `FlyingThings3D, `Monkaa` and `Driving` datasets.

The dataset is expected to have the following structure: ::

    root
        SceneFlow
            Monkaa
                frames_cleanpass
                    scene1
                        left
                            img1.png
                            img2.png
                        right
                            img1.png
                            img2.png
                    scene2
                        left
                            img1.png
                            img2.png
                        right
                            img1.png
                            img2.png
                frames_finalpass
                    scene1
                        left
                            img1.png
                            img2.png
                        right
                            img1.png
                            img2.png
                    ...
                    ...
                disparity
                    scene1
                        left
                            img1.pfm
                            img2.pfm
                        right
                            img1.pfm
                            img2.pfm
            FlyingThings3D
                ...
                ...

Args:
    root (str or ``pathlib.Path``): Root directory where SceneFlow is located.
    variant (string): Which dataset variant to user, "FlyingThings3D" (default), "Monkaa" or "Driving".
    pass_name (string): Which pass to use, "clean" (default), "final" or "both".
    transforms (callable, optional): A function/transform that takes in a sample and returns a transformed version.

Nr   rQ  Ú	pass_namer   r   c                 óN  >• [         TU ]  X5        [        U5      S-  n[        USSS9  [        USSS9  S/S/SS/S.U   nX-  n[        S	5      [        S	5      S	-  S	-  [        S	5      S	-  S	-  S
.nU H­  n[	        X-  Xb   -  S-  S-  5      n[	        X-  Xb   -  S-  S-  5      n	U =R
                  U R                  X‰5      -  sl        [	        US-  Xb   -  S-  S-  5      n
[	        US-  Xb   -  S-  S-  5      nU =R                  U R                  X«5      -  sl        M¯     g )NÚ	SceneFlowrQ  )ÚFlyingThings3DÚDrivingÚMonkaar’   ro  )ÚcleanÚfinalrï   Úframes_cleanpassÚframes_finalpassrn   )rt  rr  rs  r9   r™   r:   Ú	disparityz*.pfmrV  )r   r   rQ  ro  r   ÚpassesÚprefix_directoriesr  rs   rt   ru   rv   r   s               €r    r   ÚSceneFlowStereo.__init__m  sk  ø€ ô 	‰Ñ˜Ô*ä�D‹z˜KÑ'ˆä�w 	Ð8_Ò`Ü�y +Ð<VÒWð )Ð)Ø(Ð)Ø'Ð);Ð<ñ
ð ñ	ˆð ‰~ˆô ˜3“iÜ" 3›i¨#™o°Ñ3Ü˜C“y 3‘¨Ñ,ñ
Ðó ˆAÜ!$ T¡XÐ0BÑ0KÑ%KÈfÑ%TÐW^Ñ%^Ó!_ÐÜ"% d¡hÐ1CÑ1LÑ&LÈwÑ&VÐY`Ñ&`Ó"aÐØ�LŠL˜D×,Ñ,Ð-?ÓUÑU�Lä%(¨°Ñ);Ð>PÑ>YÑ)YÐ\bÑ)bÐelÑ)lÓ%mÐ"Ü&)¨$°Ñ*<Ð?QÑ?ZÑ*ZÐ]dÑ*dÐgnÑ*nÓ&oÐ#Ø×Ò ×!1Ñ!1Ð2HÓ!bÑb×ò r"   r#   c                 óN   • [        U5      n[        R                  " U5      nS nX#4$ r0   rz   r}   s       r    rG   ÚSceneFlowStereo._read_disparity’  r�   r"   rI   c                 ó>   >• [        [        [        TU ]  U5      5      $ rƒ   r„   r…   s     €r    rW   ÚSceneFlowStereo.__getitem__˜  r‡   r"   r   )rr  ru  Nr‰   rh   s   @r    rn  rn  7  s�   ø† ñ3ðp (Ø Ø)-ñ#cà�C˜�IÑð#cð ð#cð ð	#cð
 ˜XÑ&ð#cð 
÷#cð #cðJ)¨ð )°°r·z±zÀ4Ð7GÑ1Hô )ð4 ð 4¨÷ 4õ 4r"   rn  c            	       óà   ^ • \ rS rSrSrSrSS\\\4   S\S\	\
   SS4U 4S	 jjjrS
\S\\\4   4S jrS
\S\\S   \\R                  \R                  4   4   4S jrS\S\4U 4S jjrSrU =r$ )ÚSintelStereoi§  a.  Sintel `Stereo Dataset <http://sintel.is.tue.mpg.de/stereo>`_.

The dataset is expected to have the following structure: ::

    root
        Sintel
            training
                final_left
                    scene1
                        img1.png
                        img2.png
                        ...
                    ...
                final_right
                    scene2
                        img1.png
                        img2.png
                        ...
                    ...
                disparities
                    scene1
                        img1.png
                        img2.png
                        ...
                    ...
                occlusions
                    scene1
                        img1.png
                        img2.png
                        ...
                    ...
                outofframe
                    scene1
                        img1.png
                        img2.png
                        ...
                    ...

Args:
    root (str or ``pathlib.Path``): Root directory where Sintel Stereo is located.
    pass_name (string): The name of the pass to use, either "final", "clean" or "both".
    transforms (callable, optional): A function/transform that takes in a sample and returns a transformed version.
TNr   ro  r   r   c                 óª  >• [         T	U ]  X5        [        USSS9  [        U5      S-  nS/S/SS/S.U   nU H—  n[	        US-  U S3-  S	-  S
-  5      n[	        US-  U S3-  S	-  S
-  5      nU =R
                  U R                  Xg5      -  sl        [	        US-  S-  S	-  S
-  5      nU =R                  U R                  US 5      -  sl        M™     g )Nro  )rv  ru  rï   r’   ÚSintelrv  ru  ÚtrainingÚ_leftrn   r™   Ú_rightrw   )r   r   r   r   ra   r   rD   r   )
r   r   ro  r   Ú
pass_namesr  r    r¡   r¢   r   s
            €r    r   ÚSintelStereo.__init__Ö  sü   ø€ Ü‰Ñ˜Ô*ä�y +Ð<VÒWä�D‹z˜HÑ$ˆà�YØ�YØ˜gÐ&ñ
ð ñ	ˆ
ó ˆAÜ" 4¨*Ñ#4¸!¸¸E°{Ñ#BÀSÑ#HÈ7Ñ#RÓSÐÜ # D¨:Ñ$5¸1¸#¸V¸Ñ$DÀsÑ$JÈWÑ$TÓ UÐØ�LŠL˜D×,Ñ,Ð-=ÓQÑQ�Lä # D¨:Ñ$5¸Ñ$EÈÑ$KÈgÑ$UÓ VÐØ×Ò ×!1Ñ!1Ð2CÀTÓ!JÑJ×ò r"   r#   c                 ó¾  • [        U5      nUR                  nUR                  nUR                  R                  n[        US-  UR                  -  U-  5      n[        US-  UR                  -  U-  5      n[        R
                  R                  U5      (       d  [        SU S35      e[        R
                  R                  U5      (       d  [        SU S35      eXg4$ )NÚ
occlusionsÚ
outofframezOcclusion mask z does not existzOut of frame mask )r   r  r  ra   rû   rü   rý   r=   )r   r#   ÚfpathÚbasenameÚscenedirÚ	sampledirÚocclusion_pathÚoutofframe_paths           r    Ú_get_occlussion_mask_pathsÚ'SintelStereo._get_occlussion_mask_pathsê  sÂ   € ô �Y“ˆØ—:‘:ˆØ—<‘<ˆà—O‘O×*Ñ*ˆ	ä˜Y¨Ñ5¸¿¹ÑEÈÑPÓQˆÜ˜i¨,Ñ6¸¿¹ÑFÈÑQÓRˆä�w‰w�~‰~˜n×-Ñ-Ü# o°nÐ5EÀ_Ð$UÓVÐVä�w‰w�~‰~˜o×.Ñ.Ü#Ð&8¸Ð8IÈÐ$YÓZÐZàÐ.Ð.r"   rœ   c                 ó  • Uc  g[         R                  " [        R                  " U5      [         R                  S9n[         R
                  " USSS9u  p4nUS-  US-  -   US-  -   n[         R                  " US	5      nU R                  U5      u  pg[         R                  " [        R                  " U5      5      S
:H  n[         R                  " [        R                  " U5      5      S
:H  n	[         R                  " X˜5      nX(4$ )Nrœ   rH  é   éÿÿÿÿ)Úaxisé   é@   i @  )é   r   r   r   )	rL   r§   r   r&   rK  r�   Ú	transposer“  Úlogical_and)
r   r#   r~   ÚrÚgÚbÚocclued_mask_pathÚout_of_frame_mask_pathr   Úoff_masks
             r    rG   ÚSintelStereo._read_disparityÿ  sÑ   € ØÑØô Ÿ
š
¤5§:¢:¨iÓ#8ÄÇ
Á
ÑKˆÜ—(’(˜=¨!°"Ñ5‰ˆˆaØ˜A™  T¡
Ñ*¨Q°%©[Ñ8ˆäŸš ]°IÓ>ˆà48×4SÑ4SÐT]Ó4^Ñ1Ðä—Z’Z¤§
¢
Ð+<Ó =Ó>À!ÑCˆ
ä—:’:œeŸjšjÐ)?Ó@ÓAÀQÑFˆä—^’^ HÓ9ˆ
ØÐ(Ð(r"   rI   c                 ó>   >• [        [        [        TU ]  U5      5      $ )aM  Return example at given index.

Args:
    index(int): The index of the example to retrieve

Returns:
    tuple: A 4-tuple with ``(img_left, img_right, disparity, valid_mask)`` is returned.
    The disparity is a numpy array of shape (1, H, W) and the images are PIL images whilst
    the valid_mask is a numpy array of shape (H, W).
r:  r…   s     €r    rW   ÚSintelStereo.__getitem__  r<  r"   r   )rv  N)r\   r]   r^   r_   r`   rK   r
   ra   r   r	   r   r   rb   r“  rL   rM   rG   rc   re   rW   rf   rg   rh   s   @r    r‚  r‚  §  s»   ø† ñ*ðX $(Ð ñK˜U 3¨ 9Ñ-ð K¸#ð KÐU]Ð^fÑUgð KÐsw÷ Kð Kð(/°Cð /¸EÀ#ÀsÀ(¹Oô /ð*)¨ð )°°u¸ZÑ7HÈ%ÐPR×PZÑPZÐ\^×\fÑ\fÐPfÑJgÐ7gÑ1hô )ð(4 ð 4¨÷ 4õ 4r"   r‚  c            	       óœ   ^ • \ rS rSrSrSS\\\4   S\S\\	   SS4U 4S jjjr
S	\S\\R                  S4   4S
 jrS\S\4U 4S jjrSrU =r$ )Ú
InStereo2ki!  al  `InStereo2k <https://github.com/YuhuaXu/StereoDataset>`_ dataset.

The dataset is expected to have the following structure: ::

    root
        InStereo2k
            train
                scene1
                    left.png
                    right.png
                    left_disp.png
                    right_disp.png
                    ...
                scene2
                ...
            test
                scene1
                    left.png
                    right.png
                    left_disp.png
                    right_disp.png
                    ...
                scene2
                ...

Args:
    root (str or ``pathlib.Path``): Root directory where InStereo2k is located.
    split (string): Either "train" or "test".
    transforms (callable, optional): A function/transform that takes in a sample and returns a transformed version.
Nr   r�   r   r   c                 ó<  >• [         TU ]  X5        [        U5      S-  U-  n[        USSS9  [	        US-  S-  5      n[	        US-  S-  5      nU R                  XE5      U l        [	        US-  S-  5      n[	        US-  S	-  5      nU R                  Xg5      U l        g )
Nr¨  r�   r�   r’   rn   zleft.pngz	right.pngzleft_disp.pngzright_disp.png)r   r   r   r   ra   rD   r   r   rº   s	           €r    r   ÚInStereo2k.__init__A  s¨   ø€ Ü‰Ñ˜Ô*ä�D‹z˜LÑ(¨5Ñ0ˆä�u˜gÐ4EÒFä˜t c™z¨JÑ6Ó7ÐÜ  s¡
¨[Ñ 8Ó9ÐØ×'Ñ'Ð(8ÓLˆŒä!$ T¨C¡Z°/Ñ%AÓ!BÐÜ"% d¨S¡jÐ3CÑ&CÓ"DÐØ ×,Ñ,Ð-CÓ]ˆÕr"   r#   c                 ó˜   • [         R                  " [        R                  " U5      [         R                  S9nUS S S 2S S 24   S-  nS nX#4$ )NrH  g      �@rJ  r}   s       r    rG   ÚInStereo2k._read_disparityP  sB   € ÜŸ
š
¤5§:¢:¨iÓ#8ÄÇ
Á
ÑKˆà% dªAªq jÑ1°FÑ:ˆØˆ
ØÐ(Ð(r"   rI   c                 ó>   >• [        [        [        TU ]  U5      5      $ rƒ   r„   r…   s     €r    rW   ÚInStereo2k.__getitem__W  r‡   r"   rˆ   r®   r‰   rh   s   @r    r¨  r¨  !  s~   ø† ññ>^˜U 3¨ 9Ñ-ð ^°cð ^ÐQYÐZbÑQcð ^Ðos÷ ^ð ^ð)¨ð )°°r·z±zÀ4Ð7GÑ1Hô )ð4 ð 4¨÷ 4õ 4r"   r¨  c            	       óÄ   ^ • \ rS rSrSrSrSS\\\4   S\S\	\
   SS4U 4S	 jjjrS
\S\\S   \\R                  \R                  4   4   4S jrS\S\4U 4S jjrSrU =r$ )ÚETH3DStereoif  a¶  ETH3D `Low-Res Two-View <https://www.eth3d.net/datasets>`_ dataset.

The dataset is expected to have the following structure: ::

    root
        ETH3D
            two_view_training
                scene1
                    im1.png
                    im0.png
                    images.txt
                    cameras.txt
                    calib.txt
                scene2
                    im1.png
                    im0.png
                    images.txt
                    cameras.txt
                    calib.txt
                ...
            two_view_training_gt
                scene1
                    disp0GT.pfm
                    mask0nocc.png
                scene2
                    disp0GT.pfm
                    mask0nocc.png
                ...
            two_view_testing
                scene1
                    im1.png
                    im0.png
                    images.txt
                    cameras.txt
                    calib.txt
                scene2
                    im1.png
                    im0.png
                    images.txt
                    cameras.txt
                    calib.txt
                ...

Args:
    root (str or ``pathlib.Path``): Root directory of the ETH3D Dataset.
    split (string, optional): The dataset split of scenes, either "train" (default) or "test".
    transforms (callable, optional): A function/transform that takes in a sample and returns a transformed version.
TNr   r�   r   r   c                 óŠ  >• [         T	U ]  X5        [        USSS9  [        U5      S-  nUS:X  a  SOSnSn[	        X-  S	-  S
-  5      n[	        X-  S	-  S-  5      nU R                  Xg5      U l        US:X  a"  [        S U R                   5       5      U l        g [	        X-  S	-  S-  5      nU R                  US 5      U l        g )Nr�   r�   r’   ÚETH3Dr�   Útwo_view_trainingÚtwo_view_testÚtwo_view_training_gtrn   ro   rp   r‘   c              3   ó&   #   • U  H  nS v •  M	     g7fr›   r   r1   s     r    r4   Ú'ETH3DStereo.__init__.<locals>.<genexpr>©  rž   r6   rq   )	r   r   r   r   ra   rD   r   r;   r   )
r   r   r�   r   Úimg_dirÚanot_dirr    r¡   r¢   r   s
            €r    r   ÚETH3DStereo.__init__š  sË   ø€ Ü‰Ñ˜Ô*ä�u˜gÐ4EÒFä�D‹z˜GÑ#ˆà).°'Ó)9Ñ%¸ˆØ)ˆä˜t™~°Ñ3°iÑ?Ó@ÐÜ ¡°Ñ 4°yÑ @ÓAÐØ×'Ñ'Ð(8ÓLˆŒà�F‹?Ü $Ñ$H¸4¿<º<Ó$HÓ HˆDÕä # D¡O°cÑ$9¸MÑ$IÓ JÐØ $× 0Ñ 0Ð1BÀDÓ IˆDÕr"   r#   rœ   c                 ó   • Uc  g[        U5      n[        R                  " U5      n[        U5      R                  S-  n[
        R                  " U5      n[        R                  " U5      R                  [        5      nX$4$ )Nrœ   zmask0nocc.png)
r{   rL   r|   r   r  r   r&   r§   rb  r=  )r   r#   r~   Ú	mask_pathr   s        r    rG   ÚETH3DStereo._read_disparity®  sg   € àÑØä& yÓ1ˆÜŸš˜}Ó-ˆÜ˜“O×*Ñ*¨_Ñ<ˆ	Ü—Z’Z 	Ó*ˆ
Ü—Z’Z 
Ó+×2Ñ2´4Ó8ˆ
ØÐ(Ð(r"   rI   c                 ó>   >• [        [        [        TU ]  U5      5      $ r«   r:  r…   s     €r    rW   ÚETH3DStereo.__getitem__º  r­   r"   rˆ   r®   )r\   r]   r^   r_   r`   rK   r
   ra   r   r	   r   r   rb   rL   rM   rG   rc   re   rW   rf   rg   rh   s   @r    r°  r°  f  s    ø† ñ/ðb $(Ð ñJ˜U 3¨ 9Ñ-ð J°cð JÐQYÐZbÑQcð JÐos÷ Jð Jð(
)¨ð 
)°°u¸ZÑ7HÈ%ÐPR×PZÑPZÐ\^×\fÑ\fÐPfÑJgÐ7gÑ1hô 
)ð4 ð 4¨÷ 4õ 4r"   r°  ),Ú	functoolsr`  rû   r  r*  Úabcr   r   r   Úpathlibr   Útypingr   r   r	   r
   ÚnumpyrL   ÚPILr   Úutilsr   r   r   Úvisionr   rb   rM   rd   re   Ú__all__Úpartialr{   r   rj   r‹   r±   rÁ   r?  rP  rn  r‚  r¨  r°  r   r"   r    Ú<module>rÊ     sA  ðÛ Û Û 	Û Û ß #Ý Ý ß 2Ó 2ã Ý ç JÑ JÝ !à
ˆ5�;‰;˜Ÿ™ X¨b¯j©jÑ%9¸2¿:¹:ÐEÑF€Ø
ˆ5�;‰;˜Ÿ™ X¨b¯j©jÑ%9Ð9Ñ:€à
€à×"Ò" 9¸QÑ?€ôn!˜C ô n!ôb=4Ð'ô =4ô@R4Ð+ô R4ôjU4Ð+ô U4ôp}4Ð0ô }4ô@U4Ð%ô U4ôpe4Ð/ô e4ôPm4Ð+ô m4ô`w4Ð(ô w4ôtB4Ð&ô B4ôJa4Ð'õ a4r"   