{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# The HFM library - A fast marching solver with adaptive stencils\n", "\n", "## Part : Image models and segmentation\n", "## Chapter : A mathematical model for Poggendorff's visual illusions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This python notebook is *freely inspired* from the publication: \n", "[1]\tB. Franceschiello, A. Mashtakov, G. Citti, and A. Sarti, “Modelling of the Poggendorff Illusion via Sub-Riemannian Geodesics in the Roto-Translation Group,” presented at the International Conference on Image Analysis and Processing, 2017, pp. 37–47.\n", "\n", "The main assumption in our experiments is that: if a curve in an image is occluded, then the visual cortex attemps to continue it with a geodesic w.r.t. the Reeds-Shepp model. This assumption is backed by the mathematical works of Petitot and Citti-Sarti, and the neuro-biological observations of Bosking, Angelis, et al, on the first layer V1 of the visual cortex.\n", "\n", "The model considered in this notebook is *simplified* in comparison with the one considered in the above paper. Indeed, the original model involves a data adaptive cost function, related to the activation of the cells of V1 implied by the input image, whereas we consider a constant cost function $c=1$ here.\n", "\n", "This notebook is intended as a companion notebook for the manuscript [(link)](https://hal.archives-ouvertes.fr/hal-01778322): \n", " [MP18] Jean-Marie Mirebeau, Jorg Portegies, \"Hamiltonian Fast Marching: A numerical solver for anisotropic and non-holonomic eikonal PDEs\", 2018, submitted,\n", "and as documentation for the [HamiltonFastMarching (HFM) library](https://github.com/mirebeau/HamiltonFastMarching), which also has interfaces to the Matlab® and Mathematica® languages. It is part of a series, see the [summary](http://nbviewer.jupyter.org/urls/rawgithub.com/Mirebeau/HFM_Python_Notebooks/master/Summary.ipynb)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[**Summary**](Summary.ipynb) of volume Fast Marching Methods, this series of notebooks.\n", "\n", "[**Main summary**](../Summary.ipynb) of the Adaptive Grid Discretizations \n", "\tbook of notebooks, including the other volumes.\n", "\n", "# Table of contents\n", " * [1. Sub-Riemannian extrapolation](#1.-Sub-Riemannian-extrapolation)\n", " * [2. First Poggendorff illusion](#2.-First-Poggendorff-illusion)\n", " * [3. Poggendorff's round illusion](#3.-Poggendorff's-round-illusion)\n", "\n", "\n", "\n", "This Python® notebook is intended as documentation and testing for the [HamiltonFastMarching (HFM) library](https://github.com/mirebeau/HamiltonFastMarching), which also has interfaces to the Matlab® and Mathematica® languages. \n", "More information on the HFM library in the manuscript:\n", "* Jean-Marie Mirebeau, Jorg Portegies, \"Hamiltonian Fast Marching: A numerical solver for anisotropic and non-holonomic eikonal PDEs\", 2019 [(link)](https://hal.archives-ouvertes.fr/hal-01778322)\n", "\n", "Copyright Jean-Marie Mirebeau, University Paris-Sud, CNRS, University Paris-Saclay" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 0. Importing the required libraries" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:27.826834Z", "iopub.status.busy": "2024-02-23T18:45:27.826401Z", "iopub.status.idle": "2024-02-23T18:45:27.836294Z", "shell.execute_reply": "2024-02-23T18:45:27.834379Z" } }, "outputs": [], "source": [ "import sys; sys.path.insert(0,\"..\") # Allow import of agd from parent directory (useless if conda package installed)\n", "#from Miscellaneous import TocTools; print(TocTools.displayTOC('Illusion','FMM'))" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:27.840914Z", "iopub.status.busy": "2024-02-23T18:45:27.840362Z", "iopub.status.idle": "2024-02-23T18:45:28.127184Z", "shell.execute_reply": "2024-02-23T18:45:28.126846Z" } }, "outputs": [], "source": [ "from agd import Eikonal\n", "from agd.Plotting import savefig; #savefig.dirName = 'Figures/Illusion'" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:28.128928Z", "iopub.status.busy": "2024-02-23T18:45:28.128786Z", "iopub.status.idle": "2024-02-23T18:45:28.130551Z", "shell.execute_reply": "2024-02-23T18:45:28.130334Z" } }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from copy import deepcopy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 0.1 Optional configuration\n", "Uncomment the following line to use the GPU eikonal solver. (Comment it for the CPU eikonal solver.)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:28.131743Z", "iopub.status.busy": "2024-02-23T18:45:28.131667Z", "iopub.status.idle": "2024-02-23T18:45:28.133359Z", "shell.execute_reply": "2024-02-23T18:45:28.133133Z" }, "tags": [ "EikonalGPU_config" ] }, "outputs": [], "source": [ "#from agd import AutomaticDifferentiation as ad; plt,Eikonal = map(ad.cupy_friendly,(plt,Eikonal))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Sub-Riemannian extrapolation\n", "\n", "The two visual illusions considered, due to Poggendorf, challenge our brain's ability to continue a straight or curved line in a region occluded by a vertical band. For both illusions, it is found that we tend to under-estimate the height $y_1$ at the arrival point. \n", "\n", "Following the cited [paper](#FMCS_2017), we model our brain's extrapolation procedure for lines occluded by a vertical band by the following optimization problem. The unknown $\\delta y$ determines the height $y_1+\\delta y$ on the right side of the vertical band. In the considered examples, the seemingly \"logical\" continuation (as a straight line, or a circle) would yield $\\delta y= 0$, but our brain and the sub-Riemannian model both select a negative value $\\delta y <0$. The optimization problem reads:\n", "\\begin{equation*}\n", " \\min_{\\delta y \\in [-\\delta_1,\\delta_2]} d_\\xi( (x_0,y_0,\\theta_0),\\ (x_1,y_1+\\delta y,\\theta_1) )\n", "\\end{equation*}\n", "We denoted by $d_\\xi$ the sub-Riemannian distance associated with the Reeds-Shepp model on $\\mathbb R^2 \\times \\mathbb P^1$, where $\\mathbb P^1 = [0,\\pi]$ with periodic boundary conditions. The parameter $\\xi$ balances the cost of phisical motion and of angular motion. The inverse $\\xi^{-1}$ is homogeneous to a radius of curvature. A large value of $\\xi$ yields a large penalization of the curvature of the physical projection of the path to be extracted. \n", "\n", "One weakness of the considered model is that it does not predict the value of parameter $\\xi$, which is thus adjusted by hand in the following examples. In addition, this parameter is expected to depend on the scale at which the picture is displayed.\n", "\n", "The metric of the $\\varepsilon$-relaxation of the Reeds-Shepp model, where $\\varepsilon>0$ is a relaxation parameter, reads as follows: for any point $(x,\\theta) \\in \\mathbb R^2 \\times \\mathbb P^1$ of the configuration space, and any tangent vector $(\\dot x, \\dot \\theta) \\in \\mathbb R^2 \\times \\mathbb R$, one has\n", "\\begin{equation*}\n", "F_{(x,\\theta)}(\\dot x,\\dot \\theta)^2 = ^2 + \\varepsilon^{-2} ^2 + \\xi^2 |\\dot \\theta|^2.\n", "\\end{equation*}\n", "We denoted $n(\\theta) := (\\cos \\theta,\\sin \\theta)$. The relaxation parameter $\\varepsilon$ formally equals $0$ for the genuine sub-Riemannian mathematical model. However, we need to set $\\varepsilon = 0.1$ numerically. In our brain's biological implementation, we expect that $\\varepsilon$ is likewise a small positive value.\n", "\n", "The function implemented in the next cell numerically solves the optimization problem that we introduced, using the HFM library." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:28.134605Z", "iopub.status.busy": "2024-02-23T18:45:28.134529Z", "iopub.status.idle": "2024-02-23T18:45:28.137813Z", "shell.execute_reply": "2024-02-23T18:45:28.137611Z" } }, "outputs": [], "source": [ "def ReedsSheppContinuation(p0,p1,dy,n=100,n1=5,n2=1,nTheta=120,xi=1):\n", " hfmIn = Eikonal.dictIn({\n", " 'model':'ReedsShepp2',\n", " 'geodesicSolver':'ODE',\n", " 'order':2,\n", " 'cost':1,\n", " 'xi':xi,\n", " 'projective':1,\n", " })\n", " \n", " x0,y0,_ = p0\n", " x1,y1,theta1 = p1\n", " nDown,nUp = (n1,n2) if y1>y0 else (n2,n1)\n", " hfmIn.SetRect([[min(x0,x1),max(x0,x1)],[min(y0,y1-nDown*dy),max(y0,y1+nUp*dy)]], \n", " dimx=n,sampleBoundary=True)\n", " hfmIn.nTheta = nTheta\n", "\n", " # First run : compute the best overall tip\n", " h=hfmIn['gridScale']\n", " hfmIn['seeds'] = [[x1,y1+n*h,theta1] for n in range(int(-nDown*dy/h),int(nUp*dy/h)+1)]\n", " hfmIn['tips'] = [p0]\n", " hfmOut1 = hfmIn.Run()\n", "\n", " # Second run : compute the best suggested tip\n", " hfmIn['seeds'] = [p0]\n", " hfmIn['tips'] = [[x1,y1+n*dy,theta1] for n in range(-nDown,nUp+1)]\n", " hfmIn['exportValues']=1\n", " hfmOut2 = hfmIn.Run()\n", "\n", " tipsI,_ = hfmIn.IndexFromPoint(hfmIn['tips'])\n", " tipValues = hfmOut2['values'][tuple(tipsI.T)]\n", " \n", " return hfmOut1['geodesics'][0], hfmOut2['geodesics'], tipValues" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:28.138943Z", "iopub.status.busy": "2024-02-23T18:45:28.138868Z", "iopub.status.idle": "2024-02-23T18:45:28.966723Z", "shell.execute_reply": "2024-02-23T18:45:28.966404Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Field verbosity defaults to 1\n", "Field eps defaults to 0.1\n", "Field seedRadius defaults to 0\n", "Fast marching solver completed in 0.38798 s.\n", "Field geodesicStep defaults to 0.25\n", "Field geodesicCausalityTolerance defaults to 4\n", "Field geodesicTargetTolerance defaults to 6\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Field verbosity defaults to 1\n", "Field eps defaults to 0.1\n", "Field seedRadius defaults to 0\n", "Fast marching solver completed in 0.40857 s.\n", "Field geodesicStep defaults to 0.25\n", "Field geodesicCausalityTolerance defaults to 4\n", "Field geodesicTargetTolerance defaults to 6\n" ] } ], "source": [ "geoOpt, geoAll, tipValues = ReedsSheppContinuation([0,0,np.pi/4],[1,1,np.pi/4],0.1,xi=0.7)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The next cell shows the minimal geodesic for the considered optimization problem, which will appear as our brain's approximation of a straight line in the first Poggendorff illusion." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:28.968151Z", "iopub.status.busy": "2024-02-23T18:45:28.968065Z", "iopub.status.idle": "2024-02-23T18:45:29.003547Z", "shell.execute_reply": "2024-02-23T18:45:29.003246Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=[3,3]); plt.title('Best Reeds-Shepp path'); plt.axis('equal'); plt.axis('off');\n", "plt.plot(geoOpt[0],geoOpt[1],color='red');\n", "savefig(fig,'ReedsSheppPath.png')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We next display a family of geodesics, from the left to the right of the domain, with the prescribed tangents, colored according to their length. (Shortest is darker)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:29.004846Z", "iopub.status.busy": "2024-02-23T18:45:29.004762Z", "iopub.status.idle": "2024-02-23T18:45:29.006662Z", "shell.execute_reply": "2024-02-23T18:45:29.006462Z" } }, "outputs": [], "source": [ "def toGray(vals):\n", " grays = np.sqrt(vals-min(vals))\n", " grays = grays/max(grays)\n", " return 0.8*grays" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:29.007787Z", "iopub.status.busy": "2024-02-23T18:45:29.007715Z", "iopub.status.idle": "2024-02-23T18:45:29.036845Z", "shell.execute_reply": "2024-02-23T18:45:29.036608Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=[3,3]); plt.axis('equal'); plt.axis('off');\n", "plt.title('Reeds-Shepp paths.\\n Darker is shorter.',fontdict={'verticalalignment':'top'}); \n", "for geo,lvl in zip(geoAll,toGray(tipValues)):\n", " plt.plot(geo[0],geo[1],color=str(lvl));\n", "savefig(fig,'ReedsSheppPaths.png')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. First Poggendorff illusion\n", "\n", "The first Poggendorff illusion challenges our brain's ability to continue a straight line occluded by a vertical band. The function implemented in the next cell displays the illusion, and returns the endpoints of the occluded segment." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:29.038326Z", "iopub.status.busy": "2024-02-23T18:45:29.038214Z", "iopub.status.idle": "2024-02-23T18:45:29.040657Z", "shell.execute_reply": "2024-02-23T18:45:29.040413Z" } }, "outputs": [], "source": [ "def BarIllusion(theta,r,w):\n", " c,s=np.cos(theta),np.sin(theta)\n", " fig = plt.figure()\n", " plt.axis('equal')\n", " plt.axis('off')\n", " plt.plot([-c,-r*c],[-s,-r*s],color='black')\n", " plt.plot([c,r*c],[s,r*s],color='black')\n", " plt.plot([-r*c,-r*c],[-s,s],color='gray')\n", " plt.plot([r*c,r*c],[-s,s],color='gray')\n", " return fig,np.array([[-r*c,-r*s,theta],[r*c,r*s,theta]])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When viewing the Poggendorff illusion, in the next cell, most people tend to think that the dark straight lines are not aligned, but that the right one is a little *too high*. This is actually not the case, as evidenced by the above python code." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:29.042060Z", "iopub.status.busy": "2024-02-23T18:45:29.041957Z", "iopub.status.idle": "2024-02-23T18:45:29.070844Z", "shell.execute_reply": "2024-02-23T18:45:29.070606Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGZCAYAAAAUzjLvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAvYElEQVR4nO3deViVdf7/8Reg4pq74r6lZgqkuZv7Du5ibrlVtpjjAbfcATeQ9Rwnjby0zKkxm2ZqpjJHR0tzX1EREVwwzX3HBUG4f3/MV35DaqUhN3A/H9fFNXp3n3PeHM9cPPl8bg5OhmEYAgAAluVs9gAAAMBcxAAAABZHDAAAYHHEAAAAFkcMAABgccQAAAAWRwwAAGBxxAAAABZHDAAAYHHEAEyzfPlyOTk5PfRj4sSJSkxMlJOTk5YvX55lj7l48eLHur/q1atnmqto0aJq1qyZVqxYkWUz5RYjR45U9erVs/x+ExMT5e3trVKlSsnJyUm+vr6PPLd69eoaOXJkptv+8jVy/3WVmJiY5bNmx/0DZshn9gDARx99pOeeey7TsYoVK6p8+fLatm2batWqlWWPtXjxYpUpUybTF5Tf0qpVK4WFhUmSTp8+rbCwMI0YMUK3bt3S22+/nWWzWZWfn5927NihDz/8UG5ubqpQocIjz/3yyy/1zDPPZON0D/L29ta2bdt+dU4gtyEGYLoGDRqocePGD/1vzZs3/83b3759W4ULF87qsTKUKFEi0xydOnVStWrVFBERQQw8IcMwlJycrEKFCikmJkZNmzZVnz59fvN2DRs2fPrD/YayZcuqbNmyZo8BZCm2CZBjPWwJOCAgQE5OTtq7d698fHxUsmTJjJWD48ePa9CgQapYsaJcXV1Vvnx5dezYUdHR0ZL+u8R86NAhbdy4MWPZ/0mWvUuUKKG6devq5MmTGcc2b96sjh07qlixYipcuLBatmypb7/99oHbbt68WS1atFDBggVVqVIlzZw5U0uXLn1g2fnu3buaMGGC3NzcVLhwYbVp00Z79ux5YJlcks6dO6c333xTlStXVoECBVSjRg0FBgbq3r17DzyXYWFhioiIUI0aNVS0aFG1aNFC27dvf2DO5cuXq27dunJ1dVW9evUeuS1y5coVjRkzRpUqVVKBAgVUs2ZNTZ8+XXfv3s10npOTk8aOHauoqCjVq1dPrq6u+vjjj+Xk5KSjR4/qu+++y/g3+bXl94d9/r/Ho27Xrl07tWvXLuPv6enpmjt3rurWratChQqpRIkS8vDwkMPhyDjnUdsEH374oTw9PVWwYEGVKlVKffv21eHDhzOdM3LkSBUtWlRHjx6Vl5eXihYtqipVqmjChAkPPGdAdmJlAKZLS0vL9IVLkvLl+/WXZr9+/TRo0CC99dZbunXrliTJy8tLaWlpCgkJUdWqVXXp0iVt3bpV165dk/TfJWYfHx8VL15cixcvliS5uro+9rypqak6efJkxneHGzduVOfOneXh4aFly5bJ1dVVixcvVs+ePbVy5UoNHDhQknTgwAF17txZderU0ccff6zChQsrKipKn3zyyQOPMWrUKK1atUqTJ09Whw4dFBsbq759++rGjRuZzjt37pyaNm0qZ2dnzZo1S7Vq1dK2bds0d+5cJSYm6qOPPsp0/qJFi/Tcc8/JbrdLkmbOnCkvLy+dOHFCxYsXl/TfL3ajRo1S7969FR4eruvXrysgIEB3796Vs/P///4hOTlZ7du317FjxxQYGCgPDw/9+OOPCgoKUnR09AMx9NVXX+nHH3/UrFmz5ObmplKlSmnbtm3q27evatWqlbEVY+bye0hIiAICAjRjxgy1adNGqampiouLy3gNPUpQUJCmTZumwYMHKygoSJcvX1ZAQIBatGihXbt2qXbt2hnnpqamqlevXnrttdc0YcIEbdq0SXPmzFHx4sU1a9asp/wZAo9gACb56KOPDEkP/UhNTTVOnDhhSDI++uijjNv4+/sbkoxZs2Zluq9Lly4Zkgy73f6rj1m/fn2jbdu2v3vGatWqGV5eXkZqamrGTCNGjDAkGZMmTTIMwzCaN29ulCtXzkhKSsq43b1794wGDRoYlStXNtLT0w3DMIwBAwYYRYoUMS5evJhxXlpamvH8888bkowTJ04YhmEYhw4dMiQZ7777bqZZVq5caUgyRowYkXHszTffNIoWLWqcPHky07lhYWGGJOPQoUOGYRgZz6W7u7tx7969jPN27txpSDJWrlyZMU/FihWNRo0aZcxtGIaRmJho5M+f36hWrVrGsaioKEOS8fnnn2d67AULFhiSjLVr12Yck2QUL17cuHLlykOfY29v7weOP0y1atUyff4Pe43cf13dfz4fdrv72rZtm+n10KNHD+OFF1741Rl+ef9Xr141ChUqZHh5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MWARhmHor3/9q9599139/PPPkqR27drJ4XDIw8PD5OkAAGYiBixg165dstls2rZtmySpevXqCg8PV9++fXnnQAAA1wzkZWfPntWoUaPUtGlTbdu2TUWKFNG8efN0+PBh9evXjxAAAEhiZSBPSk5Olt1u17x583Tz5k1J0vDhwxUUFKSKFSuaPB0AIKchBvIQwzD0z3/+UxMmTNDx48clSc2aNZPD4VCzZs1Mng4AkFOxTZBHxMTEqHPnzurbt6+OHz+uChUqaMWKFdq6dSshAAD4VcRALnf58mW988478vT01Pr16+Xq6qrp06crPj5ew4YNk7Mz/8QAgF/HNkEulZqaqqioKPn7++vq1auSpP79+ys0NFQ1atQweToAQG5CDORC69atk6+vr2JjYyVJHh4estvtat++vcmTAQByI9aQc5GEhAT16tVLXbp0UWxsrEqXLq2oqCjt3buXEAAAPDFWBnKBGzduaO7cubLb7UpNTVW+fPk0duxYzZo1SyVLljR7PABALkcM5GBpaWlavny5pk2bpgsXLkiSunbtqsjISNWrV8/k6QAAeQUxkENt3rxZNptNe/fulSTVqVNHERER8vLy4p0DAQBZimsGcpiffvpJgwcPVuvWrbV3714988wzCg8P18GDB+Xt7U0IAACyHCsDOcTt27cVEhKikJAQ3blzR05OTnr99dc1d+5clStXzuzxAAB5GDFgMsMwtGrVKk2ePFmnTp2SJLVp00Z2u10NGzY0eToAgBUQAybas2ePbDabtmzZIkmqWrWqwsLC5OPjw3YAACDbcM2ACc6dO6fXXntNTZo00ZYtW1S4cGHNnj1bcXFxGjBgACEAAMhWrAxko7t372rhwoWaM2eOkpKSJElDhw5VcHCwKleubPJ0AACrIgaygWEY+uabbzR+/HgdPXpUktS4cWM5HA61bNnS5OkAAFbHNsFTFhsbq27duqlXr146evSo3NzctHz5cu3YsYMQAADkCMTAU3LlyhWNGzdOHh4eWrt2rQoUKKApU6YoPj5eI0aM4FcLAwByDLYJsti9e/e0ZMkSzZw5U1euXJEk9enTR2FhYapVq5bJ0wEA8CBiIAutX79evr6+iomJkSTVr19fdrtdnTp1MnkyAAAejbXqLHDs2DH17dtXnTp1UkxMjEqVKqVFixYpOjqaEAAA5HisDPwBSUlJmj9/viIiIpSSkiIXFxeNGTNGAQEBKlWqlNnjAQDwuxADTyA9PV0rVqzQ1KlTde7cOUlS586dFRkZqfr165s8HQAAj4cYeEzbtm3TuHHjtHv3bknSs88+q/DwcPXs2ZN3DgQA5EpcM/A7nT59Wq+88opatmyp3bt3q1ixYgoJCVFMTIx69epFCAAAci1WBn7DnTt3FBYWpuDgYN2+fVtOTk4aNWqU5s2bJzc3N7PHAwDgDyMGHsEwDH3xxReaNGmSTp48KUlq1aqVHA6HXnzxRZOnAwAg6xADDxEdHS2bzaZNmzZJkipXrqzQ0FANHDiQ7QAAQJ7DNQP/48KFC3rjjTfUqFEjbdq0SYUKFZK/v7+OHDmiQYMGEQIAgDyJlQFJKSkpeu+99xQYGKgbN25IkgYNGqQFCxaoatWqJk8HAMDTZfkYWL16tfz8/BQfHy9JatSokex2u1q3bm3yZAAAZA/LbhPExcWpe/fu8vb2Vnx8vMqVK6dly5Zp586dhAAAwFIsFwNXr16Vn5+f3N3dtWbNGuXPn1+TJk1SQkKCXn31Vbm4uJg9IgAA2coy2wRpaWlaunSpZsyYoUuXLkmSevbsqfDwcNWuXdvk6QAAMI8lYuCHH36QzWbTgQMHJEn16tWT3W5Xly5dTJ4MAADz5eltghMnTsjHx0ft27fXgQMHVKJECS1cuFD79+8nBAAA+D95cmXg5s2bCg4OVlhYmO7evStnZ2e99dZbCgwMVJkyZcweDwCAHCVPxUB6ero+/fRTTZkyRWfOnJEkdejQQXa7Xe7u7iZPBwBAzpRnYmDHjh2y2WzasWOHJKlmzZoKDw9X7969eedAAAB+Ra6/ZuDMmTMaMWKEmjdvrh07dqhIkSIKCgrSoUOH1KdPH0IAAIDfkGtXBpKTkxUREaH58+fr1q1bkqSRI0dq/vz5qlChgsnTAQCQe+S6GDAMQ19++aUmTJigxMRESVLz5s21cOFCNWnSxNzhAADIhXLVNsGBAwfUsWNH9e/fX4mJiapYsaI++eQTbd26lRAAAOAJ5YoYuHTpkt5++201bNhQ33//vQoWLKgZM2boyJEjGjp0KNcFAADwB+TobYLU1FQtXrxYAQEBunbtmiRpwIABCgkJUfXq1U2dDQCAvCLHxsCaNWvk5+enuLg4SZKnp6ccDofatm1r8mQAAOQtOW6bID4+Xj169FD37t0VFxenMmXKaMmSJdqzZw8hAADAU5BjYuD69euaOHGiGjRooG+//Vb58uXT+PHjlZCQoNGjR/OrhQEAeEpM3yZIS0vThx9+qOnTp+vixYuSJC8vL0VERKhu3bomTwcAQN5nagxs2rRJNptN0dHRkqS6desqMjJS3bt3N3MsAAAsxdRtglWrVik6OlrFixdXZGSkDh48SAgAAJDNnAzDMMx68MuXL2v27NmaMWOGypYta9YYQJYwDEOpqamSpPz58/P+F08JzzOQ9UyNAQAAYL4c89MEAADAHMQAAAAWRwwAAGBxxAAAABZHDAAAYHHEAAAAFkcMAABgccQAAAAWRwwAAGBxxAAAABZHDAAAYHHEAAAAFkcMAABgccQAAAAWRwwAAGBxxAAAABZHDAAAYHHEAAAAFkcMAABgccQAAAAWRwwAAGBxxAAAABZHDAAAYHHEAAAAFkcMAABgccQAAAAWRwwAAGBxxAAAABZHDAAAYHHEAAAAFkcMAABgccQAAAAWRwwAAGBxxAAAABZHDAAAYHHEAAAAFkcMAABgccQAAAAWRwwAAGBxxAAAABZHDAAAYHHEAAAAFkcMAABgccQAAAAWRwwAAGBxxAAAABZHDAAAYHHEAAAAFkcMAABgccQAAAAWRwwAAGBxxAAAABZHDAAAYHHEAAAAFkcMAABgccQAAAAWRwwAAGBxxAAAABZHDAAAYHHEAAAAFkcMAABgccQAAAAW9/8A+ofifPJUcTsAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig,endPts = BarIllusion(np.pi/6,0.2,10);\n", "plt.title('First Poggendorf illusion');\n", "savefig(fig,'FirstPoggendorffIllusion.png')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We next try to explain Poggendorff's illusion using the sub-Riemannian Reeds-Shepp model. The red curve supposedly accounts for our brain's completion of the left black line, in the space in between the two gray lines. " ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:29.072265Z", "iopub.status.busy": "2024-02-23T18:45:29.072178Z", "iopub.status.idle": "2024-02-23T18:45:29.561947Z", "shell.execute_reply": "2024-02-23T18:45:29.561641Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Field verbosity defaults to 1\n", "Field eps defaults to 0.1\n", "Field seedRadius defaults to 0\n", "Fast marching solver completed in 0.227884 s.\n", "Field geodesicStep defaults to 0.25\n", "Field geodesicCausalityTolerance defaults to 4\n", "Field geodesicTargetTolerance defaults to 6\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Field verbosity defaults to 1\n", "Field eps defaults to 0.1\n", "Field seedRadius defaults to 0\n", "Fast marching solver completed in 0.235926 s.\n", "Field geodesicStep defaults to 0.25\n", "Field geodesicCausalityTolerance defaults to 4\n", "Field geodesicTargetTolerance defaults to 6\n", "Geodesic ODE solver seems to have failed for tip {0.173205,0.04,0.523599}.\n" ] } ], "source": [ "geoOpt,geoAll,tipValues = ReedsSheppContinuation(endPts[0,:],endPts[1,:],0.02,xi=0.25)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:29.563467Z", "iopub.status.busy": "2024-02-23T18:45:29.563361Z", "iopub.status.idle": "2024-02-23T18:45:29.595774Z", "shell.execute_reply": "2024-02-23T18:45:29.595542Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGZCAYAAAAUzjLvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA2+klEQVR4nO3dd1iV9eP/8SdLcafiNiVxz7RQs8ydE7e5NWfz4xHNjeEERMY5ljYuNT6Wlp9v45NfTa2fOUoN90BEUFNz762AcP/+4CuJoxzgDdyvx3V1XfHm5pwX9znIi/f7fe7jZBiGgYiIiFiWs9kBRERExFwqAyIiIhanMiAiImJxKgMiIiIWpzIgIiJicSoDIiIiFqcyICIiYnEqAyIiIhanMiAiImJxKgOZQGRkJJ06daJMmTLkzJmTYsWK8dJLLzFy5MjHur2IiAicnJzYsmXLE+Vq3LgxjRs3fqLbyIrWrFmDk5MTa9asMTvKUzNnzhwiIiLuGT906BBOTk73/ZwZjh8/zqRJk9ixY8c9n5s0aRJOTk5PP1Qm8cYbb+Dp6ZlmzMnJiUmTJj3S7egcW5Or2QGsbtmyZbRv357GjRsTHBxMiRIlOHHiBFu2bOHrr78mNDTUtGxz5swx7b7NVKdOHTZu3EjVqlXNjvLUzJkzBw8PD95444004yVKlGDjxo14eXmZE+wux48fZ/LkyXh6evL888+n+dzgwYNp1aqVOcEyqY0bN1K6dOlH+hqdY2tSGTBZcHAwzz33HCtXrsTV9a+Ho0ePHgQHB5uS6fr16+TOndtSvwzvlD9/furXr292jEwhZ86cWeZclC5d+pF/8WUGN27cwN3dPUP+4k7vxy6rnmP5Z1omMNm5c+fw8PBIUwRuc3ZO+/A8aMrP09Pznr/oAC5cuMCAAQMoVKgQefLkwcfHh4MHD6Y5pnHjxlSvXp1169bRoEEDcufOzcCBA1M/d/cyQUJCAtOmTaNy5crkzJmTIkWKMGDAAM6cOXNPpnbt2rF06VJq165Nrly5qFKlCkuXLgVSljKqVKlCnjx5qFu37j1LGlu2bKFHjx54enqSK1cuPD096dmzJ4cPH05z3O0lkdWrV/P222/j4eFB4cKF6dy5M8ePH79vphUrVlCnTh1y5cpF5cqVmT9/fprj7rdMkBF5HiQyMhIfHx8KFy6Mu7s7Xl5eDB8+PM0xv/32G82aNSNfvnzkzp2bBg0asGzZssfK4unpyZ49e1i7di1OTk44OTmlTjffb5ng9lTxnj176NmzJwUKFKBYsWIMHDiQS5cupR73d0sMdz+X9+/fz4ABA6hQoQK5c+emVKlS+Pj4sHv37tRj1qxZg7e3NwADBgxIzXr7du43hZ2cnExwcHDq87Vo0aL069ePo0ePpjnu9s/B5s2badiwIblz56ZcuXIEBQWRnJx838fp7u/nvffe49NPP6VixYrkzJmTqlWr8vXXX9/3Mfnpp58YOHAgRYoUIXfu3MTHxwOwePFiXnrpJfLkyUPevHlp2bIl27dvv+f+IiIiqFSpEjlz5qRKlSosWLDggbnu/jfj2LFjDB06lGeffZYcOXJQsmRJunbtyqlTpzL1OZaMpTJgspdeeonIyEiGDRtGZGQkiYmJ6XbbgwYNwtnZmUWLFmG329m0aRONGzfm4sWLaY47ceIEffr0oVevXvz444+8884797295ORkOnToQFBQEL169WLZsmUEBQXx888/07hxY27cuJHm+J07dzJu3DjGjBnDd999R4ECBejcuTP+/v7MnTuXgIAAFi5cyKVLl2jXrl2arz906BCVKlXCbrezcuVKZsyYwYkTJ/D29ubs2bP3ZBs8eDBubm4sWrSI4OBg1qxZQ58+fe45bufOnYwcORJfX19++OEHatasyaBBg1i3bt3fnsuMynO3lStX0rBhQ44cOUJYWBjLly/Hz8+PU6dOpR6zdu1amjZtyqVLl5g3bx5fffUV+fLlw8fHh8WLFz9ylu+//55y5cpRu3ZtNm7cyMaNG/n+++//MWuXLl2oWLEi3377LWPHjmXRokX4+vr+49fdz/HjxylcuDBBQUGsWLGC2bNn4+rqSr169di3bx+Qsnzz+eefA+Dn55eadfDgwQ+83bfffpsxY8bQokULlixZwtSpU1mxYgUNGjS453E7efIkvXv3pk+fPixZsoTWrVszbtw4vvzyy4f6HpYsWcKsWbOYMmUK33zzDWXLlqVnz55888039xw7cOBA3Nzc+OKLL/jmm29wc3MjICCAnj17UrVqVf7zn//wxRdfcOXKFRo2bEh0dHTq10ZERDBgwACqVKnCt99+i5+fH1OnTuWXX375x4zHjh3D29ub77//nhEjRrB8+XLsdjsFChTgwoULmf4cSwYyxFRnz541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fQEiIiJPIFMvEyQmJjJnzhwmTZrExYsXAejWrRvBwcF4enqamk1ERCS7yLRlYMWKFfj6+hITEwNArVq1cDgcNGrUyORkIiIi2UumWyaIjY2lXbt2tG7dmpiYGDw8PPjss8/YunWrioCIiEgGyDRl4NKlS7z//vtUr16dZcuW4erqyogRI4iLi2PIkCF6a2EREZEMYvoyQVJSEvPnz2fChAmcOXMGgDZt2hAWFkalSpVMTiciIpL9mVoG1q1bh81mY8eOHQBUqlSJ8PBwWrdubWYsERERSzF1mWDx4sXs2LGDAgUKEB4ezu7du1UEREREnjInwzAMs+783LlzTJkyBT8/P4oUKWJWDJF0YRgGiYmJALi5uen6FxlE51kk/ZlaBkRERMR8mebVBCIiImIOlQERERGLUxkQERGxOJUBERERi1MZEBERsTiVAREREYtTGRAREbE4lQERERGLUxkQERGxOJUBERERi1MZEBERsTiVAREREYtTGRAREbE4lQERERGLUxkQERGxOJUBERERi1MZEBERsTiVAREREYtTGRAREbE4lQERERGLUxkQERGxOJUBERERi1MZEBERsTiVAREREYtTGRAREbE4lQERERGLUxkQERGxOJUBERERi1MZEBERsTiVAREREYtTGRAREbE4lQERERGLUxkQERGxOJUBERERi1MZEBERsTiVAREREYtTGRAREbE4lQERERGLUxkQERGxOJUBERERi1MZEBERsTiVAREREYtTGRAREbE4lQERERGLUxkQERGxOJUBERERi1MZEBERsTiVAREREYtTGRAREbE4lQERERGLUxkQERGxOJUBERERi1MZEBERsTiVAREREYtTGRAREbE4lQERERGLUxkQERGxOJUBERERi1MZEBERsTiVAREREYtTGRAREbE4lQERERGL+/81H+i4P1NDJgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig,_ = BarIllusion(np.pi/6,0.2,10);\n", "plt.title('Subriemannian continuation prediction');\n", "plt.plot(geoOpt[0],geoOpt[1],color='red');\n", "savefig(fig,'FirstPoggendorffIllusion_Prediction.png')" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:29.597104Z", "iopub.status.busy": "2024-02-23T18:45:29.597030Z", "iopub.status.idle": "2024-02-23T18:45:29.630201Z", "shell.execute_reply": "2024-02-23T18:45:29.629939Z" } }, "outputs": [ { "data": { "image/png": "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S5cuzTCroKenJx4eHqxateq+j713mtWHPc+j6NChAx06dCAxMZEtW7YQFBREr169KFmyJPXr18/yx90rPSxcuHAh0+/Onz+Pp6dnhmWPu7/ZfTxFciuFAZG/uXPnDoMHDyYlJSXDlKJWVlaZ/orft28fERERFC9e/LGew9HRkSVLltCnTx/at2/P4sWL6dChAwBt27blv//9L6mpqdStW/fpd+gROTg40LhxY9zc3Pjtt9/YvXv3I32pP+nj0tWvXx8nJye++eYbunXrZlp+9uxZ1q1bR9euXR+5/vu10JjreIrkNgoDYrFOnz7Nli1bSEtL4/r16+zevZv58+cTHR3NzJkzM/zF3rZtWyZNmsS4ceNo3LgxR44cYeLEiZQqVeqJ7iFgZ2fHokWLGDx4MF27dmXhwoX07NmTHj168O233xIQEEBgYCB16tTBzs6Os2fPsn79ejp06ECnTp2yZP/Hjh3L2bNn8ff3x8fHh2vXrhEeHo6dnR2NGzfO8sfdj5ubG2PGjGH06NH069ePnj17Ehsby4QJE3B0dHzkOeOrVq3KkiVL+Oyzz3j++eextramVq1aT308N27ciL+/P2PHjmXs2LGPtW8iuYnCgFisjz/+mI8//hgbGxsKFChA6dKladeuHUOGDOG5557LsO6HH37I7du3mTdvHsHBwTz33HPMnTuXpUuXZhqE9qisra2ZN28e+fPnp0+fPty6dYvBgwfzyy+/EB4eztdff01QUBC2trb4+PjQuHFjqlatmgV7flfdunXZsWMH77//PpcvX8bNzY1atWqxbt06KleunOWPe5APPviAwoULM3v2bBYvXoyTkxNNmjRh6tSpGS4rfJjAwEAOHDjA6NGjuX79OoZhYBgGNjY2T3U8DcMgNTWVtLS0x94vkdxEsxaKiIhYOF1NICIiYuEUBkRERCycwoCIiIiFUxgQERGxcAoDIiIiFk5hQERExMIpDIiIiFg4hQERERELpzAgIiJi4RQGRERELJzCgIiIiIVTGBAREbFwCgMiIiIWTmFARETEwikMiIiIWDiFAREREQunMCAiImLhFAZEREQsnMKAiIiIhVMYEBERsXAKAyIiIhZOYUBERMTCKQyIiIhYOIUBERERC6cwICIiYuEUBkRERCycwoCIiIiFUxgQERGxcAoDIiIiFk5hQERExMIpDIiIiFg4hQER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6KOPuHLlCgDt2rVj5syZlCtXzszViYiImI9FhIENGzYQGBjIvn37AKhUqRJhYWG0bNnSzJWJiIiYX57uJjh58iRdu3aladOm7Nu3Dzc3N2bPns3evXsVBERERP6/PNkyEB8fz7Rp0wgJCSExMRFra2tef/11JkyYgKenp7nLExERyVHyVBhIS0vj22+/ZdSoUZw/fx6AZs2aERYWRtWqVc1cnYiISM6UZ8LA1q1bCQwMZOvWrQCULl2amTNn0qFDB905UERE5CFy/ZiB8+fP079/f+rVq8fWrVvJly8fQUFBHDhwgI4dOyoIiIiI/INc2zKQkJDArFmzmDp1Krdu3QJgwIABTJ06FW9vbzNXJyIiknvkujBgGAZLly5lxIgRnDp1CoB69eoxe/Zsateubd7iREREcqFc1U2wb98+/P396dKlC6dOnaJo0aJ88803bN68WUFARETkCeWKMHDlyhXeeOMNatSowfr163F0dOSjjz7iyJEj9O7dW+MCREREnkKO7iZITk5mzpw5jB8/nmvXrgHQrVs3goODKVmypFlrExERyStybBhYtWoVw4YN4/DhwwD4+fkRHh5O48aNzVyZiIhI3pLjugmOHj1K27Ztad26NYcPH8bT05PPP/+cnTt3KgiIiIg8AzkmDFy/fp2RI0dSpUoVVqxYga2tLcOHDycqKoohQ4ZoamEREZFnxOzdBKmpqcyfP58PP/yQy5cvAxAQEMCsWbOoUKGCmasTERHJ+8waBjZt2kRgYCB79uwBoEKFCoSGhtK6dWtzliUiImJRzNpNsHjxYvbs2YOrqyuhoaHs379fQUBERCSbWRmGYZjryWNjY5k4cSIfffQRhQoVMlcZIlnCMAySk5MBsLOz0/0vnhEdZ5GsZ9YwICIiIuaXY64mEBEREfNQGBAREbFwCgMiIiIWTmFARETEwikMiIiIWDiFAREREQunMCAiImLhFAZEREQsnMKAiIiIhVMYEBERsXAKAyIiIhZOYUBERMTCKQyIiIhYOIUBERERC6cwICIiYuEUBkRERCycwoCIiIiFUxgQERGxcAoDIiIiFk5hQERExMIpDIiIiFg4hQERERELpzAgIiJi4RQGRERELJzCgIiIiIVTGBAREbFwCgMiIiIWTmFARETEwikMiIiIWDiFAREREQunMCAiImLhFAZEREQsnMKAiIiIhVMYEBERsXAKAyIiIhZOYUBERMTCKQyIiIhYOIUBERERC6cwICIiYuEUBkRERCycwoCIiIiFUxgQERGxcAoDIiIiFk5hQERExMIpDIiIiFg4hQERERELpzAgIiJi4RQGRERELJzCgIiIiIVTGBAREbFwCgMiIiIWTmFARETEwikMiIiIWDiFAREREQunMCAiImLhFAZEREQsnMKAiIiIhVMYEBERsXAKAyIiIhZOYUBERMTCKQyIiIhYOIUBERERC/f/AAxoicmXUcp8AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig,_ = BarIllusion(np.pi/6,0.2,10);\n", "plt.title('First Poggendorf illusion : subriemannian continuations.\\n Darker is shorter.',fontdict={'verticalalignment':'top'});\n", "for geo,lvl in zip(geoAll,toGray(tipValues)):\n", " plt.plot(geo[0],geo[1],color=str(lvl));\n", "savefig(fig,'FirstPoggendorffIllusion_Choices.png')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Poggendorff's round illusion\n", "\n", "We next turn to a second illusion due to Poggendorff, involving the completion of a circular shape." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:29.631607Z", "iopub.status.busy": "2024-02-23T18:45:29.631532Z", "iopub.status.idle": "2024-02-23T18:45:29.634485Z", "shell.execute_reply": "2024-02-23T18:45:29.634278Z" } }, "outputs": [], "source": [ "def RoundIllusion(theta1,theta2,w):\n", " c1,s1 = np.cos(theta1),np.sin(theta1)\n", " c2,s2 = np.cos(theta2),np.sin(theta2)\n", " fig = plt.figure()\n", " plt.axis('equal')\n", " plt.axis('off')\n", " plt.plot([c1,c1],[-1,1],color='grey')\n", " plt.plot([c2,c2],[-1,1],color='grey')\n", " I1 = np.linspace(-theta1,theta1,100)\n", " I2 = np.linspace(theta2,2*np.pi-theta2,100)\n", " plt.plot([np.cos(t) for t in I1],[np.sin(t) for t in I1],color='black',solid_capstyle='round')\n", " plt.plot([np.cos(t) for t in I2],[np.sin(t) for t in I2],color='black',solid_capstyle='round')\n", " return fig, np.array([[c1,s1,theta1+np.pi/2],[c2,s2,theta2+np.pi/2]])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The dark line is circular, yet most people feel that the occluded parts to not connect well." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:29.635710Z", "iopub.status.busy": "2024-02-23T18:45:29.635629Z", "iopub.status.idle": "2024-02-23T18:45:29.666962Z", "shell.execute_reply": "2024-02-23T18:45:29.666738Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig,endPts = RoundIllusion(np.pi/6,np.pi/3,6);\n", "plt.title('Round Poggendorf illusion');\n", "savefig(fig,'RoundPoggendorffIllusion.png')" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:29.668241Z", "iopub.status.busy": "2024-02-23T18:45:29.668157Z", "iopub.status.idle": "2024-02-23T18:45:30.494560Z", "shell.execute_reply": "2024-02-23T18:45:30.494254Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Field verbosity defaults to 1\n", "Field eps defaults to 0.1\n", "Field seedRadius defaults to 0\n", "Fast marching solver completed in 0.384822 s.\n", "Field geodesicStep defaults to 0.25\n", "Field geodesicCausalityTolerance defaults to 4\n", "Field geodesicTargetTolerance defaults to 6\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Field verbosity defaults to 1\n", "Field eps defaults to 0.1\n", "Field seedRadius defaults to 0\n", "Fast marching solver completed in 0.409666 s.\n", "Field geodesicStep defaults to 0.25\n", "Field geodesicCausalityTolerance defaults to 4\n", "Field geodesicTargetTolerance defaults to 6\n" ] } ], "source": [ "geoOpt,geoAll,tipValues = ReedsSheppContinuation(endPts[0,:],endPts[1,:],0.04,xi=0.5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our brain's completion of the occluded part, according to the considered sub-Riemannian model." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:30.496096Z", "iopub.status.busy": "2024-02-23T18:45:30.496004Z", "iopub.status.idle": "2024-02-23T18:45:30.530315Z", "shell.execute_reply": "2024-02-23T18:45:30.530089Z" } }, "outputs": [ { "data": { "image/png": "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enV69+5N4cKFOXXqFMuWLbOXu48//piGDRtSt25d+vbtS6ZMmRg/fjx79+5l5syZD7W/evny5Zk1axazZ88mKCgIb29vypcv/6/ui81mo0OHDkyaNIlixYpRsWJFNm/ezIwZM+5YtlmzZkyePJnSpUtToUIFtm3bxvDhw+94ES1WrBg+Pj5Mnz6dMmXKkCVLFvLnz5+qNKcoVaoUXbt25YsvvsDNzY0mTZpw4sQJBgwYQKFChR56z4d7yZMnD/Xq1WPAgAH4+voyfvx4Dh48eMfuhXcTGBjI4MGDee+99zh27BiNGzcmZ86cREZGsnnzZnx9ffnggw9wc3NjyJAhdOnShVatWvHyyy9z9epVBg0adNdNB381ePBglixZwhNPPMG7775L+fLluXr1KkuXLqVPnz6ULl3aqR9jSTsqA4b179+fhQsXMnLkSM6dO0dcXBwBAQE0aNCAfv36pZro85///Ifr168zefJkPvvsM0JDQ5kzZw4tWrS4621PnDiRqVOn0rZtW+Li4qhbty6jR4++Y5v9/XJ3dyciIoLRo0czdepUPv74Yzw8PChYsCC1a9f+1y8efzZjxgx69erFW2+9RUJCAjVr1mT58uU89dRTj+x3OGOeJ598krVr1zJ48GBef/11bt26RcGCBVNN1qtduzYrV65k4MCBvPjiiyQlJVGxYkUiIiJo1qzZQ/3eDz74gHPnzvHyyy9z48YNihQp8o/bn+9HyhE0hw0bRnR0NPXq1WPRokV3HDZ39OjReHp68vHHHxMdHU2VKlWYN28e/fv3T7Vc5syZmTRpEh988AGNGjUiPj6egQMH3vOQuxMmTKBYsWJMnDiRcePGkT17dho3bszHH3981+3X/0bz5s0JDg6mf//+nDp1imLFijF9+nTatGlzXz/fr18/ypYty+jRo5k5cyZxcXHky5ePkJAQXn31VftyL730EgCffvopTz/9NIGBgbz77rusWbPmHw+hXaBAATZv3szAgQP55JNPuHz5Mn5+fjz++OP29YIzP8aSdmzWn8eaRETkgdlsNnr06MHYsWNNRxF5KJozICIi4uJUBkRERFyc5gyIiPxL2toq6Z1GBkRERFycyoCIiIiLUxkQERFxcSoDIiIiLk5lQERExMWpDIiIiLg4lQEREREXpzIgIiLi4lQGREREXJzKgIiIiItTGRAREXFxKgMi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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig,_ = RoundIllusion(np.pi/6,np.pi/3,6);\n", "plt.title('Subriemannian continuation prediction');\n", "plt.plot(geoOpt[0],geoOpt[1],color='red');\n", "savefig(fig,'RoundPoggendorffIllusion_Prediction.png')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "execution": { "iopub.execute_input": "2024-02-23T18:45:30.531547Z", "iopub.status.busy": "2024-02-23T18:45:30.531469Z", "iopub.status.idle": "2024-02-23T18:45:30.567075Z", "shell.execute_reply": "2024-02-23T18:45:30.566844Z" } }, "outputs": [ { "data": { "image/png": "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z548ePCAypUr06RJE8LCwnB1daVSpUrUqVMHY2NjGjduTOPGjZ/7NIviScqAgdHpdHTt2pXg4GAqVarEiRMnKF++vNqxhCgVnvWDMTs7m/j4eOLi4khNTdUPNzU1xcHBAQcHh1x7+SuKQlhYGEeOHOHOnTvA47MSenl54e/vj52dHfB4f4L58+dz7do1AFxdXXnvvfcwNjYmKCiIy5cvY2FhQevWrbl16xYeHh5UrVoVV1dX/QWSco5QeN7TLIoXOQOhgfn8888JDg7GzMyMzZs3SxEQohgwMjLC0dGROnXq4O7ujqOjI1qtloyMDO7cucOFCxe4evUq9+/fJzs7G41GQ61atXjjjTfo3bs3VatWRafTcebMGb799luCg4OJi4ujTp06zJs3j9GjR2Nra0t4eDjvvPMOe/bs4cCBA7Rv3560tDR27NiBk5MTV69eJTY2lvj4eBRFYd++fbn2bxCll1yU3oD8+uuvfPbZZwAsXrwYHx8flRMJIf7OysoKKysrqlSpQkJCAvfu3SMpKYnk5GSSk5PRarXY2dnh4OCAtbU1rq6uuLq6cuvWLY4cOcLNmze5ePEiFy9epFatWjRt2pT27dvTrFkzFi1axN69e/n55585fPgwn332GTVq1GDu3Lns27ePJk2acOnSJczMzLC2tubhw4ecPn1alhUGQDYTGIjbt29Tv3597t27x7Bhw1iwYIHakYQodQprlXlGRgb379/n/v37pKen64ebmpri6OiIvb29fjPCnTt3CAkJ4erVq/rxXF1dadasGVWqVOHo0aPMmTNHv89B586defjwIePHj8fY2JhGjRphaWmJn58fbm5uaDQaunfvjr29fZFOsyhaspnAAGRnZ9OvXz/u3btHgwYN+Prrr9WOJIR4CqamplSoUAFPT09q166Ng4ODfjPC7du3uXDhAteuXePBgwc4OzvTrVs33nrrLTw9PfVXSly1ahWrVq3CycmJ7777jqCgIAC2bt1KREQE06ZN029qSExM5NKlSyQkJOivdKjT6VR+FURhkjJgAKZNm8b+/fuxsrJi3bp1mJubqx1JCPEMNBoN1tbWuLi44OXlhYuLCzY2NsDj6xyEh4dz7tw5oqKisLCwICgoiCFDhtCgQQO0Wi23bt1i/fr1bNiwgbZt2zJlyhTKli1LREQEv//+u/4qh1euXCE6OprLly/r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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig,_ = RoundIllusion(np.pi/6,np.pi/3,6);\n", "plt.title('Round Poggendorf illusion : subriemannian continuations.\\n Darker is shorter.');\n", "for geo,lvl in zip(geoAll,toGray(tipValues)):\n", " plt.plot(geo[0],geo[1],color=str(lvl));\n", "savefig(fig,'RoundPoggendorffIllusion_Choices.png')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Format de la Cellule Texte Brut", "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.12.1" }, "latex_envs": { "LaTeX_envs_menu_present": true, "autocomplete": false, "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 1, "hotkeys": { "equation": "Ctrl-E", "itemize": "Ctrl-I" }, "labels_anchors": false, "latex_user_defs": false, "report_style_numbering": false, "user_envs_cfg": false } }, "nbformat": 4, "nbformat_minor": 1 }