
     hU                         d dl Z d Zd Zd Zy)    Nc           
          | j                  dddd      }t        t        |ddddddddf   |            }|t        |dddddddf   |      |d<   |S )	zB
    extract 3D points/confidence from prediction head output
    r            N)mode)pts3dconf)permutedictreg_dense_depthreg_dense_conf)out
depth_mode	conf_modefmapress        F/home/cameronsmith/repos/controll3r/dust3r/dust3r/heads/postprocess.pypostprocessr   
   sb     ;;q!Q"D
_T!Q1Q3,%7jI
JC$T!Q1*%5IFFJ    c                 b   |\  }}}|t        d       k(  xr |t        d      k(  }|sJ |dk(  r|r| S | j                  ||      S | j                  dd      }| |j                  d      z  } |d	k(  r| |j                         z  S |d
k(  r| t	        j
                  |      z  S t        d|      )z7
    extract 3D points from prediction head output
    inflinear)minmaxT)dimkeepdimg:0yE>)r   squareexp	bad mode=)floatclipnormr   torchexpm1
ValueError)xyzr   vminvmax	no_boundsds         r   r   r      s     D$%,&BTU5\-AIxJxxDdx++ 	R&A
4 
 CxQXXZu}U[[^##
zD7^
$$r   c                     |\  }}}|dk(  r&|| j                         j                  ||z
        z   S |dk(  r||z
  t        j                  |       z  |z   S t	        d|      )z8
    extract confidence from prediction head output
    r   )r   sigmoidr    )r   r"   r$   r-   r&   )xr   r(   r)   s       r   r   r   1   sm     D$u}aeeglltDyl111ytu}}Q//$66
zD7^
$$r   )r$   r   r   r    r   r   <module>r0      s    	%6	%r   