Skip to content

Instantly share code, notes, and snippets.

@hemmer
Last active January 25, 2023 14:35
Show Gist options
  • Save hemmer/0c48d0d5ba9526e666d03cb0dbe35c25 to your computer and use it in GitHub Desktop.
Save hemmer/0c48d0d5ba9526e666d03cb0dbe35c25 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import sys\n",
"module_path = os.path.abspath(os.path.join('..'))\n",
"if module_path not in sys.path:\n",
" sys.path.append(module_path)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import logging\n",
"import os\n",
"from typing import Callable\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from pathlib import Path\n",
"\n",
"from deepdrr.load_dicom import (\n",
" load_dicom,\n",
" conv_hu_to_materials_thresholding,\n",
" conv_hu_to_density,\n",
")\n",
"from deepdrr import utils\n",
"from deepdrr import Volume, MobileCArm, Projector\n",
"from deepdrr import geo\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"running on windows is not thoroughly tested\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAa8AAAGxCAYAAADVtznqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAyZElEQVR4nO3df3RU9Z3/8ddMZjL5QTIhJGRmSAjRSm0NpSu6IEVBWlKxiEpbrW676Gk9VQtdDlhbdfeI3W3h0IqeLW3d/lLqj+JxC66urhUWgvVEPBHtCtT1QAkQICEQkpn8mEwyM5/vH/1m1iEJJCFh8kmej3M+55B7P/fO+364Z15zf8wdhzHGCAAAizhTXQAAAANFeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3ihh7fffls333yzJk+eLI/Ho6KiIl111VVatWpVUr958+bJ4XDI4XDI6XQqJydHH/vYx/TlL39Z//7v/654PN5j3VOmTEks43A4lJ2drcsvv1wbNmxQKh728tFt+Gi77rrrevTt6urSI488oilTpsjj8ejSSy/VT37yk17Xe/DgQS1ZskR5eXkaN26cFixYoHfffXfQdVZVVWn16tVqbm4e9DrOR2trq1asWKFAIKCMjAx9+tOf1qZNm1JSy3B4/PHHtWTJEpWVlcnhcGjevHmpLgnn4Ep1ARhZXnnlFS1evFjz5s3TunXr5Pf7VVdXp3feeUebNm3So48+mtT/oosu0rPPPitJamtrU01NjV588UV9+ctf1tVXX62XX35ZXq83aZnPfOYz+vGPfyxJOn78uNavX6/ly5crFArpwQcfvDAb2sc2dMvLy+vR795779XTTz+tf/7nf9aVV16pP/zhD/qHf/gHtbS0JNV98uRJXX311Ro/frx+85vfKCMjQ2vWrNG8efNUXV2tj3/84wOusaqqSo888ojuuOOOXmsbbkuWLFF1dbXWrl2rqVOn6rnnntNtt92meDyu22+//YLXM9SeeOIJZWdna/78+Xr55ZdTXQ76wwAfcc0115iLL77YdHV19ZgXi8WS/p47d6657LLLel3Pb37zGyPJ3HLLLUnTS0tLzRe+8IWkacFg0Hi9XjN58uTzrH7gzrYNH7V3717jcDjMD3/4w6Tpd911l8nMzDSNjY2Jad/5zneM2+02hw4dSkwLBoOmoKCgx3j0149+9CMjydTU1Axq+fPxyiuvGEnmueeeS5q+YMECEwgETDQaveA1DbWP7tuXXXaZmTt3buqKQb9w2hBJGhsbVVBQIJer50G509n/3eXOO+/U9ddfrxdeeEGHDx8+a9/c3FxNnTpVJ06cGHC9F8qLL74oY4zuvPPOpOl33nmnwuGwXnvttcS0LVu2aP78+SotLU1My83N1ZIlS/Tyyy8rGo0O6LVXr16t73znO5KUOK3lcDhUWVk5+A0agC1btmjcuHH68pe/nDT9zjvv1PHjx/X2228PeJ2VlZVyOBx65plntHLlSvl8PmVmZmru3Ll67733hqr0fhvIvo2Rgf8xJLnqqqv09ttv69vf/rbefvttdXV1DXpdixcvljFGf/zjH8/aLxqNqra2VlOnTu3XemOxmKLR6Dlbb9fcevOXv/xF+fn5crlcuvjii/XQQw8pHA4n9dm7d68KCwvl8/mSpn/qU59KzJekcDisv/zlL4npZ/YNh8M6ePBgv+rq9o1vfEPLly+XJG3evFlvvfWW3nrrLV1++eV9LmOM6dcY9SdI9+7dq0984hM9PtCcue2D8eCDD+rgwYP61a9+pV/96lc6fvy45s2b168x6u/2GX44Y1QivJBk7dq1mjNnjn7yk59o1qxZys7O1mc+8xmtXbtWra2tA1pX95HH8ePHk6Z/9I31yJEjuvfee9XY2Kg1a9b0a70XX3yx3G73Odv3v//9c65rzpw5Wr9+vX7/+9/rpZde0vXXX69169bpuuuuSwq/xsZG5efn91g+Oztb6enpamxslCQ1NTXJGNNr3+5p3X37q7i4WJMnT5Yk/c3f/I1mzZqlWbNmKTc3t89lNm7c2K8xcrvd53z9vrZ9sNvzUYWFhdqyZYsWLVqkv/u7v9O2bdsUDofPuS8cOnSo39u3c+fOQdeHkYsbNpBkwoQJ+uMf/6h33nlH//3f/6133nlHlZWVeuCBB/Rv//Zvqq6uVkFBQb/W1dcn3ldffbXHm+YTTzyhL3zhC/1a78svv6xIJHLOfoFA4Jx9/uVf/iXp7+uvv15TpkzRfffdp//4j//QzTffnJjncDj6XM+Z8wbSdzjccMMNqq6uHrL1Ddf23H777UnLl5aWavbs2dqxY8dZlwsEAv3evsHcIIORj/BCr6644gpdccUVkv56i/h3v/tdPfbYY1q3bp3WrVvXr3V0X+s6M0TmzJmjxx57TLFYTPv379c//dM/admyZbrssss0Z86cc673k5/8ZL9OBQ32OsZXv/pV3Xfffdq1a1civCZMmKA//elPPfq2tbWps7MzcRQyfvx4ORyOXo9GTp8+LUm9HsUMtfz8/B53eQ7WhAkThm17zjwN2z3tf/7nf866XHp6uj796U/36zXS0tIGUxpGOE4b4pzcbrcefvhhSQO7vvHSSy/J4XDommuuSZru9Xp1xRVXaObMmfrqV7+q119/XW63W/fee2+/rlMN5WnDs/lo+E2bNk0nT55UfX19Up89e/ZIksrLyyVJmZmZ+tjHPpaYfmbfzMxMXXTRRedVV38M5WnDadOm6YMPPuhxfezMbR+MM8eze9qECRPOuhynDcGRF5LU1dXJ7/f3mP7BBx9I6t+pOEl68skn9V//9V+6/fbbE9dr+nLJJZfo/vvv1yOPPKLnn39et91221n7D+Vpw95s3LhRkjRr1qzEtBtvvFH/+I//qI0bN+q73/1uYvpTTz2lzMzMpC8133zzzXr88cdVW1urkpISSVJLS4s2b96sxYsX93on57l4PB5J6nEjSV+G8rThzTffrF/+8pf6/e9/r1tvvTUxfePGjQoEApo5c+ag1/273/1OK1euTJw6PHz4sKqqqvT3f//3Z12O04bge15IMm3aNLNw4ULzs5/9zGzfvt1s27bN/PjHPzZ+v9+MGzfOvP/++4m+c+fONRdddJF56623zFtvvWW2b99ufvWrX5lFixYZSWbu3LkmFAolrb+373kZY0xLS4spKioyH//4xy/Y94beeOMN8/nPf9488cQT5vXXXzcvvfSSueeee0xaWpqZP39+j++1feMb3zAej8f86Ec/MpWVlebBBx80DofD/OAHP0jq19DQYPx+v5k2bZrZsmWLefXVV80111xjcnJyzAcffJDUd+nSpf36/taOHTuMJPPNb37TVFVVmerq6h5jO5wWLFhgxo8fb37xi1+Y7du3m7vuustIMs8880xSvyeffNJIMk8++eRZ19e9PSUlJebGG280//mf/2meffZZ87GPfczk5OSYAwcODOPW9FRdXW1eeOEF88ILL5iSkhLzyU9+MvH3R7+vh5GD8EKS559/3tx+++3mkksuMePGjTNut9tMnjzZfO1rXzN//vOfk/rOnTvXSEq07Oxsc9FFF5kvfelL5oUXXujx5m9M3+FljDE//elPjSSzcePGYdm2M+3fv99cf/31ZtKkScbj8ZiMjAwzbdo084Mf/MB0dHT06N/Z2WkefvhhM3nyZJOenm6mTp1q/vVf/7XXdR84cMDcdNNNJjc312RlZZnPfvazZvfu3T36ffGLXzSZmZmmqanpnPU+8MADJhAIGKfTaSSZHTt2DHSTB62lpcV8+9vfNj6fz6Snp5tPfepT5ne/+12Pfj/5yU+MJPPaa6+ddX3d4fX000+bb3/726awsNB4PB5z9dVXm3feeWe4NqNP3R8iemvnCmKkhsMYvgQBpIrP59PXvvY1/ehHP0p1KUPilltuUU1NzTlP6VVWVuraa6/VCy+8oC996UsXqDqMJlzzAlJk3759am9vT7qGZjNjjCorK/XMM8+kuhSMAYQXkCKXXXaZQqFQqssYMg6HQw0NDakuA2MEpw0BANbhe14AAOukNLx+9rOfqaysTBkZGZoxY8Y5H+AKAICUwvB6/vnntWLFCj300EN67733dPXVV2vhwoU6cuRIqkoCAFgiZde8Zs6cqcsvv1w///nPE9M+8YlP6KabburxROlIJJL0RIV4PK7Tp09rwoQJF+QhpwCAoWWMUUtLiwKBwKCeQ5qSuw07Ozu1e/dufe9730uaXlFRoaqqqh7916xZo0ceeeRClQcAuEBqa2tVXFw84OVSctrw1KlTisViKioqSppeVFTU64M6H3jgAQWDwUTj1CIAjA45OTmDWi6l3/M685SfMabX04AejyfxYFIAwOgx2Es/KTnyKigoUFpaWo+jrIaGhh5HYwAAnCkl4ZWenq4ZM2Zo69atSdO3bt2q2bNnp6IkAIBFUnbacOXKlfra176mK664QldddZV+8Ytf6MiRI7r77rtTVRIAwBIpC69bb71VjY2N+v73v6+6ujqVl5fr1VdfVWlpaapKAgBYwspnG4ZCIXm93lSXAQA4T8FgULm5uQNejmcbAgCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsM+ThtXr1ajkcjqTm8/kS840xWr16tQKBgDIzMzVv3jzt27dvqMsAAIxiw3Lkddlll6muri7R9uzZk5i3bt06rV+/Xhs2bFB1dbV8Pp8WLFiglpaW4SgFADAKDUt4uVwu+Xy+RCssLJT016Ouxx9/XA899JCWLFmi8vJybdy4Ue3t7XruueeGoxQAwCg0LOG1f/9+BQIBlZWV6Stf+YoOHjwoSaqpqVF9fb0qKioSfT0ej+bOnauqqqo+1xeJRBQKhZIaAGDsGvLwmjlzpn7729/qD3/4g375y1+qvr5es2fPVmNjo+rr6yVJRUVFScsUFRUl5vVmzZo18nq9iVZSUjLUZQMALOIwxpjhfIG2tjZdfPHFuv/++zVr1ix95jOf0fHjx+X3+xN97rrrLtXW1uq1117rdR2RSESRSCTxdygUIsAAYBQIBoPKzc0d8HLDfqt8dna2pk2bpv379yfuOjzzKKuhoaHH0dhHeTwe5ebmJjUAwNg17OEViUT0wQcfyO/3q6ysTD6fT1u3bk3M7+zs1M6dOzV79uzhLgUAMFqYIbZq1SpTWVlpDh48aHbt2mUWLVpkcnJyzKFDh4wxxqxdu9Z4vV6zefNms2fPHnPbbbcZv99vQqFQv18jGAwaSTQajUazvAWDwUFljUtD7OjRo7rtttt06tQpFRYWatasWdq1a5dKS0slSffff7/C4bDuvfdeNTU1aebMmXr99deVk5Mz1KUAAEapYb9hYziEQiF5vd5UlwEAOE8j9oYNAACGGuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsM6Q/xglcC5paWlyOBxyOBypLgUWM8bIGKNYLJbqUpAChBcuuLy8PGVmZiotLS3VpcBisVhM4XBYjY2NqS4FKUB4ISUyMjI0adKkpGmxWEytra0KhUKKx+Mpqgyp5nQ6lZWVpby8PDmdzj6P0I8dO6ZwOHyBq8NIQXghJVwul8aNG6eMjAw5nX+99BqNRuVyuRSNRtXa2priCpEqGRkZ8nq9KiwslMvV8y0qHo+ro6ODI/cxjvBCyrhcLgUCAXk8nsS1i6ysLDkcDrW3t3P0NUYVFBTI5/MpEAgkro9+VCQS0eHDh7lmOsYRXkipjIwMjR8/Xjk5OTLGKDc3V1lZWWpra1MoFFJHR0eqS8QF4nK5lJubq7KyMvn9fvn9/sRRebeWlhY1NTURXCC8kFpOp1Mej0d5eXmJT9nxeFwTJ05ULBZTNBpVNBpNdZkYZmlpacrKylJhYaGKiopUVFSkiRMnJq55GWPU2dmpSCTSI9AwNhFeSLnu619er1cej0cul0uNjY2KRCKKRCJc/xoD3G63cnJyVFJSokmTJsnn82nixImJ61rxeFxNTU06ffp0iivFSEF4YURwOByaMGGCsrOzNW7cuMQF+aysLO3bt4+jr1HM6XSqpKRExcXFmjp1qi666CIVFRWpsLBQTqdTXV1dCofDam5uTnWpGEEIL6RMLBZTPB5PtO67DbuPwvLy8hQKhZSdna1Tp04pEonIGJPqsjGEXC6X8vLylJubq7y8POXl5cnr9So3N1e5ublyu91qaWlROBxO2ldisRj7whhHeCEljDHq6upKau3t7crIyEjcKt0dXjk5OTpx4oTa2tp4msIo4nA4lJmZqczMzER45ebmKicnR9nZ2crOzpbb7VZ7e7tisZi6urrU2dmpzs5OdXV1EV5jHOGFlAiHwzp8+LAyMjIUiUTkcDgUi8WUn5+vvLw8lZSUSJLS09PV1taW+DJqfX19KsvGEMrJyVFeXp4uvfRSXXLJJSopKdGUKVPk9/sTwXXy5EnV1dXp+PHjOnLkiA4dOqTjx4/r8OHD3Ik6xhFeSInuI6+6ujrF43G53W5JSnyiLigoUF5enuLxuE6dOpW4UN99+gj2KyoqUiAQUHFxsfx+v3w+nwoKCpSRkaFYLKbTp0/rxIkTifA6evSojh49qhMnTnDkBcILqdH9peTm5mY5nU5lZGTI7XbL4XAkroOkp6cnXQsJhULKysriesco4fV6lZ+fr/HjxysvL085OTnKzMxUPB5XJBJRKBTSqVOndPLkSdXX16uurk4nT55Uc3Mz+wAIL6RWZ2enTp06pdbWVoXDYbW0tKi9vV3jxo1TVlZWr29QvGmNPt3f42psbEw8YSUYDOrw4cOJ9r//+79qb2/nzlNIIrwwAkSjUYXDYR04cEBtbW3q6OhIfCr3eDw9+nd/aRWjQzweV1tbmxwOh1paWiRJ7e3tampqUk1NjQ4dOqQjR44QXEhCeGFE6H6ivNPplNPplN/vVzweV3Z2tjo7OwmrUcoYo3g8rpaWFnV2dkr664eTtrY2nT59WseOHVN9fb2ampoILiQhvDAiGGMSR13Nzc3Kzc1Va2urcnNzZYzhjWuU6j7qOvPOwfb2djU2Nmr//v2JU8nARxFeGFE6OjoUDof1/vvvq7GxUXl5eYnpbW1tqS0OQ6qrq0uhUEgffPBBjwfttrS06PTp02pra+PuUvSK8MKI0v2kjcbGRqWlpSU+cXf/htOZD+o91+nEM98UjTGDumbW11PMP7qe7j4j7RRnb3X1Z3v6u+7uMR3IepxOZ+L/trcPJe3t7QqFQr3+nhcgEV4YgYwxam5uVjweVzAYTEyPx+Mj7ukKvb1x49ycTqeampoSN2icqftpGvn5+TxFHr0ivDBidV/M79Z9VNbR0cGpJIt1f5fP5XL1GUwj5cMJRi4+0sAaxphEg734P8RQILwAANYhvAAA1iG8AADWIbwAANYhvDBicVEfQF8ILwCAdQgvAIB1CC+MWDy5AkBfCC8AgHUILwCAdQgvAIB1CC8AgHUILwCAdQgvAIB1CC8AgHUILwCAdQgvjFg82xBAXwgvAIB1CC8AgHUILwCAdQgvAIB1CC+MWDxVHkBfCC8AgHUGHF5vvPGGbrjhBgUCATkcDr344otJ840xWr16tQKBgDIzMzVv3jzt27cvqU8kEtHy5ctVUFCg7OxsLV68WEePHj2vDQEAjB0DDq+2tjZNnz5dGzZs6HX+unXrtH79em3YsEHV1dXy+XxasGCBWlpaEn1WrFihLVu2aNOmTXrzzTfV2tqqRYsWKRaLDX5LAABjhmugCyxcuFALFy7sdZ4xRo8//rgeeughLVmyRJK0ceNGFRUV6bnnntM3v/lNBYNB/frXv9bTTz+tz33uc5KkZ555RiUlJdq2bZs+//nPn8fmAADGgiG95lVTU6P6+npVVFQkpnk8Hs2dO1dVVVWSpN27d6urqyupTyAQUHl5eaLPmSKRiEKhUFIDAIxdQxpe9fX1kqSioqKk6UVFRYl59fX1Sk9P1/jx4/vsc6Y1a9bI6/UmWklJyVCWDQCwzLDcbXjmLc7GmHPe9ny2Pg888ICCwWCi1dbWDlmtAAD7DGl4+Xw+SepxBNXQ0JA4GvP5fOrs7FRTU1Offc7k8XiUm5ub1AAAY9eQhldZWZl8Pp+2bt2amNbZ2amdO3dq9uzZkqQZM2bI7XYn9amrq9PevXsTfQCJp8oD6NuA7zZsbW3VgQMHEn/X1NToT3/6k/Lz8zV58mStWLFCP/zhD3XJJZfokksu0Q9/+ENlZWXp9ttvlyR5vV59/etf16pVqzRhwgTl5+frvvvu07Rp0xJ3HwIAcDYDDq933nlH1157beLvlStXSpKWLl2qp556Svfff7/C4bDuvfdeNTU1aebMmXr99deVk5OTWOaxxx6Ty+XSLbfconA4rM9+9rN66qmnlJaWNgSbBAAY7RzGwnMzoVBIXq831WVgkCZMmKDMzEy5XP/32ckYo8bGRkUiEXV1dUmSxo0bp8zMzESfWCymjo4OhcNhTilazuVyKTs7W+np6b3Oj0aj6urqUn5+vpzO3q9uRKNRhcNhNTY2DmepGGbBYHBQ9zHwbEMAgHUILwCAdQgvAIB1CC8AgHUILwCAdQZ8qzyA/nM6nRfkF6GNMYkGjAWEF0asC/GmP5wyMjI0ceJE+f3+YX+t5uZmNTQ0qLm5mQDDmEB4AcMkLS1Nubm5Ki4uviCvFQwGh/11gJGC8AKGicPhUFZWlvLz84f9tVpaWpK+9A2MdtywAQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALCOK9UFAKNZPB5XNBod9teJxWIyxgz76wAjBeEFDJNIJKIjR46ovb192F+rpaVFzc3NBBjGDMILGCZdXV1qaGhQQ0NDqksBRh2ueQEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3gBAKxDeAEArEN4AQCsQ3hhxDLGpLoEACMU4QUAsA7hBQCwzoDD64033tANN9ygQCAgh8OhF198MWn+HXfcIYfDkdRmzZqV1CcSiWj58uUqKChQdna2Fi9erKNHj57XhgAAxo4Bh1dbW5umT5+uDRs29NnnuuuuU11dXaK9+uqrSfNXrFihLVu2aNOmTXrzzTfV2tqqRYsWKRaLDXwLAABjjmugCyxcuFALFy48ax+PxyOfz9frvGAwqF//+td6+umn9bnPfU6S9Mwzz6ikpETbtm3T5z//+YGWBAAYY4blmldlZaUmTpyoqVOn6q677lJDQ0Ni3u7du9XV1aWKiorEtEAgoPLyclVVVfW6vkgkolAolNQAAGPXkIfXwoUL9eyzz2r79u169NFHVV1drfnz5ysSiUiS6uvrlZ6ervHjxyctV1RUpPr6+l7XuWbNGnm93kQrKSkZ6rIBABYZ8GnDc7n11lsT/y4vL9cVV1yh0tJSvfLKK1qyZEmfyxlj5HA4ep33wAMPaOXKlYm/Q6EQAQYAY9iw3yrv9/tVWlqq/fv3S5J8Pp86OzvV1NSU1K+hoUFFRUW9rsPj8Sg3NzepAQDGrmEPr8bGRtXW1srv90uSZsyYIbfbra1btyb61NXVae/evZo9e/ZwlwOL9HUkDgADPm3Y2tqqAwcOJP6uqanRn/70J+Xn5ys/P1+rV6/WF7/4Rfn9fh06dEgPPvigCgoKdPPNN0uSvF6vvv71r2vVqlWaMGGC8vPzdd9992natGmJuw8BADibAYfXO++8o2uvvTbxd/e1qKVLl+rnP/+59uzZo9/+9rdqbm6W3+/Xtddeq+eff145OTmJZR577DG5XC7dcsstCofD+uxnP6unnnpKaWlpQ7BJAIDRzmEsfPppKBSS1+tNdRkYpAkTJigzM1Mu1/99djLGqLGxUZFIRF1dXZKknJwcZWRkJPrEYjF1dHQoHA7z0F7LuVwuZWdnKz09vdf50WhUXV1dys/Pl9PZ+9WNaDSqcDisxsbG4SwVwywYDA7qPgaebQgAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuGFEYs7CgH0hfACAFiH8AIAWIfwAgBYh/ACAFiH8MKIxVPlAfSF8AIAWIfwAgBYh/ACAFiH8AIAWIfwAgBYh/ACAFiH8AIAWIfwAgBYh/DCiMVT5QH0hfACAFiH8AIAWIfwwojFsw0B9IXwAgBYh/ACAFiH8AIAWIfwAgBYh/ACAFiH8AIAWIfwwojFEzYA9MWV6gKAvjgcjqTvejmdTjmdTqWlpSkej6ewMpwPh8OR+L/s67t8fMcP50J4YcRyuVxKT09P/B2Px2WMkcvl4qjMcg6HQx6PRy5X729B/P/iXAgvjDhOp1OBQEA+n09er1eS1NXVpba2Nh09elQOh0PGmF4/nffnTe9sn+rP502zv0cL3a9xvkcXA13PcG3bYMc8Pz9fubm5ys7O7jGvra1Nzc3N6ujoGFihGDMIL4woLpdLHo9HPp9PkyZNUl5enuLxuEKhkOLxuJxOp4wxfb5hnm8gXIjTVUP1GgNdz3Bt22DXm56erpycHBUVFcnp/L/L7w6HQ62trcrIyFBDQ4M6OzsVjUaHqlyMEoQXRpTs7Gzl5eXp4x//uPx+v7xer6LRqGpqatTa2iqJU0qjRVpamjIzM1VaWqr09PSkAGtra1N+fr4cDocaGxsVCoVSWClGIsILI4LD4VB+fr4mTpyo4uJiXXrppSoqKlJmZqZOnDihtLS0pL4E2OjgdDqVkZGhSZMmKTMzM3EU197erqamJqWnp+vw4cM6evSompubU1ssRhTCCynndDrldruVk5Mjv98vv9+viRMnKiMjQ7FYTMFgUE1NTWpqalJ7e3vixo2z6X4THGzIDfZ6ms2GcpvPNf4Oh0PBYFDZ2dkKBoMqLCxUZmamMjIyJP319LHb7VZ7e7sikYg6OzsVDofV1dXFnaaQRHhhBHC73crOzlZJSYkmTZqkSZMmqaioSC0tLWpubtbRo0dVW1ur48ePKxgMprpcDKFoNCq/36/x48fL5XIpKytLDodDWVlZys3NVSwWS1zjbGxsVEtLizo7O1NdNkYAwgsplZGRoYKCAk2ZMkUlJSXy+/0qLCxUKBTS4cOHdezYMe3Zs0cHDx4kuEaZ1tZWRaNR7dmzRy6XS62trUpLS1Nubq4cDofS0tI0ZcoUeTweZWRkKBKJ6NChQzp16hR3IYLwQmo4HA65XC4VFBTI7/crEAjI7/dr3Lhxisfjamho0PHjx3X06FHV1dUlThdi9DDGqLOzUydOnNCxY8fkcrnk9XrlcrkS+0d3mPl8vqTQqq+vVywWS/EWIJUIL6SE0+mUx+NRYWGh/H6/fD6fCgsLFY/H1dHRoRMnTqiurk5Hjx7VyZMnuVV6lIrH42pqalJdXZ1cLpfGjx+vvLw8ud1ueTweSVJWVpYkyefzKRwOKxaLqampSV1dXaksHSlGeCElMjIyNHnyZE2ZMkWTJk1ScXGxXC6XTp06pbq6Oh04cEAHDhxQXV2dJPX5JAaMDnV1derq6lJmZqbGjRunWCwmj8ejzs7OxNM4iouLFY/H5XK51NHRob/85S+Jr09g7OEdASnRfVrI7XbLGKNwOCxjjEKhkEKhkJqbmxWPx5WRkZF0mzxGp7S0NDmdTjU1NSXuQszOzlZHR0fiqxGdnZ2Jx4N1n1rE2EV4IWW6n5bR1dWVeIJGMBhUMBhUW1ub4vG43G633G73BatptN8OP1gXKihaW1sVCoWUnZ2trKyspC8uS0qcKjzbQ30xNhBeSKmOjg41NjaqsbFRsVhMJ0+e1PHjx3Xq1KmU3KDBG2LqRKNRNTc3q6amRuFwWB0dHUpLS0v6P/noERjGNsILKRONRnX8+PHEp+toNKrTp0+nLLgwMpw6dUqxWExdXV09wkv6600e3d//wthFeCElotGoWlpa1NLSkpgWj8fV0tKicDicwsqQah0dHQoGg4nf/eoLt8qPbYQXUqKjo0OHDx9OdRkYgWKxWI8PNn31w9hFeOGCa25uTnyyBgbrbD+Ng9GP8MIFxydmAOer7xPKAACMUIQXAMA6hBcAwDqEFwDAOoQXAMA6hBcAwDqEFwDAOoQXAMA6hBcAwDqEFwDAOoQXAMA6AwqvNWvW6Morr1ROTo4mTpyom266SR9++GFSH2OMVq9erUAgoMzMTM2bN0/79u1L6hOJRLR8+XIVFBQoOztbixcv1tGjR89/awAAY8KAwmvnzp361re+pV27dmnr1q2KRqOqqKhQW1tbos+6deu0fv16bdiwQdXV1fL5fFqwYEHSzxusWLFCW7Zs0aZNm/Tmm2+qtbVVixYt4oGtAID+MeehoaHBSDI7d+40xhgTj8eNz+cza9euTfTp6OgwXq/XPPHEE8YYY5qbm43b7TabNm1K9Dl27JhxOp3mtdde69frBoNBI4lGo9FolrdgMDio/Dmva17BYFCSlJ+fL0mqqalRfX29KioqEn08Ho/mzp2rqqoqSdLu3bvV1dWV1CcQCKi8vDzR50yRSEShUCipAQDGrkGHlzFGK1eu1Jw5c1ReXi5Jqq+vlyQVFRUl9S0qKkrMq6+vV3p6usaPH99nnzOtWbNGXq830UpKSgZbNgBgFBh0eC1btkzvv/++fve73/WYd+Yv5BpjzvmruWfr88ADDygYDCZabW3tYMsGAIwCgwqv5cuX66WXXtKOHTtUXFycmO7z+SSpxxFUQ0ND4mjM5/Ops7NTTU1NffY5k8fjUW5ublIDAIxdAwovY4yWLVumzZs3a/v27SorK0uaX1ZWJp/Pp61btyamdXZ2aufOnZo9e7YkacaMGXK73Ul96urqtHfv3kQfAADOaiB3d9xzzz3G6/WayspKU1dXl2jt7e2JPmvXrjVer9ds3rzZ7Nmzx9x2223G7/ebUCiU6HP33Xeb4uJis23bNvPuu++a+fPnm+nTp5toNNqvOrjbkEaj0UZHG+zdhgMKr75e/Mknn0z0icfj5uGHHzY+n894PB5zzTXXmD179iStJxwOm2XLlpn8/HyTmZlpFi1aZI4cOdLvOggvGo1GGx1tsOHl+P+hZJVQKCSv15vqMgAA5ykYDA7qPgaebQgAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsA7hBQCwDuEFALAO4QUAsM6AwmvNmjW68sorlZOTo4kTJ+qmm27Shx9+mNTnjjvukMPhSGqzZs1K6hOJRLR8+XIVFBQoOztbixcv1tGjR89/awAAY8KAwmvnzp361re+pV27dmnr1q2KRqOqqKhQW1tbUr/rrrtOdXV1ifbqq68mzV+xYoW2bNmiTZs26c0331Rra6sWLVqkWCx2/lsEABj9zHloaGgwkszOnTsT05YuXWpuvPHGPpdpbm42brfbbNq0KTHt2LFjxul0mtdee61frxsMBo0kGo1Go1negsHgoPLnvK55BYNBSVJ+fn7S9MrKSk2cOFFTp07VXXfdpYaGhsS83bt3q6urSxUVFYlpgUBA5eXlqqqq6vV1IpGIQqFQUgMAjF2DDi9jjFauXKk5c+aovLw8MX3hwoV69tlntX37dj366KOqrq7W/PnzFYlEJEn19fVKT0/X+PHjk9ZXVFSk+vr6Xl9rzZo18nq9iVZSUjLYsgEAo8GgjteMMffee68pLS01tbW1Z+13/Phx43a7ze9//3tjjDHPPvusSU9P79Hvc5/7nPnmN7/Z6zo6OjpMMBhMtNra2pQf6tJoNBrt/NsFPW24fPlyvfTSS9qxY4eKi4vP2tfv96u0tFT79++XJPl8PnV2dqqpqSmpX0NDg4qKinpdh8fjUW5ublIDAIxdAwovY4yWLVumzZs3a/v27SorKzvnMo2NjaqtrZXf75ckzZgxQ263W1u3bk30qaur0969ezV79uwBlg8AGJMGcph2zz33GK/XayorK01dXV2itbe3G2OMaWlpMatWrTJVVVWmpqbG7Nixw1x11VVm0qRJJhQKJdZz9913m+LiYrNt2zbz7rvvmvnz55vp06ebaDTarzq425BGo9FGRxvsacMBhVdfL/7kk08aY4xpb283FRUVprCw0LjdbjN58mSzdOlSc+TIkaT1hMNhs2zZMpOfn28yMzPNokWLevQ5G8KLRqPRRkcbbHg5/n8oWSUUCsnr9aa6DADAeQoGg4O6j8HKZxtamLcAgF4M9v3cyvBqaWlJdQkAgCEw2PdzK08bxuNxffjhh/rkJz+p2tpabp3vRSgUUklJCePTB8bn3Bijs2N8zu5c42OMUUtLiwKBgJzOgR9HuYaiyAvN6XRq0qRJksT3vs6B8Tk7xufcGKOzY3zO7mzjcz73Llh52hAAMLYRXgAA61gbXh6PRw8//LA8Hk+qSxmRGJ+zY3zOjTE6O8bn7IZ7fKy8YQMAMLZZe+QFABi7CC8AgHUILwCAdQgvAIB1CC8AgHWsDa+f/exnKisrU0ZGhmbMmKE//vGPqS7pglu9erUcDkdS8/l8ifnGGK1evVqBQECZmZmaN2+e9u3bl8KKh98bb7yhG264QYFAQA6HQy+++GLS/P6MSSQS0fLly1VQUKDs7GwtXrxYR48evYBbMXzONT533HFHj31q1qxZSX1G8/isWbNGV155pXJycjRx4kTddNNN+vDDD5P6jOV9qD/jc6H2ISvD6/nnn9eKFSv00EMP6b333tPVV1+thQsX6siRI6ku7YK77LLLVFdXl2h79uxJzFu3bp3Wr1+vDRs2qLq6Wj6fTwsWLBjVDzZua2vT9OnTtWHDhl7n92dMVqxYoS1btmjTpk1688031draqkWLFikWi12ozRg25xofSbruuuuS9qlXX301af5oHp+dO3fqW9/6lnbt2qWtW7cqGo2qoqJCbW1tiT5jeR/qz/hIF2gfGtSvgKXY3/7t35q77747adqll15qvve976WootR4+OGHzfTp03udF4/Hjc/nM2vXrk1M6+joMF6v1zzxxBMXqMLUkmS2bNmS+Ls/Y9Lc3GzcbrfZtGlTos+xY8eM0+k0r7322gWr/UI4c3yMMWbp0qXmxhtv7HOZsTQ+xhjT0NBgJJmdO3caY9iHznTm+Bhz4fYh6468Ojs7tXv3blVUVCRNr6ioUFVVVYqqSp39+/crEAiorKxMX/nKV3Tw4EFJUk1Njerr65PGyePxaO7cuWNynKT+jcnu3bvV1dWV1CcQCKi8vHzMjFtlZaUmTpyoqVOn6q677lJDQ0Ni3lgbn2AwKEnKz8+XxD50pjPHp9uF2IesC69Tp04pFoupqKgoaXpRUZHq6+tTVFVqzJw5U7/97W/1hz/8Qb/85S9VX1+v2bNnq7GxMTEWjNP/6c+Y1NfXKz09XePHj++zz2i2cOFCPfvss9q+fbseffRRVVdXa/78+YpEIpLG1vgYY7Ry5UrNmTNH5eXlktiHPqq38ZEu3D5k5U+iSJLD4Uj62xjTY9pot3DhwsS/p02bpquuukoXX3yxNm7cmLhAyjj1NJgxGSvjduuttyb+XV5eriuuuEKlpaV65ZVXtGTJkj6XG43js2zZMr3//vt68803e8xjH+p7fC7UPmTdkVdBQYHS0tJ6JHRDQ0OPT0NjTXZ2tqZNm6b9+/cn7jpknP5Pf8bE5/Ops7NTTU1NffYZS/x+v0pLS7V//35JY2d8li9frpdeekk7duxQcXFxYjr70F/1NT69Ga59yLrwSk9P14wZM7R169ak6Vu3btXs2bNTVNXIEIlE9MEHH8jv96usrEw+ny9pnDo7O7Vz584xO079GZMZM2bI7XYn9amrq9PevXvH5Lg1NjaqtrZWfr9f0ugfH2OMli1bps2bN2v79u0qKytLmj/W96FzjU9vhm0f6vetHSPIpk2bjNvtNr/+9a/Nn//8Z7NixQqTnZ1tDh06lOrSLqhVq1aZyspKc/DgQbNr1y6zaNEik5OTkxiHtWvXGq/XazZv3mz27NljbrvtNuP3+00oFEpx5cOnpaXFvPfee+a9994zksz69evNe++9Zw4fPmyM6d+Y3H333aa4uNhs27bNvPvuu2b+/Plm+vTpJhqNpmqzhszZxqelpcWsWrXKVFVVmZqaGrNjxw5z1VVXmUmTJo2Z8bnnnnuM1+s1lZWVpq6uLtHa29sTfcbyPnSu8bmQ+5CV4WWMMT/96U9NaWmpSU9PN5dffnnSrZpjxa233mr8fr9xu90mEAiYJUuWmH379iXmx+Nx8/DDDxufz2c8Ho+55pprzJ49e1JY8fDbsWOHkdSjLV261BjTvzEJh8Nm2bJlJj8/32RmZppFixaZI0eOpGBrht7Zxqe9vd1UVFSYwsJC43a7zeTJk83SpUt7bPtoHp/exkaSefLJJxN9xvI+dK7xuZD7EL/nBQCwjnXXvAAAILwAANYhvAAA1iG8AADWIbwAANYhvAAA1iG8AADWIbwAANYhvAAA1iG8AADWIbwAANb5f/Ps4aCsxJq0AAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"running on windows is not thoroughly tested\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"running on windows is not thoroughly tested\n"
]
},
{
"data": {
"image/png": "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e7wen21IRETKYXgREZFyGF5ERKQchhcRESmH4UVERMpheBERkXIYXkREpByGFxERKYfhRUREymF4ERGRchheRESkHIYXEREph+FFRETKYXgREZFyGF5ERKQchhcRESmH4UVERMpheBERkXIYXkREpByGFxERKYfhRUREymF4ERGRchheRESkHIYXEREph+FFRETKYXgREZFyGF5ERKQchhcRESmH4UVERMpheBERkXIYXkREpByGFxERKYfhRUREymF4ERGRchheRESkHIYXEREph+FFRETKYXgREZFyGF5ERKQchhcRESmH4UVERMpheBERkXIYXkREpByGFxERKYfhRUREymF4ERGRchheRESkHIYXEREph+FFRETKYXgREZFyGF5ERKQchhcRESmH4UVERMpheBERkXIYXkREpByGFxERKYfhRUREymF4ERGRchheRESkHIYXEREph+FFRETK6fPwWr58OXQ6XUJxOp3achHB8uXL4Xa7YTabMWPGDBw4cKCvu0FERENYv5x5jR07Fh6PRyv79u3Tlq1atQpPP/00Vq9ejd27d8PpdGL27NkIBAL90RUiIhqC+iW8DAYDnE6nVvLy8gB8c9b17LPP4rHHHsO8efNQWlqKdevWoaWlBa+99lp/dIWIiIagfgmvQ4cOwe12o6SkBLfffjuOHDkCADh69Cjq6upQVlamtTWZTJg+fTp27tzZ6fZCoRD8fn9CISKi1NXn4TVp0iS8/PLL+Otf/4oXX3wRdXV1mDp1KrxeL+rq6gAADocjYR2Hw6Et68iKFStgs9m0UlRU1NfdJiIihehERPrzDZqbmzFq1Cg8/PDDmDx5Mq666iqcOnUKLpdLa7Nw4ULU1NTg/fff73AboVAIoVBIe+33+xlgRERDgM/ng9Vq7fF6/T5V3mKxYNy4cTh06JA26/D8s6z6+vp2Z2PfZjKZYLVaEwoREaWufg+vUCiEgwcPwuVyoaSkBE6nE1VVVdrycDiM7du3Y+rUqf3dFSIiGiqkjy1dulSqq6vlyJEjsmvXLqmoqJDs7Gw5duyYiIisXLlSbDabbNy4Ufbt2yfz588Xl8slfr+/2+/h8/kEAAsLCwuL4sXn8/UqawzoY7W1tZg/fz7Onj2LvLw8TJ48Gbt27UJxcTEA4OGHH0YwGMQDDzyAhoYGTJo0CR988AGys7P7uitE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wwbs2LEDTU1NqKio4ANbiYioe+Qi1NfXCwDZvn27iIjE43FxOp2ycuVKrU1ra6vYbDZ5/vnnRUSksbFRjEajbNiwQWtz8uRJ0ev18v7773frfX0+nwBgYWFhYVG8+Hy+XuXPRd3z8vl8AAC73Q4AOHr0KOrq6lBWVqa1MZlMmD59Onbu3AkA2LNnDyKRSEIbt9uN0tJSrc35QqEQ/H5/QiEiotTV6/ASESxZsgTTpk1DaWkpAKCurg4A4HA4Eto6HA5tWV1dHdLT0zFs2LBO25xvxYoVsNlsWikqKuptt4mIaAjodXhVVlbiiy++wOuvv95u2fl/IVdELvhXc7tq8+ijj8Ln82mlpqamt90mIqIhoFfhtWjRIrzzzjvYtm0bCgsLtXqn0wkA7c6g6uvrtbMxp9OJcDiMhoaGTtucz2QywWq1JhQiIkpdPQovEUFlZSU2btyIrVu3oqSkJGF5SUkJnE4nqqqqtLpwOIzt27dj6tSpAIAJEybAaDQmtPF4PNi/f7/WhoiIqEs9md1x//33i81mk+rqavF4PFppaWnR2qxcuVJsNpts3LhR9u3bJ/PnzxeXyyV+v19rc99990lhYaFs2bJF9u7dKzNnzpTx48dLNBrtVj8425CFhYVlaJTezjbsUXh19uZr1qzR2sTjcVm2bJk4nU4xmUxyzTXXyL59+xK2EwwGpbKyUux2u5jNZqmoqJATJ050ux8MLxYWFpahUXobXrr/H0pK8fv9sNlsye4GERFdJJ/P16t5DHy2IRERKYfhRUREymF4ERGRchheRESkHIYXEREph+FFRETKYXgREZFyGF5ERKQchhcRESmH4UVERMpheBERkXIYXkREpByGFxERKYfhRUREymF4ERGRchheRESkHIYXEREph+FFRETKYXgREZFyGF5ERKQchhcRESmH4UVERMpheBERkXIYXkREpByGFxERKYfhRUREymF4ERGRchheRESkHIYXEREph+FFRETKYXgREZFyGF5ERKQchhcRESmH4UVERMpheBERkXIYXkREpByGFxERKYfhRUREymF4ERGRchheRESkHIYXEREph+FFRETKYXgREZFyGF5ERKQchhcRESmH4UVERMpheBERkXIYXkREpByGFxERKYfhRUREymF4ERGRchheRESkHIYXEREph+FFRETKYXgREZFyGF5ERKQc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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"def test_phantom(sdr: float, p: float, t: float = 0):\n",
" # Define a simple phantom for test: a wire box around a cube.\n",
" volume = np.zeros((120, 100, 80), dtype=np.float32)\n",
" volume[0:5, 0:5, :] = 1\n",
" volume[0:5, -5:, :] = 1\n",
" volume[-5:, 0:5, :] = 1\n",
" volume[-5:, -5:, :] = 1\n",
" volume[:, 0:5, 0:5] = 1\n",
" volume[:, 0:5, -5:] = 1\n",
" volume[:, -5:, 0:5] = 1\n",
" volume[:, -5:, -5:] = 1\n",
" volume[0:5, :, 0:5] = 1\n",
" volume[0:5, :, -5:] = 1\n",
" volume[-5:, :, 0:5] = 1\n",
" volume[-5:, :, -5:] = 1\n",
"\n",
" volume[40:60, 40:60, 40:60] = 1\n",
" materials = {}\n",
" materials[\"air\"] = volume == 0\n",
" materials[\"soft tissue\"] = volume == 1\n",
" materials[\"bone\"] = volume == 2\n",
" voxel_size = np.array([1, 1, 1], dtype=np.float32)\n",
"\n",
" # Use the center of the volume as the \"world\" coordinates. The origin is the (0, 0, 0) index of the volume in the world frame.\n",
" vol_center = (np.array(volume.shape) - 1) / 2 * voxel_size\n",
" origin = geo.point(-vol_center[0], -vol_center[1], -vol_center[2]+t)\n",
"\n",
" # Create the volume object with segmentation\n",
" volume = Volume.from_parameters(\n",
" data=volume,\n",
" materials=materials,\n",
" origin=origin,\n",
" spacing=voxel_size,\n",
" anatomical_coordinate_system=None, # LPS, RAS, or None.\n",
" world_from_anatomical=None, # anatomical coordinate system is same as world\n",
" )\n",
"\n",
" # defines the C-Arm device, which is a convenience class for positioning the Camera.\n",
" # isocenter=volume.center_in_world\n",
" carm = MobileCArm(source_to_detector_distance=sdr, \n",
" sensor_height=256, sensor_width=256, pixel_size=p)\n",
"\n",
" # Angles to take projections over\n",
" #\n",
" with Projector(\n",
" volume=volume,\n",
" carm=carm,\n",
" max_block_index=256,\n",
" neglog=True,\n",
" ) as projector:\n",
" image = projector.project()\n",
"\n",
" # save results as matplotlib plots\n",
" output_dir = Path(f\"examples\")\n",
" output_dir.mkdir(exist_ok=True)\n",
" \n",
" plt.figure()\n",
" plt.title(f\"SDR = {sdr}, t = {t}, p = {p}\")\n",
" plt.imshow(image, cmap=\"gray\")\n",
" plt.show()\n",
" \n",
"\n",
"test_phantom(sdr=500, p=1)\n",
"test_phantom(sdr=1000, p=1)\n",
"test_phantom(sdr=1000, p=2)\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAa8AAAGxCAYAAADVtznqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABi9klEQVR4nO2deZRkVZ3nv7FvGRm5b7VRQJULVU1rYbMIFKKU1AiIaMPIjI2McrBZPHWqaBXpOUAfmhJswTO4jcsACgKHZhkXWimmFuWUOlDiCIhYQFVRULlUbrHvcecP/F1eREZmxh7xMr6fc+Jk5Iv3Xtx47777vb/f/d3ftSilFAghhBATYW12AQghhJByoXgRQggxHRQvQgghpoPiRQghxHRQvAghhJgOihchhBDTQfEihBBiOihehBBCTAfFixBCiOmgeJE5/O53v8PHPvYxrFy5Ei6XC4ODgzj11FOxbdu2vP3OOussWCwWWCwWWK1W+P1+HH/88fj7v/97/Pu//ztyudyccx9zzDH6GIvFAp/Ph/e+9734xje+gWYke/nZz36Gf/iHf8D69evhcDhgsVjm3TedTuPmm2/GMcccA5fLhXe+85246667iu772muv4aKLLkJXVxc6Ojpwzjnn4Pe//33F5dy7dy9uuukmzM7OVnyOaohEItiyZQtGRkbgdrvxt3/7t3jwwQebUpZa85e//AXXXXcdNmzYgK6uLvT09OD9738//v3f/73ZRSMLoQgx8LOf/UxZrVZ19tlnqwceeEDt3r1bPfDAA2rbtm1q2bJleftu3LhRHXvsseo3v/mN+s1vfqOeeuop9b3vfU995CMfUQDUGWecoWZnZ/OOWbVqlXr/+9+vj3nkkUfU+9//fgVA/eu//msjf6pSSqn/9t/+m1qzZo26+OKL1YYNG9RCj8RnP/tZ5XK51O2336527dqlvvSlLymLxTKn3BMTE2pkZESdcMIJ6pFHHlE///nP1emnn678fr/685//XFE5v/rVryoA6sCBAxUdXy3nnHOO6urqUt/5znfUzp071Wc/+1kFQN1///1NKU8tueuuu9Q73/lO9a//+q/qySefVE888YS67LLLFAB18803N7t4ZB4oXiSPM888Ux133HEqnU7P+Sybzeb9v3HjRnXCCScUPc//+l//SwFQF198cd72VatWqY985CN524LBoAoEAmrlypVVlr58jL/p6quvnle8XnjhBWWxWNStt96at/2KK65QHo9HTU1N6W3/9E//pBwOhzp48KDeFgwGVV9f35zrUSrNFK+f//znCoD68Y9/nLf9nHPOUSMjIyqTyTS8TLXk6NGjKpfLzdn+kY98RHm9XpVIJJpQKrIYdBuSPKamptDX1we73T7nM6u19Opy+eWX4z/9p/+Ehx9+GIcOHVpw387OTqxduxbj4+Nll7daSv1Njz/+OJRSuPzyy/O2X3755YjH4/jFL36htz322GM4++yzsWrVKr2ts7MTF110EX76058ik8mUVcabbroJ//RP/wQAWL16tXa57t69u6zzVMpjjz2Gjo4O/P3f/33e9ssvvxxHjhzB7373u7LPuXv3blgsFtx3333YunUrhoaG4PF4sHHjRjz33HO1KnpJ9PX1FXUX/93f/R1isRimp6cbWh5SGhQvksepp56K3/3ud/j85z+P3/3ud0in0xWf64ILLoBSCr/+9a8X3C+TyeDw4cNYu3ZtSefNZrPIZDKLvoqNuVXKCy+8gP7+fgwNDeVt/5u/+Rv9OQDE43G8+uqrenvhvvF4HK+99lpZ3/3Zz34W1157LQDg0UcfxW9+8xv85je/wXvf+955j1FKlXSNShHSF154Ae9617vmdGgKf3slfPnLX8Zrr72G73//+/j+97+PI0eO4KyzzirpGpX6+1SFY6m7du1Cf38/BgYGKjqe1BeKF8njK1/5Ck4//XTcddddOOWUU+Dz+fD+978fX/nKVxCJRMo6l1geR44cydtubFhff/11XHXVVZiamsL27dtLOu9xxx0Hh8Ox6Otf/uVfyirvQkxNTaGnp2fOdp/PB6fTiampKQDAzMwMlFJF95Vtsm+pLF++HCtXrgQAvOc978Epp5yCU045BZ2dnfMec++995Z0jRwOx6LfP99vr/T3GOnv78djjz2G8847D//lv/wXPPXUU4jH44vWhYMHD5b8+/bs2VN2ub7//e9j9+7d+Od//mfYbLZKfx6pI3N9Q6St6e3txa9//Ws8++yz+D//5//g2Wefxe7du3H99dfjf/7P/4lnnnkGfX19JZ1rvh7vE088MafR/M53voOPfOQjJZ33pz/9KZLJ5KL7jYyMlHS+UlkoErHws3L2rQfnn38+nnnmmZqdr16/59JLL807ftWqVTjttNOwa9euBY8bGRkp+fe94x3vKKtM//Ef/4Grr74an/jEJ7TFS1oPihcpykknnYSTTjoJwFsh4l/84hdx55134vbbb8ftt99e0jlkrKtQRE4//XTceeedyGaz2L9/P/77f//vuOaaa3DCCSfg9NNPX/S87373u0tyBZUzRrcYvb29+MMf/jBnezQaRSqV0lZId3c3LBZLUWtExk6KWTG1pqenB4FAoCbn6u3trdvvKXTDyrb/9//+34LHOZ1O/O3f/m1J31GO5fTLX/4SF110Ec455xzcf//9DelokMqg25AsisPhwI033gigvPGNn/zkJ7BYLDjzzDPztgcCAZx00kk4+eST8V//63/Fk08+CYfDgauuuqqkcapmuA3Xr1+Po0ePYmxsLG/7888/DwBYt24dAMDj8eD444/X2wv39Xg8OPbYY2tWrvmopdtw/fr1eOmll+aMjxX+9koovJ6yrbe3d8Hj6uE2/OUvf4kLL7wQGzduxCOPPAKn01nRbyKNgZYXyWN0dBTDw8Nztr/00ksASnfF3X333fiP//gPXHrppXq8Zj7WrFmDL3zhC7j55pvx0EMP4ZOf/OSC+zfDbfjRj34U//zP/4x7770XX/ziF/X2e+65Bx6PB+eee67e9rGPfQxf//rXcfjwYaxYsQIAEA6H8eijj+KCCy4oGsm5GC6XC8BbASGlUEu34cc+9jF873vfwyOPPIJLLrlEb7/33nsxMjKCk08+ueJzP/DAA9i6dau2cA4dOoS9e/fiH/7hHxY8rtZuwyeffBIXXnghTj/9dDz++OP6epMWpnlR+qQVWb9+vdq8ebP61re+pXbu3Kmeeuop9W//9m9qeHhYdXR0qD/+8Y9638JJyjt37lTf//731XnnnacAqI0bN6pQKJR3/mLzvJRSKhwOq8HBQfWOd7yjofOGDh48qB5++GH18MMPq3PPPVcB0P8/88wzefvKJOWvfvWravfu3erLX/7yvJOUh4eH1fr169Vjjz2mnnjiCXXmmWcqv9+vXnrppbx9ZTLsYvO3du3apQCoK6+8Uu3du1c988wzc65tPTnnnHNUd3e3+u53v6t27typrrjiCgVA3XfffXn73X333QqAuvvuuxc8n/yeFStWqI9+9KPqZz/7mbr//vvV8ccfr/x+v3rllVfq+Gvy+fWvf608Ho865phj1M6dO3V9llcwGGxYWUjp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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAa8AAAGxCAYAAADVtznqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA2rUlEQVR4nO3deXRUVYIG8K8qqapUlqqkstSSnVUlND2iDSIKokQZEREXGmcctLs9KovDAdvWtvuAzhnhYLvMSNtOq42oKLYteOwRERgIyol6ELEFZBBMSCpLUVlrSWqvO384eW2RPSQpbvL9zrlH8t59r+67vuSrd9+tVyohhAAREZFE1PFuABERUX8xvIiISDoMLyIikg7Di4iIpMPwIiIi6TC8iIhIOgwvIiKSDsOLiIikw/AiIiLpMLyok88//xy33HILCgoKoNPpYDabccUVV2DNmjUx9WbPng2VSgWVSgW1Wo20tDSMGzcOt99+O/7yl78gGo122ndRUZGyjUqlQkpKCi699FJs2rQJ8X7Yi8/nw4QJE6BSqfC73/2u0/pQKITHH38cRUVF0Ol0uOiii/D88893ua+KigosWrQI6enpSE1Nxdy5c/Hll18OuG3l5eVYt24dWltbB7yP8+H1erFq1SrYbDYkJSXhxz/+MbZt2xaXtgy2b7/9Fg899BCmTp2K9PR0mEwmXHnllfjLX/4S76ZRDxheFOODDz7AjBkz4Ha7sXHjRuzevRv/8R//gSuvvBJvv/12p/pjxozBp59+ivLycrz33nt45JFH4PP5cPvtt2P27NlwuVydtrnyyivx6aef4tNPP8Xrr7+O5ORkrFy5EuvXrx+OQ+zWb3/7W7S1tXW7ftmyZVi/fj2WL1+Ojz76CLfccgv+9V//FU8++WRMvYaGBlx11VX49ttv8ac//Ql//vOf4ff7MXv2bJw8eXJAbSsvL8fjjz8et/BatGgRtmzZgrVr1+LDDz/E5ZdfjiVLluDNN9+MS3sG0+7du/HBBx/g1ltvxTvvvIOtW7di/PjxuP322/HEE0/Eu3nUHUH0A1dffbUYO3asCIVCndZFIpGYn2fNmiUmTZrU5X7+9Kc/CQDijjvuiFleWFgobrzxxphlLpdLGI1GUVBQcJ6tH7jPP/9caLVa8c477wgA4qmnnopZf+zYMaFSqcSTTz4Zs/zee+8Ver1eNDU1Kct++ctfCo1GI86cOaMsc7lcIisrq1N/9NVTTz0lAIjKysoBbX8+PvjgAwFAvPnmmzHL586dK2w2mwiHw8PepsHU0NAgotFop+U33nijSE5OFn6/Pw6tot7wyotiNDU1ISsrC4mJiZ3WqdV9P13uuece/OM//iPeeecdVFVV9VjXYDBgwoQJOHv2bL/bOxiCwSB+9rOfYfny5bjsssu6rPPee+9BCIF77rknZvk999wDn8+HXbt2Kct27NiBOXPmoLCwUFlmMBiwaNEi/PWvf0U4HO5X+9atW4df/vKXAIDi4mJlyLWsrKxf+xmoHTt2IDU1FbfffnvM8nvuuQd1dXX4/PPP+73PsrIyqFQqvPHGG1i9ejUsFgv0ej1mzZqFI0eODFbT+yQrKwsqlarT8p/85Cdob29Hc3PzsLaH+obhRTGuuOIKfP7553jwwQfx+eefIxQKDXhfCxYsgBACn3zySY/1wuEw7HY7JkyY0Kf9RiIRhMPhXktX99y68sQTT6CtrQ3/9m//1m2dY8eOITs7GxaLJWb5j370I2U98P19s++++05Zfm5dn8+HioqKPrWrwy9+8QusXLkSALB9+3ZlyPXSSy/tdhshRJ/6qC9BeuzYMVx88cWd3tCce+wD8etf/xoVFRV4+eWX8fLLL6Ourg6zZ8/uUx/19fjEAO+l7t+/H9nZ2cjJyRnQ9jS0GF4UY8OGDZg5cyaef/55TJ8+HSkpKbjyyiuxYcMGeL3efu2r48qjrq4uZvkP/7BWV1dj2bJlaGpq6vM9r7Fjx0Kj0fRa+nK/4quvvsLGjRvx4osvIiUlpdt6TU1NMJlMnZanpKRAq9WiqakJANDS0gIhRJd1O5Z11O2rvLw8FBQUAAD+4R/+AdOnT8f06dNhMBi63WbLli196iONRtPr63d37AM9nh/Kzs7Gjh07MH/+fPzTP/0T9u7dC5/P1+u5cObMmT4f34EDB/rdrpdffhllZWX4zW9+g4SEhIEeHg2hzmNDNKplZmbik08+wRdffIH/+Z//wRdffIGysjI8+uij+K//+i8cOnQIWVlZfdpXd+94d+7c2emP5osvvogbb7yxT/v961//ikAg0Gs9m83W4/pwOIyf/exnWLx4Ma6//vpe99fV0FJ36/pTdyjcdNNNOHTo0KDtb6iO584774zZvrCwEDNmzMD+/ft73M5ms/X5+CZOnNivNn344YdYvnw5brvtNuWKly48DC/q0mWXXabc/wmFQvjVr36FZ599Fhs3bsTGjRv7tI+Oe13nhsjMmTPx7LPPIhKJ4NSpU/jtb3+LFStWYNKkSZg5c2av+73kkkv6NBTU2z265557DhUVFfjzn/+szOJzu90AAL/fj9bWVqSlpSEhIQGZmZn46quvOu2jra0NwWBQuQrJyMiASqXq8mqk495JV1cxg81kMsFoNA7KvjIzM4fseM4dhu1Y9re//a3H7bRaLX784x/36TX6c+X00UcfYdGiRZg7dy62bt06LG80aGA4bEi90mg0WLt2LYD+3d94//33oVKpcPXVV8csNxqNuOyyyzBt2jT88z//M3bv3g2NRoNly5b16T7VYA0bHjt2DC6XC+PHj0dGRgYyMjIwZcoUAN9Pm8/IyMDRo0cBAJMnT0ZDQwMcDkfMPjrWl5SUAAD0ej3GjRunLD+3rl6vx5gxY3o9xvM1mMOGkydPxokTJzrdHzv32Afi3P7sWJaZmdnjdkMxbPjRRx9h4cKFmDVrFt59911otdoBHRMND155UYz6+npYrdZOy0+cOAGg96G4Dps3b8aHH36IO++8U7lf053x48fj4YcfxuOPP463334bS5Ys6bH+YA0bPvLII7j77rtjljkcDixZsgT3338/Fi9ejHHjxgEAbr75ZvzmN7/Bli1b8Ktf/Uqp/+qrr0Kv1+OGG25Qlt1yyy147rnnYLfbkZ+fDwDweDzYvn07FixY0OVMzt7odDoA308I6YvBHDa85ZZb8NJLL+Hdd9/F4sWLleVbtmyBzWbDtGnTBrzvt956C6tXr1aucKqqqlBeXo5/+Zd/6XG7wR423L17NxYuXIiZM2fivffeU/qbLmDxm6VPF6LJkyeLefPmiRdeeEHs27dP7N27V/zud78TVqtVpKamiq+//lqpO2vWLDFmzBjx6aefik8//VTs27dPvPzyy2L+/PkCgJg1a5Zwu90x++/qc15CCOHxeITZbBYTJ06M6+eGKisru/yclxBC/OIXvxA6nU489dRToqysTPz6178WKpVK/Pu//3tMPafTKaxWq5g8ebLYsWOH2Llzp7j66qtFWlqaOHHiREzdpUuX9unzW/v37xcAxH333SfKy8vFoUOHOvXtUJo7d67IyMgQf/zjH8W+ffvEvffeKwCIN954I6be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FEII0draKjQajdi2bZtSp7a2VqjVarFr164+va7L5RIAWFhYWFgkLy6Xa0D5c173vFwuFwDAZDIBACorK+FwOFBaWqrU0el0mDVrFsrLywEAhw8fRigUiqljs9lQUlKi1DlXIBCA2+2OKURENHoNOLyEEFi9ejVmzpyJkpISAIDD4QAAmM3mmLpms1lZ53A4oNVqkZGR0W2dc61fvx5Go1Ep+fn5A202ERGNAAMOrxUrVuDrr7/GW2+91WmdSqWK+VkI0WnZuXqq8+ijj8LlcinFbrcPtNlERDQCDCi8Vq5ciffffx/79+9HXl6estxisQBApysop9OpXI1ZLBYEg0G0tLR0W+dcOp0OBoMhphAR0ejVr/ASQmDFihXYvn079u3bh+Li4pj1xcXFsFgs2LNnj7IsGAziwIEDmDFjBgBg6tSp0Gg0MXXq6+tx7NgxpQ4REVGP+jO744EHHhBGo1GUlZWJ+vp6pbS3tyt1NmzYIIxGo9i+fbs4evSoWLJkibBarcLtdit17r//fpGXlyf27t0rvvzySzFnzhwxZcoUEQ6H+9QOzjZkYWFhGRlloLMN+xVe3b345s2blTrRaFSsXbtWWCwWodPpxNVXXy2OHj0asx+fzydWrFghTCaT0Ov1Yv78+aK6urrP7WB4sbCwsIyMMtDwUv1/KEnF7XbDaDTGuxlERHSeXC7XgOYx8NmGREQkHYYXERFJh+FFRETSYXgREZF0GF5ERCQdhhcREUmH4UVERNJheBERkXQYXkREJB2GFxERSYfhRURE0mF4ERGRdBheREQkHYYXERFJh+FFRETSYXgREZF0GF5ERCQdhhcREUmH4UVERNJheBERkXQYXkREJB2GFxERSYfhRURE0mF4ERGRdBheREQkHYYXERFJh+FFRETSYXgREZF0GF5ERCQdhhcREUmH4UVERNJheBERkXQYXkREJB2GFxERSYfhRURE0mF4ERGRdBheREQkHYYXERFJh+FFRETSYXgREZF0GF5ERCQdhhcREUmH4UVERNJheBERkXQYXkREJB2GFxERSYfhRURE0mF4ERGRdBheREQkHYYXERFJh+FFRETSYXgREZF0GF5ERCQdhhcREUmH4UVERNJheBERkXQYXkREJB2GFxERSYfhRURE0mF4ERGRdBheREQknX6F1/r163H55ZcjLS0NOTk5WLhw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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAa8AAAGxCAYAAADVtznqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAt00lEQVR4nO3de3TU9Z3/8deETIZch8RAZiIQA4itBFkNlquCIFFqRMRVxLaLraWrGDwstK6Wswd0dwvlrJc9i1Z7EdTihtoSj1VE4hJQFnG5uQJSBAEJkGkghpncSDLJ5/cHP2YZciEJufhJno9z3kfn+/18v/P5fvieeeV7me84jDFGAABYJKKrOwAAQGsRXgAA6xBeAADrEF4AAOsQXgAA6xBeAADrEF4AAOsQXgAA6xBeAADrEF493CeffKK7775bAwcOlMvlUkpKisaMGaOFCxeGtZs4caIcDoccDociIiIUHx+vIUOG6N5779Uf//hH1dfXN1j3VVddFVrG4XAoNjZWN9xwg1asWKGueLDLO++8o7/7u7/T8OHD5XQ65XA4mm2/d+9e3Xvvverbt69cLpeuuuoqzZ07t0G7w4cPa8aMGerTp4/i4uI0ZcoU7dq1q9F15ubm6m/+5m/Uu3dvpaamav78+SovL2/zNr344otatWpVm5e/XLt27dKtt96quLg49enTRzNmzNDhw4e7rD/tae3atZo1a5aGDBmi6OhoXXXVVfre976ngwcPdnXXIMKrR3v33Xc1duxYBQIBLV++XBs2bNC///u/a9y4cVqzZk2D9oMGDdLHH3+srVu36q233tITTzyhqqoq3XvvvZo4caL8fn+DZcaNG6ePP/5YH3/8sV5//XXFxMRo3rx5Wrp0aWdsYpi8vDxt27ZN1157rUaMGNFs24KCAn3nO99RIBDQSy+9pA0bNuif//mf1bt377B2p06d0k033aQvvvhCr7zyiv7whz/o7Nmzmjhxog4cOBDWdvXq1Zo1a5ZuvPFGvffee1q8eLFWrVqlGTNmtHmbujK8/vKXv2jixImqqanRH/7wB73yyiv64osvdNNNN+nUqVNd0qf29Mtf/lKVlZVatGiR1q9fr3/5l3/R7t27dcMNN2jfvn1d3T0Y9Fg333yzGTx4sKmtrW0wr66uLuz1hAkTzLBhwxpdzyuvvGIkmfvuuy9selpamrnjjjvCpvn9fuN2u83AgQMvs/etd+E2Pfroo6ap3b+iosJ4vV5zxx13mPr6+mbX+bOf/cw4nU5z9OjR0DS/32+Sk5PDxiMYDBqv12uysrLCll+9erWRZNatW9eWTTLDhg0zEyZMaNOyl+vee+81ycnJxu/3h6YdPXrUOJ1O8/jjj3dJn9rTX//61wbTTpw4YZxOp3nooYe6oEe4EEdePVhJSYmSk5MVGRnZYF5ERMt3jR/+8If67ne/qzfffFNfffVVs20TEhI0dOhQ/fWvf211fy9XS7fpzTffVFFRkX72s59d8tRiXl6eJk2apLS0tNC0hIQEzZgxQ3/+858VDAYlSdu2bVNRUZF++MMfhi1/7733Ki4uTnl5ea3cmnOnZfft26fNmzeHTs1eddVVrV5PWwSDQb3zzju65557lJCQEJqelpamW265pU3bI0kPPvig4uLitG/fPk2ePFmxsbHq27evcnJyVFlZ2V7db5F+/fo1mJaamqr+/fursLCwU/uChgivHmzMmDH65JNP9Nhjj+mTTz5RbW1tm9c1bdo0GWP00UcfNdsuGAyqsLBQQ4cObdF66+rqFAwGL1mNXXNrqw8//DD03uPHj1dUVJQSExM1a9YsnTx5MtSuqqpKX375pa677roG67juuutUVVUVuv6zd+/e0PQLOZ1Ofetb3wrNb428vDwNGjRI119/fejU7KVCo73G88svv1RVVVWT237o0CGdPXu21dskSbW1tfrud7+ryZMn66233lJOTo5efvllzZw585LL1tfXt2j76urq2tS3w4cP66uvvtKwYcPatDzaD+HVgy1btkzjx4/Xf/zHf2j06NGKjY3VuHHjtGzZslbfRHD+yOPCD3dJMsaEPjCOHTumuXPnqqSkpMXXvAYPHiyn03nJevrpp1vV3+acOHFCknTPPfdo3Lhxev/997Vs2TLl5+drwoQJoSOA0tJSGWOUlJTUYB3np5WUlIT9t6m25+e3xvXXX6/o6GglJCRo9OjRGj16tK6//vpml5k8eXKLxvNHP/pRs+u51PYYY1RaWtrqbZKkmpoaLVy4UD//+c81ZcoULV68WE899ZTeeecd/fd//3ezyz799NMt2r7Bgwe3ul/BYFAPPfSQ4uLi9A//8A9t2ja0n4bni9BjXHHFFfroo4+0Y8cO/dd//Zd27NihTZs26cknn9TLL7+s7du3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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from diffdrr import DRR\n",
"import torch\n",
"\n",
"def test_phantom_diffdrr(sdr: float, p: float, t: float = 0):\n",
" # Define a simple phantom for test: a wire box around a cube.\n",
" volume = np.zeros((120, 100, 80), dtype=np.float32)\n",
" volume[0:5, 0:5, :] = 1\n",
" volume[0:5, -5:, :] = 1\n",
" volume[-5:, 0:5, :] = 1\n",
" volume[-5:, -5:, :] = 1\n",
" volume[:, 0:5, 0:5] = 1\n",
" volume[:, 0:5, -5:] = 1\n",
" volume[:, -5:, 0:5] = 1\n",
" volume[:, -5:, -5:] = 1\n",
" volume[0:5, :, 0:5] = 1\n",
" volume[0:5, :, -5:] = 1\n",
" volume[-5:, :, 0:5] = 1\n",
" volume[-5:, :, -5:] = 1\n",
"\n",
" volume[40:60, 40:60, 40:60] = 1\n",
" materials = {}\n",
" materials[\"air\"] = volume == 0\n",
" materials[\"soft tissue\"] = volume == 1\n",
" materials[\"bone\"] = volume == 2\n",
" voxel_size = np.array([1, 1, 1], dtype=np.float32)\n",
"\n",
" # Use the center of the volume as the \"world\" coordinates. The origin is the (0, 0, 0) index of the volume in the world frame.\n",
" vol_center = (np.array(volume.shape) - 1) / 2 * voxel_size\n",
" origin = geo.point(-vol_center[0], -vol_center[1], -vol_center[2]+t)\n",
"\n",
" spacing = voxel_size\n",
" \n",
"\n",
" bx, by, bz = torch.tensor(volume.shape) * torch.tensor(spacing) / 2\n",
" true_params = {\n",
" \"sdr\": sdr,\n",
" \"theta\": torch.pi/2,\n",
" \"phi\": 0,\n",
" \"gamma\": -torch.pi / 2,\n",
" \"bx\": bx.item(),\n",
" \"by\": by.item(),\n",
" \"bz\": bz.item(),\n",
" }\n",
" drr = DRR(volume, spacing, height=256, delx=p, device=\"cuda\")\n",
" ground_truth = drr(**true_params)\n",
" ground_truth = ground_truth[0, :, :].detach().cpu()\n",
"\n",
" plt.figure()\n",
" plt.title(f\"SDR = {sdr}, t = {t}, p = {p}\")\n",
" plt.imshow(ground_truth, cmap=\"gray\")\n",
" plt.show()\n",
" \n",
"test_phantom_diffdrr(100, 2)\n",
"test_phantom_diffdrr(400, 2)\n",
"test_phantom_diffdrr(1600, 2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.15"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment