a
    d5                     @   sj   d dl Z d dlZd dlmZ d dlZd dlmZ d dlmZ G dd dZ	G dd dZ
G dd	 d	ZdS )
    N)	gradcheck)assert_closec                   @   sh   e Zd Zdd Zejdg ddd Zejdg ddd	 Zd
d Z	dd Z
dd Zdd ZdS )TestDepthTo3dc                 C   sL   t jdddd||d}t jddd||d}tjj||}|jdksHJ d S N         devicedtype)r   r   r   r   torchrandkorniageometrydepthdepth_to_3dshapeselfr
   r   r   camera_matrixpoints3d r   a/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/test/geometry/test_depth.py
test_smoke   s    zTestDepthTo3d.test_smoke
batch_size   r      c                 C   sT   t j|ddd||d}t j|dd||d}tjj||}|j|dddfksPJ d S Nr   r   r   r	   r   r   r   r
   r   r   r   r   r   r   r   test_shapes   s    zTestDepthTo3d.test_shapes)r   r   r   r   c                 C   sT   t j|ddd||d}t jddd||d}tjj||}|j|dddfksPJ d S r   r   r    r   r   r   test_shapes_broadcast   s    z#TestDepthTo3d.test_shapes_broadcastc                 C   s   dt jg dg dg dg dggg||d }t jg dg dg dgg||d}t jg dg dg dg dgg dg d	g d
g dgg d	g d	g d	g d	ggg||d}tjj||}t||ddd d S )Nr         ?r$   r$   r	   r$           r&   r&   r$   r&   r&   r&   r$   )r&          @      @r&   r&   r&   )r)   r)   r)   )r*   r*   r*   )      @r,   r,   -C6?atolrtolr   tensorr   r   r   r   r   r   r
   r   r   r   Zpoints3d_expectedr   r   r   r   test_unproject_denormalized"   s    "$z)TestDepthTo3d.test_unproject_denormalizedc                 C   s   dt jg dg dg dg dggg||d }t jg dg dg dgg||d}t jg dg dg d	g d
gg dg dg dg dgg dg dg dg dggg||d}tjjj||dd}t||ddd d S )Nr   r#   r	   r%   r'   r(   )r&   -?=U?)r&   (y?T㥛 ?)r&   T㥛 ?|a2U?)r&   粝K?gv?r+   )r5   r7   r9   )r6   r8   r:   )g6[?gs?g=yX?)r)   r5   W[?)r<   r9   gK=U?)g=
ףp=?r;   gv?TZnormalize_pointsr-   r.   r1   r3   r   r   r   test_unproject_normalized9   s6    "$z'TestDepthTo3d.test_unproject_normalizedc                 C   s   dt jg dg dg dg dggg||d }t jg dg dg dgg||d}tjj||}tjj|dddd	|d d d d f }tj	j
d
dd|dj|d}t||ddd d S )Nr   r#   r	   r%   r'   r(   r   r   r   r   F)r
   )r   r-   r.   )r   r2   r   r   r   r   ZcameraZproject_pointsZpermuteutilsZcreate_meshgridtor   )r   r
   r   r   r   r   Zpoints2dZpoints2d_expectedr   r   r   test_unproject_and_project_   s    "$*z(TestDepthTo3d.test_unproject_and_projectc                 C   s^   t jdddd||d}t|}t jddd||d}t|}ttjjj||fddsZJ d S Nr   r   r   r	   T)Zraise_exception)	r   r   r?   tensor_to_gradcheck_varr   r   r   r   r   r   r
   r   r   r   r   r   r   test_gradcheckk   s
    

zTestDepthTo3d.test_gradcheckN)__name__
__module____qualname__r   pytestmarkparametrizer!   r"   r4   r>   rA   rE   r   r   r   r   r   
   s   

&r   c                   @   s`   e Zd Zdd Zejdg ddd Zejdg ddd Zd	d
 Z	dd Z
dd ZdS )TestDepthToNormalsc                 C   sL   t jdddd||d}t jddd||d}tjj||}|jdksHJ d S r   r   r   r   r   r   depth_to_normalsr   r   r   r   r   r   x   s    zTestDepthToNormals.test_smoker   r   c                 C   sT   t j|ddd||d}t j|dd||d}tjj||}|j|dddfksPJ d S r   rM   r    r   r   r   r!      s    zTestDepthToNormals.test_shapesc                 C   sT   t j|ddd||d}t jddd||d}tjj||}|j|dddfksPJ d S r   rM   r    r   r   r   r"      s    z(TestDepthToNormals.test_shapes_broadcastc                 C   s   dt jg dg dg dg dggg||d }t jg dg dg dgg||d}t jg dg dg dg dgg dg dg dg dgg dg dg dg dggg||d}tjj||}t||ddd	 d S )
Nr   r#   r	   r%   r'   r(   r+   MbP?r0   r/   r   r2   r   r   r   rN   r   r   r
   r   r   r   Znormals_expectedZnormalsr   r   r   test_simple   s    "$zTestDepthToNormals.test_simplec                 C   s   dt jg dg dg dg dggg||d }t jg dg dg dgg||d}t jg dg dg d	g d
gg dg dg dg dgg dg dg dg dggg||d}tjjj||dd}t||ddd d S )Nr   r#   r	   r%   r'   r(   )I.!?xz,C?gqh?)	c?$C?g|гY?)g46<?gy):?gcZB>?)gV-?gOn?g??)rT   rV   g??)rU   rW   gMbX9?)g_Q?g46<?gjq?)g3?g6[?g9#?)gё\C?qh?gB?)rX   g 	?gI+?)gea?g0*?gtV?)gw-!l?g??gu?Tr=   rO   rP   rQ   rR   r   r   r   test_simple_normalized   s6    "$z)TestDepthToNormals.test_simple_normalizedc                 C   s^   t jdddd||d}t|}t jddd||d}t|}ttjjj||fddsZJ d S rB   )	r   r   r?   rC   r   r   r   r   rN   rD   r   r   r   rE      s
    

z!TestDepthToNormals.test_gradcheckN)rF   rG   rH   r   rI   rJ   rK   r!   r"   rS   rY   rE   r   r   r   r   rL   w   s   

&rL   c                   @   sX   e Zd Zdd Zejdg dejdg ddd Zd	d
 Zdd Z	dd Z
dS )TestWarpFrameDepthc                 C   sz   t jdddd||d}t jdddd||d}t jddd||d}t jddd||d}tjj||||}|jdksvJ d S r   r   r   r   r   r   warp_frame_depthr   )r   r
   r   	image_src	depth_dstsrc_trans_dstr   	image_dstr   r   r   r      s    zTestWarpFrameDepth.test_smoker   r   num_features)r   r   r   c           
      C   s   t j||dd||d}t j|ddd||d}t j|dd||d}t j|dd||d}tjj||||}	|	j||ddfks~J d S )Nr   r   r	   r   r[   )
r   r   ra   r
   r   r]   r^   r_   r   r`   r   r   r   
test_shape   s    zTestWarpFrameDepth.test_shapec                 C   s  t jg dg dg dg dggg||d}t jg dg dg dg dggg||d}t jg dg dg dg dgg||d}|jdd  \}}t jd	d
|d gd
d	|d gg dgg||d}t jg dg dg dg dggg||d}	tjj||||}
t|
|	ddd d S )Nr$   r)         @r	   r#   r$   r&   r&   r$   r&   r$   r&   r&   r&   r&   r$   r&   r&   r&   r&   r$   r$   r&   r   r(   )r)   rd   r&   rO   rP   r   r2   r   r   r   r   r\   r   r   r
   r   r]   r^   r_   hwr   Zimage_dst_expectedr`   r   r   r   test_translation   s,    ""&"z#TestWarpFrameDepth.test_translationc                 C   s  t jg dg dg dg dggg||d}t jg dg dg dg dggg||d}t jg dg dg dg dgg||d}|jdd  \}}t jd	d
|d gd
d	|d gg dgg||d}t jg dg dg dg dggg||d}	tjjj||||dd}
t|
|	ddd d S )Nrc   r	   r#   re   rf   rg   rh   ri   r$   r&   r   r(   )g9#J{?r&   r&   )g/n@g      ?r&   )g	h"l@g&䃞*@r&   Tr=   rO   rP   rj   rk   r   r   r   test_translation_normalized  s<    ""&

z.TestWarpFrameDepth.test_translation_normalizedc                 C   s   t jdddd||d}t|}t jdddd||d}t|}t jddd||d}t|}t jddd||d}t|}ttjjj||||fddsJ d S rB   )	r   r   r?   rC   r   r   r   r   r\   )r   r
   r   r]   r^   r_   r   r   r   r   rE   4  s    




z!TestWarpFrameDepth.test_gradcheckN)rF   rG   rH   r   rI   rJ   rK   rb   rn   ro   rE   r   r   r   r   rZ      s   		)rZ   )rI   r   Ztorch.autogradr   r   Zkornia.testingZtestingr?   r   r   rL   rZ   r   r   r   r   <module>   s   ma