i4h Catheter Navigation - Render DRR
Purpose
Rendre un seul cadre de radiographie numériquement reconstruite (DRR). Fonctionne avec un cache CT prétraité de [[i4h-catheter-navigation-digital-twin]], un chemin NIfTI/DICOM direct, ou le phantom synthétique intégré (aucune donnée requise).
Base Code
ROOT="${I4H_WORKFLOWS:-$(git rev-parse --show-toplevel 2>/dev/null)}"
if [ ! -d "$ROOT/workflows/catheter_navigation" ]; then
ROOT="${I4H_WORKFLOWS:-$HOME/i4h-workflows}"
[ -d "$ROOT/workflows/catheter_navigation" ] || git clone https://github.com/isaac-for-healthcare/i4h-workflows "$ROOT"
fi
export I4H_WORKFLOWS="$ROOT"; cd "$ROOT"
Basics
- Mode par défaut dans
metadata.json; autosuffisant avec phantom synthétique quand aucun--cachen'est fourni. - GPU + slangpy requis pour le rendu réel.
- Point d'entrée :
./i4h run catheter_navigation render_drr(préféré).
Run
Exécutez les étapes ci-dessous dans l'ordre. Chaque étape est un appel bash séparé ; les variables persistent dans la session tmux de l'agent local.
Step 1 - resolve run dir
REPO_ROOT="${I4H_WORKFLOWS:-$(git rev-parse --show-toplevel 2>/dev/null)}"; [ -d "$REPO_ROOT/workflows/catheter_navigation" ] || REPO_ROOT="$HOME/i4h-workflows"
WF_ROOT="${REPO_ROOT}/workflows/catheter_navigation"
RUN_DIR="${WF_ROOT}/runs/render_drr_$(date +%Y%m%d_%H%M%S)"
mkdir -p "${RUN_DIR}/logs"
ln -sfn "${RUN_DIR}" "${WF_ROOT}/runs/.latest"
OUTPUT="${RUN_DIR}/drr.png"
CACHE="${CACHE:-}"
Step 2 - render (pick one variant)
Synthetic phantom (fastest smoke, no data):
"${REPO_ROOT}/i4h" run catheter_navigation render_drr --local \
--run-args="--output ${OUTPUT}" \
2>&1 | tee "${RUN_DIR}/logs/render_drr.log"
From preprocessed cache:
if [ ! -d "${CACHE}" ] || [ ! -f "${CACHE}/mu_volume.npy" ]; then
echo "render-drr: set CACHE to a preprocess_ct output dir (missing mu_volume.npy)." >&2
exit 1
fi
"${REPO_ROOT}/i4h" run catheter_navigation render_drr --local \
--run-args="--cache ${CACHE} --output ${OUTPUT}" \
2>&1 | tee "${RUN_DIR}/logs/render_drr.log"
Verify
test -f "${OUTPUT}"
file "${OUTPUT}"
Prerequisites
- [[i4h-catheter-navigation-setup]] complété.
- GPU NVIDIA avec slangpy pour le rendu (les tests de smoke CPU ne couvrent pas le rendu GPU).
Limitations
- Rendu single-frame uniquement ; le rendu RL batch multi-env utilise directement l'API Python fluorosim.
- La composition de cathéter dans DRR nécessite d'attacher un
CatheterProviderdans des scripts personnalisés (non l'exemple par défaut).
Troubleshooting
- Error: slangpy / CUDA failures - Fix: exécutez sans
--localpour utiliser Docker, ou vérifiez que le driver GPU >= 570 et CUDA 12.8. - Error: cache not found - Fix: exécutez d'abord [[i4h-catheter-navigation-digital-twin]] ou utilisez le mode synthétique (pas de
--cache).
Final Response
Signalez le chemin PNG de sortie, si le mode synthétique ou le cache patient a été utilisé, et le chemin du log. Recommandez [[i4h-catheter-navigation-viewport]] pour la navigation interactive.