{ "metadata": { "name": "", "signature": "sha256:4c88829b3b164902f58d411e56ccfd53a9700a0da1c0f0a51a138cd9de7cceb5" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Active Contours using Parameteric Curves" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This tour explores image segmentation using parametric active contours.\n", "$\\newcommand{\\dotp}[2]{\\langle #1, #2 \\rangle}\n", "\\newcommand{\\qandq}{\\quad\\text{and}\\quad}\n", "\\newcommand{\\qwhereq}{\\quad\\text{where}\\quad}\n", "\\newcommand{\\qifq}{ \\quad \\text{if} \\quad }\n", "\\newcommand{\\ZZ}{\\mathbb{Z}}\n", "\\newcommand{\\RR}{\\mathbb{R}}\n", "\\newcommand{\\CC}{\\mathbb{C}}\n", "\\newcommand{\\pa}[1]{\\left(#1\\right)}\n", "\\newcommand{\\si}{\\sigma}\n", "\\newcommand{\\Nn}{\\mathcal{N}}\n", "\\newcommand{\\Bb}{\\mathcal{B}}\n", "\\newcommand{\\EE}{\\mathbb{E}}\n", "\\newcommand{\\norm}[1]{\\|#1\\|}\n", "\\newcommand{\\abs}[1]{\\left|#1\\right|}\n", "\\newcommand{\\choice}[1]{ \\left\\{ \\begin{array}{l} #1 \\end{array} \\right. }\n", "\\newcommand{\\al}{\\alpha}\n", "\\newcommand{\\la}{\\lambda}\n", "\\newcommand{\\ga}{\\gamma}\n", "\\newcommand{\\Ga}{\\Gamma}\n", "\\newcommand{\\La}{\\Lambda}\n", "\\newcommand{\\si}{\\sigma}\n", "\\newcommand{\\Si}{\\Sigma}\n", "\\newcommand{\\be}{\\beta}\n", "\\newcommand{\\de}{\\delta}\n", "\\newcommand{\\De}{\\Delta}\n", "\\renewcommand{\\phi}{\\varphi}\n", "\\renewcommand{\\th}{\\theta}\n", "\\newcommand{\\om}{\\omega}\n", "\\newcommand{\\Om}{\\Omega}\n", "$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Important:* You need to download the file `nt_toolbox.py` from the \n", "root of the github repository. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "from nt_toolbox import *\n", "%load_ext autoreload\n", "%autoreload 2" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n" ] } ], "prompt_number": 196 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Parameteric Curves\n", "-------------------\n", "\n", "In this tours, the active contours are represented using parametric\n", "curve $ \\ga : [0,1] \\rightarrow \\RR^2 $. \n", "\n", "\n", "This curve is discretized using a piewise linear curve with \n", "$p$ segments, and is stored as a complex vector of points in the plane\n", "$\\ga \\in \\CC^p$.\n", "\n", "Initial polygon." ] }, { "cell_type": "code", "collapsed": false, "input": [ "gamma0 = array([.78, .14, .42, .18, .32, .16, .75, .83, .57, .68, .46, .40, .72, .79, .91, .90]) + 1j*array([.87, .82, .75, .63, .34, .17, .08, .46, .50, .25, .27, .57, .73, .57, .75, .79])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Display the initial curve." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def periodize(gamma): return concatenate((gamma, [gamma[0]]));\n", "def cplot(gamma,s='b',lw=1): plot(real(periodize(gamma)), imag(periodize(gamma)), s, linewidth=lw); axis('equal'); axis('off');\n", "cplot(gamma0,'b.-'); " ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Number of points of the discrete curve." ] }, { "cell_type": "code", "collapsed": false, "input": [ "p = 256;" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Shortcut to re-sample a curve according to arc length." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def interpc(x,xf,yf): return interp(x,xf,real(yf)) + 1j * interp(x,xf,imag(yf));\n", "def curvabs(gamma): return concatenate( ([0], cumsum( 1e-5 + abs(gamma[:-1:]-gamma[1::]) ) ) );\n", "def resample1(gamma,d): return interpc(arange(0,p)/float(p), d/d[-1],gamma);\n", "def resample(gamma): return resample1( periodize(gamma), curvabs(periodize(gamma)) );" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Initial curve $ \\ga_1(t)$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "gamma1 = resample(gamma0);" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Display the initial curve." ] }, { "cell_type": "code", "collapsed": false, "input": [ "cplot(gamma1, 'k');" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Shortcut for forward and backward finite differences." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def shiftR(c): return concatenate( ([c[-1]],c[:-1:]) );\n", "def shiftL(c): return concatenate( (c[1::],[c[0]]) );\n", "def BwdDiff(c): return c - shiftR(c);\n", "def FwdDiff(c): return shiftL(c) - c;\n", "def dotp(c1,c2): return dot(real(c1),real(c2)) + dot(imag(c1),imag(c2));" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The tangent to the curve is computed as\n", "$$ t_\\ga(s) = \\frac{\\ga'(t)}{\\norm{\\ga'(t)}} $$\n", "and the normal is $ n_\\ga(t) = t_\\ga(t)^\\bot. $\n", "\n", "Shortcut to compute the tangent and the normal to a curve." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def normalize(v): return v/maximum(abs(v),1e-10)\n", "def tangent(gamma): return normalize( FwdDiff(gamma) )\n", "def normal(gamma): return -1j*tangent(gamma)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Move the curve in the normal direction, by computing $ \\ga_1(t) \\pm \\delta n_{\\ga_1}(t) $." ] }, { "cell_type": "code", "collapsed": false, "input": [ "delta = .03;\n", "gamma2 = gamma1 + delta * normal(gamma1);\n", "gamma3 = gamma1 - delta * normal(gamma1);" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Display the curves." ] }, { "cell_type": "code", "collapsed": false, "input": [ "cplot(gamma1, 'k');\n", "cplot(gamma2, 'r--');\n", "cplot(gamma3, 'b--');\n", "axis('tight'); axis('off');" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAW8AAAEACAYAAAB8nvebAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXWYXEXWh9+auBElIUCwEAgaXIMvtri7+8J+uDvssjiL\nLhLcWVgWhwUWW2RxDx48gjuL/b4/Tk0y03N75tadvq31Ps88k8zU7aru6T636sjvQCQSiUQikUgk\nEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJlB5X6QVE\nIpHyI/vs9wb6At84+D5hzDrAGKCfH9fPf53q4NGE8dcDvwO+Bb5p8f1oB48ljF8ZGFIw9htgALAS\nsAawCDCTgx86+ZTrjmi8I5EaRTA/MAetDWtf4GYHLySM/yuwiR/TF/gfZjR3cnBbwvhtgbloa4yf\ncPBxHs8pYQ09nK2z8Oc9gX4OPinHOqqRaLwjkZyQGdNBTDOuzd+fdzAhYfwfgTULxvYF9nVwbcL4\nQ4FlmbZjbTauNzp4KWH8cKBr81gHv5TgaVYEweLAvcBbwN3APdhN5eeKLqyMROMdaXi8C6En03av\nnzv4ImHc2sBY2hrjs4vsXP8KbEhbt8DZDv6dMH4xYFjC+C+Sdp+NjqA7sDSwuv+aAzjMwd8qurAy\nEY13pG4QLAjMR1s3wm0OHk4YfwLwBz/mZ6YZzMOL7HTXwVwVhW6Elx18lMdziqRHMBPmSnmt0msp\nB9F4R8qGzIUwA23dAi8UOebvBmzJNEPcPP4IZ7vawvE7YwGzlob1W+BfDp5PGN8faMJcCA1z3G5E\nBH0cfFfpdZSSaLwjrfAuhB60NrCfJgWoBL/HfLSFboSLHFyWMP5QLAhW6Ba42sFdCeNHY8a+0Kf7\nnYPfOvtcI1VLE/Ze+roUD+aDmxOA+4FzMd+4SvHYlSQa7xrHG9suScEn70ZYgrZuhLsd3Jow/nDg\nGMwwtjSWZzoYlzB+OWBhWhvib4B3HEwsxfOL1ATNaYct32OF6YVJ/y72s4H+cU/F/NfvdHaBssfc\nAXOTfQWcA1xXyymI0XhXEMFQYFbavoFfKpJHux3wf7R+0/cGjndmdAvHb4AF2QrdCI87eDZhfE/g\nNwc/leL5RaqWLnRsQEMMcR8soFp4okr6d9qfjQD2ALYHnsCM7b/o5IlLtqtfHdgTeN+ZMa9JovHu\nAJkLofAN/ImzFKXCsasCW9D2TX6Ng5MSxu+IvXkK38B3FNkZj6BtNsJ3Dn7t/DONVDHd6dxOtvBn\nPTD/b0cGNK3R/Zb83oO9sc/UXn7952EuuTbZQKHITqw1+9mpK+PtXQi9gCZnb6jC3y8ArELbN/YD\nDi5NGL83dnRr6RL4FrjK2U6gcPxCwKK0fbN/7GBKKZ5jpOppfg92Zidb+DNH53eyLf/9A7UXM3BY\nWuCeWKzl75j/uk0xUmfxJ9YHHHxZ6scuJVVlvL1faiSWlTAImA578453cGfC+E2A42n9hv8JONfB\nAQnjV8T+MIVv6JeKuBGaYmCs7mkOjpXCfdDyPZjFwBYzuj9RBwG2EjIDsAuWjfQOZsT/QQkyhmQu\npcswd+MNmC15sbOPmwdlNd6yUtujgScdnJnw+42wjITPsWPRV9ib+BEHNyeMHwJMz7Q3e01XjUVS\n0Y3O72Rb/qwXputRCvfBN5g7IqYdloduwHrYbnxu4EL/1enSfU27QewOvA2cklSIVUnKbbyby3+P\naL3T1aXAnFhyffPXeOA9cDXrk4pMrVwslfugL1beXaqg2LeYsY2nq9pnfsyIb46Vyp8L/IdOnlhk\nN4j1gYHObgxVQ7mN95nAuw7OKPjNUGBeLK93Hv99NLAFuDZqZKCu4OIOu/Q0MS3lq1TBsV/onH+2\n8Gc/El0IdYwclr3SD/gC3I+BD9Afy8raE3uvnAtcTZ0V6ED5jfcdwPmdP37oZczIFO7U/wuukdLc\nutLWcHZmd9sbe8OXIij2rf9qpL9HBAAtCsxM2/faFeDeThh/JZZI0PI92Bs4CdwhGRfR5B9zL0yP\n5nIsU6VNllhnkPnHH8Uyysp6gyi38X4dWN+Zoe3MI3UFZmPaLr35++/BJUSINSvwYRW4YAorFztr\ndLtTmqDY1LRDajh1KpIWDcA0swvfa4+DSyiu0pGYemHhe3BLcPcljD8Z+0wWvs+uAJdQcKOZsdOU\nfw+6X0G9gSZwbbLGMjAb5rveCXga243fRSff6z67bVVsl78scAVwXlIacR6U23hvAfyjtUKaHDAM\n3KScZu0KvIkFIN6k9U79OnDFjuAtxepL4T7o6x+3lIUMPxBdCHWMCt+DU8AllIxrc6zStfD9dwy4\nNsVeoKux3Wjh++rP4J5JGL8s5o4ofP99Dq6WgrM9gc2w3fhgbCd+CZYg0SkEs2M3iB0wPfXdOvuY\nHVEFqYIagQUvh4HrTOCouWqsiAEdPhhWmA3mnw3mmBEGDoA1n6ONge3ZD5YeAK/2hCn/A5WqkKE5\n5SvScGhxYBSt35P9gKvAPZcwfhywKdMqF5vfQ3uA+1fC+M2x3WXh++05cJ+W+MlUADnMyN4H3Aiu\nFPK4S2BGfB0szfBcEtKFQ5FlL83h4JXOPlZHVNp4dweGww8PwmlHwxETyb677Ykd+zsZFDupH+x7\nNnSdy788zbv0x8G10feI1AMaiqWcFr7HHgOXcATWIcBatH0P7gyujZQsaH9Mq7vwPXcLuDcSxg/E\nMmC+i4F58MZ7XczYLoDp7FwA7oMSPPhQzJ2yB/AhVnx3IzlstEpd0VkJ4z0f9kdYDPtDTIFL+sBH\n38GRb5A9UFbiqjE5LI+82Z/eBO78hHEzA8tjRv51cHUX1a4O1LJhQrPR/BhcQhssbYr9TQpv9ieC\nayM7ADoVq9orfE/9rUi204KYz7jwffl9J0+PkQ7RaExSYmvgUnD7l+iBu2KFOXthaYcXARdgBr3T\neP/4U1ix4SnO3jM1x8LAxVhD0i+Az2Db8fDsh1hV5NpYlWWXyi0xBC0Iuh70IugH0Huge0C5+7yq\nGzX5eEPS75YE7QraD3Q06BTQ+aCViow/E/QL6EfQJ6B3/Ou9QZHxa4D+CNoetDFoddAyoCEleWqR\nKkD9/E00D+YBzsZ84Tdildmd3ugKZhVcKZgo2E12w8hMpd0mDhgKSywGj9wEQy6Cb0ZhO91hWNR2\nPK2DjG9QtTmb6oKpBM6D7cIeSBizLBaZbn5O71Tf0VgzYiJYhW6BJ4r4aPcFtikY3xvYC9x5CeO3\nZ1rArOXu9UFwCZlI6gX8UmPBsUjF0HTJgd1g+mHv672wU/25wJUk6CaFINM/OgXrKbpnUku8NJTN\neMuOIMcW7zqtcVi0u7kxax+snL6wcGcUJvLUbNRbGvcpVH32hZbAIt7Nz2k4ps9wCrjLUj5Gc8OE\nQv//R+DeSxi/EXaiKfTpngnu4oTxB2K6MYVugeuL3JDmwHRpCtIOowshUgn0JNbI4Rzg9hJsjhyw\nEpYSuBJwFWbIX8+8QnvMNYHvHTyYdVFlQaYfMTRJ7S+QLrTO8W427vP437fcpTd/f5eKap5MrRr7\nDdz3Bb/rhfnvFsRuPi2N682YURxD6+f0R2B/2vpozwF3TcL8SzMt77bl+A/BfVbCJxqJVAHqgekk\n7YUVC/0NGJccHwlmBJYGuAumaHgucDsVqI8op/Ge6GyXmReFAcaWO/YZMHGZQhfM66RywWhm7BRQ\n6EZ4CtxDCeN3B/ZrMb4PVjV2LLg2ut6gdbBqsMJg7NNY6tHyTLtBjcZ23duAu6XjtUcijYwWwXbM\nw8H9voQP3APYGLtBDAfOx7JgypaaWU7j/Yiztll5PHo3psnHtty5fgjuVcz/2uyCGQ07rwLrLwBd\n+8GAn2HQTzDgN3j0AdjgTMy4T2aqC0bbY3oJhW6Eu8Hdm7CeGWidjfBtaas7NQT4qUjBxrnYm6nl\njeo1cDUZ3Y5ESoNcOwV5nWVR7AaxLtYY+zTK0F6tnMb7UmfVR2lGr4zd1Ryt++PdBS5B2Uv7AEfR\n1i1wLbhLEsbPB8wHP34H9/WBfw+Fl2a0r8kjsR1uF9q6YHyAsZplZzUac8G0PHnMBawA7ulKriwS\nqT60NvBScqwomNmxjllLYtLW1xIQg/N+8JkdpMpfL6fxvsbBlilHL4RlZMh/Nestj/c76XJQzAXT\nHGBMcsGUQochB9Rk35MCiHoeK0gofD5vVoEWTCSSMzoO2zU/ggU47y/BDn05TDn1F2AfrAdnxyux\nTlx3APOl6eJTTuM9i4P3E36+B7A4rY3HhCpuqtCLVi6YVrvbz2hrBF8DJlG1WTAaRNvnMg+wcHS1\nRBoD9QG2wvzX3YGzklNcg2jCEhFOxG4ObZrJJK7EgqvdHOzc0dhK53kjq2ZahrYBxq0d3FTJtQXS\nhOV4JxnCbiS7YN6mem9SkUiDIYftmhcHd1qJHnQTbIO6cqoVWOzuZWAHB/e3N7bixjsJmY8bZ+6S\nwt+Nw9J1Cne4U1zV7m4ZgrVpKnTDzERxF0wV7no1okR6EpFIo9Ad82GPxVRNO0SW/30usEB7GuFV\nabzbQ7a7nY/WO9t5gDUdPJkw3lWxUe+JFR0VGvW5MOmAJBfMRHJ8PsVfL/Xza9gbXC2diCKREqHT\nsVqMM8GFZJOcjH2mDk49E1wH/Ldt17E6REVuRILxglcENwr+JNhasGhndQVypgkrRFoDC3hcADyE\npS9+BfwX6wxyCNZfbzTmmukUglUEEhTJH9cY0CTQup2dKxKpPbQQ6EbQBND63s2Shrmwz2731DPB\nwCq3Ufkj6C0YI9hMcIzgOsELstTDpPHDit0IqoTBWIxgJ0wf4TZMA+ZHbGd8M3ACsC0WCJ4u7QP7\nG9tvsjmKjVoMNAW0ZtYnEInUNvodaDzoLtBcKS96AEt/LhnVbKTKjqxq6gPsDtnSXTHeQYKUaFXR\nE5iTti6YubG0o/EOXtsYvt4fZnwZxu1svfemukhkx7rpnak7toOWwl6PIm2wIpF6R90xmYr5waWp\nX9kS2B5YrVQriMY7AU0LMDYbwOmdVVgWjuuJZcu8Xq36vMdAlyVhvRlgy1lhhV+hxx3w1fHQ8227\nWU29ST0Dy/aAl+a3gqcOFPy0HKacmNA2KxKJFNAT2xguAUzoYGwqovHuBII5sHTGwgDjEw6uruTa\nmpH5xbfE3Cn/BJ5vEZAcSItd+jBY4CcY9YWJ+bxL29TG1zCfeyQSCecMLIPu8EovJOIRNAlmE6wh\n2Ffwf0XGzSxYXzBaJQgwFjx2YvOKYj/vgB5YRs9GwBGYBObTWAXpx9iNoCnbSiPVhZw1NdBhoP94\ned9IUeRAB1jAMpj5sWyxVJ8dwR9ladGRSiNYTHCb4C3Bjz4T5mZZcDHL4w0V7Cy4QwlpkiXGYTKY\nX2KVaJGaRmNB52Cdn97BuhWtTvHuR4+BbgGdBNoRtCyoncB2vaI/mqSE3gcdAeqf8sIuwKVY4LJD\nj4dgIcEkQdrHj5QLQU/B/IKNBasWGbO0YC/B7wQzyUQXmgT7CR4RfCm4XrC5ArJKApkFO0k8CjyH\n7ciLoO1AC+S0jkhJ0R6gg02kraOUNznQ/KCN/A79CtB/QZ/6wF3S+JKeLKsH9QcNAA23rFqlqbno\ninXguR+Th25/Bvuc3++lQyK1iGCs4G+CB/1d+GvBk4LXBL/3AdNS4zADfQTwDKZPfCkmd9lBnqo2\nB30Mmqf9cZHyoJGgJXN8/CJGX4OwfqOvg24FbZHfGiqJ+qRIme2KqQv+C1853uGjwtqCVxs+z7sW\nEXQRLCeTmGz580F+Nz6qyHXbC04UbCdYMuDI1QQsjVWCvQG8B5yJNV4NfANpG9CHAfmvkZIh5wtJ\njsUaNE+23XVF1tLD7+o38XUBi1RmHRWlG3ADcBcpN1qCbs2bs1xXFikd3o2ylmCcYIrgeVl3nZDH\nGCs4QnCV4BnBt4KPBasnDO+O/fx8YOJG8O5/4EVgETqdhaSdQB9gHYgiZUHDfOXf26BTvU86S7A6\nB7Ql6JXac6WoX7JbKBW9sPZot2IJAOlmtLjYP6q8UDDSjGBd779+2GerlCTi7/3jI1rswPtiKmdX\nA59fBh8/Cc++BacLLhIkNLrINPP8/sgcd99lY6pfOs8PfR8sT3kzglx2cvm6b/JAg0FPWXA2mH5Y\nR/hryZBVFg13DeHdIUNzevjpsVL627CO2ndjDVSHCxZu4Wq5RSUt362WXV+9oAGgrUB/B81dhgn7\nAWtjsY8bMKXL77Gg9fNYu686RcNBL/vMmlBDOhBrvnAR2dJ0I9WEYKTggDIeh2bDBK0ewlL7bsAK\ndWLaUU2h4T4r5B7Q16DbfJpeXn/HoVgTgDuwG/19WFuvrbAc5eZd5CCsWjDIrVcbaFbQm6DDMxju\nYVhH+dOIu+faxe9qjxO85DNFLvBFPHkUtzisb+VR2M5oCnAxtnPKISNFDjSvf4MfWvrHjxg6EHQ1\naGNQ35wmmb0fHDjSlCq/xKRIN6fj1NPVsM5YA3NaVwXQ7Fjee2KRXQfMgp1OjiYa7tpGcI3gFMGy\nGascO6IL1ufzVKwjz7tY+e3y5DKfmkBL+aPk61iRwlmYxkkkM3KgGco4oQPGAMdgu8TJK5tcsn6A\noxUgWwqcTWYZCKVKmysv6kM2ueM5sc/ffsEzWtX1bhnmjHQGQS+1K59acnpgXTYuxPpivggcizUu\nzflurwFYZdmfMFnYuLvIjLqCVvI3v/dBt+c8YResvdfpWOemd7Cj/Vj/OwSz+ErdF2VSwmnojend\nbBa2HE3vs5FmCruuKpkf+AirPg7Cu1PfERxU+mVF2iAYINhKtlv5SrB3zlNOh304rsOOtf8B9gdG\n5jOd+nYiPSrSLuoBugyrTHzau53mzelG2BNYC2sbOBkLMh6NudeKNS5xgi29m+80pagGxAz9ZKyl\nXwA6GnR3jW8CFsc2UZuHXiiYT/ChYPfSLyvSCv9i/8tXOd4q2EEmHZsHw7A7+Z1Y4OhO//9h+Uyn\nIT4QdqsPjC2dzzwRTEJglpwevD9mSK7HbvQPA/tSUOzVEYLpfWVv2vf3UcA9BJ3+1A30JOgPIWsr\nLZ26cayAxZbWCZ7VOnlNkgWCI3kj67CzkSxXOg/mwHbU/2Fa4Ggz8tMsAbQW6EHQVz4FbStzj0Sy\no5lAe1I+iYAZgF2xKr6vscKQncgv9TSJrljAc8+wyzS3P4WUI/WxcO7NQZdkvHhNzHCn6gjfalar\nvXhK1r4wUgr8kXExWdCmHJoCDvNVH4v5ridjvuw1CajI6hxaBrQOqFd55qtXNBp0CCbW9Bkm3DR/\njhPOiXU7ehTTkb8GK75KbO0XimAneVEkb2zSvB/nwnRwAg2x/gC6N3iRnUI7gz4im4jaxthndanM\ns5dYDrohEXQVrCw4W/CB4HVfsFKSD0ECXbBskDOwbhpvY9kiy5JfhsgyoG1K/9gRQ7t7Q3Au1tsw\njw+mAxYGjgNewjShz8fkDUoenxDMJZBMvvh9We53Gv6ASRMHvAZyoBkzLDMj2gf0LihRH6gDtsf0\n7Bcq6ZIi4fiimacEhwnmzamApieWb30xdtR6DvMRFg0cdQ51B60BOh80EfQSFRMnqieKKuj1tJtk\nyemK+VX/iqWhvYkJhy1DTo0wfPbDqYK3vfGWwgyVwyp4j8ljfZ1DDnQU6I2MMYc/YoJtFXDxNDDF\njHLK42AW+mMVjTdg/uuHyBA4CkddMUW/R7FuH3PmO1+9o96gDbwb5JkyZEb0wgJglwCfYJK8R2Dp\naLlnZQjGCI6VNQJoEtylcEM8I+ZWWKL0K+wM6gY6m2w59YcBb2GVy2GzdsK90rDImhfsKbhPcG4Z\nphyOpf3cTeUCR4ByDHA2AnKgbUE3+0DufT4AmZdC4gAs6+BGrD/oA1j66ax5TCaYTinlRmX6N5MF\noaJSm2DSwmlSDasZB5wIvIx9voMQHOzzuGMSQEfIBJ4OlTUs+ExwhWCDlPmqWRiFJdg/Rg6Bo7Zo\ndtC+oIdBm+YzRwR0sjfgg3KaYEYsIPgv7EZ/C7ADOaWe+kypXQR3+lTXO5ReX3p5ZTBcWOeYDJsm\nuRxTKUNoAs4DniKwEM8nP/xZ1lChHgqR8kcwWHCOYJWcIroOWBQ4Hrsb5xo4MjQH6BisunEKaJxP\n8cuji06DMFWbZbYyTjoXcDDwOPA5Ztw2Ir/UUwAEV8rkhq8TbKZcU09bMQDTPlkj7DIt6l1/leyP\n2RW4AsuTD3q9vLvpLMGzMkXPSEt8YKVcVYBdgZWwzjLvMS1wtDRl6aCuVUGng5Yjyqx2glbaLG9g\n5dkb5jihAxYD/gy8gpVQn4f1Ky1bqpjPHClT6mkbVgY+JFhCQmeArs8eY1Bf0F8ybnB6AP/A8uaD\n9VcExwv+o6jgOQ3vw97Xu0SmyII4edEL69l4KZa72hw4mo98MkR6gqoswFNPaEWst+aroD+TnzZL\nV8xgnY1Jpr6O+UyXJIcbvaxd3vKCM6q4zPoMLHAfUn3Zy/+ttgyfTgOwTvcXZ9js9MEqRW8k4w1P\nJjRV677+0iDYRPCQ4HPBJYLVciqiGQhsDdzEtMDR/2FSjzmg/qAt/A7jS9C9OaWcRawhbl4pXr2x\narnLsBv9U1h2Qi4VlrJ2eWsLLvabmOcERwlG5zFfwvxNgSm1vbCTR2ApuBbxbsIRAdcMBT0H+muG\nz1J/4BHs7xgb/5YCn7a0Xk5Hv5mwwoJ7mRY42p78NEs8ugbTELkdq/Yqc0ZKvTFVm+XqMrmWBgHb\nYMfrr4D7gb2AAEOTDcH8fjOzr3JPPU2c/0KFa3IsjNU4BL4+Ogx0VsqxM4PGg47LcKoagp2uz6Ys\nrtBIVuYGDsG0GMoWOGqNlgTlVcXZIGhWrFruQVprs+TlT54J0+64DzPYNwPbYoa85PgMkapT3JM1\nGZmi8BPpYdhNLsA4qmv6v6fOAR0YuCawzJ9XgBMIfL0Ffavxb1RPOEy68QRgPFbemmPgSA60sN8B\nrFf6x48YugF0Cflqs4wGDsVKvj8DLgc2IEMgKw2CUYKDBI8LvpAZlqrDp+P+W2G71K6YFss+Oa0q\ny455dqz45pDg2SwH/iWZFlGkhHTD+uudg0W7cw0c2VFdK3hf27ugt0CnkK84UQOgJvLr15hEE1YZ\n+BesycAH2FF6FXLMEBHsJnhZ8LFMinX1MmZTBeMDpY8q3BCPxOIC8+WwrFBGY6mMwZK0glkFbwoO\njzvvFnTixeiN7YquAD4D9xSsfBo5BY5ao1VBz4KONINd0wLzFWaqNssFoEmgY3OesBvwO6yg5EPg\nVeyUtjhl+mAKfidYOnAnW1F8uu4nskK1EHYBnqWyN6eFsRqNbUMv9KmX7yn/Jiy1hz+Spe0F54D1\nMP/j17QKHKkH6H+gYM3ddlZXhX336gXNDroW9AX5a7P0ATbE4h2fAU9gR+dcMlJk7fLWk8mJ1g0y\nLZTQALEDbsPy30NnHAyaDzSW7A2Zl8G0VzYKnt2CxR8Ldsw4d/0iGO3v5rOmGL4M5kN7EdiOxEIA\n/Rc0mU5JTmpG0B6ge0Cfd+JNE2kXDQHtSn7NeAdjmUT/xAKO/8KOzLmULwsGCrYW3CRrl/dvmVhZ\nxDpCTcI+wwFoXUzs8DuLKwXzOyzrZfUM1yKYQVb/EWmJ96M9po67cYzCkug/wD6M7dz5dSSmBpcy\n3ajVtbuCHvcG+yrQxtFwdxbN7jNEynVkngXL1f83ZrBvwnL5B+Y5qf+QfyW4RbC9ytukulbYANOz\nD/hMaVtvvJ/MMN96mOFeLsO1kfYQ7C14uAO/31jgeywDIGWGgZqypY9pK9BqZTQ0dYgcaAzTtFkm\ngy6yXXYuOCwYdjjwNBYcuxTbLeWSkVIsRqOc5qszLsW6R6VAf8AkDZYETQCtFTDPlthOf7HwJUba\nRTC74FOZeE979MUCSjuUYNauoJVAy3f+sSLJ6GLQO6DTyE+bpQnTmTkJkyF9D9OhWZEcKuVkinGL\nC04QjJcFNiOAwkWvpsM6Sq3dwSOvA3rbTm5gn1l9DEoj/LQrFoiuhgyX+sMnu6+Scvg8mFD9mAwz\nzQzaGnQZ1vj0aTLpJ0TSoelyyrzpjvkt/4bl7b+MKT0uQk4ZIrL+pucIPhS8JviLYIlayhDJE39T\ne1IdGuI2LI/9DdsxxOoGGlbws5NA23Xw2AdgN4eRgWtq7uN5XOh1kY7ZEttlBeQAazHQJ6AbMXH9\n3EuZ6xv1xzpwXw86vwwT9sWyNa7GKmMfAw4kPFUtE4ItZO3yytUVvuYQLOezMUKlUE/GMsZCxKva\nG+uwxt6vAcFNNAT7+HTAjjwBkYychwUuU/7B1eS/Bpr/LBKO+vhA7l2YNssdmDbLsI6vzcT0WFrW\nbVgq6N3AbmRrDtAhsmYeUd2xEwhOEtwcWK/RA8sa274ES3CYkuFzBHax8qeHIwVvZCj/jwTQA1Nw\nC6zyUj/Qaxa5joShfpio1mbk125tNuxv+hDW//MGYAty0kcWjBDsJbhf1mXmvDzmaRQEPQQvKNwQ\nLwh8AgvORfaq2i7ARdipLKj1mDfcpwheFOSVrlq/KFwzYjYs4T40X3R+70JZIHC+BmCqNku5CpIc\nsABwFLZbmgKMw3ynuXUL8kbmv7J2eZcL1s/w/oskIFhAMDE8gDnkMHjkc/jlTwmPOhy0G+gQ7+++\nEBMjO9EP6A5chwmHBaf0ynp7Xq6chMbqGsH03s+UpkCnJWtjGgWBfjZtA3qdqO7XAvUAXYnps+Sp\ny9IELAucigkDTQBOx4JXZesW5AOOZetq00gouPG2xvkcbkHPgxN+P7dPMz3ZG/DdQJta6iC9sIbf\nt5DjDT/SDoID/G4oVLv7BKxiLvCDr/PpVLulekKDQA+Bbspp190DU2C7AMu5fQE4BliIHDJEBN1l\njTv+JksljFQ12saSCXZaCMsmWzDlhf2wIqxriDfiyuH9TjfLlNxC6Ip1vjkmcMaeoP1yyj+uITTS\nxwFOobTdfPoBmwHXAl9gnUr2J0PqVhp8yunGgqtknZceFxys2MG71tgeC2B2tIkbhOnSXEgZT2yR\nIggGCN45gcnFAAAgAElEQVSSfehDmAFr8ppJt6Cx0QWgPUr0YMOAnYE7sAyROzElubwyUqYi2Flw\nj2APVakWdiQVDksdPLmdMcOw09uphDdRGOBv6jFHv9TIunW8pXD/1fLYkTzmcAfRabfRHJgS5CNY\nhsh12M03l4wUxc7cNYcgVCFyeqx4J6kCehZMo/8owg33UFnfzzOj8c6JTkT+DwIep4rF7OsAh/mq\nj8F2P5Oxo+ua5NBr1LvT5vc5uM8KXg3MI45UEEFvX5m6Y+CGbG0smN28CRiEbRI+BPbNsI6ZvaTB\ncfH9U500YVHnv2a7XHk0Oq4HumCKbKcD72CKcKdiWSO5+Bu90T7Bn8LeE/xVsIJid++aQ9Zs4j6f\nmnmBYJmUBvRCrNHzJVjc5EpgqQzzjxS8I6vKjVQxAzEDs0nYZXKYDOyqeSyqOtBOhKv69cAaNj+P\nHVUXpHxdZnbwbrS4U6oDfFHUIX4HnEZgri9wK3Aw4WX3Lef9p2D3rNdHyssiWMpRYHcUrQiaCArW\nRKgNdEUKQZ9Czsa0sPNI6esn2ESwaKkfO1K9+FNV2U5Q8bRWQby/LFREf1fgJYL95zoUa8VVh3mj\nOhv0fwEXbIydYoLKjdtdgQWNdhLc7kvS75JJuEYaHEE3wYWyJswx/a8e8P7OWwMjxA5rSHw5YYpl\nTaDbQaeFrbIW0J9AR6YcPDNWrl4yzWrBmoIvBTfIlPpi5khkKoKegj1l8rIfCU4WBFX7RpmDKsNX\nzD0u832F0AfTe945cMZBWCOBOhNx14GgU1MOXgR4kxK6S/yHM5YwRzpEMI9MN/1DpRAM83IH9wgu\nK8PyIiH4YMekDEfsuTH/d2DT0nrUPdGuphGRCofpxsyb6pGtD+lYwWmC56ORjpQC/74qWuQlWMif\nyj8Q7KaYJlydeF/YRwrXdN4MS28rme+2NtEioJDq1bOAI9p9RFhVcJFgskwO9DLBijFDJJI3ghNl\nCob/FzcLNYBgF8HsGS49C/gn0aiEsBLwTHsDBH8W7C+rtESmi/y3sqwu0tAI1pa5RiN1TndMyOaA\nSi+khuiKuZxmTXuBYJTfDcXy40gkUjJmwfRPlgu/VMuAMjQ+rnkuAfYOuUDwsoKbZEQikUj7rIHp\nIwQq3WlL0Jtkb9NUq6wDPBhygdePOCWf5UQikbrAV2uFFtQch4m4hzZwONc3LGgkv3lP4CsCypM1\nTRmykV6nSCQSgmCfDAGyLli/u4R+ee3O1gP0lDVxqFW0EGivwIv+DuyUega7oR4VMwAikUhRZM1D\n3xBsHXjpUOADYK3AGWcDTQaNDZyvStCcXr8l5NSxJdYnMJICwbyCo73vPzFOIviXLyq53Ke87S3Y\nNN7wImmomyOtTOnufmBFB68EXLosJjm5BPBewIxr2LTunoC5qgi9BOwO7tGUF/THbnQzAd/ktqwa\nRjAKu8ltgtUT3IidWB538FvC+AWx13MGrG6h+Wt7B98mjL8Y60400X9N8t9fTXr8SH1TN8YbQNb7\n7hBgcRdmYPYDNscyUP6Xw9KqEB0H9AYXkjZ5F3ApcEM+a6ptBLsBozGD/UQpDaqPHWxOayM/HDP8\nYxz8kjD+CKxRxsQWX5MLx0YiVYFgnIL92Dhs931ODkuqUrQQ6O3AwOuuWIuzhsX78kP10MuOV+f7\nk+BiwR2yDkQTBV8lBZEFXWXNm5cVzBHFnSJlR9Aro8+wPybCtEWJl1SlyIEmgBYMuGgY1qOyoboN\neYO9gE9/HC94qNJryoqKZFf5uNE/vPjbu4IfvaF/rMj4bt6vPzBmFEWqgYWwasJ5sl0eFACsAjQS\nFCpS/x/g96lnMMN3X3vCQtWKoMkb7NdkbdhOEyzVCJWj/u82UDCyyO9n9q/LV4IfBBO84T+/yPim\nYjeOSKRU7Ai8irVfCkCLg/4DqndFs/2AtKqEAAiuE+yS03pyRbCfYMl2dpfzAwtgrpQOdqDqBzoZ\nFNyDsZqRNRgeKVOU/F2RMQsIfvaum2e9K2ecIKQxSKQF8biTzCWYDso2gNJdIgfcDLwPrp7fkLNj\n+jAzAr+muUCwKbCDs+7y9cZELDNkMHbDLwwQtvg6ujcccx38dAz0OLZC660YvpBuKK2za35y1iyl\ncOzi2M8LM2tedlCjGV6lpe6Nt8yXvYqzgGRaegOPY4U/icfAIrMNwBT4DgN3fcB8tcbz2I7p4TSD\nBf2Aj4ARzio164m3gdWBt7BYQGHa3/BpP/vLwrD/jKaau8yn8HOhYSr8mgR8V+bnUxX4uNWctH0d\nJzk4KWH84lijlubX7n2sfd8bDj4t17rLSSMY75mAp4CtnZXDp2UUFqxZE3g6YMZFsJ3BWHCvB8xX\nSxyN5THvm/YCWYHP1Q6uzW1VncQbjIeBpQLS/J7HXG3PppihCegCP+8AS98FzwymraEvMPj8TLJR\nL/zZF6Q+JdYfPqayAtNev1kxf/3zzrKk6o66N94AglWAK4HFHHwccOnGmLjSosDnATPuAmwFbsWA\nuSqIhgPfgfs65QULArdiLpRUBkNm4BZ3sEe2NZYH2U56LQevpbzkWixL6agcluOwk2OSUS/86kX7\nO/jmf0+hwfO8ffxiLgc1vblqCOMNICtYWB1Y2dluJi1nYMe39Ui9G5MDBoOrkeOargUeAHdhygsc\nZrA2AZ5LNYPpgv/qqnx3KLgeuN3ZzT4NM2KvwbrAf3NbWMf0ol2XzdSvwcBndOyumQj8UNZnUCZ8\nnv5rwBLOXCs1SSMZ7ybs6P6yg4MCLu2OyaHeCpyYw9KqAG0K7AAuJKB4CvbhzmPHWTEEBwIzuzD9\n8o2Bv2A9UtuUtVcZXWkbNEwy9jMAP9Kxu2YiFseo6ptyIX4zN8bZBqQmaRjjDSDbdewDHBW4AxyB\n+c03J1DXujbQ1IAiuLQBxWWAC7FUubpBsDRwNbCACwsWXo7dzHZv8Wh7Av8E91EHszpLq64qHDCQ\njt01M2AbnCTDXvizT0iZoZQ3spPKa1gs7JFKrycLDWW8O8lqwGWY/3tiZZeSB7oNuBbcNSkvaMIM\n/vKYC6VukBniuwODq/2BF4C9gNtBGwGnAouCaydeoj6YNPF64KZkXnRl6UNb455k7AdiBjyNyyZ3\njSFZNfX+mPuk5oS9ovEO42hgZSwAGhD0UROwIXBTFe6wPNoRWBNcyDHyfMxneHI+a6oMgi4u2w5x\neeA62G85OO05LG30QeBecIll5n7GE7Gq3vWr9/1REprzvNtz1wzHMke+I53L5hsyumx84PIx4Kxq\nzoIqRjTeYXQB7sQCVIekv0zdsRS0m8BVaWswDQEOBHdwwEWrAcdiroZ0s9iHdEEH/wpcYK1wEjTN\nDT+Ngy6zYMbocXB3th2q3YANsADilsCLmKja0+AmlG/JVUcTMIiO3TXD/diWhv0DLGOo+etd2klQ\nkPW0neLMvx+pJTLoVEyPFQCsGzjTLKBJoOUD56tmumMplDOmvUAwn+D9OhYz6oHlfqfoOqRZQb8H\n7QS6BiTQC6Aipx9tCToddCBoG9DvQPN510uj0heryVge2AxLRrgAc0VNwNwvE/z/16nQGiOlRtBF\n8IRMmyKEpbF82TkCZ1wD9BFohsD5qpmrCMjd9oJHrwsWy3FNlWZ+zLebKOpUHO0Desy72ZJ+vwzo\nANBp3tg/AHrNDHni+DVAO4PWAi0KmjGDEFmt0x0z7o9ieuuRekGwjTcm0wVeujfm0wyUn9WxoH/X\n0YdoI+DekAtkLb/+nNN6So5gMVlBUgj7YgYj4O+sJtCygfO093hbgi4B3QV63p/8fvbB1KTxi/ob\nxOygemrF1pvABtqRGkFwvuCGwKO8wzqmBGifAKgL6FTQ4LDrqpY+WGuugWkv8Cp9r+a3pNLilQX/\nEyhp2oS15Tssp2VlRF0pqnypo0BPgN4D/Q/0BWg8RXu1akbQAMIaenQSTe9PEwMCLgreYERqBEFP\nwTMZ5CmnA97A1AcbmVsIeA28tvNHgrlzXFPJ8Ov9t+DQwEtHYO61RXNYVs7I2QZD84P6FxlzNehr\n0A+gd0CPgm4EjS7+mJ1e1yjQk/7GMs5OCx1yPSn0TQSzCa6t43hMfSKYXTBZMFvgpQtg/s06KVbR\ndKB/BH7QtiNMtRHBWgoIdFYawSyCKYJFAi/dAhhPXbcVUx/QnKDlQJva7jhx3BOgj0HPgG73xvf4\nbDEgDQMdBnrXG/MliwxM7TLxN+lnZcV4kVrCp7FlYTusWqtfCZdTIeR8EGzxgIsGYR+QOjZQINhK\n8KqvzgvhWuCsjLPW0WuqbqCZ7b2ldUG7gY4GDS0y/lbQfaArsSYW+4I2B7VolKIuPiA7W5FJNybA\nZSJYXtY1KfRvHKlhLsKOZxmOXOX0GaZBfwGdEHjR/VjOct3iM2XO99rRIQzE0ktXC5xxhN9Z1kt8\nJBDNC1oNtB3oENCZoBuwmoSk8Sf5cRuDFrZTZI8bCJCE9X/jD2TKmZEGoRdWvLNX+KU61zIDqgUt\nYYGqIPYCrshjNXXCKsCHmL5OADrd+5Gr7AZfjWhn0Cne7fciljcvArJMfLu296Lfu/EYiQWoivnf\niqCFQJ/YTqMaUBPoQ1BII+aZsUrBbjktqh44A8tQCjAM6gl6CbRtXouqX7psDH3vD7lCsL5XHIzU\nMoJFZUYphPWxktzQHdaOoFdb+/Mqic4G7R940X8p0oC23ZkaoBu7pyfwCsHZSRrjb+6z5bCmGkEH\ng/4YeNEN1Gjj60gnERwieEzhu8lTMA2UQKOkS7DKuSo4sqkvRSv9inIIcG7QLHC2YPvAeWqZhbDs\npFnDLtOBoFvyWFBtoBcIk5bogwXRi/jHI3WNTx26XXB64KXdMI3gwwNn7E272hZVz9xYm7nURl+w\ntSxPvCYR7O7FjUI4GFMbDCj6UZdsKXX1gObyKYYhRVKbUL/iZ5E0CAYJJsiqtEKYETNkqwTOONxS\nqmqWV4Gl0g4WDBR8LRMYqjn86eyBQNdPF0xl8sCcllVn6HBz4wURXSYRmrUtPpEJ3ISwCmbAZ8ph\nWdXKn4GTQi4Q/EuWj1tzeHGzR2Si/iHMhrlPxpR+VfWGXgAtF3BBdJlEpiHYSdbAOJTDMRdKLe+m\nQ1gUkwxI7bcX7CFrPVaT+OrcTzLkBm8HvESwuFkjoSHeeIecbIJdJoLtFHBijDQGTVjwskqbMHSE\nZgaFlP474D1gvtQzwHDBw7WcWyvYXvCiwgyxA24CTsswYxMoMOhZqwQH8P8O7Jz60afJFIcWX0Ua\ngMFY+mCGCkQNIZ34Tk5oKytTDuJM4Mg8VlOteANwrKy7SwhDsF6gKwfOuBTofVBqNccGIdhlIljQ\nx7VqdvMQyZclsAKeUIH+lXykvUIiThqAKceFBBRXBJ7NaUH1yBpY+XyIzCk+Fz9tw+hGYRPgnpAL\nBH9SnfVhjXRAhjv1nlgJfaDojY4EPUzFGjjoHtOLSE1XLBg3Wz7rqUvOxboSBaDeJmOgLXJZUW0S\nXSaR9hGskEH712EKcxcFztYEutuEdyqBds+ww7sY2CeP1dQpvTFlys3CLtOioCmgEXksqsZodpmk\nrm4WjIkukwZD0EPwpGC/wEv7YfrO2wfOOATrcLJe4HwlQMMx8fsiHVgSWRt4KK8V1SmLYa61QEkG\nHW4CVvWE5iBcrG1Twl0mXRXcizZS8whm9Q0cirSJKsp8mFshMLVMS4EqJJqjvQhrPdUT+BIootWc\nMIN1NDq4HnZB/jh+scJz/I/EOp0HpMapS+VcanmhI0GhGuhBLpNIgyP4vdf/TW2kPFtj+dChjY9r\niRsI9z9OqBctZcFRvgApJEe5K/A41uC6gdGLFO2dmUiwyyQSaY5WB7UB85xPsERoTbEFcEfIBYLT\nBUfntJ6y4o/kTwhC1fDmBD4lIFe+vtBo0EeBhTnBLpNIpLlEOkvBRE/gGep3lzUd1lk+9elCsJzg\nhfyWVF4Eo3z1ZahW+y5YZlJInKFOyOQyuRHYKY/VRBoc2W4qidmxINXSZVxOObmTgAwKfyOcXE9B\nJMGugmcUZogdcCvwlwwzDgUtFH5dtRDsMulLeJbJsAwFVZFGwh+dT/P9mIodA9fFijRSt2uqIXYB\nrgu5QHBhBqGnqsX78ncMNN4Aw4CJBAfE9XvQBFD/wPmqADnQ8oEuk82Au4NmgT/HwpxIUQRDBPcL\n7pF1WG+PEzGfXQrNYg0BPZpB86EE6GZQiBLeMCzrJLXmh2Ck7EQSgXWAdwgObOt80GU5rKcaCXKZ\n+JvpG7LUzEhkGv7NsanPnDhR6UT3u2J50SmCdXKgSVSkLZZOAx0TeNEjwFo5LKZRuBC4NOwS9QW9\nCQrVoa81srhMFhK8Uw8pqZESI+gneEjB1XIMx/S/V0sxy42grTMsr5NorPkkg9gPGJfHahqEvsBb\nwIZhl2lJ0OTK6eKUhSwukxMUqDkfaQAEywueVzb/tcN0ra9NMdM+oL9lmKOTqIs3CCECW81B2ZA2\nVnVNhl3f0sAkgoNsOgq0XeBctcRNwI5pB/tT8Zsy3flIBAR9BGcKPpL5KUNxwAmYGl+KSkYtBnop\nwzwlQBeADgi86DkgpIFs3SLoLfivILQn5fFY9k6dHvc1LPCCZpdJR/GkaTNAL8Hx0WUSAUAw1t/N\nr0oRmCzGkcDLpNYhVjfQV6AKVGhqDdD1gRcdBfw1aBbbJdVlBaov7Loj0Ih0A54C9shpWRVE82L6\n5CGvx+bAXXmtKFLn+IySdwTrZ3wIBxwGvE7wTkx9Ms7ZSeQyZLosgHXYCWmPtpWsArXuEHT3ud+7\nBV46N1Z9OXcOy6ogOhoUdHMn0GUSibRB2ftTzgrcCzxJsJJczeGwoNsiaS8QTC/4UsH657WBYB5f\nfTlX4KV7Yu+ZOuqLqpdBywZcEOwyiURKgcOKVz4BDsHSBBuBkzG/bWoED2aMIdQEgr28/klIUYrD\n3AXHZphxBctCqSY0L+jDwMKc6DKJpCfDDimJEVgxztNASGPfemBpzK+fGsHegktyWk/FETQpmzTC\ncGAywR3PtQHoLcLa2uVMZpfJDnmsJlJHyHSmTxJMEmTNmXVYFdgnwOFkOvJqAOgIS9erSZqwPPbU\nN0GZZvqnapzTSQgbAW9iLoQAdAkosJtTnmh/UEgbsixZJgsLYr/PRkKwuOBVwY0K1+xuZmbsiPcs\nmbWqNRj0DOiMypTFJ6HBoE0CL/obcHDQLHCJ6j8mkJXLgAvCLtF0oHdA6+axoDIQ7DIR/EUmQRGp\nd2Rtzk7wu+3NMuaFOqzd2RQsVS5jgElj/VH3xOox3OA1Vr4ChQQUVwOeyGtFDUh/YALWdi4AjQVN\nzJBbXQ38gwCXiU85fUsBwfJIDeMLKc6SCStlYUbgduB5IKM8p3qCTvcfsg0yriNn9EDgDq478Dnh\n7cEaBllXmBCWw9xRgSdDHVh9wcsO6YdpxIe4TBYRvB0LcyId4YBtsN32MXRKTF9dQX+yHW61ov/L\noF53JfCH4Jlgdp9XX7cNCgQzC97LIK9wInAL9W+gtsCqTFPjXSYZdNEjjcRwTED/RRrmiKYRoE8J\na4C7IdZkN/0s046+nwl+FvzgXVpvJKk2+vH7Cnb2Co+rC5byudVVbeAEJwtuDlxnD+yUV+/dZIJc\nJgCCB6LLpA7xlW77ZziqtsQBW2GpW8dTxzvDZPQUaOWAC/oQePRtNZsZ5t6CGYqlb8o68pwuGCf4\nu6wR8BOCl5OMoqxpxiO+ZP0awfk+w+iQdtYwuBMFWu09vx4ycbPQVLj5sGymENGwCqKrAn3uzS6T\ngUGzWDpmVd+wI4EIxvgPyW1KrSnShmHAzVj+ckZxd/X0ua412vlaY0GzBl70T2DboFngsBLl2ic9\ndheZIuQ6srL8PwgOFRxXZHwfweeCXwTfCyYKXpdpsieN7ybYSbCxYDXBkoLRKqISKJhfVn0Z2g5u\nH+Axqj61UvOBPggszAl2mUTqDP9BOkowRbBtJzJJNsdkOk/Ajq1ZVrM46FXQTdXt2y4522I3vdT4\n3fDROa0nE34H3lcwo3fJJN7A/ZhLZCmn9wqeFLwmeKXI+OkE8l/neb/toSriFvHr6Irl0t+H1RKE\nPpv9AvOtO4GOsWB8EDdj2VuRRsR/iJ71x+OsGQ9DsdZLrwJLZFxJD9AJmDb25tWVAlgWBmGFFr3T\nXiDLt1d+S6oeZIVh6wsOEOzpTx0nqUiusmC44FfBdz/DpDfhl2/sJHBbwKybgV4PTP3MiF4BhVSW\nZnKZROoMwYqd8IFtiu22TySgL2PBCnpiHbL/CQrVdK4n7gNSp0AK5vU70VE5rqlm8bvvfoKZNof9\nl4J33oJlZVk6p6rDTjyaxeft5+y+y+Qy2RK4I68VReqb6YEbgPFACXJjtWgD7rYL2RNLG0yNYBNZ\nYUqkHQRuM7jvv5bf/KngFMEsHVx1vcVecl/dQXm7TPyNbM88AsrVQl0bD4FzpTlmbwScgxmao4Ef\nSvCYdYgc0BXczykvmAnz+X6BFe585r8+b/H9C8y98rX/3vLf/yvl6usFb6Rv+wV6HABDb4ft37YU\n1vauWhErtZ8X3Pc5r9ABvQLmmQ74EJNQ/iLVDNbm7DpgrhLZgKqjbo23YF5M82FHZ+I9WRiCGe2F\nsbStxzKspAncbxnnrzF0DPZBOzjAgPfFYgiD/deggu8D/WP2918t//0rxQ172n9/B9TE30cWjJzV\nWTl8e+O6AisA/3awMnA5MAa7IRa7anPgB3C3lGzBpWNLLBV3rbQXyBoM/+qs0UldUnfG279x9wcO\nwCLuF2W8824AnIs1Az6CTLttjcHkTHcAF9pxvQbR3NjzHYkpuF2W4/N2WMyhP8mGPe2/ewHf0Nao\nh94I0t6sMiMLjv8DWNBZmqIDmpzdxNrjdEyKeFNqcxd6M5Zaenmawf51eRvYyFnv1Lqkroy3YDR2\n9PsO2MnBuxkeZjBwFvZB2QH4T4aVdAMOBfYCDgIuNxdco6C5sFTAbYEnwW1c4QW1R1fMiIca/pb/\nnw74ieIGPu2N4Hs6MK6CMzCFxVuAvYFxrmNVwZ6YfvzJwBUdvSBVRrPLZBbgyzQXNILLBOrIeMt2\nUC8DpwIXuGxH4XUxydK/Y8etDL4/LYjdQCYDu4D7MMM66gQ1ATODe7/SK8kZh6U8duYE0B+rzG02\n5okGfgB8Px52+R98eQfcfBA88F3ruMDXwC8JaxyDZfcsTrZNTaXY0n+lVk1sBJcJ1JHxBsuNdfBj\nhksHAmcCy2K77YczrqA7ptl9OnBpY+22Q9EaWCn3s/F1mkp3LJ+5o51+e//uh50CfsA2Hz+0+JoL\neJCA9MzSorHAW+AmBVz0T8xtksplAiDTzP/SQb1vGhqetbFj2Vl0Tt/EEyTQ1MBoD6whwMuYNGli\nmXgkGIe9j4dgfu65sF33UsBKmP4JlvGhtQNzrTuBnK8kDmnbNh12khiQ06Ii5UYwSyeKbJoZgLk3\n3gFW7OyaIllQE2h50MWgL0B3lqe6LwLaFPQ8ZWupp/lB7wfWNmyFaeJHah2ZOtjeXrCnM8171wQ+\nwLJJMjZi1Vxxl11K1AdUpEu8BmKNc1cGLQYaBRpqEgORcNTbG9LlyzjnsaDTAi/6J7BdHquJlBHB\nSMFDMtnOOTM+TH/gYixPNkTCtOVKuoIOBn0CWjjjOiJBaE7QLVjXnmdBb/vXv0gmkOYEXQ46C3S8\nd8vsClqtvOuuVnQs6NoyzudA46PLpMHwu+0/+t32PkoQ3k/JalgA43wsqJNlNaNBT4DuB82WcR2R\n3NH0oB1A+4COsh2fxpnRShw/FvSl342+ZDcF3dnO+EFWkaiFQSOxXp41Uoat2UGfgUaUcc4FQO/l\n7TJRNPTVhZdvvUDZdZynAy4C3gNWzbiKLqAD/G5vj/IFeSLlQU3eNTObpXpqOR/MW6nI+EVAD3mf\n8QRvDH8xg584fh7QX/2Odz/QzqBNKJv8aqu1nAo6osxzzgJKXR3puYUAvXevZTJBME/gPDVLXaUK\nJrAqMA64B6u4/Drbw6gJ64F3Prh2S5MjjYoc0A3cTwm/mxXTxylM7xsP7siE8atiG47CIp/HwJ2b\nMH4gVsTyNfAtU1MDXULlpbzmd9I6q4YshTmLA1cDc9dzYU4j0A9zj7wPrF7htUQigaind28s5LNx\n1gFtDSryXtZKoBdA72L9RL8D/Qa6oazLLh1bE6RDTnPfzz/ltJ5Ie/hjz47K2NewBatgFWQXE6VD\nIw2LXO344duQxWXyriyfPVJOBMMEtwueFsye8WH6Yql/H2CpgFlW0gTaCzRzxjVEIpHO0Z/ALBPB\n4oI3SlD7UVNUPPAmq3B8HngBWLojucsirAi8iOlLLADclWElI4EHgM2o+uatkUgtkKkAaB2siXMq\nX7dnMHBW9HWXCX/UOdcfd5bL+DB9gLOx4EZoNLt5Jc277U98almZKs4ikXpHx4MOCrzoVmCbPFYT\nKSGCLYu3tNJwUHvNaZcH3sIkLjM2JVUT6B7Qo5iMaSQSKQlyoNdAIQ26m10mMVZVu6gPyPea1VdY\nR+uL/C97A38FPgLWxbqwDwksAGg51zJxtx2JlBot4LNfQj6XW9Nhu7ZIDaBRPj1qoC9yGAOMxVqa\nXY35uQAtBfoc9D9fIfckVkp9YOXWHok0OjoedErgRdFlUof0Ak4DPqaoFrF6+gq5pTARozUKfu93\nAFrb58K+DLoXdCXoZNCG+S0/EmkkosukHFQkq0LW9OCjlG3KlsakW5/FRNY/TR7mfsQeL+ExNQsw\nDvQX4E6sOfEMwHD/NQPmjkla7VpYR46JwKQW358H90yK9UcijcYgLGX3qYBr1sUaRXyV9gJZG7gX\nnWWJRcqB4ATZTro9umE99yZipcXNVy9uPvFUMznQLj6T5BAySbhqEKZ1sSno/+wGoEtBfywyflXQ\nJaA/+yyWjUHLgmYInzsSaRiCXCY+W+09WWpwpFx4eddPZI1Rk+iCdW2/B5i+4OozQa+A5u1glhGg\nuwTFnj8AAAmWSURBVEFPgzqj/R2IRmHCQ0eCzgP9A/Q4qEg/PY01/7y2Af0ONB9ocPYAbCRScwS7\nTARLCl5rtMKcqkBwr2CLhF81AZcA95No3OVAO/rddJE7tZwPXB5O1ZcIayym9HYVJjX7qg/AFpMj\nHQNa159ARmB9MyORWmYbArNMBKcKjs9pPZH2EGwq+HfCr87EBKUWpKgfGjDpztcxneaE1lm1btSK\n7by1Geh20DOgj0A/+xvZLkXGzwqaGzRd3M1HqpTbsDTBVESXSYURdBdMFowq+NU44DGsTP5HLIDx\nGhbMuBbrzH4QsA3Muy5MvBUeXYWGPT6pC2iYpVQm/v4g0JugbzG1ubexZgO/LzK+DzHvPVI+BhDu\nMlk4ukwq/ORlHa1fcfBNkSEO+6O2zApp+b3lv/sAk2mbFTKx4N+TgWrWMs4R9WPa6zUB3AcJY84H\ndsKyelq+dufF7JpI+2geYCVw5wVctC2WkLBe0EwwyMHnIdfUG/V05+oJDKO4cW/+91DsTl/MuLf8\n2TfQiGI36oa9Ti1ft4fAvZEw9nJgSdq+dn8H92551hupDvQnoDu4ED2T24DrgavyWVP9Uk/GOy1N\nWHVmMePe8nsX2jfuzf/+BEjoWtIIqD8wE21fy0vAvZIw/q/AbLR9PR8B90VZlhzJATngdWArcGnz\nuwdg8a2ZydzlqnFpROMdQl/a38U3fx/ENDdDknFv+e8fyvoMqg6NAeag7et4CLiXE8YfgXVGKnwt\nJ1R5K68GQ2OAfwJzWDwxFZlcJhEjGu/S0OxmaG8X3/zv/9G+cW/+/jkN6bIpRBsCc9P2dVwX3PiE\n8TsBv9HmZOR+K9OCG5RMLpPbsSSEq/NZU31TFcZb0B0Y5SDhmF1XOOyo2FHwdTiWJtkcgG3PbdPA\nAdgkdChm7Fu+ngOAUeDeSxi/GhbbmGRfrsFPRlkoj8tE5m7r5SDhpt14VIvxngfTJ/gTrQ3Uh65x\nDVNPzPh05LaZHkunbM8n3/zvRg7A/pq8+9ZVWLpq82v9A/Z6LQ0uoZuL5sJcZF8EuAcaAI0GXg94\nTbbDRObWTz2DSWp85+CoDAusO6rCeAMIdgYWofWOdHdnJfKFYzfA/NEtDdPnDdoGqQvTArAdGXpH\nxz75STRsAFYOa+wxHBjf1tjLYS37ZsWULlu+Zpsm++DVDdzPea66Rglymfic7veA3ztIiI00HlVj\nvEMQ7IXliBfmea/krMCncPxSmDGaBExu4N18X9Jl2QzEDHhHqZSTaNgArHox7fUaBu7mhDHdgW+x\nk1HL1+wj4PAG3rkPwAzxCNK7TJYCLgXmbdBNWhtq0ngn4UWufnXQZpcj63O5DNPyvL/EPkQbO/PV\nFY4fgX3gvmnQN0pSnneSwZ8Bq4LtKJVyEg0bgFUXYAhtfPDujISxA4Cnafs6vg+unoJ6WV0m3zo4\nOrdV1Rh1Y7zTotZuhjcdfJ8w5j7sTt/SzTAJ2MvZ98LxrkGNfLOboaPga7Neug8Ktuu2mUzCDbgx\nUBdgJG1vmN3B7Zcwfhgm4lb4Gr4P7unyrDkToS6TJkynP7pMWtBwxjsEWX5xyw/RHQ6+Sxj3HpYx\nU/ghOqmd0v9Go9nN0JGhnx47GXW0m5+IuSQa8abpUR9gZdq+jj+AS1Ds1IzA/rR9HT9ODs52OL/D\nGpu8GuACypJl0hPYBTinQTdJiUTjXQJU3M1wsjO3QuH4p5mWntbSKF2X5PZpMJrdDB0FX4f78WkK\noz6lIQOwhWgo5rIofD0/Ave7hPHDgbVpczJyv/jfLwzcBIzMM8skkkw03hVAtltJMkrbugIj44+M\nNwJTaGucnm7wnUg/Og6+Nud5f0LHhVENHIBNQqOAg2n9eg4B7gS3PugEoAu4gwMe9A7MXXJNqVfb\naETjXeV4H/26tDVOAxyMTRjfAziOtoZqYgO7cLrRvmhZy+/Ned4duW2+oCFvnOqCZXZ9A7wBbA48\nB5wH3JOcdTOVgZiLcSYa971YMirSgDiSHr8Tb+8DUUgXzGc8O5Zh02yUmrBgWCtkgcTNKHAzFJ4A\napyfgQ/9V3u0zPMuNOoLF/ysMM+7mNumzgKw7lfga+8y6cI0wz0/cGAHF6+HdciKhrsExJ13gyML\nEJ5C23LyZ51l3BSO7w2MwRupJJ9+g9Ayz7s9/3zLAGxHbpsaMmo62f+jL7AQsAa4jgKQQS6T5mYL\nDe4aLEo03pE2+ADsAGd+4sLfjcQ+fIXl5I86q5ItHN8DO2Z/0aAfwpZ53h25bUS6wqhPMPGtCqI9\ngTWx57ZaCsMd7DIRLA0c6aBI16fGJrpNIm3wGS9tDLf/3dtY84XmnVGzm6FHkYdbELgX6KXWxugx\nBycXuaae+BVznUzGSuuL4WidmtrSqI8u+Fl/WlfAtue2yetkdAtmVFdPYbgBtsKkLkJOF5sAT2ZY\nW0MQd96RsqC2bob/OTtGF45bHeuqUmiInnKWlhaxmoJhdOy2GYYVoaXRs8kzANsVC25uBTye5gKf\nZfUesEYDqI1mIu68I2XBmXtlgv9qj/uw4FehIeqXNFiwGnAkbXehLzqo156bPwEf+K/2cFijkELj\nPiOwaMHPe9C6AraYwZ9CeAB2I0zPJZXh9qyDxVSi4S5C3HlHahqZcVqAtrvQ5x200Q8RrITtAAt3\nnu8kSR80EL1JJ0E8BNulp9Gz+QazMU8DxwK3pl2M4BHgbAc3dP6p1SfReEcaCsGcTCspb2nw73Jm\nYArHL43l008s+PqygQOw05OuOOo3zDf/A3aaShVklfn0rwQ2dPBLiddfN0TjHYm0g2BZYEPaGqlz\nHRyeMH4BTO97ajl5gxqg5gDscMyAf17Z5UQikQhTA2pJP99EcIfgWcFEwc+CKYLdiowfIRgly5eO\nRCKRSDUg6CKYwfvmk36/v+BtwfeCbwVvCh6RBeySxvcuduOoJQRDBGsLThCcVOn1RCKRSCZksnzT\nCeYWrCBzvSSNO9fv5j8SPC24XXCRYIlyrzkUwWDBpYLXBV8L7hUc64PIkUCizzsSqTE0Lc+7pQ/+\n4aSu6oJxmMZNYUbITa7jtM2s6+vrTGu98OfdgJ2wlMGX60w/p+xE4x2J1DGyCtiZaJsZcpmDFxPG\nn4pJIBSmAD7mEoKOvsq2WQRtaf99FDBL0vhI6YjGOxKJTEUmOjYnbdP+DnXwQsL4B4G5gEex5t+P\nAc81cJPvSCQSiUQikUgkEolEIpFIJBKJRCKRSCTy/+3BAQEAAACAkP+vGxIAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAM4ChvDNDS9WvE8AAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 10 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Evolution by Mean Curvature" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A curve evolution is a series of curves $ s \\mapsto \\ga_s $ indexed by\n", "an evolution parameter $s \\geq 0$. The intial curve $\\ga_0$ for\n", "$s=0$ is evolved, usually by minizing some energy $E(\\ga)$ in a gradient descent\n", "$$ \\frac{\\partial \\ga_s}{\\partial s} = \\nabla E(\\ga_s). $$\n", "\n", "\n", "Note that the gradient of an energy is defined with respect to the\n", "curve-dependent inner product\n", "$$ \\dotp{a}{b} = \\int_0^1 \\dotp{a(t)}{b(t)} \\norm{\\ga'(t)} d t. $$\n", "The set of curves can thus be thought as being a Riemannian surface.\n", "\n", "\n", "The simplest evolution is the mean curvature evolution.\n", "It corresponds to minimization of the curve length\n", "$$ E(\\ga) = \\int_0^1 \\norm{\\ga'(t)} d t $$\n", "\n", "\n", "The gradient of the length is \n", "$$ \\nabla E(\\ga)(t) = -\\kappa_\\ga(t) n_\\ga(t) $$\n", "where $ \\kappa_\\ga $ is the curvature, defined as\n", "$$ \\kappa_\\ga(t) = \\frac{1}{\\norm{\\ga'(t)}} \\dotp{ t_\\ga'(t) }{ n_\\ga(t) }\u00a0. $$\n", "\n", "\n", "\n", "Shortcut for normal times curvature $ \\kappa_\\ga(t) n_\\ga(t) $." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def normalC(gamma): return BwdDiff(tangent(gamma)) / abs( FwdDiff(gamma) )" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Time step for the evolution.\n", "It should be very small because we use an explicit time stepping and the\n", "curve has strong curvature." ] }, { "cell_type": "code", "collapsed": false, "input": [ "dt = 0.001 / 100" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Number of iterations." ] }, { "cell_type": "code", "collapsed": false, "input": [ "Tmax = 3.0 / 100\n", "niter = round(Tmax/dt)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Initialize the curve for $s=0$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "gamma = gamma1;" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Evolution of the curve." ] }, { "cell_type": "code", "collapsed": false, "input": [ "gamma = gamma + dt * normalC(gamma);" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "To stabilize the evolution, it is important to re-sample the curve so\n", "that it is unit-speed parametrized. You do not need to do it every time\n", "step though (to speed up)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "gamma = resample(gamma);" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Perform the curve evolution.\n", "You need to resample it a few times." ] }, { "cell_type": "code", "collapsed": false, "input": [ "gamma = gamma1\n", "displist = around(linspace(0,niter,10))\n", "k = 0;\n", "for i in arange(0,niter+1):\n", " gamma = resample( gamma + dt * normalC(gamma) );\n", " if i==displist[k]:\n", " lw = 1;\n", " if i==0 or i==niter:\n", " lw = 4;\n", " cplot(gamma, 'r', lw);\n", " k = k+1;\n", " axis('tight'); axis('off');" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nSUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 17 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Geodesic Active Contours" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Geodesic active contours minimize a weighted length\n", "$$ E(\\ga) = \\int_0^1 W(\\ga(t)) \\norm{\\ga'(t)} d t, $$\n", "where $W(x)>0$ is the geodesic metric, that should be small in areas\n", "where the image should be segmented." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create a synthetic weight $W(x)$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "n = 200;\n", "nbumps = 40;\n", "theta = random.rand(nbumps,1)*2*pi;\n", "r = .6*n/2; \n", "a = array([.62*n,.6*n]);\n", "x = around( a[0] + r*cos(theta) );\n", "y = around( a[1] + r*sin(theta) );\n", "W = zeros([n,n]); \n", "for i in arange(0,nbumps):\n", " W[int(x[i]),int(y[i])] = 1;\n", "W = gaussian_blur(W,6.0);\n", "W = rescale( -minimum(W,.05), .3,1);" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 154 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Display the metric $W$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "imageplot(W);" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nxwAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 156 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pre-compute the gradient $\\nabla W(x)$ of the metric." ] }, { "cell_type": "code", "collapsed": false, "input": [ "G = grad(W);\n", "G = G[:,:,0] + 1j*G[:,:,1];" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 180 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Display the image of the magnitude $\\norm{\\nabla W(x)}$ of the gradient." ] }, { "cell_type": "code", "collapsed": false, "input": [ "imageplot(abs(G))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 182 }, { "cell_type": "markdown", "metadata": {}, "source": [ "def EvalG(gamma): interp(1:n,1:n, G, imag(gamma), real(gamma));\n", "def EvalW(gamma): interp(1:n,1:n, W, imag(gamma), real(gamma));" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = linspace(0,10,5)\n", "y = linspace(0,6,5)\n", "x = [0.5, 2]\n", "y = [0.5, 1]\n", "interp2([],[],f,x,y)\n", "print x,y\n", "print [x,y]" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "RuntimeError", "evalue": "input and output rank must be > 0", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.5\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.5\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0minterp2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/Users/gpeyre/Dropbox/github/numerical-tours/python/nt_toolbox.py\u001b[0m in \u001b[0;36minterp2\u001b[0;34m(x, y, f, xi, yi, k)\u001b[0m\n\u001b[1;32m 275\u001b[0m \u001b[0minterp2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mG\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mimag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgamma\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreal\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgamma\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m;\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 276\u001b[0m \t\"\"\"\n\u001b[0;32m--> 277\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mndimage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmap_coordinates\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0morder\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m;\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 278\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 279\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgrad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/Users/gpeyre/anaconda/lib/python2.7/site-packages/scipy/ndimage/interpolation.pyc\u001b[0m in \u001b[0;36mmap_coordinates\u001b[0;34m(input, coordinates, output, order, mode, cval, prefilter)\u001b[0m\n\u001b[1;32m 295\u001b[0m \u001b[0moutput_shape\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcoordinates\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m1\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0moutput_shape\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mRuntimeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'input and output rank must be > 0'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcoordinates\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mRuntimeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'invalid shape for coordinate array'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mRuntimeError\u001b[0m: input and output rank must be > 0" ] } ], "prompt_number": 201 }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }