Ë
    [²j�¿  ã                   óz  — d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZ d dlZd dlmZ ddlmZmZmZ dd	lmZ eej&                  ej&                  eej6                     ej6                  f   Zeej&                  ej&                  eej6                     f   Zd
Z e j>                  ed¬«      Z  G d„ dee«      Z! G d„ de!«      Z" G d„ de!«      Z# G d„ de!«      Z$ G d„ de!«      Z% G d„ de!«      Z& G d„ de!«      Z' G d„ de!«      Z( G d„ de!«      Z) G d„ de!«      Z* G d „ d!e!«      Z+y)"é    N)ÚABCÚabstractmethod)Úglob)ÚPath)ÚCallableÚcastÚOptionalÚUnion)ÚImageé   )Ú	_read_pfmÚdownload_and_extract_archiveÚverify_str_arg)ÚVisionDataset© )Úslice_channelsc                   ó&  ‡ — e Zd ZdZdZddeeef   dee	   ddfˆ fd„Z
deeef   dej                  fd	„Z	 dd
edee   deeeee   f      fd„Zededeeej$                     eej$                     f   fd„«       Zdedeeef   fd„Zdefd„Zˆ xZS )ÚStereoMatchingDatasetz+Base interface for Stereo matching datasetsFNÚrootÚ
transformsÚreturnc                 óP   •— t         ‰| �  |¬«       || _        g | _        g | _        y)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      €úd/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torchvision/datasets/_stereo_matching.pyr   zStereoMatchingDataset.__init__   s+   ø€ ô, 	‰Ñ˜dÐÔ#Ø$ˆŒàˆŒØˆÕó    Ú	file_pathc                 óp   — t        j                  |«      }|j                  dk7  r|j                  d«      }|S )NÚRGB)r   ÚopenÚmodeÚconvert)r   r!   Úimgs      r   Ú	_read_imgzStereoMatchingDataset._read_img:   s/   € Ü�j‰j˜Ó#ˆØ�8‰8�uÒØ—+‘+˜eÓ$ˆCØˆ
r    Úpaths_left_patternÚpaths_right_patternc                 óž  — t        t        t        |«      «      «      }|rt        t        t        |«      «      «      }nt        d„ |D «       «      }|st        d|› �«      ‚|st        d|› �«      ‚t	        |«      t	        |«      k7  r*t        dt	        |«      › dt	        |«      › d|› d|› d�	«      ‚t        d„ t        ||«      D «       «      }|S )	Nc              3   ó    K  — | ]  }d –— Œ y ­w©Nr   ©Ú.0Ú_s     r   ú	<genexpr>z4StereoMatchingDataset._scan_pairs.<locals>.<genexpr>L   s   è ø€ Ò8¨œtÑ8ùó   ‚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   ó*   K  — | ]  \  }}||f–— Œ y ­wr-   r   )r/   ÚleftÚrights      r   r1   z4StereoMatchingDataset._scan_pairs.<locals>.<genexpr>[   s   è ø€ ÒS¡{ t¨U�d˜E”]ÑSùs   ‚)ÚlistÚsortedr   ÚFileNotFoundErrorÚlenÚ
ValueErrorÚzip)r   r)   r*   Ú
left_pathsÚright_pathsÚpathss         r   Ú_scan_pairsz!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¸*ÀkÓ6RÔSÓSˆØˆr    c                  ó   — y r-   r   )r   r!   s     r   Ú_read_disparityz%StereoMatchingDataset._read_disparity^   s   € ð 	r    Úindexc                 ó  — | j                  | j                  |   d   «      }| j                  | j                  |   d   «      }| j                  | j                  |   d   «      \  }}| j                  | j                  |   d   «      \  }}||f}||f}	||f}
| j                  �| j	                  ||	|
«      \  }}	}
| j
                  s|
d   �*|d   |d   |	d   t        t        j                  |
d   «      fS |d   |d   |	d   fS )ao  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   rB   r   r   Ú_has_built_in_disparity_maskr   ÚnpÚndarray)r   rC   Úimg_leftÚ	img_rightÚdsp_map_leftÚvalid_mask_leftÚdsp_map_rightÚvalid_mask_rightÚimgsÚdsp_mapsÚvalid_maskss              r   Ú__getitem__z!StereoMatchingDataset.__getitem__c   s*  € ð —>‘> $§,¡,¨uÑ"5°aÑ"8Ó9ˆØ—N‘N 4§<¡<°Ñ#6°qÑ#9Ó:ˆ	à(,×(<Ñ(<¸T×=NÑ=NÈuÑ=UÐVWÑ=XÓ(YÑ%ˆ�oØ*.×*>Ñ*>¸t×?PÑ?PÐQVÑ?WÐXYÑ?ZÓ*[Ñ'ˆÐ'à˜)Ð$ˆØ  -Ð0ˆØ&Ð(8Ð9ˆà�?‰?Ð&ð
 —‘  h°Ó<ñ	ØØØð ×,Ò,°¸A±Ð0JØ˜‘7˜D ™G X¨a¡[´$´r·z±zÀ;ÈqÁ>Ó2RÐRÐRà˜‘7˜D ™G X¨a¡[Ð0Ð0r    c                 ó,   — t        | j                  «      S r-   )r:   r   )r   s    r   Ú__len__zStereoMatchingDataset.__len__†   s   € Ü�4—<‘<Ó Ð r    r-   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rE   r
   Ústrr   r	   r   r   r   r(   r7   Útupler@   r   rF   rG   rB   ÚintÚT1ÚT2rQ   rS   Ú__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                   ó„   ‡ — e Zd ZdZddeeef   dee   ddfˆ fd„Z	dede
ej                  df   fd„Zd	edefˆ fd
„Zˆ xZS )ÚCarlaStereoaz  
    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                 óF  •— t         ‰	| �  ||«       t        |«      dz  }t        |dz  dz  dz  «      }t        |dz  dz  dz  «      }| j	                  ||«      }|| _        t        |dz  dz  dz  «      }t        |dz  dz  dz  «      }| j	                  ||«      }|| _        y )Nzcarla-highresÚ	trainingFÚ*úim0.pngúim1.pngúdisp0GT.pfmzdisp1GT.pfm©r   r   r   rX   r@   r   r   )
r   r   r   Úleft_image_patternÚright_image_patternrN   Úleft_disparity_patternÚright_disparity_patternÚdisparitiesr   s
            €r   r   zCarlaStereo.__init__¦   s¿   ø€ Ü‰Ñ˜˜zÔ*ä�D‹z˜OÑ+ˆä  ¨Ñ!3°cÑ!9¸IÑ!EÓFÐÜ! $¨Ñ"4°sÑ":¸YÑ"FÓGÐØ×ÑÐ 2Ð4GÓHˆØˆŒä!$ T¨KÑ%7¸#Ñ%=ÀÑ%MÓ!NÐÜ"% d¨[Ñ&8¸3Ñ&>ÀÑ&NÓ"OÐØ×&Ñ&Ð'=Ð?VÓWˆØ'ˆÕr    r!   c                 óN   — t        |«      }t        j                  |«      }d }||fS r-   ©Ú_read_pfm_filerF   Úabs©r   r!   Údisparity_mapÚ
valid_masks       r   rB   zCarlaStereo._read_disparityµ   ó*   € Ü& yÓ1ˆÜŸ™˜}Ó-ˆØˆ
Ø˜jÐ(Ð(r    rC   c                 ó>   •— t        t        t        ‰| �  |«      «      S ©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   r[   r   rQ   ©r   rC   r   s     €r   rQ   zCarlaStereo.__getitem__»   ó   ø€ ô ”Bœ™Ñ+¨EÓ2Ó3Ð3r    r-   ©rT   rU   rV   rW   r
   rX   r   r	   r   r   rY   rF   rG   rB   rZ   r[   rQ   r]   r^   s   @r   r`   r`   Š   sj   ø„ ññ6(˜U 3¨ 9Ñ-ð (¸8ÀHÑ;Mð (ÐY]õ (ð)¨ð )°°r·z±zÀ4Ð7GÑ1Hó )ð4 ð 4¨÷ 4ñ 4r    r`   c            	       ó’   ‡ — e Zd ZdZdZddeeef   dedee	   ddfˆ fd„Z
d	edeeej                     df   fd
„Zdedefˆ fd„Zˆ xZS )ÚKitti2012Stereoa
  
    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                 óz  •— t         ‰| �  ||«       t        |dd¬«       t        |«      dz  |dz   z  }t	        |dz  dz  «      }t	        |dz  dz  «      }| j                  ||«      | _        |d	k(  r)t	        |d
z  dz  «      }| j                  |d «      | _        y t        d„ | j                  D «       «      | _        y )Nr}   ©ÚtrainÚtest©Úvalid_valuesÚ	Kitti2012ÚingÚ	colored_0z*_10.pngÚ	colored_1r€   Údisp_nocú*.pngc              3   ó    K  — | ]  }d –— Œ y­w©©NNNr   r.   s     r   r1   z+Kitti2012Stereo.__init__.<locals>.<genexpr>  ó   è ø€ Ò$H°a¤\Ñ$Hùr2   ©	r   r   r   r   rX   r@   r   r   r7   )r   r   r}   r   Úleft_img_patternÚright_img_patternÚdisparity_patternr   s          €r   r   zKitti2012Stereo.__init__ó   sÀ   ø€ Ü‰Ñ˜˜zÔ*ä�u˜gÐ4EÕFä�D‹z˜KÑ'¨5°5©=Ñ9ˆä˜t kÑ1°JÑ>Ó?ÐÜ  {Ñ 2°ZÑ ?Ó@ÐØ×'Ñ'Ð(8Ð:KÓLˆŒà�GÒÜ # D¨:Ñ$5¸Ñ$?Ó @ÐØ $× 0Ñ 0Ð1BÀDÓ IˆDÕä $Ñ$H¸4¿<¹<Ô$HÓ HˆDÕr    r!   c                 ó‚   — |€yt        j                  t        j                  |«      «      dz  }|d d d …d d …f   }d }||fS ©NrŒ   g      p@©rF   Úasarrayr   r$   rq   s       r   rB   zKitti2012Stereo._read_disparity  óG   € àÐØäŸ
™
¤5§:¡:¨iÓ#8Ó9¸EÑAˆà% dªAªq jÑ1ˆØˆ
Ø˜jÐ(Ð(r    rC   c                 ó>   •— t        t        t        ‰| �  |«      «      S ©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.
        rw   rx   s     €r   rQ   zKitti2012Stereo.__getitem__  ó   ø€ ô ”Bœ™Ñ+¨EÓ2Ó3Ð3r    ©r€   N©rT   rU   rV   rW   rE   r
   rX   r   r	   r   r   rY   rF   rG   rB   rZ   r[   rQ   r]   r^   s   @r   r|   r|   Ê   s†   ø„ ñ$ðL $(Ð ñI˜U 3¨ 9Ñ-ð I°cð IÐQYÐZbÑQcð IÐosõ Ið"	)¨ð 	)°°xÀÇ
Á
Ñ7KÈTÐ7QÑ1Ró 	)ð4 ð 4¨÷ 4ñ 4r    r|   c            	       ó’   ‡ — e Zd ZdZdZddeeef   dedee	   ddfˆ fd„Z
d	edeeej                     df   fd
„Zdedefˆ fd„Zˆ xZS )ÚKitti2015StereoaM  
    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         ‰| �  ||«       t        |dd¬«       t        |«      dz  |dz   z  }t	        |dz  dz  «      }t	        |dz  dz  «      }| j                  ||«      | _        |d	k(  r:t	        |d
z  dz  «      }t	        |dz  dz  «      }| j                  ||«      | _        y t        d„ | j                  D «       «      | _        y )Nr}   r   r‚   Ú	Kitti2015r…   Úimage_2r‰   Úimage_3r€   Ú
disp_occ_0Ú
disp_occ_1c              3   ó    K  — | ]  }d –— Œ y­wr‹   r   r.   s     r   r1   z+Kitti2015Stereo.__init__.<locals>.<genexpr>Z  r�   r2   rŽ   ©	r   r   r}   r   r�   r�   rj   rk   r   s	           €r   r   zKitti2015Stereo.__init__K  sÖ   ø€ Ü‰Ñ˜˜zÔ*ä�u˜gÐ4EÕFä�D‹z˜KÑ'¨5°5©=Ñ9ˆÜ˜t iÑ/°'Ñ9Ó:ÐÜ  yÑ 0°7Ñ :Ó;ÐØ×'Ñ'Ð(8Ð:KÓLˆŒà�GÒÜ%(¨°Ñ)<¸wÑ)FÓ%GÐ"Ü&)¨$°Ñ*=ÀÑ*GÓ&HÐ#Ø $× 0Ñ 0Ð1GÐI`Ó aˆDÕä $Ñ$H¸4¿<¹<Ô$HÓ HˆDÕr    r!   c                 ó‚   — |€yt        j                  t        j                  |«      «      dz  }|d d d …d d …f   }d }||fS r“   r”   rq   s       r   rB   zKitti2015Stereo._read_disparity\  r–   r    rC   c                 ó>   •— t        t        t        ‰| �  |«      «      S r˜   rw   rx   s     €r   rQ   zKitti2015Stereo.__getitem__g  r™   r    rš   r›   r^   s   @r   r�   r�     s†   ø„ ñ'ðR $(Ð ñI˜U 3¨ 9Ñ-ð I°cð IÐQYÐZbÑQcð IÐosõ Ið"	)¨ð 	)°°xÀÇ
Á
Ñ7KÈTÐ7QÑ1Ró 	)ð4 ð 4¨÷ 4ñ 4r    r�   c                   ó0  ‡ — e Zd ZdZg d¢g d¢g d¢dœZdZ	 	 	 	 	 ddeeef   d	ed
e	e   de
de	e   de
ddfˆ fd„Zdeeef   dej                  fˆ fd„Zdedeed   eej"                  ej"                  f   f   fd„Zdeeef   ddfd„Zdedefˆ fd„Zˆ xZS )ÚMiddlebury2014StereoaZ	  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         ‰| �  ||«       t        |dd¬«       || _        |rt        |dd¬«       |dk(  r"t	        d«      ‚|dk7  rt	        d|› d	|› d
�«      ‚|r| j                  |«       t        |«      dz  }t        j                  j                  ||z  «      st        d|› d�«      ‚| j                  |   Št        ˆfd„t        j                  ||z  «      D «       «      st        d|› d�«      ‚dgdgdgddgdœ|   }|D ]È  }d|z   }	t        ||z  |	z  dz  «      }
t        ||z  |	z  dz  «      }| xj                  | j!                  |
|«      z  c_        |dk(  r"t#        d„ | j                  D «       «      | _        Œ|t        ||z  |	z  dz  «      }t        ||z  |	z  dz  «      }| xj$                  | j!                  ||«      z  c_        ŒÊ || _        y )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   óN   •K  — | ]  }‰D ]  }|j                  |«      –— Œ Œ y ­wr-   )Ú
startswith)r/   ÚsceneÚsÚsplit_sceness      €r   r1   z0Middlebury2014Stereo.__init__.<locals>.<genexpr>  s;   øè ø€ ò 
ð Ø!ò	
ð ð ×Ñ˜Q×ð
àñ
ùs   ƒ"%z:Provided root folder does not contain any scenes from the z split.Ú z-perfectz
-imperfect)NrÕ   rÖ   r×   rc   rd   re   c              3   ó    K  — | ]  }d –— Œ y­wr‹   r   r.   s     r   r1   z0Middlebury2014Stereo.__init__.<locals>.<genexpr>  s   è ø€ Ò(L¸!¬Ñ(Lùr2   z	disp0.pfmz	disp1.pfm)r   r   r   r}   r;   Ú_download_datasetr   ÚosÚpathÚexistsr9   ÚsplitsÚanyÚlistdirrX   r   r@   r7   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   zMiddlebury2014Stereo.__init__á  s(  ù€ ô 	‰Ñ˜˜zÔ*ä�u˜gÐ4SÕTØˆŒ
áÜ˜;¨ÐDjÕkØ˜ŠÜ Ð!pÓqÐqà˜ŠÜ Ø˜e˜Wð %EØEJÀGð  LRðSóð ñ
 Ø×"Ñ" 4Ô(ä�D‹zÐ,Ñ,ˆä�w‰w�~‰~˜d U™lÔ+Ü# d¨5¨'Ð1hÐ$iÓjÐjà—{‘{ 5Ñ)ˆäó 
ô Ÿ™ D¨5¡LÓ1ô
ô 
ô $Ð&`ÐafÐ`gÐgnÐ$oÓpÐpð �$Ø"�|Ø&˜Ø Ð.ñ	!
ð
 ñ!Ðð #8ò 	iÐØÐ"4Ñ4ˆMÜ" 4¨%¡<°-Ñ#?À)Ñ#KÓLÐÜ # D¨5¡L°=Ñ$@À9Ñ$LÓ MÐØ�LŠL˜D×,Ñ,Ð-=Ð?PÓQÑQ�Là˜ŠÜ$(Ñ(L¸t¿|¹|Ô(LÓ$L�Õ!ä*-¨d°U©l¸]Ñ.JÈ[Ñ.XÓ*YÐ'Ü+.¨t°e©|¸mÑ/KÈkÑ/YÓ+ZÐ(Ø×!Ò! T×%5Ñ%5Ð6MÐOgÓ%hÑhÖ!ð	ið "3ˆÕr    r!   c                 óH  •‡— t        |t        «      st        |«      }|j                  dk(  rh| j                  r\|j                  Št        ˆfd„dD «       «      }t        t        d„ |«      «      }|j                  |«       t        j                  |«      }t        ‰| �-  |«      S )a  
        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.
        re   c              3   ó(   •K  — | ]	  }‰|z  –— Œ y ­wr-   r   )r/   Ú	view_nameÚ	base_paths     €r   r1   z1Middlebury2014Stereo._read_img.<locals>.<genexpr>0  s   øè ø€ Ò%fÀ	 i°)Õ&;Ñ%fùs   ƒ)zim1E.pngzim1L.pngc                 ó@   — t         j                  j                  | «      S r-   )rá   râ   rã   )Úps    r   ú<lambda>z0Middlebury2014Stereo._read_img.<locals>.<lambda>2  s   € ´r·w±w·~±~ÀaÓ7H€ r    )Ú
isinstancer   ÚnamerÒ   Úparentr7   ÚfilterÚappendÚrandomÚchoicer   r(   )r   r!   Úambient_file_pathsrï   r   s      @€r   r(   z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                 ó¤   — |€yt        |«      }t        j                  |«      }d||t        j                  k(  <   |dkD  j	                  d«      }||fS )NrŒ   r   )ro   rF   rp   ÚinfÚsqueezerq   s       r   rB   z$Middlebury2014Stereo._read_disparity8  sV   € àÐØä& yÓ1ˆÜŸ™˜}Ó-ˆØ12ˆ�m¤r§v¡vÑ-Ñ.Ø# aÑ'×0Ñ0°Ó3ˆ
Ø˜jÐ(Ð(r    c           	      óô  ‡— d}t        ‰«      dz  Š| j                  }|dk7  r_| j                  |   D ]L  }‰|z  }dD ]@  }|› d|› �}|› d|› d�}||z  j                  «       rŒ&t	        ||› d�t        |«      d¬	«       ŒB ŒN y t        j                  ‰dz  «       t        ˆfd
„| j                  d   D «       «      r¾d}	t	        |	t        ‰«      d¬«       t        j                  t        ‰dz  «      «      D ]_  \  }
}}|D ]T  }‰dz  }t        |
«      |z  }t        j                  |d¬«       t        j                  t        |«      t        |«      «       ŒV Œa t        j                  t        ‰dz  «      «       y y )Nz8https://vision.middlebury.edu/stereo/data/scenes2014/ziprØ   r�   )rÕ   rÖ   ú-ú/z.zipT)ÚurlÚfilenameÚdownload_rootÚremove_finishedc              3   óR   •K  — | ]  }|t        j                  ‰d z  «      v–— Œ  y­w)r�   N)rá   ræ   )r/   rÜ   r   s     €r   r1   z9Middlebury2014Stereo._download_dataset.<locals>.<genexpr>Y  s#   øè ø€ ÒS¸!�1œBŸJ™J t¨f¡}Ó5Ô5ÑSùs   ƒ$'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   rX   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_namesr0   rÛ   Úscene_dst_dirÚscene_src_dirs    `              r   rà   z&Middlebury2014Stereo._download_datasetC  s…  ø€ ØMˆä�D‹zÐ,Ñ,ˆØ—Z‘Zˆ
à˜ÒØ#Ÿ{™{¨:Ñ6ò �Ø! JÑ.�
Ø#;ò 
�KØ$/ =°°+°Ð!?�JØ#+ *¨A¨j¨\¸Ð >�Ià&¨Ñ3×;Ñ;Õ=Ü4Ø )Ø(2 |°4Ð%8Ü*-¨j«/Ø,0ö	ñ
ñô �K‰K˜˜v™Ô&ÜÓS¸t¿{¹{È6Ñ?RÔSÔSàf�ô -°ÌSÐQUËYÐhlÕmÜ13·±¼¸TÐDUÑ=UÓ9VÓ1Wò LÑ-�I˜{¨AØ!,ò L˜Ø(,¨v©˜Ü(,¨Y«¸%Ñ(?˜ÜŸ™ M¸DÕAÜŸ™¤C¨Ó$6¼¸MÓ8JÕKñ	LðLô —‘œc $¨Ñ"4Ó5Õ6ð Tr    rC   c                 ó>   •— t        t        t        ‰| �  |«      «      S )az  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   r\   r   rQ   rx   s     €r   rQ   z Middlebury2014Stereo.__getitem__i  ó   ø€ ô ”Bœ™Ñ+¨EÓ2Ó3Ð3r    )r€   rÕ   FNF)rT   rU   rV   rW   rä   rE   r
   rX   r   r	   Úboolr   r   r   r(   rY   rF   rG   rB   rà   rZ   r\   rQ   r]   r^   s   @r   r©   r©   w  s$  ø„ ñ6òr
ò
ò
ñ9-€Fð^ $(Ð ð
 Ø%.Ø"'Ø)-Øñ?3à�C˜�IÑð?3ð ð?3ð ˜c‘]ð	?3ð
  ð?3ð ˜XÑ&ð?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                   óŠ   ‡ — e Zd ZdZdZ	 ddeeef   dee	   ddfˆ fd„Z
dedeej                  df   fd	„Zd
edefˆ fd„Zˆ xZS )Ú	CREStereoaŒ  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                 ó|  •— t         ‰| �  ||«       t        |«      dz  }g d¢}|D ]”  }t        ||z  dz  «      }t        ||z  dz  «      }| j	                  ||«      }| xj
                  |z  c_        t        ||z  dz  «      }t        ||z  dz  «      }	| j	                  ||	«      }
| xj                  |
z  c_        Œ– y )Nr  )ÚshapenetÚ
reflectiveÚtreeÚholez
*_left.jpgz*_right.jpgz*_left.disp.pngz*_right.disp.pngrg   )r   r   r   ÚdirsrÜ   rh   ri   rN   rj   rk   rl   r   s              €r   r   zCREStereo.__init__£  sÏ   ø€ ô
 	‰Ñ˜˜zÔ*ä�D‹z˜KÑ'ˆâ9ˆàò 		-ˆAÜ!$ T¨A¡X°Ñ%<Ó!=ÐÜ"% d¨Q¡h°Ñ&>Ó"?ÐØ×#Ñ#Ð$6Ð8KÓLˆDØ�LŠL˜DÑ �Lä%(¨°©Ð4EÑ)EÓ%FÐ"Ü&)¨$°©(Ð5GÑ*GÓ&HÐ#Ø×*Ñ*Ð+AÐCZÓ[ˆKØ×Ò Ñ,Öñ		-r    r!   c                 óœ   — t        j                  t        j                  |«      t         j                  ¬«      }|d d d …d d …f   dz  }d }||fS )N©Údtypeg      @@©rF   r•   r   r$   Úfloat32rq   s       r   rB   zCREStereo._read_disparity¹  sD   € ÜŸ
™
¤5§:¡:¨iÓ#8ÄÇ
Á
ÔKˆà% dªAªq jÑ1°DÑ8ˆØˆ
Ø˜jÐ(Ð(r    rC   c                 ó>   •— t        t        t        ‰| �  |«      «      S )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.
        rw   rx   s     €r   rQ   zCREStereo.__getitem__À  ry   r    r-   r›   r^   s   @r   r  r  w  s~   ø„ ñ'ðR $(Ð ð
 *.ñ-à�C˜�IÑð-ð ˜XÑ&ð-ð 
õ	-ð,)¨ð )°°r·z±zÀ4Ð7GÑ1Hó )ð4 ð 4¨÷ 4ñ 4r    r  c            	       óˆ   ‡ — e Zd ZdZddeeef   dedee   ddfˆ fd„Z	dede
ej                  df   fd	„Zd
edefˆ fd„Zˆ xZS )ÚFallingThingsStereoaç  `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         ‰| �  ||«       t        |«      dz  }t        |dd¬«       dgdgddgdœ|   }t        d«      dz  t        d«      dœ}|D ]¨  }t	        ||z  ||   z  d	z  «      }t	        ||z  ||   z  d
z  «      }| xj
                  | j                  ||«      z  c_        t	        ||z  ||   z  dz  «      }	t	        ||z  ||   z  dz  «      }
| xj                  | j                  |	|
«      z  c_        Œª y )NÚFallingThingsr,  )ÚsingleÚmixedr×   r‚   r/  r0  rc   )r/  r0  z
*.left.jpgz*.right.jpgz*.left.depth.pngz*.right.depth.png©r   r   r   r   rX   r   r@   r   )r   r   r,  r   ÚvariantsÚsplit_prefixrÜ   r�   r�   rj   rk   r   s              €r   r   zFallingThingsStereo.__init__ü  s3  ø€ Ü‰Ñ˜˜zÔ*ä�D‹z˜OÑ+ˆä�w 	Ð8SÕTð  �jØ�YØ˜wÐ'ñ
ð ñ	ˆô ˜3“i #‘oÜ˜#“Yñ
ˆð
 ò 	cˆAÜ" 4¨!¡8¨l¸1©oÑ#=ÀÑ#LÓMÐÜ # D¨1¡H¨|¸A©Ñ$>ÀÑ$NÓ OÐØ�LŠL˜D×,Ñ,Ð-=Ð?PÓQÑQ�Lä%(¨°©°LÀ±OÑ)CÐFXÑ)XÓ%YÐ"Ü&)¨$°©(°\À!±_Ñ*DÐGZÑ*ZÓ&[Ð#Ø×Ò ×!1Ñ!1Ð2HÐJaÓ!bÑbÖñ	cr    r!   c                 óˆ  — t        j                  t        j                  |«      «      }t	        |«      j
                  dz  }t        |«      5 }t        j                  |«      }|d   d   d   d   }d\  }}||z  |z  |j                  t         j                  «      z  }	|	d d d …d d …f   }	d }
|	|
fcd d d «       S # 1 sw Y   y xY w)Nz_camera_settings.jsonÚcamera_settingsr   Úintrinsic_settingsÚfx)é   éd   )
rF   r•   r   r$   r   rõ   ÚjsonÚloadÚastyper(  )r   r!   ÚdepthÚcamera_settings_pathÚfÚ
intrinsicsÚfocalÚbaselineÚpixel_constantrr   rs   s              r   rB   z#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�nØ%¨Ñ-°Ñ>À%Ç,Á,ÌrÏzÉzÓBZÑZˆMà)¨$²²1¨*Ñ5ˆMØˆJØ  *Ð,÷		-÷ 		-ò 		-ús   ÁA"B8Â8CrC   c                 ó>   •— t        t        t        ‰| �  |«      «      S rv   rw   rx   s     €r   rQ   zFallingThingsStereo.__getitem__(  ry   r    )r/  Nrz   r^   s   @r   r+  r+  Ï  sy   ø„ ñ*ñXc˜U 3¨ 9Ñ-ð c¸ð cÐT\Ð]eÑTfð cÐrvõ cð6-¨ð -°°r·z±zÀ4Ð7GÑ1Hó -ð"4 ð 4¨÷ 4ñ 4r    r+  c                   ó’   ‡ — e Zd ZdZ	 	 	 ddeeef   dededee   ddf
ˆ fd„Z	d	ede
ej                  df   fd
„Zdedefˆ fd„Zˆ xZS )ÚSceneFlowStereoaÿ  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   r,  Ú	pass_namer   r   c                 ój  •— t         ‰| �  ||«       t        |«      dz  }t        |dd¬«       t        |dd¬«       dgdgddgdœ|   }||z  }t        d	«      t        d	«      d	z  d	z  t        d	«      d	z  d	z  d
œ}|D ]´  }t	        ||z  ||   z  dz  dz  «      }t	        ||z  ||   z  dz  dz  «      }	| xj
                  | j                  ||	«      z  c_        t	        |dz  ||   z  dz  dz  «      }
t	        |dz  ||   z  dz  dz  «      }| xj                  | j                  |
|«      z  c_        Œ¶ y )NÚ	SceneFlowr,  )ÚFlyingThings3DÚDrivingÚMonkaar‚   rG  )ÚcleanÚfinalr×   Úframes_cleanpassÚframes_finalpassrc   )rL  rJ  rK  r5   r‰   r6   Ú	disparityz*.pfmr1  )r   r   r,  rG  r   ÚpassesÚprefix_directoriesrñ   rh   ri   rj   rk   r   s               €r   r   zSceneFlowStereo.__init__m  sŠ  ø€ ô 	‰Ñ˜˜zÔ*ä�D‹z˜KÑ'ˆä�w 	Ð8_Õ`Ü�y +Ð<VÕWð )Ð)Ø(Ð)Ø'Ð);Ð<ñ
ð ñ	ˆð �g‰~ˆô ˜3“iÜ" 3›i¨#™o°Ñ3Ü˜C“y 3‘¨Ñ,ñ
Ðð ò 	cˆAÜ!$ T¨A¡XÐ0BÀ7Ñ0KÑ%KÈfÑ%TÐW^Ñ%^Ó!_ÐÜ"% d¨Q¡hÐ1CÀGÑ1LÑ&LÈwÑ&VÐY`Ñ&`Ó"aÐØ�LŠL˜D×,Ñ,Ð-?ÐATÓUÑU�Lä%(¨°Ñ);Ð>PÐQXÑ>YÑ)YÐ\bÑ)bÐelÑ)lÓ%mÐ"Ü&)¨$°Ñ*<Ð?QÐRYÑ?ZÑ*ZÐ]dÑ*dÐgnÑ*nÓ&oÐ#Ø×Ò ×!1Ñ!1Ð2HÐJaÓ!bÑbÖñ	cr    r!   c                 óN   — t        |«      }t        j                  |«      }d }||fS r-   rn   rq   s       r   rB   zSceneFlowStereo._read_disparity’  rt   r    rC   c                 ó>   •— t        t        t        ‰| �  |«      «      S rv   rw   rx   s     €r   rQ   zSceneFlowStereo.__getitem__˜  ry   r    )rJ  rM  Nrz   r^   s   @r   rF  rF  7  s—   ø„ ñ3ðp (Ø Ø)-ñ#cà�C˜�IÑð#cð ð#cð ð	#cð
 ˜XÑ&ð#cð 
õ#cðJ)¨ð )°°r·z±zÀ4Ð7GÑ1Hó )ð4 ð 4¨÷ 4ñ 4r    rF  c            	       óÊ   ‡ — e Zd ZdZdZddeeef   dedee	   ddfˆ fd„Z
d	edeeef   fd
„Zd	edeed   eej                  ej                  f   f   fd„Zdedefˆ fd„Zˆ xZS )ÚSintelStereoaÊ  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   rG  r   r   c                 ó°  •— t         ‰	| �  ||«       t        |dd¬«       t        |«      dz  }dgdgddgdœ|   }|D ]—  }t	        |dz  |› d�z  d	z  d
z  «      }t	        |dz  |› d�z  d	z  d
z  «      }| xj
                  | j                  ||«      z  c_        t	        |dz  dz  d	z  d
z  «      }| xj                  | j                  |d «      z  c_        Œ™ y )NrG  )rN  rM  r×   r‚   ÚSintelrN  rM  ÚtrainingÚ_leftrc   r‰   Ú_rightrl   )r   r   r   r   rX   r   r@   r   )
r   r   rG  r   Ú
pass_namesrñ   r�   r�   r‘   r   s
            €r   r   zSintelStereo.__init__Ö  s  ø€ Ü‰Ñ˜˜zÔ*ä�y +Ð<VÕWä�D‹z˜HÑ$ˆà�YØ�YØ˜gÐ&ñ
ð ñ	ˆ
ð ò 	KˆAÜ" 4¨*Ñ#4¸!¸¸E°{Ñ#BÀSÑ#HÈ7Ñ#RÓSÐÜ # D¨:Ñ$5¸1¸#¸V¸Ñ$DÀsÑ$JÈWÑ$TÓ UÐØ�LŠL˜D×,Ñ,Ð-=Ð?PÓQÑQ�Lä # D¨:Ñ$5¸Ñ$EÈÑ$KÈgÑ$UÓ VÐØ×Ò ×!1Ñ!1Ð2CÀTÓ!JÑJÖñ	Kr    r!   c                 ó¬  — t        |«      }|j                  }|j                  }|j                  j                  }t        |dz  |j                  z  |z  «      }t        |dz  |j                  z  |z  «      }t        j
                  j                  |«      st        d|› d�«      ‚t        j
                  j                  |«      st        d|› d�«      ‚||fS )NÚ
occlusionsÚ
outofframezOcclusion mask z does not existzOut of frame mask )r   rô   rõ   rX   rá   râ   rã   r9   )r   r!   ÚfpathÚbasenameÚscenedirÚ	sampledirÚocclusion_pathÚoutofframe_paths           r   Ú_get_occlussion_mask_pathsz'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                 ó  — |€yt        j                  t        j                  |«      t         j                  ¬«      }t        j
                  |dd¬«      \  }}}|dz  |dz  z   |dz  z   }t        j                  |d	«      }| j                  |«      \  }}t        j                  t        j                  |«      «      d
k(  }t        j                  t        j                  |«      «      d
k(  }	t        j                  |	|«      }||fS )NrŒ   r%  é   éÿÿÿÿ)Úaxisé   é@   i @  )é   r   r   r   )	rF   r•   r   r$   r(  r}   Ú	transposerg  Úlogical_and)
r   r!   rr   ÚrÚgÚbÚocclued_mask_pathÚout_of_frame_mask_pathrs   Úoff_masks
             r   rB   zSintelStereo._read_disparityÿ  sÚ   € ØÐØô Ÿ
™
¤5§:¡:¨iÓ#8ÄÇ
Á
ÔKˆÜ—(‘(˜=¨!°"Ô5‰ˆˆ1ˆaØ˜A™  T¡
Ñ*¨Q°%©[Ñ8ˆäŸ™ ]°IÓ>ˆà48×4SÑ4SÐT]Ó4^Ñ1ÐÐ1ä—Z‘Z¤§
¡
Ð+<Ó =Ó>À!ÑCˆ
ä—:‘:œeŸj™jÐ)?Ó@ÓAÀQÑFˆä—^‘^ H¨jÓ9ˆ
Ø˜jÐ(Ð(r    rC   c                 ó>   •— t        t        t        ‰| �  |«      «      S )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)`` 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  rx   s     €r   rQ   zSintelStereo.__getitem__  r  r    )rN  N)rT   rU   rV   rW   rE   r
   rX   r   r	   r   r   rY   rg  rF   rG   rB   rZ   r\   rQ   r]   r^   s   @r   rW  rW  §  sµ   ø„ ñ*ðX $(Ð ñK˜U 3¨ 9Ñ-ð K¸#ð KÐU]Ð^fÑUgð KÐswõ Kð(/°Cð /¸EÀ#ÀsÀ(¹Oó /ð*)¨ð )°°u¸ZÑ7HÈ%ÐPR×PZÑPZÐ\^×\fÑ\fÐPfÑJgÐ7gÑ1hó )ð(4 ð 4¨÷ 4ñ 4r    rW  c            	       óˆ   ‡ — e Zd ZdZddeeef   dedee   ddfˆ fd„Z	dede
ej                  df   fd	„Zd
edefˆ fd„Zˆ xZS )Ú
InStereo2kaÔ  `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                 óH  •— t         ‰| �  ||«       t        |«      dz  |z  }t        |dd¬«       t	        |dz  dz  «      }t	        |dz  dz  «      }| j                  ||«      | _        t	        |dz  dz  «      }t	        |dz  d	z  «      }| j                  ||«      | _        y )
Nry  r}   r   r‚   rc   zleft.pngz	right.pngzleft_disp.pngzright_disp.png)r   r   r   r   rX   r@   r   r   r¥   s	           €r   r   zInStereo2k.__init__A  s°   ø€ Ü‰Ñ˜˜zÔ*ä�D‹z˜LÑ(¨5Ñ0ˆä�u˜gÐ4EÕFä˜t c™z¨JÑ6Ó7ÐÜ  s¡
¨[Ñ 8Ó9ÐØ×'Ñ'Ð(8Ð:KÓLˆŒä!$ T¨C¡Z°/Ñ%AÓ!BÐÜ"% d¨S¡jÐ3CÑ&CÓ"DÐØ ×,Ñ,Ð-CÐE\Ó]ˆÕr    r!   c                 óœ   — t        j                  t        j                  |«      t         j                  ¬«      }|d d d …d d …f   dz  }d }||fS )Nr%  g      �@r'  rq   s       r   rB   zInStereo2k._read_disparityP  sD   € ÜŸ
™
¤5§:¡:¨iÓ#8ÄÇ
Á
ÔKˆà% dªAªq jÑ1°FÑ:ˆØˆ
Ø˜jÐ(Ð(r    rC   c                 ó>   •— t        t        t        ‰| �  |«      «      S rv   rw   rx   s     €r   rQ   zInStereo2k.__getitem__W  ry   r    rš   rz   r^   s   @r   ry  ry  !  sx   ø„ ññ>^˜U 3¨ 9Ñ-ð ^°cð ^ÐQYÐZbÑQcð ^Ðosõ ^ð)¨ð )°°r·z±zÀ4Ð7GÑ1Hó )ð4 ð 4¨÷ 4ñ 4r    ry  c            	       ó°   ‡ — e Zd ZdZdZddeeef   dedee	   ddfˆ fd„Z
d	edeed
   eej                  ej                  f   f   fd„Zdedefˆ fd„Zˆ xZS )ÚETH3DStereoaf  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         ‰	| �  ||«       t        |dd¬«       t        |«      dz  }|dk(  rdnd}d}t	        ||z  d	z  d
z  «      }t	        ||z  d	z  dz  «      }| j                  ||«      | _        |dk(  r"t        d„ | j                  D «       «      | _        y t	        ||z  d	z  dz  «      }| j                  |d «      | _        y )Nr}   r   r‚   ÚETH3Dr€   Útwo_view_trainingÚtwo_view_testÚtwo_view_training_gtrc   rd   re   r�   c              3   ó    K  — | ]  }d –— Œ y­wr‹   r   r.   s     r   r1   z'ETH3DStereo.__init__.<locals>.<genexpr>©  r�   r2   rf   )	r   r   r   r   rX   r@   r   r7   r   )
r   r   r}   r   Úimg_dirÚanot_dirr�   r�   r‘   r   s
            €r   r   zETH3DStereo.__init__š  sÖ   ø€ Ü‰Ñ˜˜zÔ*ä�u˜gÐ4EÕFä�D‹z˜GÑ#ˆà).°'Ò)9Ñ%¸ˆØ)ˆä˜t g™~°Ñ3°iÑ?Ó@ÐÜ  w¡°Ñ 4°yÑ @ÓAÐØ×'Ñ'Ð(8Ð:KÓLˆŒà�FŠ?Ü $Ñ$H¸4¿<¹<Ô$HÓ HˆDÕä # D¨8¡O°cÑ$9¸MÑ$IÓ JÐØ $× 0Ñ 0Ð1BÀDÓ IˆDÕr    r!   rŒ   c                 óú   — |€yt        |«      }t        j                  |«      }t        |«      j                  dz  }t        j                  |«      }t        j                  |«      j                  t        «      }||fS )NrŒ   zmask0nocc.png)
ro   rF   rp   r   rõ   r   r$   r•   r<  r  )r   r!   rr   Ú	mask_pathrs   s        r   rB   zETH3DStereo._read_disparity®  si   € àÐØä& yÓ1ˆÜŸ™˜}Ó-ˆÜ˜“O×*Ñ*¨_Ñ<ˆ	Ü—Z‘Z 	Ó*ˆ
Ü—Z‘Z 
Ó+×2Ñ2´4Ó8ˆ
Ø˜jÐ(Ð(r    rC   c                 ó>   •— t        t        t        ‰| �  |«      «      S r˜   r  rx   s     €r   rQ   zETH3DStereo.__getitem__º  r™   r    rš   )rT   rU   rV   rW   rE   r
   rX   r   r	   r   r   rY   rF   rG   rB   rZ   r\   rQ   r]   r^   s   @r   r~  r~  f  sš   ø„ ñ/ðb $(Ð ñJ˜U 3¨ 9Ñ-ð J°cð JÐQYÐZbÑQcð JÐosõ 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
   ÚnumpyrF   ÚPILr   Úutilsr   r   r   Úvisionr   rY   rG   r[   r\   Ú__all__Úpartialro   r   r`   r|   r�   r©   r  r+  rF  rW  ry  r~  r   r    r   ú<module>r”     sC  ðÛ Û Û 	Û Û ß #Ý Ý ß 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    