o
    *Îj,  ã                   @   s:   d dl Z d dlZd dlZ	d
dd„Zdd„ Zddd	„ZdS )é    NÚcudac                 C   sœ  d}t  | d |d |¡ |¡}t  | d |d |¡ |¡}t  | d |d |¡ |¡}tj|||gtjd}	t  ¡ ‰ t|ƒD ]{\}
}t|ƒD ]r\}}t|ƒD ]i\}}t  |||¡\}}}| 	dd¡}| 	dd¡}| 	dd¡}t j
|||gdd}| |¡}||ƒ 	t|ƒt|ƒt|ƒ¡ ¡  ¡  ¡ }||	|
| |
| t|ƒ …|| || t|ƒ …|| || t|ƒ …f< qPqHq@W d   ƒ |	S 1 sÇw   Y  |	S )Né@   r   é   é   )Zdtypeéÿÿÿÿ)Údim)ÚtorchÚlinspaceÚsplitÚnpZzerosZfloat32Zno_gradÚ	enumerateZmeshgridZreshapeÚcatÚtoÚlenÚdetachÚcpuÚnumpy)Ú	bound_minÚ	bound_maxÚ
resolutionÚ
query_funcÚdeviceÚNÚXÚYÚZÚuÚxiZxsÚyiZysZziZzsÚxxÚyyÚzzZptsÚval© r#   úp/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/models/cv/surface_recon_common/utils.pyÚextract_fields   s>   

ÿÿ.ÿÿ÷ÿÿ
ÿòr%   c                 C   s†   t d |¡ƒ t| ||||ƒ}t ||¡\}}| ¡  ¡  ¡ }	|  ¡  ¡  ¡ }
||d  |	|
 d d d …f  |
d d d …f  }||fS )Nzthreshold: {}ç      ð?)ÚprintÚformatr%   ÚmcubesZmarching_cubesr   r   r   )r   r   r   Ú	thresholdr   r   r   ZverticesZ	trianglesZb_max_npZb_min_npr#   r#   r$   Úextract_geometry(   s   
ÿÿr+   Fc                 C   sÂ  |d }|t j|ddd }t  |d¡}t  t  |dd d…f ¡|gd¡}|rJt jdd|  d	d|  |d
 |¡}| t|j	d d… ƒ|g ¡}nt  
t|j	d d… ƒ|g ¡ |¡}| ¡ }t j||dd}t  t  |d ¡|d ¡}	t  |j	d d t  |¡ |¡}
t  |	|
gd¡}|j	d |j	d |j	d g}t  | d¡ |¡d|¡}t  |  d¡ |¡d|¡}|d |d  }t  |dk t  |¡|¡}||d  | }|d ||d |d    }|S )Ngñhãˆµøä>r   T)Zkeepdim.r   g        g      à?r&   )Zsteps)Úrightr   r   ).r   ).r   )r   ÚsumZcumsumr   Z
zeros_liker	   r   ÚexpandÚlistÚshapeZrandÚ
contiguousZsearchsortedÚmaxÚminZ	ones_likeÚstackZgatherZ	unsqueezeÚwhere)ZbinsÚweightsZ	n_samplesZdetr   ZpdfZcdfr   ZindsZbelowZaboveZinds_gZmatched_shapeZcdf_gZbins_gÚdenomÚtZsamplesr#   r#   r$   Ú
sample_pdf5   s4   "þþ $ r9   )r   )Fr   )r)   r   r   r   r%   r+   r9   r#   r#   r#   r$   Ú<module>   s   
ü