{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "beneficial-german", "metadata": {}, "outputs": [], "source": [ "import torch\n", "import matplotlib.pyplot as plt\n", "from tqdm import tqdm\n", "import numpy as np\n", "\n", "import gradoptics as optics" ] }, { "cell_type": "markdown", "id": "bigger-appreciation", "metadata": {}, "source": [ "# Point Spread Functions" ] }, { "cell_type": "code", "execution_count": 2, "id": "fallen-clothing", "metadata": {}, "outputs": [], "source": [ "# Helpers\n", "\n", "def gaussian_kernel_1d(size, sigma=1):\n", " x = torch.arange(-size/2, size/2, 1)\n", " return 1 / (sigma * np.sqrt(2 * np.pi)) * torch.exp(-.5 * (x / sigma) ** 2)\n", "\n", "def gaussian_kernel_2d(size, sigma=1):\n", " return torch.outer(gaussian_kernel_1d(size, sigma=sigma),\n", " gaussian_kernel_1d(size, sigma=sigma))" ] }, { "cell_type": "code", "execution_count": 3, "id": "effective-aggregate", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAD7CAYAAACscuKmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAXdElEQVR4nO2dXchmV3XHfyszmclnifEjDJnQpBiUUGqEIY3oRYyNpFa0FyJ+UOYiMDcWIrVo0kLR0oLe+HFRpAMRc2FNFJWEXNROp8mFUGJiEzUfxow2YoYxQyGDRpOYSVYv3jOy3+37rnP2+Xyed/9/MLzPfvZ5zlnPx5q9/metvbe5O0KInc9ZSxsghJgHObsQlSBnF6IS5OxCVIKcXYhKkLMLUQmDnN3MbjSzJ8zsmJndMpZRQojxsb55djPbBfwYuAF4GngA+KC7PzaeeUKIsdg94LXXAMfc/acAZnYH8F5gW2c3M1XwCDEx7m5bPT8kjL8U+HnSfrp5TgixggwZ2TthZoeAQ1NfRwgRM8TZjwOXJe39zXObcPfDwGFQGC/Ekgxx9geAK83sCjac/APAh0axSnTCbEtptvZoctY09HZ2dz9tZn8NfBvYBXzJ3R8dzTIhxKj0Tr31upjC+FHRyC62Yru78ZPfoBNlLO3AJdefyilXwYadiMplhagEObsQlSBnF6ISpNlnZkxNvk76voQSHR7ZID2/GY3sQlSCnF2ISpCzC1EJ0uwTMETL9n3t0vp9CLm2HivPLj2/GY3sQlSCnF2ISlAY35M5wu1VOHYIU4TKJSF/3xC/7bXrikZ2ISpBzi5EJcjZhagEafaOjKWJx9TWc12nK331dH7cHHq57RqpTTtFv2tkF6IS5OxCVILC+IQ5Ul1jhuZ9w/hVSL2V9I0V8kfnGevYVUYjuxCVIGcXohLk7EJUQtWafa50WqTZh2j0sc47FV11eaTR244dK20XnXenpOk0sgtRCXJ2ISpBzi5EJVSn2afQ6WPq8LPOOqvzsV1tGJLbL6Fv7nyIZn/llVc621eirfvm9pco/e1K68huZl8ys5Nm9kjy3MVmdsTMnmz+vmpaM4UQQ+kSxn8ZuDF77hbgqLtfCRxt2kKIFabTLq5mdjlwj7v/cdN+ArjO3U+Y2T7gPnd/Q4fzzB7TTJVeKwnjo2PTsD3vj/ry/rHsG0LfUL0tNE/7o768fyrpkNO3ZHcqttvFte8Nukvc/UTz+BfAJT3PI4SYicE36NzdoxHbzA4Bh4ZeRwgxjL4j+zNN+E7z9+R2B7r7YXc/4O4Hel5LCDECfUf2u4GDwKebv3eNZtFAploJZiodPuTYtB2dp82+7V7XRpv+7Kqfcx0etdtSW2l/ifYvYV1La7uk3r4K/DfwBjN72sxuYsPJbzCzJ4E/a9pCiBWmdWR39w9u0/WOkW0RQkyIymWFqASVywZ9XXVvmyaOtHXU3rVr1yjnbcvXR9eIaNO9XXV5iWZ/+eWXw2Oj7yyyd0gZ7tIr5XZFI7sQlSBnF6ISdkQYP9Yqq1F7SIosDcejvrzdFsZ3PbbNvq59OW2hbtdQPQ/No1A9ty96bUkaMbcvvU7fkH4rG5YM+TWyC1EJcnYhKkHOLkQlrKVmn2ul167ptSHaOm/v3r27U1/en/dF9uXvJe0fUi6b6+e0P9Lhp0+fDs+T9relEdN2fp7odTnRfYKxNPyQsts+aGQXohLk7EJUwlqG8SWMtYJLSTqtJNyO2m3Hnn322Z2u2WZfJFci2qrO0vA770tD7DyMf+mllza10/eSH5u/t7Q/+j7z80REVXqlLFlRp5FdiEqQswtRCXJ2ISphbTT7WBsVlqzg0rXkNNLLeX+qs7dqp8fu2bMnPDbS7F31PJStaFuy0mtXXZ735famx/72t7/d1Fcyoy8it6FEW5fMpkuZu5RWI7sQlSBnF6IS5OxCVMLaaPauTLXJYslU1Eg/57o71+VpO+rLz7V3795t+9ry9dG9iYi2FWZSHRxp9hdffDG0L6oZyDV8X4bs6tK1BHbINcdAI7sQlSBnF6ISVjaMX4VNFqPwNiqBjVJkUbgNcM4552x7bNSOzpuH/yVhcknqLZqtlofbaRiffwZ5WB/Zl9M39TbWJpBTbZI5RipOI7sQlSBnF6IS5OxCVMLKavaxKJm2WrJhQ4lmTzVzpNEBzj333G37onbeF6XwInuHaPZ8amqk2dN2VDIMZZp9O1vb+qLS3xLN3qalNcVVCDE5XXZxvczM7jWzx8zsUTO7uXn+YjM7YmZPNn9fNb25Qoi+dBnZTwMfc/ergGuBj5jZVcAtwFF3vxI42rSFECtKly2bTwAnmse/MrPHgUuB9wLXNYfdDtwHfKKvISWrwg45LlqCqaRctmT5qFQzRxo97z/vvPM29eXtrvq+LbcfrWgbafYorw5xSewLL7zQyR4o0+kRJZtJdt2UEuL7QPln1HUF2ba8ep+VaIs+RTO7HHgzcD9wSfMfAcAvgEtKziWEmJfOd+PN7ALgG8BH3f2X2f8sbmZb/vdiZoeAQ0MNFUIMo5Ozm9nZbDj6V9z9m83Tz5jZPnc/YWb7gJNbvdbdDwOHm/OMkncYa2ZbyYaMJam3aLZaHlLn4Xcaqp9//vnb9sHmMD4/Nu3LrxnNnhsSxueptzS9lofxqQ1tm2z03aCxZE/4aBOLkpB/yMaO2x03Fl3uxhtwG/C4u3826bobONg8PgjcNbp1QojR6DKyvxX4K+CHZvZw89zfAZ8GvmZmNwE/A94/iYVCiFHocjf+O8B28cY7xjVHCDEVO65cdq4prlHqLSqXLdHsuUa/4IILNrVTnR5p9jy9F6XixtTsqU5//vnnO18zb293fYi1d25ftNptdGzbvZ3UhpLfn1aqEUJMgpxdiEqQswtRCYtq9jl2eZljimvbLi/RslRR+WyutXNdnmr4SM+3afb0nkJ+/yHS7Lnuzaexppo9mmbb9l2n+jlawTZvR1Nuo9fB5u831/PR76Rtx9fotzrG7jHROTSyC1EJcnYhKmFtUm9R+NP1dW3nKQnjS2a9RavARrPV8rC9JIxP23kKL1rVZswwPp3Z1nbe7a4BcTotD9XTdtTX9p2l761N7pXIyIipy2c1sgtRCXJ2ISpBzi5EJayNZo8Ya0eYSMOX6Pko9da2sWOqp/OUWZSKyzX7hRde+LvH0dRY2HwfYYhmz6exRiWx251zq/OmWjtK7+XXjL6H/DwlpdJT7Ug0dfmsRnYhKkHOLkQl7IgwvoSxwvho44IordO253qUpovC+mhxyjzEnyqMz8PmKHSPZqBFoXrbqjtRGjFtR99n3j8kjF8lNLILUQlydiEqQc4uRCWspWbvu5ps27GRNov6oo0I8/62Ms1U90Z6Pm+XzJ7L9X2k2aNVWaKZYjlRmWuePot0eduGEtFnHa0IHP0WSn4nOX1/j4usLiuE2BnI2YWoBDm7EJWwlpo9Z6xVbUqI8uwlG0RGGrRtBZxUy5bk66N2fo0oz55PIc1JdXp+bGR79L7bVvLt+r205dlLGGv6tcplhRCjIGcXohJWJoxfhTLDknLZsTab6LuZJHRP6ZWk+0pSbzl5eq2vfdH7btsEsutnPaRUetV+q5Pszy6EWF+67OJ6jpl918y+b2aPmtmnmuevMLP7zeyYmd1pZnvaziWEWI4uI/uLwPXu/ibgauBGM7sW+AzwOXd/PfAscNNkVgohBtNlF1cHnmuaZzf/HLge+FDz/O3AJ4Evjm/i+jGkfHKKVXfGKgvO+0vOO8f73Krdta8GOml2M9vV7M1+EjgC/AQ45e5niqOfBi6dxEIhxCh0cnZ3f9ndrwb2A9cAb+x6ATM7ZGYPmtmD/UwUQoxB0d14dz8F3Au8BbjIzM7IgP3A8W1ec9jdD7j7gSGGCiGG0arZzey1wEvufsrMzgVuYOPm3L3A+4A7gIPAXVMauk5Eec+8L2qPdWzel+fK0/68L8qzl5x3jve5VbtrXw10KarZB9xuZrvYiAS+5u73mNljwB1m9k/AQ8BtE9ophBhIl7vxPwDevMXzP2VDvwsh1oCVKZfNQ6wl0iRRWFoSoubHRufJ29Emhnm7637jbXuRR7PXSma99bUh74ved97X97NuC/+7fvdL0ccGlcsKUQlydiEqQc4uRCWsjGYfQol+ibR2Cal2bNN0aX+0yips1q95X95Od06JdlHpu1MLlK0um68Sm7bzvsj26H233W/o+r1E90pK6fubmlv7a2QXohLk7EJUgpxdiEpYS80e5eSHlE+WaLxoN9O++XDYrEEjHZ63X3jhhU19qU5vWzk1tXfILq65fc8///yWj3N7o/cFmz+HIbn9aOfY6LdQ8jvJWaVyXo3sQlSCnF2ISljLMH4IJTOoopLJKMUThZZ5aB6F6lFYDJs3V2hboXU722FzaDxVGP+b3/xmU1/azt9X3u6awsvb0ffQlnorKZcdK507NRrZhagEObsQlSBnF6ISdoRmn2rVk67TJdtKYNN2VPIKm1NSbRsepvo6mhLcZl+k/Us0e/Recs3+3HPP/e7xr3/96019kYbPU4xRqW30PQyZKjvVqjtTo5FdiEqQswtRCWsTxkchTxTCDlmIMQrVS6riohloUbttY8eu77stRTZVGJ9eJw/N09A9Denzvrydh/F5O0rTlXxnUWq178KabUwd4mtkF6IS5OxCVIKcXYhKWFSzp7ok0oZb9W93bEnqo02LRZo9becpnlz3pu1cR0bH5qvERCWw+fuMSnT37t27qR3dJ4i+l7aUXqTZ03ak0fNjo9lz+TVLUqDR91vyO5kq9TbGbDmN7EJUgpxdiEqQswtRCWuTZ+/KEM1UUjKZauJc5+Z6MO1vy52nOr1tV5xop5TUhiivDtNp9vReQTT9ta1cNi21zctuI80eldK25dlLdvEZa+PJqek8spvZLjN7yMzuadpXmNn9ZnbMzO40sz1t5xBCLEdJGH8z8HjS/gzwOXd/PfAscNOYhgkhxqVTGG9m+4G/AP4Z+BvbiO2uBz7UHHI78EngixPY+HuUlM6WpN7y16Zhap4GS9ttZaPpsdF52ijZfCK1IUq1weZ035AwPlo8Mw/j0/A7D8WnCuOjVWzG2kxyyAKTq7Lg5OeBjwNn3tWrgVPufuYTexq4dFzThBBj0ursZvZu4KS7f6/PBczskJk9aGYP9nm9EGIcuoTxbwXeY2bvAs4B/gD4AnCRme1uRvf9wPGtXuzuh4HDAGa2uqvxCbHDaXV2d78VuBXAzK4D/tbdP2xmXwfeB9wBHATuGmJIW3lsVFpbcp5UX7Xp+0gTp69t0+G5duxLlP6LSlXzVFteoptq+Nz26DPK7Yk2cIj0c9u01RJ9n/bn1xxrimvJfaCcrrq87bg++n5IUc0n2LhZd4wNDX/bgHMJISamqKjG3e8D7mse/xS4ZnyThBBToHJZISphx5XL5kTapi3PnrYjzZ7rveieQlsJbGRflNfO9XKqw9s0e5pbH6LZI/ui0tW2jR2jpaZyDR9tjBmVy841xXVJNLILUQlydiEqYWXD+JI92Me6RhTWR6W0JaF5mw2RPdEssyiMj1bDgbicN6ItvI1SXVEYH82ea9sYM9rLvSSMn2PW29x7t2tkF6IS5OxCVIKcXYhKWFnN3pc2bRNp/zYN3+WcQ4m0Yt/UW5Rqg7j0tyT1ln9+qb2RZo/68nZUApsfG5XvRqm2vF1SLpuzSqk4jexCVIKcXYhKWJswvuuGEm0hdUmqKyKqoCuhZE/4aKZWHqqn4W4emkeptxJJ0iZ7UvsiSdIWxpfMVouOja5ZsthoSeotYupUW45GdiEqQc4uRCXI2YWohLXR7H0Zon1KViBJyfVg340p2tJDkWZPdXjbirFp/xDNntsXrUSbvs+20tUoZRa9tiSdFtk3VQns3GhkF6IS5OxCVIKcXYhKWEvNXjL9tW0F2YhUt+W56kjDDymfLFkJJtXauXbtuwvNkCmuUf+QexMlx3bV5SW585Jy2SGrwq7KjjBCiDVHzi5EJaxlGJ/TtZQ27+8b0sPmcLckLVcy0y66JnTfeLJtJlt0jYiSDRGGlKNGYXzf87aF5n1TbzlLhu05GtmFqAQ5uxCVIGcXohJ2hGYvoUTfR0QbREbXHFOzd9XluX2RLh9SLpvTVfeWaPYSrT1VOm2VdHgJnZzdzJ4CfgW8DJx29wNmdjFwJ3A58BTwfnd/dhozhRBDKQnj3+7uV7v7gaZ9C3DU3a8EjjZtIcSKMkSzvxe4vXl8O/CXg60RQkyGddEYZva/wLOAA//q7ofN7JS7X9T0G/DsmXZwntkFTYkGLdmQMdLEJcdGWrstPx4tJ9XXviH01b1t035LtHbX+wRDpq3mjLUU1Vi4+5ZfaNcbdG9z9+Nm9jrgiJn9KDu5b+fIZnYIOFRkrRBidDqF8e5+vPl7EvgWcA3wjJntA2j+ntzmtYfd/UCi9YUQC9A6spvZ+cBZ7v6r5vE7gX8E7gYOAp9u/t41paF9aZsF1/XYsVa8aUv3paF5m+1R+i8K43OmCuOjvrFC6r4rvU5VAjvk2KnpEsZfAnyr+UHsBv7N3f/dzB4AvmZmNwE/A94/nZlCiKF0ukE32sUWuEG3hQ2jHFtyAyzq63vTrcQGjexl9pS+NmKJkX27G3QqlxWiEqob2VOmSstF/WNGAWOddyq6jo5TpcGWmIq6ChpdI7sQlSNnF6IS5OxCVEJ1U1xTVi0H33besXT5qmn2tr45zlNy3iHHLolGdiEqQc4uRCVUnXorYa40Xcmxc12nK2OFvnOkwXZimH4Gpd6EqBw5uxCVIGcXohKqTr2VMCRNNxV9V8odsqpuCV3Pu4opsXXT6V3QyC5EJcjZhagEhfE9KQmTu74uf+3S4fVcLBFur9pnMAca2YWoBDm7EJUgZxeiEqTZJ6Cvnm97bXSunaRBx3ovO+kzGQON7EJUgpxdiEqQswtRCdLsM1OSZx96rj4sff1SVsGGdUEjuxCVIGcXohIUxq8YfVNvS1x/KlbBhp2IRnYhKkHOLkQlyNmFqIS5Nfv/sbGX+2uax6vCWtozo7Zdtc8HVs+mVbHnD7frmHUp6d9d1OxBdz8w+4W3QfbErJo9sHo2rZo9W6EwXohKkLMLUQlLOfvhha67HbInZtXsgdWzadXs+T0W0exCiPlRGC9EJczq7GZ2o5k9YWbHzOyWOa+d2PAlMztpZo8kz11sZkfM7Mnm76tmtOcyM7vXzB4zs0fN7OYlbTKzc8zsu2b2/caeTzXPX2Fm9zff3Z1mtmcOexK7dpnZQ2Z2z9L2mNlTZvZDM3vYzB5snlvsN9SV2ZzdzHYB/wL8OXAV8EEzu2qu6yd8Gbgxe+4W4Ki7XwkcbdpzcRr4mLtfBVwLfKT5XJay6UXgend/E3A1cKOZXQt8Bvicu78eeBa4aSZ7znAz8HjSXtqet7v71Um6bcnfUDfcfZZ/wFuAbyftW4Fb57p+ZsvlwCNJ+wlgX/N4H/DEEnY1178LuGEVbALOA/4H+FM2CkZ2b/VdzmDHfjYc6HrgHsAWtucp4DXZc4t/X23/5gzjLwV+nrSfbp5bBS5x9xPN418AlyxhhJldDrwZuH9Jm5qQ+WHgJHAE+Alwyt1PN4fM/d19Hvg48ErTfvXC9jjwH2b2PTM71Dy3Er+hCE1xzXB3N7PZUxRmdgHwDeCj7v7LbOXYWW1y95eBq83sIuBbwBvnunaOmb0bOOnu3zOz65ayI+Nt7n7czF4HHDGzH6WdS/2G2phzZD8OXJa09zfPrQLPmNk+gObvyTkvbmZns+HoX3H3b66CTQDufgq4l40w+SIzOzM4zPndvRV4j5k9BdzBRij/hQXtwd2PN39PsvGf4TWswPfVxpzO/gBwZXMXdQ/wAeDuGa8fcTdwsHl8kA3dPAu2MYTfBjzu7p9d2iYze20zomNm57Jx/+BxNpz+fXPb4+63uvt+d7+cjd/Mf7n7h5eyx8zON7MLzzwG3gk8woK/oc7MeYMAeBfwYzY04N8vcZMC+CpwAniJDa13Exsa8CjwJPCfwMUz2vM2NjTgD4CHm3/vWsom4E+Ahxp7HgH+oXn+j4DvAseArwN7F/jurgPuWdKe5rrfb/49euZ3vORvqOs/VdAJUQmqoBOiEuTsQlSCnF2ISpCzC1EJcnYhKkHOLkQlyNmFqAQ5uxCV8P+9fGZJb23QCwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Toy gaussian Psfs\n", "\n", "for sigma in [3, 6, 9, 18]:\n", " kernel = gaussian_kernel_2d(60, sigma=sigma)\n", " plt.imshow(kernel.numpy(), cmap='gray')\n", " plt.show()" ] }, { "cell_type": "markdown", "id": "moving-gross", "metadata": {}, "source": [ "In diffoptics, psfs are depth-dependent (position along the optical axis), and height-dependent (vertical position on the sensor).\n", "\n", "Point spread functions are represented by dictionaries where the primary keys are tuple that indicate the depth at which the psfs apply, while the secondary keys indicate the height on the sensor on which the psfs apply." ] }, { "cell_type": "code", "execution_count": 4, "id": "appointed-wrestling", "metadata": {}, "outputs": [], "source": [ "inf = int(1e15)\n", "\n", "# No psf\n", "no_psfs = {}\n", "\n", "# A psf that applies to all depth and all the sensor\n", "psfs = {'data' : {(-inf, inf) : {(0, inf) : optics.PSF(gaussian_kernel_2d(45, sigma=3))}}}\n", "\n", "# A psf that is depth-dependent\n", "psfs = {'data' : {(-inf, -1) : {(0, inf) : optics.PSF(gaussian_kernel_2d(45, sigma=3))},\n", " (-1, 1) : {(0, inf) : optics.PSF(gaussian_kernel_2d(45, sigma=5))},\n", " (1, inf) : {(0, inf) : optics.PSF(gaussian_kernel_2d(45, sigma=3))}}}\n", "\n", "# A psf that is height-dependent\n", "psfs = {'data' : {(-inf, inf) : {(0, 1000) : optics.PSF(gaussian_kernel_2d(45, sigma=3)),\n", " (1000, 2000) : optics.PSF(gaussian_kernel_2d(45, sigma=4)),\n", " (2000, inf) : optics.PSF(gaussian_kernel_2d(45, sigma=5))}}}\n", "\n", "# A psf that is depth-dependent and height-dependent\n", "psfs = {'data' : {(-inf, -1) : {(0, 1000) : optics.PSF(gaussian_kernel_2d(45, sigma=3)),\n", " (1000, 2000) : optics.PSF(gaussian_kernel_2d(45, sigma=4)),\n", " (2000, inf) : optics.PSF(gaussian_kernel_2d(45, sigma=5))},\n", " (-1, 1) : {(0, 1000) : optics.PSF(gaussian_kernel_2d(50, sigma=3)),\n", " (1000, 2000) : optics.PSF(gaussian_kernel_2d(50, sigma=4)),\n", " (2000, inf) : optics.PSF(gaussian_kernel_2d(50, sigma=5))},\n", " (1, inf) : {(0, 1000) : optics.PSF(gaussian_kernel_2d(45, sigma=3)),\n", " (1000, 2000) : optics.PSF(gaussian_kernel_2d(45, sigma=4)),\n", " (2000, inf) : optics.PSF(gaussian_kernel_2d(45, sigma=5))}}}" ] }, { "cell_type": "code", "execution_count": 7, "id": "afraid-committee", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# No psfs\n", "\n", "# Creating a scene\n", "f = 0.05\n", "m = 0.15\n", "lens = optics.PerfectLens(f=f, na=1 / 1.4, position=[0., 0., 0.], m=m)\n", "sensor = optics.Sensor(position=(-f * (1 + m), 0, 0), psfs=no_psfs)\n", "atom_cloud = optics.AtomCloud(n=int(1e6), f=2, position=[f * (1 + m) / m, 0., 0.], phi=0.1)\n", "light_source = optics.LightSourceFromDistribution(atom_cloud)\n", "scene = optics.Scene(light_source)\n", "scene.add_object(lens)\n", "scene.add_object(sensor)\n", "\n", "# Producing an image\n", "device = 'cpu'\n", "rays = light_source.sample_rays(10_000_000, device=device)\n", "optics.forward_ray_tracing(rays, scene, max_iterations=2)\n", "\n", "# Readout the sensor\n", "c = (4800, 4800)\n", "w = 60\n", "produced_image = sensor.readout(add_poisson_noise=False).data.cpu().numpy()\n", "plt.imshow(produced_image[c[0] - w : c[0] + w, c[1] - w : c[1] + w], cmap='Blues')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "exterior-exhibit", "metadata": {}, "outputs": [], "source": [ "# Depth-dependent and height-dependent psfs\n", "\n", "# Creating a scene\n", "lens = optics.PerfectLens(f=f, na=1 / 1.4, position=[0., 0., 0.], m=m)\n", "sensor = optics.Sensor(position=(-f * (1 + m), 0, 0), psfs=psfs)\n", "atom_cloud = optics.AtomCloud(n=int(1e6), f=2, position=[f * (1 + m) / m, 0., 0.], phi=0.1)\n", "light_source = optics.LightSourceFromDistribution(atom_cloud)\n", "scene = optics.Scene(light_source)\n", "scene.add_object(lens)\n", "scene.add_object(sensor)\n", "\n", "# Producing an image\n", "rays = light_source.sample_rays(10_000_000, device=device)\n", "rays.meta['depth'] = rays.origins[:, 0] # /!\\ When using psfs, the depth of the incident rays should be specified!\n", "optics.forward_ray_tracing(rays, scene, max_iterations=2)\n", "\n", "# Readout the sensor\n", "produced_image = sensor.readout(add_poisson_noise=False).data.cpu().numpy()\n", "plt.imshow(produced_image[c[0] - w : c[0] + w, c[1] - w : c[1] + w], cmap='Blues')\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.2" } }, "nbformat": 4, "nbformat_minor": 5 }