43 lines (43 with data), 3.7 kB
U
wórfã ã @ s\ d Z ddlZddlm mZ ddlZddlZddl m
Z
ddlZddlZ
G dd dZdS )zq CSG Fusion and SDF Sampler.
The grid_global_samp is defined following GenSDF: https://arxiv.org/abs/2206.02780.
é N)ÚcKDTreec s, e Zd Z fddZdd Zdd Z ZS )Ú
SDFSamplerc s¦ t t| ¡ t d¡| _tj |¡ || _| d¡| _ |d | _
| | j |||¡ td t
tj | j | j
¡¡}|d | _|d | _| jjd d | _td d S )
NÚcudaÚdata_dirú.ptzLoading data: ...Úquery_pointsÚquery_points_sdfr é zLoad data: End)Úsuperr Ú__init__ÚtorchÚdevicer Ú
set_deviceÚconfÚ
get_stringr Únp_data_nameÚprocess_dataÚprintÚloadÚosÚpathÚjoinÚsampleÚ
sample_sdfÚshapeÚsample_points_num)Úselfr ÚdatanameÚcsg_sdf1Úcsg_sdf2ÚgpuÚ prep_data©Ú __class__© úcD:\OneDrivePersonal\OneDrive\Graduate\Paper\2024MICCAI\Paper\Code\RoCoSDF-main\models\sdfSampler.pyr s
zSDFSampler.__init__c C sN t j dd¡}t jj| jd |dd}|d | }| j| }| j| }||fS )Né
r F)Úreplace)ÚnpÚrandomÚchoicer r r )r Ú
batch_sizeÚindex_coarseÚ
index_fineÚindexr r r$ r$ r% Ú
train_data$ s
zSDFSampler.train_datac C sH t d dd }ddd}d}|d d
d}|dd
d} t || f¡}
t |
¡ | j¡ ¡ }
|
t |
j d ¡d|
}t
||||¡}d}
|}d}g d }}g }d}||k rR|d7 }t |j d df¡}t
||||¡}|||
d}|||k d d
df d d
f }|||k d d
df d d
f }| |¡ | |¡ ||j d 7 }q¨|dkrlt d| d tj
|dd}tj
|dd}t |j d ¡d |
}|| }|| }t d tj ¡ }tj | ¡ ¡ ¡ ¡|_tj tj ||¡d |¡ t d t tj
||fddtj
||fdddtj ||¡d ¡ t d d S )NzSample around SDF volume...c S s\ t j| ||d}t j| ||d}t j| ||d}t |||¡}t tt j|¡}| dd¡S )N)Únumr r )r( ÚlinspaceÚmeshgridÚvstackÚmapÚravelÚswapaxes)ÚstartÚendr0 ÚxÚyÚzÚgÚ positionsr$ r$ r% Úgen_grid4 s z)SDFSampler.process_data.<locals>.gen_gridr r c S s8 dt dt j | ¡ t | | d d|d ¡ S )Nr é )r( ÚsqrtÚpir Úexp)ÚvalsÚsigmaÚmur$ r$ r% Úgaussian<