{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Mesh Denoising\n", "==============\n", "\n", "*Important:* Please read the [installation page](http://gpeyre.github.io/numerical-tours/installation_python/) for details about how to install the toolboxes.\n", "$\\newcommand{\\dotp}[2]{\\langle #1, #2 \\rangle}$\n", "$\\newcommand{\\enscond}[2]{\\lbrace #1, #2 \\rbrace}$\n", "$\\newcommand{\\pd}[2]{ \\frac{ \\partial #1}{\\partial #2} }$\n", "$\\newcommand{\\umin}[1]{\\underset{#1}{\\min}\\;}$\n", "$\\newcommand{\\umax}[1]{\\underset{#1}{\\max}\\;}$\n", "$\\newcommand{\\umin}[1]{\\underset{#1}{\\min}\\;}$\n", "$\\newcommand{\\uargmin}[1]{\\underset{#1}{argmin}\\;}$\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{\\pa}[1]{\\left(#1\\right)}$\n", "$\\newcommand{\\diag}[1]{{diag}\\left( #1 \\right)}$\n", "$\\newcommand{\\qandq}{\\quad\\text{and}\\quad}$\n", "$\\newcommand{\\qwhereq}{\\quad\\text{where}\\quad}$\n", "$\\newcommand{\\qifq}{ \\quad \\text{if} \\quad }$\n", "$\\newcommand{\\qarrq}{ \\quad \\Longrightarrow \\quad }$\n", "$\\newcommand{\\ZZ}{\\mathbb{Z}}$\n", "$\\newcommand{\\CC}{\\mathbb{C}}$\n", "$\\newcommand{\\RR}{\\mathbb{R}}$\n", "$\\newcommand{\\EE}{\\mathbb{E}}$\n", "$\\newcommand{\\Zz}{\\mathcal{Z}}$\n", "$\\newcommand{\\Ww}{\\mathcal{W}}$\n", "$\\newcommand{\\Vv}{\\mathcal{V}}$\n", "$\\newcommand{\\Nn}{\\mathcal{N}}$\n", "$\\newcommand{\\NN}{\\mathcal{N}}$\n", "$\\newcommand{\\Hh}{\\mathcal{H}}$\n", "$\\newcommand{\\Bb}{\\mathcal{B}}$\n", "$\\newcommand{\\Ee}{\\mathcal{E}}$\n", "$\\newcommand{\\Cc}{\\mathcal{C}}$\n", "$\\newcommand{\\Gg}{\\mathcal{G}}$\n", "$\\newcommand{\\Ss}{\\mathcal{S}}$\n", "$\\newcommand{\\Pp}{\\mathcal{P}}$\n", "$\\newcommand{\\Ff}{\\mathcal{F}}$\n", "$\\newcommand{\\Xx}{\\mathcal{X}}$\n", "$\\newcommand{\\Mm}{\\mathcal{M}}$\n", "$\\newcommand{\\Ii}{\\mathcal{I}}$\n", "$\\newcommand{\\Dd}{\\mathcal{D}}$\n", "$\\newcommand{\\Ll}{\\mathcal{L}}$\n", "$\\newcommand{\\Tt}{\\mathcal{T}}$\n", "$\\newcommand{\\si}{\\sigma}$\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", "$\\newcommand{\\phi}{\\varphi}$\n", "$\\newcommand{\\th}{\\theta}$\n", "$\\newcommand{\\om}{\\omega}$\n", "$\\newcommand{\\Om}{\\Omega}$" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "This tour explores denoising of 3-D meshes using linear filtering, heat\n", "diffusion and Sobolev regularization." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Loading required package: magic\n", "Loading required package: abind\n", "Loading required package: plyr\n", "Loading required package: magrittr\n", "\n", "Attaching package: 'imager'\n", "\n", "The following object is masked from 'package:magrittr':\n", "\n", " add\n", "\n", "The following object is masked from 'package:plyr':\n", "\n", " liply\n", "\n", "The following objects are masked from 'package:stats':\n", "\n", " convolve, spectrum\n", "\n", "The following object is masked from 'package:graphics':\n", "\n", " frame\n", "\n", "The following object is masked from 'package:base':\n", "\n", " save.image\n", "\n", "\n", "Attaching package: 'akima'\n", "\n", "The following object is masked from 'package:imager':\n", "\n", " interp\n", "\n", "network: Classes for Relational Data\n", "Version 1.13.0 created on 2015-08-31.\n", "copyright (c) 2005, Carter T. Butts, University of California-Irvine\n", " Mark S. Handcock, University of California -- Los Angeles\n", " David R. Hunter, Penn State University\n", " Martina Morris, University of Washington\n", " Skye Bender-deMoll, University of Washington\n", " For citation information, type citation(\"network\").\n", " Type help(\"network-package\") to get started.\n", "\n", "\n", "Attaching package: 'network'\n", "\n", "The following object is masked from 'package:plyr':\n", "\n", " is.discrete\n", "\n", "\n", "Attaching package: 'tuneR'\n", "\n", "The following objects are masked from 'package:imager':\n", "\n", " channel, play\n", "\n", "\n", "Attaching package: 'pracma'\n", "\n", "The following objects are masked _by_ '.GlobalEnv':\n", "\n", " circshift, fftshift, grad, ifftshift\n", "\n", "The following objects are masked from 'package:magrittr':\n", "\n", " and, mod, or\n", "\n", "The following objects are masked from 'package:geometry':\n", "\n", " dot, polyarea\n", "\n", "The following object is masked from 'package:magic':\n", "\n", " magic\n", "\n", "The following objects are masked from 'package:Matrix':\n", "\n", " expm, lu, tril, triu\n", "\n" ] } ], "source": [ "options(repr.plot.width=3.5, repr.plot.height=3.5)\n", "options(warn=-1) # turns off warnings, to turn on: \"options(warn=0)\"\n", "\n", "library(Matrix)\n", "library(geometry)\n", "library(imager)\n", "library(akima)\n", "library(plot3D)\n", "library(network)\n", "\n", "# Importing the libraries\n", "for (f in list.files(path=\"nt_toolbox/toolbox_general/\", pattern=\"*.R\")) {\n", " source(paste(\"nt_toolbox/toolbox_general/\", f, sep=\"\"))\n", "}\n", "for (f in list.files(path=\"nt_toolbox/toolbox_signal/\", pattern=\"*.R\")) {\n", " source(paste(\"nt_toolbox/toolbox_signal/\", f, sep=\"\"))\n", "}" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "3-D Triangulated Meshes\n", "-----------------------\n", "The topology of a triangulation is defined via a set of indexes $\\Vv = \\{1,\\ldots,n\\}$\n", "that indexes the $n$ vertices, a set of edges $\\Ee \\subset \\Vv \\times \\Vv$\n", "and a set of $m$ faces $\\Ff \\subset \\Vv \\times \\Vv \\times \\Vv$.\n", "\n", "\n", "We load a mesh. The set of faces $\\Ff$ is stored in a matrix $F \\in\n", "\\{1,\\ldots,n\\}^{3 \\times m}$.\n", "The positions $x_i \\in \\RR^3$, for $i \\in V$, of the $n$ vertices\n", "are stored in a matrix $X_0 = (x_{0,i})_{i=1}^n \\in \\RR^{3 \\times n}$." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "X0 = read_mesh(\"nt_toolbox/data/elephant-50kv.off\")$X0\n", "F = read_mesh(\"nt_toolbox/data/elephant-50kv.off\")$F0" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Number $n$ of vertices and number $m$ of faces." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "n = dim(X0)[2]\n", "m = dim(F)[2]" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Display the mesh in 3-D." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaQAAAGkCAIAAADxLsZiAAAABmJLR0QA/wD/AP+gvaeTAAAU\nZ0lEQVR4nO3d6VfUZhuA8TyZYbNsIptQpFUQBEVxA0RA/nIW9SAHrFVxAQELiAMiSpEiy0zm\n/cB7rLVKZ0lyJ7mv36f2KMldKxfJ5Eli0um0BQBRZ0sPAAB+IHYAVCB2AFQgdgBUIHYAVCB2\nAFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBU\nIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2\nAFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBU\nIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2\nAFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBU\nIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2\nAFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBUIHYAVCB2AFQgdgBU\nIHYAVCB2AFQgdgBUIHaAmEQikUgkpKfQwqTTaekZAC3W1tZevHjx3V86ffp0e3u7z/OoEpce\nAFBhYmJib2/vmN+QSCTi8XhLS4tvI2nDkR3grUQi8fLlywx/s23b/f398ThHIe4jdoCH7t+/\nf3BwkMMXGmOqqqq6urpcH0ktYgd4ZXZ29u3bt3luxBjT29tbXFzsykiaETvAKyMjIy5ujSsY\neWLpCRAOiURiZGTk06dP0oOEFbEDwmR6enpmZkZ6ilAidoAnfrSeLn8bGxsebTnauMINuOnd\nu3fPnz/3+qPw9+/fV1dXe7qL6CF2gGtGR0f9ueJH6XJA7AAXLC8vLyws+LOvmpoaf3YUMcQO\nyJdvB3SWZXV0dNTV1fmzr4ghdkDu/vjjj9evX/uzr+Li4r6+Pn/2FUnEDsjR48ePP3z44PVe\nhoaGbJtVEy4gdkAu7t69m0wmvd7L8PCw17vQg58YQNYmJiYoXehwZAdkZ2Vl5fgn0+XPGHPn\n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\nJqRaW1vLysryXFldUFAQi8U6OzvLy8vdGgxu4cgO/+DPw+UDfjdFMpmcn5//+PHj3t5ePB5P\nJpNH64cKCwvr6+tLS0sj9ooMJYgd/sG7s7mv9fT08GpB+IwLFPiH1tbW3F4+m7mzZ89SOviP\nIzt8h0cXK2Kx2ODgoOubBTJB7PBDa2trs7OzGS4TOVq5Eo/H0+l0aWnphQsXpN7gA3wXsUOm\n1tfXa2pqNNzJi0gidgBU4Kc0ABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgd\nABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAV\niB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgd\nABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAV\niB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgd\nABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAV\niB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgd\nABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAV\niB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgd\nABWIHQAViB0AFYgdABWIHQAViB0AFYgdABWIHQAViB0AFYgdABX+B1HcGCOmcLT5AAAAAElF\nTkSuQmCC", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "options(repr.plot.width=3.5, repr.plot.height=3.5)\n", "plot_mesh(X0, F, \"grey\")" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Noisy Mesh\n", "----------\n", "We generate artificially a noisy mesh by random normal displacement along the normal.\n", "We only perform normal displacements because tangencial displacements\n", "do not impact the geometry of the mesh.\n", "\n", "\n", "The parameter $\\rho>0$ controls the amount of noise." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "rho = 0.015" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We compute the normals $N = (N_i)_{i=1}^n$ to the mesh.\n", "This is obtained by averaging the normal to the faces ajacent to each\n", "vertex." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "N = compute_normal(X0, F)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We create a noisy mesh by displacement of the vertices along the\n", "normal direction\n", "$$ x_i = x_{0,i} + \\rho \\epsilon_i N_i \\in \\RR^3 $$\n", "where $\\epsilon_i \\sim \\Nn(0,1)$ is a realization of a Gaussian random\n", "variable,\n", "and where $N_i \\in \\RR^3$ is the normal of the mesh for each vertex index\n", "$i$." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "X = X0 + t(cbind(rho*replicate(1, rnorm(n)),rho*replicate(1, rnorm(n)),rho*replicate(1, rnorm(n))))*N" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Display the noisy mesh." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\nuqanp5VSd+/eXV1dHRkZ0V1RXpxoq62tra+v/8Wdl2VZepe1h8PhRCLh1nRcZ8HW+fPnh4eH\nU6nUrs9pbW2dm5vL/bG6utpJOqVUb2+vM0pmGMa///3v48ePu1KVn9GyK6C3b98uLCzoruKn\ntra27u5u5+uPHz82NTU5H7yinvl82J2IMpmM9lOi3W3ibf0fmabZ3Nzc0dExOjqayWRu3bpl\n2/bQ0JBt20qpW7duWZbc9g1hVyiZTGZoaCidTusu5KdffMZy3UBF5Pjx40fuXVpbWxsaGnK3\nnkNx90Sbjx8/fvr0Kbe6dqfBwcGKiorff//dxYsWHcKuIPzZViovL79+/frOx5eXl1++fOl9\nPUcQDAad0dWenp6WlpZ8XkrLz6irq6u+vr6mpsb7S0Num7Zw/Hnu9S+aEm/fvvWykiNzcTO1\n8fHxsrIyL4fILcuqqak5ceKEZ1fENrTsXHb//n0/TOlyOLtCKqXq6up+HRPPnz+PRCLhcHhi\nYsKr6vZXXl5eW1vb2dlZWVmZ50slk8nZ2dloNJpOpz1+z1+9erWqqsrLK2JXhJ1rto3l+8Gh\nOoZGR0f9c5SUs04+/3Pptc/+KcnTposUt7GuCYVCfgu7lZWVg3cP+Wosxa3BSu2/ywcHBy3L\nqqqqam5uPn78eImtSSgutOzy5fPVEYea5aBxXKWmpsaZKxcKhVx82dHR0ZWVFV+9ySsrK4WP\niupCyy5ffmvNbXOoz3kgENDV4bi6uprbwNJFudPs/bMp5tra2v379ysrK69cuaK7FlloVOer\nv79fdwmu0Ti0UujGV29vr7PZjHaZTGZzczMej+suRBxadvnKf6DQdaZpRiKRtra2A64BcjYT\n1XWv500XfmNjY39//+zs7MLCgrOcQK+KigrdJYhD2JWgsrKyvr6+Az75+fPneufKOB2F/f39\nhTjD5f3791++fHH9ZfMRCASuXbvmbtckDoLbWBcEg0H1/0ltfrhX+vHjx8GffOXKFT/UXKDN\nCJyTuvyjsrKyubn58+fPuguRiNHYQllbW3vy5Emhv725wdZMJvPq1avc/kUVFRXXrl074Ito\nn4xW0ENIP3/+HIvF0un0+vq6019WoAsdSjGeu1rsCLvCsm378ePH+X/Atp6JZZqmZVnOtLht\nHV62bT98+DCbze61DHanycnJmZmZPMvLk8czb321cjkcDpfSGJef0WdXWJZl3b59e3x8fOu2\nYvu6cOFCdXX1kydPcinpJF17e/uZM2ecR0ZGRo4dO7bzcodtL0Sj0UM933Ve3kQPDw9rP9hh\nm2QyqbsEKWjZeWdkZGTrJtq5DTy2Pa2zs/PkyZNKKdu2c3sKFK5X2w/3sEqpbDZ78uTJzs7O\ngl7LV206x2H348OREXaeymQyy8vLb968UUoNDAw4D3769GlpacmZYrq4uLh1bq2TRAe/Jz0C\nX+1kZxhGQ0PDqVOnCjShR3uy55SVlZWVlVVVVfX09OiuRQrCzu/m5+ebm5sL9/pTU1POFu3a\nGcb/3o2GYZSVlTU3N3d2drq7mFT7zn0VFRWXLl3Suzu8WISddD4/g8L1+Xe6NqcJh8OXL1+W\nvCu6dsyzk666uvru3bu+3Y3D9ZnGWlpVp0+f7u/vJ+n0omUH9eHDBz9MczVNMxQK1dXVtba2\nVldXF+5Cw8PDra2tbW1tTsTPzs5+/PjxyGvIuru7W1packfedHR0dHV1mab54MEDZwydzTt9\ngrCDmp+ff/funcZ3gmEY58+fd84G1CWVSj19+nTnN8E5km3nMI7Tw1hfX//bb7+p/++qsm2q\n8LbhJuhF2GG7xcVFZ7zYM/7ZzjeVSj179iw3fzsUCt28edP5emxsLBqNdnd3t7a27voPR0dH\nL1++7MONIeAg7LCdZ8cMbj3H1j9isZhzerRS6ubNm6zYLxk+7ZaGRp4dqDo7O+vNhQ6lrq7O\n2X+pvLycpCslDA9hu9x8tzyVlZUdO3Zs2w5LlmUZhuHz7Z0PvocCigi3sdiFs6zKNE3TNLcN\nUx47dqyrqyscDr98+XJlZWWvPQ5yvV3Dw8M/fvxw3matra1nz54tfPnALgg77MNZYrHXlkQ7\nV5uyeRH8iT477OPEiRO/OMI1NyE5EAg453Bzjgz8iZYdXLCwsHDA8y4AXQg7ACJwGwtABMIO\ngAiEHQARCDsAIhB2AEQg7ACIQNgBEIGwAyACYQdABMIOgAiEHQARCDsAIhB2AEQg7ACIQNgB\nEIGwAyACYQdABMIOgAiEHQARCDsAIhB2AEQg7ACIQNgBEIGwAyACYQdABMIOgAiEHQARCDsA\nIhB2AEQg7ACIQNgBEIGwAyACYQdABMIOgAiEHQARCDsAIhB2AEQg7ACIQNgBEIGwAyACYQdA\nBMIOgAiEHQARCDsAIhB2AEQg7ACIQNgBEIGwAyACYQdABMIOgAiEHQARCDsAIhB2AEQg7ACI\nQNgBEIGwAyACYQdABMIOgAiEHQARCDsAIhB2AEQg7ACIQNgBEIGwAyACYQdABMIOgAiEHQAR\nCDsAIhB2AEQg7ACIQNgBEIGwAyACYQdABMIOgAiEHQARCDsAIhB2AEQg7ACIQNgBEIGwAyAC\nYQdABMIOgAiEHQARCDsAIhB2AEQg7ACIQNgBEIGwAyACYQdABMIOgAiEHQARCDsAIhB2AEQg\n7ACIQNgBEIGwAyACYQdABMIOgAiEHQARCDsAIhB2AEQg7ACIQNgBEIGwAyACYQdABMIOgAiE\nHQARCDsAIhB2AEQg7ACIQNgBEIGwAyACYQdABMIOgAiEHQARCDsAIhB2AEQg7ACIQNgBEIGw\nAyACYQdABMIOgAiEHQARCDsAIhB2AEQg7ACIQNgBEOG/QyBj+K7q9XcAAAAASUVORK5CYII=", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_mesh(X, F, \"grey\")" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Adjacency Matrix\n", "----------------\n", "We define linear operators that compute local averages and differences on\n", "the mesh.\n", "\n", "\n", "First we compute the index of the edges that are in the mesh,\n", "by extracting pairs of index in the $F$ matrix." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "E = cbind(F[1:2,],F[2:3,],rbind(F[3,],F[1,]))" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Add the reversed edges. This defines the set of edges $\\Ee$\n", "that is stored in a matrix $E \\in \\{1,\\ldots,n\\}^{2 \\times p}$." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "E = unique_columns(cbind(E,rbind(E[2,],E[1,])))" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We keep only oriented pairs of index $(i,j)$ such that $i0$ as\n", "$$ \\forall t>0, \\quad \\pd{f_t}{t} = -\\tilde L f_t\n", " \\qandq f_0 = f, $$\n", "where $ \\tilde L $ is the symetric normaled Laplacian defined as\n", "$$ \\tilde L = D^{-1} L = \\text{Id}_n - \\tilde W. $$" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "tL = iD %*% L" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "This PDE is applied to the three components of a 3-D mesh to define a\n", "surface evolution\n", "$$ \\forall t>0, \\quad \\pd{X_t}{t} = -X_t \\tilde L^*\n", " \\qandq f_0 = f. $$\n", "\n", "\n", "One can approximate the solution to this PDE using explicit finite\n", "difference in time (Euler explicit scheme)\n", "$$ X^{(\\ell+1)} = X^{(\\ell)} - \\tau X^{(\\ell)} \\tilde L^*\n", " = (1-\\tau) X^{(\\ell)} + \\tau X^{(\\ell)} \\tilde W^* $$\n", "where $0 < \\tau < 1$ is a (small enough) time step and $f^{(\\ell)}$ is\n", "intended to be an approximation of $X_t$ at time $t=\\tau \\ell$.\n", "The smaller $\\tau$, the better the approximation.\n", "\n", "\n", "One can see that with $\\tau=1$, one recovers the iterative filtering\n", "method.\n", "\n", "\n", "Time step $\\tau$." ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "tau = .2" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Maximum time of resolution." ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "Tmax = 40" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Number of iterations needed to reach this time." ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "niter = as.integer(ceiling(Tmax/tau))" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Initial solution at time $t=0$." ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "Xt = X" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We use an explicit discretization in time of the PDE. Here is one\n", "iteration." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "Xt = Xt - tau*t(tL %*% t(Xt))" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "__Exercise 3__\n", "\n", "Compute the linear heat diffusion.\n", "Monitor the denoising\n", "SNR $err(l)$ between $X_t$ and $X_0$ at iteration index $l$." ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\n2Nb169eduhsi8x0j/ZW/f3H+u5ZuT07BLt2eouc4CoeZ7t+/Lx3BL0Md+/6YPvnZpXR3d7u8\nSl44HI7H4/m/TiY7xkFVI/NXOEQwGDT4UR3eZdt2V1eX8Ws/Gv7j+ZPB96a77KBPk7//u23b\nhyxBffh/zWSLSOvq6gqHw+5vt7W1dWxszJ1tqRjV2GXe0g5eZ+R6GwehcBjl06dPr1+/lk5h\njsw/Ze72iX2vsGT+OAzaxkEuX778xx9/SG3dnWs3e+z2DKf2inA4LFLX1Dl9+vTs7Kx0iqyl\njxL37t0zfkhjD3/9tGaTui0lH0o/0Nu2fffu3XA4PDIyovR5m7/y3J9Af83NzdXV1dIpBDi+\nL5n38JHGxsbGxsb5+flXr15JZ9mfZVkFBQU7Ozt1dXWnT5/2W8PYg/FbE/z111+bm5vSKXTR\n2Nh4+vTpPf8Yj8cfPHigbqO7zSnPCsUllV91dHSIDC3s6/nz58vLyyKbzvzS3uEvYvaExF1r\na2sTExOurdhWUFAQDoeLi4tLS0vD4fCJEyfc2a4XcXTzts+fP//zzz/SKeQVFBS0tLQceS/Z\n48eP19fX3YmEnFmW1dLSUlFRIR3kP2Kx2MOHD6VT/E8OxVRq+osOFhcXNzY2VldXt7a2EonE\nkb+99CWP3S+rrq4uKyurqKiIRCIuJTaUr4d3PG11dfXp06fSKYQVFRXdunUr8/V/bt68afbq\nhF4XDoe7urqkU+wvn5ON4wNXOTxyxbdtIxAICM7+wa8oHN6zvr7+5MkTfw5NpQ/cLS0tOa8l\nYNt2f3+/m7M6cCTLsi5dumTMWeH3eiH+bk1/ZAdkUTi8ZGNjw7V783RTWVnZ0tLi1Kvdu3dv\nbGyMJ86Ii0ajt2/flk7hMAcfg+LU0MiVK1fyfxEgTxQOb1hZWXn27Jn45ySXWZZ18eLFmpoa\nFS/e0dExOTm5uLio4sVxuMLCws7OTukUWcvh9F9QUJAeS8vtzevUCrbMZIQOKBy6SyaTo6Oj\nsVhMOoh7bNu+du2aC3MGL1++/PXr152dHdUbQpqzw1Tua2pqynadm3yu3Gl4aQbIB4VDa76a\nahAKha5fv378+HE3N9rT0+PF9Uu8paGhoampSTqFA2pra91cWI/dEoahcGhqenp6bm5OOoUb\nbNtubm6uqqqSCtDX1+fmYvCZL3PuacFg8Pr164Y99FLweei7D3PJYf9R+jRdIHMUDu3MzMx4\n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\nSUVORK5CYII=", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtAAAAJYCAIAAADE1kZ+AAAABmJLR0QA/wD/AP+gvaeTAAAg\nAElEQVR4nO3d6V/TWBvG8SYtZZFFVndccGEUxgUQEBD4ywGBQQXUcUNBlEVFHBQEZCklPC86\nH8YHC91ycp+c/L6vHAeTC2iTqycnJ9be3l4IAABAJVs6AAAAMB+FAwAAKEfhAAAAylE4AACA\nchQOAACgHIUDAAAoR+EAAADKUTgAAIByFA4AAKAchQMAAChH4QAAAMpROAAAgHIUDgAAoByF\nAwAAKEfhAAAAylE4AACAchQOAACgHIUDAAAoR+EAAADKUTgAAIByFA4AAKAchQMAAChH4QAA\nAMpROAAAgHIUDgAAoByFAwAAKEfhAAAAylE4AACAchQOAACgHIUDAAAoR+EAAADKUTgAAIBy\nFA4AAKAchQMAAChH4QAAAMpROAAAgHIUDgAAoByFAwAAKEfhAAAAylE4AACAchQOAACgHIUD\nAAAoR+EAAADKUTgAAIByFA4AAKAchQMAAChH4QAAAMpROAAAgHIUDgAAoByFAwAAKEfhAAAA\nylE4AACAchQOAACgHIUDAAAoR+EAAADKUTgAAIByFA4AAKAchQMAAChH4QAAAMpROAAAgHIU\nDgAAoByFAwAAKEfhAAAAylE4AACAchQOAACgHIUDAAAoR+EAAADKUTgAAIByFA4AAKAchQMA\nAChH4QAAAMpROAAAgHIUDgAAoByFAwAAKEfhAAAAylE4AACAchQOAACgHIUDAAAoR+EAAADK\nUTgAAIByFA4AAKAchQMAAChH4QAAAMpROAAAgHIUDgAAoByFAwAAKEfhAAAAylE4AACAchQO\nAACgHIUDAAAoR+EAAADKUTgAAIByFA4AAKAchQMAAChH4QAAAMpROAAAgHIUDgAAoByFAwAA\nKEfhAAAAylE4AACAchQOAACgHIUDAAAoR+EAAADKUTgAAIByFA4AAKAchQMAAChH4QAAAMpR\nOAAAgHIUDgAAoByFAwAAKBeRDgAA0NHW1tbff/+9ubkZCoX29vbC4fC5c+cuXrwonQt+Ze3t\n7UlnAABoYXV19cmTJynPC+fPn7906ZI3kWAMCgcAIPTs2bPl5eWM/kk0Gu3o6FCUB+ahcABA\noL1//352djbrfx4OhxsaGioqKlyMBCNROAAguPr7+906C9i23dHREYkwNRDJUTgAIKBcbBu/\nKiwsbGtrc32z8DsKBwAE0aNHjzY2NtRt37bt27dvl5aWqtsF/IWxLwAIIqVtIxQKOY4zPj5u\nWdb9+/dtmzWfwMJfAABl9vb2BgYGHj9+LB0E8igcABBElmV5tq+fP3/29fV9+fLFsz1CQxQO\nAAiisrIyj/c4MTHR19cXj8c93i80waRRAAiovr4+kf3W1tbW1dWJ7BqCmDQKAAESj8cfPny4\ns7MjmGFubs62bR7LEjQUDgAIhCdPnvz48UM6xb9mZmYoHEHDJRUAMNnc3Nz79+81PNSfPXv2\nypUr0ingHUY4AMBM4+Pjq6ur0ikORdsIGgoHABglHo8/evQoFotJBzlKUVGRdAR4jcIBAIZw\nHOfBgwcaXj35VUFBQXt7u3QKCKBwAIAJpO5xTYdlWceOHWtpaZEOAkkUDgDwN0UPfc2RZVk9\nPT3SKaARCgcA+NW7d+/m5+elUyRH28ABFA4A8J+NjY1Hjx5JpzhUb2+vdARoh8IBAD4zMDDg\nOI50ikPRNpAUhQMAfOPt27efP3+WTnEU2gYOQ+EAAB/49OnT5OSkdIoUaBs4AoUDAHQ3MjKy\ntbUlnSKF7u5u6QjQGoUDAPS1uLj4+vVr6RSptba22rYtnQJao3AAgKYePny4ubkpnSI1rqQg\nHRQOANDR2NiY/m0jHA7fv39fOgX8gcIBANoZHx9fW1uTTpFCYWFhW1ubdAr4BpfcAEAvsVhM\n58fKJ0SjUdoGMsIIBwDoZXh4WDpCCufPn7906ZJ0CvgMIxwAoJF3795JR0ihpKSEtoEsMMIB\nABrR9mFsCbW1tXV1ddIp4EuMcACALjS/mFJZWUnbQNYoHACgi1gsJh3hUEVFRX/++ad0CvgY\nhQMAtPDy5UvpCEdpbW2VjgB/o3AAgBb++ecf6QiH6urqko4A36NwAACOUldXF4lwhwFyReEA\nAHnLy8vSEQ5VW1srHQEmoHAAgLxXr15JR0iOiylwC4UDAOTt7OxIR0giGo1yMQVuoXAAAJJr\namqSjgBzUDgAAMkVFBRIR4A5KBwAIEzP9b5smxME3MTrCQCEjY6OSkdIgsIBd/F6AgBhes4Y\nLSoqko4Ao1A4AEDY3t6edIQk8vPzpSPAKBQOAEASS0tL0hFgFAoHAAizLEs6QhJ6jrvAvygc\nACBM27tPt7a2pCPAHBQOAEByIyMj0hFgDgoHAAgrLi6WjnCoxcVF6QgwBIUDAIRdv35dOsKh\nXr9+7TiOdAqYgMIBAMI0X2JrYGCAzoHcaf0qB4CA0L9zSEeA71nc+AQAOujr65OOkEJ7e7u2\nN9RAfxQOANCC4zj6DyScP3/+0qVL0ingSxQOANDFxsbGo0ePpFOkYFlWT0+PdAr4D4UDADTy\n8OHDzc1N6RSpFRcXt7S0SKeAn1A4AEAvg4OD8XhcOkVaGhoaqqurpVPAHygcAKCd2dnZ9+/f\nS6dIV0tLi85rl0ETFA4A0NHLly//+ecf6RTpsiyrsbGxsrJSOgj0ReEAAE1NTk5++vRJOkVm\n7ty5U1ZWJp0COqJwAIC+9F+cI6mSkpLm5mbpFNALhQMA9OWLxTkOU1pa2tTUJJ0CuqBwAIDW\n/DWZI6murq5IJCKdAsIoHACgO59eWPkVs0pB4QAAHzCgcyScPn362rVr0ikggMIBAD7w4sWL\npaUl6RSuYX30AKJwAIA/DA0N7ezsSKdwUzgcbm5uLioqkg4CL1A4AMA3jLmwcsC5c+cuX74s\nnQJqUTgAwE9M7RwhHghnOgoHAPjJ0tLSixcvpFMoFA6H79+/L50C7qNwAIDP/Pjx48mTJ9Ip\n1CosLGxra5NOATdROADAfz5+/Dg1NSWdwgvd3d22bUungAsoHADgS6urq+Pj49IpvBCJRLq6\nuqRTIFcUDgDwq5WVladPn0qn8MixY8fu3r0rnQLZo3AAgI/F4/HBwUHpFN7Jz8+/d++edApk\ng8IBAL5n8L2ySbFuhx9ROADABEHrHKFQqKKi4ubNm9IpkC4KBwAYIoCdw7Ksq1evnj59WjoI\nUqNwAIAhgjafYx+PgvMFCgcAmCM498r+jpXRNcdqKgBgjtLS0pqaGukUMtbX1/v7++PxuHQQ\nJMcIBwCYpr+/X+dju23be3t76hJWVlb++eefijaOrFE4AMBA+k8g7e3tjcViIyMjjuOo2D5r\nouuGwgEAZsqoc1iW16cD27a7u7sTf15cXHz9+rXruzh16lR9fb3rm0V2KBwAYKZYLDY8PCyd\nIoWurq5IJLL/nw8fPtzc3HRx+7/WGsiicACAsRYWFt68eSOdIoWWlpbi4uJf/2Z0dHR9fd3F\nXVy6dOn8+fMubhBZoHAAgMk0n0CakPTax7Nnz5aXl93aRVlZ2Z07d9zaGrJA4QAAw6mbQOri\nzI/bt28fP378wF86jjMyMhKLxVzZRSgU6u3tdWtTyBSFAwDMp/9NK6FQqKmpqbS09Pe/X1lZ\nefr0qVt7OTBrBJ6hcACA+d6/fz87OyudIrX29vaCgoKk/+vp06crKyuu7OXMmTNXr151ZVNI\nH4UDAALhr7/+2t7e/v3vvb8h9mg3btw4bLHUnz9/Pn782JW91NbW1tXVubIppEmv1xkAQB1f\nXFgJpZppMTQ0tLOzk/teeOSbx1iFDQCCory8XDpCWo4uRp2dnYWFhbnvZW9vL5gP15XCCAcA\nBIhfBjlSDj98/fr11atXruyos7OTaaQeYIQDAALEsizpCGnZ29ubnp4+4gtqamq6urpc2dHg\n4ODW1lbum8LRKBwAAB3Nzc0d/az5SCTS29vryuDEyMjIhw8fct8OjkDhAABoamhoKOXXdHV1\nuTKlY2ZmZmJiIvft4DAUDgAIEH/N29vb25ubm0v5ZW1tbdevX899d1++fHny5Enu20FSFA4A\nCIqxsTHpCBk7eibHvhMnTriyltePHz8GBgZy3w5+R+EAgECIx+Nra2vSKbJx9EyOfWfOnGls\nbMx9d47jcLusChQOAAgE/55E05nJkVBVVVVSUpL7HuPx+MjISO7bwa8oHABgPr8sv5FURvNO\nmpubi4uLc9/p1tbWX3/9lft2sI/CAQAm29ra8nXbSMjoCfUtLS2u7HR7e/vjx4+ubAohCgcA\nGGxqasqMSwMPHz7M6Ovr6+td2e/U1NT3799d2RQoHABgpv7+fmM+oO/u7mb09adOnXJr13//\n/bdbmwo4CgcAmObNmzd9fX3+WnIjpaWlJaldc6OsKygcAGCOL1++9PX1LSwsSAdx34sXLzLq\nHC4+NcZxHMY5csfz8QDABF++fDF+Ze4XL15EIpE0n9nm7gAPMzlyx+PpAcDfnj17try8LJ3C\nU9XV1Q0NDUd8QX9/v+tnt3A4fP/+fXe3GSgUDgDwq6GhoZ2dHekU/7Esr88p0Wi0oaGhrKws\nFAptbGx8+vTp06dP6jL09vYq2nIQUDgAwH/GxsZ8uk65r5WUlDQ3N0un8CvmcACAnwwODqb5\nbBFveD+qIYiSlwsKBwD4g4p5Cbk7ECnRPw60kECVEhyGwgEAutNtVOMIiWJxoF7QNhCicACA\nzjJdfALQFgt/AYCmBgcH9WwbiTW1XFxZy0eMWS3ee4xwAIB2VlZWnj59Kp3iUEmvmwTEyZMn\npSP4FYUDAPTy/ft3FtLWViTCeTNL/OAAQCOPHz/++fOndArAfczhAABdTE1N0TZ0FsxpK25h\nhAMAtMDYhv5qamqkI/gYIxwAIG96epq2cRh9xhWuX78uHcHHKBwAIGxjY2Nubk46hb40uR1G\nn97jUxQOABD26NEj6QhIjWfT54jCAQCS+vv7pSP4g+wAQ21trW1zxswJPz4AEPP8+XNNrhdo\nJWm3EPxBnThxoq6uTmrvxuAuFQAQ8+3bN+kIOtKqhLW0tBQXF0unMAGFAwBkcDFFc5Zl9fT0\nSKcwB4UDAASsr69r9Tkev8rLy+vs7JROYRoKBwAIGB0dlY6AJBjVUIfCAQBe6+vrk46Ag/Lz\n8+/duyedwmQUDgDw1LNnz6Qj4P9UV1c3NDRIpzAfhQMAPLK2tjY2NiadAv+nt7dXOkJQUDgA\nQKGNjY0nT57s7OxIB0ESHR0d0hEChMIBAG768ePHs2fP9vb2uAlFf9FoVDpCgFA4ACB7W1tb\nExMTKysr0kGQscLCQukIwULhAIB0ra2tTU5Orq6uSgeBC+rr66UjBAuFAwAOWllZmZ2d/f79\nu3QQKFRaWiodIVgoHAD8LRaLOY6zs7OztLS0sbFRXFy8u7trWdbOzs729vbPnz8dx7EsKy8v\nb3d3d3t7e3d3N/HnxBwLZloEFk9/9RiFA4BrHMfZ2tr6/Pnz8vLy9vb2zs7O/mM/PTuvf/36\nNenfb21t7f+Ze0YA71E4AGRscnLy8+fP6XQIxg+grXg8HolwEvQOP2sA6fr8+fPbt2+lUwDu\nWFxcPHPmjHSKAKFwAEjL0NAQVyIAZI0pMwBS+/DhA20Dhvn8+bN0hGChcABIbWZmRjoC4LKf\nP39KRwgWCgcAAFCOwgEgtfz8fOkIgMu4hcpjFA4Aqd27d086AgB/o3AASEt3d7d0BMBN+6vS\nwRsUDgBpsW27t7dXOgXgmnA4LB0hWCwuYgHIyOPHj5neDwNQoD3Gwl8AMnP37t0QtQNAhhjh\nAJCT4eHhWCwmnQLIDMMb3qNwAHDH/Pz8u3fvpFMAqZWWljY1NUmnCBwKBwCXOY4zODjoOI50\nECAJ2oYUCgcAheLx+NOnT9fX16WDAKFQKNTU1FRaWiqdIqAoHAC8Mz09PT8/z2EH3rt8+fK5\nc+ekUwQahQOAjPfv38/OzkqngPlu3rxZUVEhnQIUDgAa+Pvvv79//y6dAj5gWemetizLamho\nqKqqUh0JaaJwANDL1NTU58+fmXOKrNm23dHREYmw0JReKBwA9DU/Pz89Pc1hCmmiauiMwgHA\nH9bW1iYmJjY2NjhqIam6urra2lrpFDgUhQOAL62srExMTGxtbUkHgTzLsnp6eqRTIAXGnQD4\nybt37z5+/MgnJewLh8P379+XToHUKBwAtDY1NbWwsLC7uysdBDqybZu24RcUDgAacRzn2bNn\nq6urjGEgHd3d3dIRkC4KBwBhX79+ff36NQ0DmWppaZGOgAxQOAAImJmZ+fDhg3QK+Fg4HC4u\nLpZOgQxQOAB4ZGNj49GjR9IpYIi6ujrpCMgMhQOAWg8fPtzc3JROAdOcOXNGOgIyQ+EAoMTg\n4GA8HpdOAUAXFA4Abnr+/Pm3b9+kU8B8q6urpaWl0imQAVYaBeCC9fX1sbExjifwDKuL+g4j\nHAByMjQ0tLOzI50CgUO79R0KB4AsDQ8Px2Ix6RQIroWFhVOnTkmnQLooHAAy4zjO4OCg4zjS\nQRB0b968oXD4CHM4AKTLcZwHDx5w0PALyzL/CM9MDh8x/+UIwBUPHjzgCWo+ZXbzKCkpaW5u\nlk6B1Ex+FQJwRX9/PwcKPbnVJGzb3r9G9uuff5WXl6ft7OBjx47dvXtXOgVSoHAAGYjFYsvL\ny58+fVpbWwuFQvvH5aTH/cSB27KsUChUXl5+4cKFsrIyjwPniGmh8IuTJ0/+8ccf0ilwFAoH\nkITHjxaLRCLXr1+vrKz0bI8pUTXguwsxBQUF7e3t0ilwKJ+9ngAVtra2RkdHtVqH27KsaDR6\n9uzZ2tpaL/e7uLg4MTHBYSHgfFc19jGHVGd+fVUBOVpYWHj79q2/Xv+WZRUUFNy6daugoMDd\nLW9sbDx+/NhfPw3kzoNicWAXWewxi3/S1dUVibDog3YoHAgWI+c/RqPR69evl5eXZ/Sv3r59\n++XLF5bTgJFu3rxZUVEhnQL/h8IB88Xj8aGhIV7qQKDU1tbW1dVJp8B/KBwwGUtHAILE54LY\ntt3V1WXbtmAG7KNwwEDv37+fnZ2VTgFAC42NjVVVVdIpQOGAWYycogG4SHzUQUQkEunq6pJO\nEXRBfOXBSH19fdIRAGiNoQ5ZFA74HqMaANJUU1Nz48YN6RQBReGAjzGqASBTlmU1NzcXFxdL\nBwkcCgd8iVENQJABE0HOnz9/6dIl6RTB4vsXDYLm0aNHGxsb0ikA+B7roHuMwgHf8PiBagCC\n4NatW5mu0ovsUDjgD1xDAaAIQx3eoHBAd3///ff379+lUwAwXEdHRzQalU5hMgoH9BWLxYaH\nh6VTAAiKvLy8zs5O6RTGonBAU8PDw7FYTDpFKGTEhHwAaeLyijocSaGd1dXV8fFx6RQAgqu3\nt1c6goEoHNDLyMjI1taWdAoAQUfncB0P7YVG+vr6aBsAdPDu3TvpCKaJSAcAQiHFD5T3bBKG\nZVmhUIhRQ8AA8/PzNTU1paWl0kHMwSUVyNN5jY10yopt23t7e+5+C8xUBXTAhRUXcUkFwvr6\n+mTPrIlhicMksu1/TdIvdhwno2/h6D3+ul8AssbGxqQjmINLKhDz8ePHqakpz3Z32JhBOqf2\n/a9JvwcccXkl6V8eMaTBaAcgZW1tTTqCOTiQQYb+d6NwmgcQCoXKysru3LkjncIEXFKBAB3u\nRkl5XeOwtlFQUJDONREAbpF9x/348UNw7yahcMBT8Xi8r69POkUolMMkia2trcS/jUQiieNg\nJHLw0iSNBHARY41moHDAOx8+fBgcHBQMkOgBlmW5Ugji8XjiOBiPxw/8Ly+Pj0d8L783IUBn\n2jb1+fl56QgmoHDAI48fP56ZmZHNkOgB+7ewFhYWJv4+o0dE2rZ375oc72f5vQkBOtN2JOPD\nhw/SEUzAByB4YXBwUMOT3+bmZuIPiafE7d9XcvR0UcdxUm7Ztu10viwl1vYAdODK2xmMcEC5\nvr4+2bbx+zhB0pGD/ZGP3M/KGR2efg2T6ZByml/PEqgAxDHCAYVisdjw8LB0iiQnWq1GDn79\nt5luJ82vT/llBg9+GPytwTOXL1+WjmACCgdU8XhdL0EGnM9+/xaMOU+b8V1A1tmzZ6UjmIDC\nASX0nLSRtcSNLblcx1V6/laxcc7TQIK29874DnM44L7+/n4ftY2jjyb7sx+OaBvp3Lei9Pyd\n+8Y5pAKHuX//vnQEQzDCAZdpsq5X+o4+W6dzLjdgBjvjGUBShYWFXt4JbzYKB1yzuLj4+vVr\n6RQ5SXo7qyu3eITD4UwfKgtAVl5eXltbm3QKcxgyLwziPnz4IL6uV1KHzW9IZ6mMjOZGuLX2\nht/5brap7wLDG5FIpKurSzqFUXinwQWPHz/++fOndArveHyK+n13+38TiUR2d3d5FwOu6+3t\nlY5gGgoHctXf36/DqyhxDs5xmOGIUzufg4GAKCgoaG9vl05hII6hyIkmbeOAlOUgEonE43HX\nO4RIKTmiJInwYzMLh8O7u7vSKSCPyyhK+e/QAH3of0OKWye/TLeT436lYgOBZdt2d3e3dArD\ncTxCllxpG5qfETWPB9V4ARjPtu3W1taCggLpIIHA2wnZkBrbcPcE4O7WotFo4qmzWewooztv\nj97a/qKonCzTkcXFNZ6E53eWZZ08ebK+vl46SOBwSELG9L+SklJ+fv729rbqvWhyyld6gtTk\newSOFolEmpqaioqKpIMEGgcLZMBxnIGBAekU3s2oSHz8DbnxLBXjeTzNBUjKsqyioqLy8vIr\nV65IZ8FBvOeRAQPGNlxkWVZBQcHm5maaX+/xrRC/ntFpAzBJOBy2LMu27atXr1ZWVrL0uF9w\nWEG6aBtIyLqOiPcYbv/xi7y8vHA4fO3atYqKCukscA1vG6QlUG1jfygi06keifOQ92cjzn/Q\n0/78ocQfEsMSoVBod3e3pKSkuLg4Ho+XlpaeOHEiGo0KZ4V6HKeQ2sDAgI+mL3gwIfT3KR3p\n3Ifi/fJclmVVV1d//fo1FArl5eXt7OxksYVESJ4Ug0xZltXT0yOdAhqhcCCFBw8eBHkRRh8N\nHuxHzc/P393dTUx3BQQVFhbytFXs883BFCLGx8dXV1elU6RF5yU60tmXns2GgQ2P6fkyyNH1\n69dPnDghnQLyDHxxwy0rKytPnz6VTqEp/U8MkUgkFAq5Nc5B83CF/i8bRXhGCUIUDhxG0ZIb\n2h5wNQyWXSRv1jQDsnD69Olr165Jp4AY7Q6y0IQmt6UIrl3hJQ3rTkjXVPC7M2fOXL16VToF\nBHBAQRKCD53nJPerpD+NLO6IkXX05RhKXjCVlJQ0NzdLp4CneMvhIMG2ASBB8z7kYjymlAaH\n1q9peO/r16+vXr2SThEKqX8mp23be3t7hr3+NT9LpaT/rUZ+/wlrq6ys7M6dO9IpoBZvHvxH\nk2ezIU3pzw/dP03yaHVo7ty5c5cvX5ZOASUoHPiPJhNFlfLvc0AQELzSEoqLi1taWqRTwE28\nsvGvoaGhLJa+xhEyOnNwmoFS/n2BWZZ17949HrZiAL++BOGu1dXV8fFxL/fo4uHPv0fS3Hk8\nE8Xg59Jp/iqKRCKsVW9ZVn19/cmTJ6WDIEtav8fgGa0upuh86Pd4XRAgTTq/a1QoKipqbGws\nKiqSDoIMBOs1iqSMuQ/Wy2MuS33vC9qpDrqpqam5ceOGdAqkxpEi6F6/fr24uCidAj6Q8g4X\nmgdkWZZVVlZ2+/Zt6SBIjgNEoG1tbY2MjEinUIuzIBBAeXl5zc3NBQUF0kHwH47FgabV1A0f\n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\nAADl/gcQvb/EDkVVUQAAAABJRU5ErkJggg==", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n/frrr0YyqKNVq1bFjsBCKRxAQJOTkz/++OPExETsIEBkCgdQf69evTp58mTsFECKKBxAPZ06\ndcp4Bg3z6NGjrq6u2ClYEIUDqIP79+9fu3YtdgoK58aNGwpHVigcQPUqlcrQ0JB7l6RckuT2\ntlmvXr2KHYGFUjiAajx48OCXX36JnYIFyWvbmOGsSlYoHMDinDlz5uXLl7FTUKumpqapqalS\n9sc/hoeHFY5MyPb7DGik77///vXr17FTMLsF9oas14tZJUnS29sbOwXzyOE7D6ivFy9enD17\nNnYKFm2x3aK5uXlycrJUKrW0tMy62Hy5XC6VSumcsvPxxx9v3749dgrmonAAH/TTTz89ffo0\ndgpYkM8++2zz5s2xU/BB5nDAgty+fXtkZOT58+czp72raOpJksz8b2dn59atW5cvX17/lHUy\nNjb2ww8/xE5BNXJ5xmSB7ty509raumHDhthBmF1x35owq7t37966dWumVUTR0tKybdu2tWvX\nNn7TT548uXTpUuO3S1BVV5BZn5j+QrNs2bJ9+/bFTsEs0v7WgdDOnj37999/p/+DkCRJe3v7\n9u3b6zs08vTp04sXL6b/n092zYztvf0eC91aurq63EU2hRQOCmdkZOTixYvpnPhWi5aWls7O\nzpUrV3Z3d7//t6Ojo/fv3x8ZGRkfH/epJ/dct5JCCgdFceHChZGRkdgpIBVqH2NI/7kVnSNt\n0v6OgRoNDg7mbzADWKAjR460trbGTkGppHCQV0NDQzMrCgAF19nZuX///tgpUDjIl9u3b9+6\ndSt2Cki1crmcJEnVl2K9Pwk0/drb2w8dOhQ7RdEpHOTE6dOnx8fHY6cAUipJkgMHDnR0dMQO\nUlwKB5nX398fOwKQDUuXLj1w4EDsFAWlcJBhqgbUXfovP6mRq1diyfkbi7waGBjw1oUGeL9/\nvP0n2W0nGzdu3LJlS+wUxZLV9wqF5TJXoC5Wrly5Z8+e2CkKROEgM1zpCtSX0yuNpHCQAS52\nhRT60N3dSlm7aLanp2fFihWxU+SfwkHama4BhGahjgZQOEgvS2sADeP0SmgKB2k0MjJy4cKF\n2CmAwtm/f39nZ2fsFPmkcJA6J06cqHrR5Xp5c3K6paXl9evXccMAjdTV1bVjx47YKXJI4SBF\n7t+/f+3atdgpgKL74osv1q9fHztF3jTHDgD/lbkFNrK75BEUShUf1evXryscdWePSXyvXr06\n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\nTTOt4osvvli9enUdXzlPsroP4o3Czt5IkmTlypVzLJj4559/pnM0lQX67LPPNm/eHDvFu65d\nu3b//v26v2zoRljY4Q3SQ+HItkDrcKT523B7e/uePXsWfvWj63cyp7m5+ejRo7FTzCXKiZVa\nPpWpGiWisNJ7XGFeDfgGn5LmMe9gxtzGxsZ++OGH+kYKISU/7YjSOaTxvj/++OPq1at1fMHQ\nv/qjR482N7tEgMiKvoPLruvXr//++++xU4SVJElPT0+9llho8A14tYeFK5fLx48fj51icaob\n5Jj7XTFzX/W6v22ampre3AwSIrJPzKSsXFxendWrV3/zzTchXvn27du3bt0K8cpUIUmSffv2\nZfSywOHh4UePHs37sHkbRgM+yF9//fVHH30UeiswL4UjY54/f/7vf/87doogwvWMt2X3KoM8\nyceKium/RHaG6aKkhLN6WdLgkwINkCRJe3v7t99+27Atlsvlvr6+rBwqcqYxnbJhMnHWrKWl\nJXYE+K8MfGAolUpPnjy5dOlS7BT1tGzZsp6ennK5HCuAhToa5l//+teXX34ZO0X9LfCsSr1U\n12/SsFoazFA4MiBPMzbK5fKOHTtSckb5559/fvz4cQM2VMebb2XIzp07872WdiZOzzmfQno4\npZJqv//++/Xr12OnqI8U3nN5586dv/zyy4MHD0JvqDhtI0mSAwcOdHR0xA7SCBHH5yCLFI70\nysfARrlc/uqrr7q6umIHmd2XX345Ojpa463vqhjrzsTp/4VrbW09ePCglR7SZuY6W0gJO4g0\nunTp0pMnT2KnqFVnZ+f+/ftjp5jfgQMHLly4MDIyUvUrzFsd3q8X+WgbS5YsaeSE3xRqampK\n8zzuzz77LHYE+B+FI11u3Lhx79692ClqtWzZsn379sVOsQh79uwJervdfNSLN9rb2w8dOhQ7\nRSqsXbv2jz/++NDfRh/H2rRpU8StwzsUjhTJwTmU5cuX7927N3aKahw/fty1snPbsGHD1q1b\nY6dIl/Xr189ROLL+cYb6UjhSIQfnUFpbW48cORI7RU2sz/G+JEm6urq2b98eO0hK1Wvd/RCW\nLFkSOwL8g8IRX9aX80qS5PDhw62trbGD1MGmTZusfT6jq6trx44dsVNQPRfRkDYKR0y//vrr\nnTt3YqeoSc7Wjuzu7i544Whra/v2228dq3IgozepIccUjmiyPrBRyukihgcPHszEvezr7tNP\n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", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nz6dk7jxIV1fXtm3bJv+Z48ePVyqV5uSZojSs+JQtSZIcPHgwhZMc+/v7y+Vy7BTTsGjRos2b\nN8dOQauzs8u27N4pYLo6Ojq2bNkyrVOew8PDp06dCheJcNatWze20l1qZWsOqeEN0kDhyLDc\nt42xEcudO3fW8yRnz57N6En3FjRnzpxdu3bFTjElQ0NDp0+fbuATTjLWVecwWMuuvUHaKBxZ\nle+pG2vXrl2xYkWjnu3Nmze//vpro56NELJ489JGddmGnFabZE3SLL625JLCkUmZO4X8RUmS\nzJ49e8eOHeFO2J88efLdu3eBnpwaJEmydOnSH3/8MXaQ2qXhivTJ+4rhDdLDZbHZk62Tx180\na9asXbt2NWFi4L59+wYGBu7cuRN6Q02Q9ammCxcu3LJlS+wUDTBnzpzh4eEaHtjAv+Dkz9Oc\nVdFgKrK922o1qV0pb7rGrijbsWNH89e9yc1rmEXz58/fvn177BQNloZBjkmYLkp6KL+ZkY9J\nG0mS7Ny5M+L6eqVSqa+vL2ejRCn31Vdffffdd7FTAJEZ4ciGlH+Lmoq0XYCQwoU6cuZ///vf\nDz/8EDtFcGmektzW1ja2tiakgRGOtLt9+/a9e/dip6hde3v7vn37Urh2U09PTz4GjVIlSZJv\nv/32q6++ih2kedK8vmSdl5RDYykcqZbpb+GzZs3as2dP7BST2bx58/Xr1x89ehQ7SB6sX79+\n6dKlsVPE0dbWVvO9OYLO/01zGaIFKRwpld3rKZIkWb9+/Uf3N0mttWvXjo6OPn78uAnbyvql\nJZ9KkmTLli0LFiyIHSSy9vb2GgpHe3v7yMjI+Fvii1e3FmLfHBHqpHCkUXZnbKxevfqbb76J\nnWJ61q1bNzIy8scff4TeUG6OFtFn/qbNjh07+vv7p/uoj5YJnvztUcObx2JfpI3CkS6nTp2q\n7bL+6OLeN7xOmzZtOnPmzKtXr2IHSbUkSXbv3m2U/lMdHR01PCr0iFfKb0ZDC1I40iK760N0\nd3dv3Lgxdop6bd++3bWyE9m/f39tx1QmEfrNlrmxRnJP4UiFjN6Grb29/cCBA7FTNExvb292\nT2Y1XJIkW7du7erqih0kG/I3QQcaTuGIrFwu13D2Nw127tw5d+7c2CkabP/+/Rn9czTQsmXL\nMn1/kyhqbhuaCq1D4Ygpu7cTy+t6yR0dHaVSKbuXItdj9uzZu3fvjp0iqya5WevkptI2lBLy\n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\nENz/A9kEyOnEAqhyAAAAAElFTkSuQmCC", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "source(\"nt_solutions/meshproc_3_denoising/exo3.R\")" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "## Insert your code here." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Plot the error as a function of time." ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "t = seq(0, Tmax, by=Tmax/(niter-1))\n", "\n", "plot(t, err, type=\"l\", col=\"blue\", xlab = \"Time\", ylab = \"SNR\")" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Mesh Denoising with Sobolev Regularization\n", "------------------------------------------\n", "Instead of solving an evolution PDE, it is possible to do denoising by\n", "solving a quadratic regularization.\n", "\n", "\n", "Denoting $G \\in \\RR^{p_0 \\times n}$ the gradient operator, the Soboleb\n", "norm of a signal $f \\in \\RR^n$ is defined as\n", "$$ J(f) = \\norm{G f}^2 = \\dotp{L f}{f}. $$\n", "It is extended to mesh poisition $X \\in \\RR^{3 \\times n}$ as\n", "$$ J(X) = \\norm{X G^*}^2 = \\dotp{X L}{X}, $$\n", "(remeber that $L$ is symmetric).\n", "\n", "\n", "\n", "Denoising of a noisy set of vertices $X$ is then defined as the solution of a quadratic minimization\n", "$$ X_\\mu = \\uargmin{Z \\in \\RR^{3 \\times n}} \\norm{Z-X}^2 + \\mu J(Z)^2. $$\n", "Here $\\mu \\geq 0$ controls the amount of denoising, and should be\n", "proportional to the noise level.\n", "\n", "\n", "The solution to this problem is obtained by solving the following\n", "symmetric linear system\n", "$$ X_\\mu^* = (\\text{Id}_n + \\mu L )^{-1} X^* $$\n", "(remember that the mesh vertex position are stored as rows, hence the transposed).\n", "\n", "\n", "We select a penalization weight $\\mu$. The larger, the smoother the result will\n", "be (more denoising)." ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "mu = 10" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We set up the matrix of the system.\n", "It is important to use sparse matrix to have fast resolution scheme." ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "A = Diagonal(x=1, n) + mu*L" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We solve the system for each coordinate of the mesh.\n", "Since the matrix is highly sparse, it is very interesting\n", "to use an iterative method to solve the system, so here\n", "we use a conjugate gradient descent (function cg from sparse.linalg)." ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "# Computing Minv for the pcg\n", "dA = diag(A)\n", "A[which(dA == 0)] = 1e-04\n", "Minv = base::diag(1/dA, nrow = nrow(A))\n", "\n", "pcg = function (b, maxiter=1000) \n", "{\n", " x = rep(0, length(b))\n", " r = b - A %*% x\n", " z = Minv %*% (r)\n", " p = z\n", " sumr2 = sum(r^2)\n", " for(i in 1:maxiter)\n", " {\n", " Ap = A %*% p\n", " a = as.numeric((t(r) %*% z)/(t(p) %*% Ap))\n", " x = x + a * p\n", " r1 = r - a * Ap\n", " z1 = Minv %*% r1\n", " bet = as.numeric((t(z1) %*% r1)/(t(z) %*% r))\n", " p = z1 + bet * p\n", " z = z1\n", " r = r1\n", " sumr2 = sum(r^2)\n", " }\n", " return(x)\n", "}" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "max_iter = 50\n", "Xmu = X\n", "for (i in (1:3))\n", "{\n", " b = X[i,]\n", " Xmu[i,] = t(as.matrix(pcg(as.matrix(b), max_iter)))\n", "}" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Display the result." ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtAAAAJYCAIAAADE1kZ+AAAABmJLR0QA/wD/AP+gvaeTAAAg\nAElEQVR4nO3daVsTSRuG4a4khEV2WRRlVGQUN0DEd0TW/HJARHDfUFBRQRTZBEFECCG8H/Bg\nHETI0tVPVfd1fprDIembkHTfqa6uVtvb2w4AAIBOIekAAADA/ygcAABAOwoHAADQjsIBAAC0\no3AAAADtKBwAAEA7CgcAANCOwgEAALSjcAAAAO0oHAAAQDsKBwAA0I7CAQAAtKNwAAAA7Sgc\nAABAOwoHAADQjsIBAAC0o3AAAADtKBwAAEA7CgcAANCOwgEAALSjcAAAAO0oHAAAQDsKBwAA\n0I7CAQAAtKNwAAAA7SgcAABAOwoHAADQjsIBAAC0o3AAAADtKBwAAEA7CgcAANCOwgEAALSj\ncAAAAO0oHAAAQDsKBwAA0I7CAQAAtKNwAAAA7SgcAABAOwoHAADQjsIBAAC0o3AAAADtKBwA\nAEA7CgcAANCOwgEAALSjcAAAAO0oHAAAQDsKBwAA0I7CAQAAtKNwAAAA7SgcAABAOwoHAADQ\njsIBAAC0o3AAAADtKBwAAEA7CgcAANCOwgEAALSjcAAAAO0oHAAAQDsKBwAA0I7CAQAAtKNw\nAAAA7SgcAABAOwoHAADQjsIBAAC0o3AAAADtKBwAAEA7CgcAANCOwgEAALSjcAAAAO0oHAAA\nQDsKBwAA0I7CAQAAtKNwAAAA7SgcAABAOwoHAADQjsIBAAC0o3AAAADtKBwAAEA7CgcAANCO\nwgEAALSjcAAAAO0oHAAAQDsKBwAA0I7CAQAAtKNwAAAA7SgcAABAOwoHAADQjsIBAAC0o3AA\nAADtKBwAAEA7CgcAANCOwgEAALSjcAAAAO0oHAAAQDsKBwAA0I7CAQAAtKNwAAAA7SgcAABA\nOwoHAADQjsIBAAC0o3AAAADtKBwAAEA7CgcAANCOwgEAALSjcAAAAO0oHAAAQDsKBwAA0I7C\nAQAAtKNwAAAA7SgcAABAu4h0AACABebm5l6+fLm9ve04jlIqEok0NzcXFhZK54I11M67BwCA\n3338+PHNmzcH/EBnZ2ckwndXHI7CAQDYx7Nnz758+ZLKTyqlrl69WlJSojsSrEbhAADs1dvb\nm8GjlFIdHR0MeGBfFA4AwH/cuXNnY2Mjm2eIRqPt7e1u5YE/UDgAAP+R2fDG75RSjY2N5eXl\nrjwbbMfAFwBAi+3t7adPnzqOc/36da5nAYUDAKDX/fv3Hcf5+++/T548KZ0FYlj4CwDwH0op\nHU/75s2b3t7eZDKp48lhPgoHAMA7/f39T548kU4BAZxSAQA4juO8ePFibm7Ogw0tLS15sBWY\nhqtUACDo+vr6PD4WlJSUtLS0eLlFiGOEAwAC6tWrV9PT0yKbrq+vF9kuBFE4ACBwsl/aKxvR\naLS4uFhq65BC4QCAoFhfXx8eHpY6k87yowFH4QAA/1tdXd1ZDMNLsVjM4y3CZBQOAPA5t5Yq\nT8uJEye83yhMRuEAAN8aGhpaX1/3frtHjx49d+6c99uFySgcAOBDiURiYGBAZNM1NTXnz58X\n2TRMRuEAAL+5d+/e9+/fRTZdX19fW1srsmkYjsIBAP4xMTHx/v17qa1fvHixurpaauswHIUD\nAPxgfHx8ampKMMDp06dpGzgAhQMA7La0tPT06VPZ+1TU1taeOXNGMADMR+EAAIt5fxuU35WW\nlrJUOQ5F4QAAKy0vLz969Eg6hXP16tXS0lLpFLAAhQMA7PPgwYNv375Jp3C6u7tDoZB0CtiB\nwgEAljHhNIrDyuVIE80UAGzS399vQtu4cuWKdARYhsIBANa4detWMpmUTuH89ddfFRUV0ilg\nGQoHANjh6dOnW1tb0ikcpdTZs2elU8A+FA4AsMPS0pJ0BEcp1dPTI50CVqJwAIAFJicnTZi6\n0dXVJR0BtqJwAIAF3r17Jx3BOXnyJBfBImO8dQDAdKurq9IRnLy8vL///ls6BSxG4QAA092/\nf186gtPW1iYdAXajcACA0RYWFqQjOLm5udIRYD0KBwAYbWRkRDqC09raKh0B1qNwAIDRTLg4\nJRqNSkeA9SgcAGCuRCLhwVaUUgf83/z8fA8ywPcoHABgrtu3b3uwlYMHUcrLyz3IAN+jcACA\nuUw4n3Lw+AeQIgoHABiqv79fOoLjOA7Lb8AVFA4AMJQJN4YF3ELhAAAA2lE4AMBEDG/AZygc\nAGCiubk56Qg/mZMEVqNwAICJKioqpCP89OLFC+kI8AMKBwCYaHJyUjrCvxYXF6UjwHoUDgAw\n0dmzZ6Uj/ItBDmSPwgEAOEQikRgfH5dOAbtROAAAh5uampKOALtROADAUKatKf7+/XvpCLAY\nhQMADNXc3Cwd4T8mJia8uXstfInCAQCGKi0tlY6w1+3bt+PxuHQKWInCAQDmMu2syvb29uDg\nIPM5kAEKBwCYq6enx7TO4TjO+Pj4+vq6dApYRm1vb0tnAAAcpLe3VzrCPpqbm8vKyqRTwBoU\nDgAwXTKZ7O/vl06xj7KyMtNmtsJYnFIBANOFQqHa2lrpFPtYWlrq7e1lGilSwQgHANhhfX19\naGhIOsX+cnNzb968KZ0CRmOEAwDskJeXV1dXJ51ifxsbG729vSsrK9JBYC5GOADAJp8/fx4b\nG5NO8UdKqZ6eHukUMBGFAwAsY+ZFK7+KRqPt7e3SKWAWCgcAWCaRSAwMDEinOByjHfgVhQMA\n7HP37t21tTXpFClhtAM7KBwAYCXzT6z8KhKJdHZ2SqeAJAoHANjKrs7hOE5RUVFra6t0Csig\ncACArd6/fz8xMSGdIm3hcLirq0s6BbxG4QAAi01NTY2Pj0unyAS1I2goHABgtydPniwtLUmn\nyFx3d3coxCqU/kfhAADrWTeZYw+lVEdHRyQSkQ4CjSgcAOAHtneOHeXl5U1NTdIpoAWFAwD8\nwJbVwFJx/fr1wsJC6RRwGYUDAHwimUz29/dLp3BNZ2cnJ1n8hMIBAP6xsrLy8OFD6RSuCYfD\nN2/epHb4A4UDAHxlbGzs8+fP0incpJS6efNmNBqVDoKsUDgAwG/i8fjg4KB0CvddvXq1tLRU\nOgUyROEAAB/y2XyOXfn5+Tdu3JBOgUxQOADAn3w2n+NXXD1rIwoHAPjW/Pz8yMiIdApdrly5\nUlFRIZ0CqaJwAICfjYyMzM/PS6fQqLW1taioSDoFDkfhAACf6+vr8/2u/tKlS1VVVdIpcBAK\nBwD4X2adQymbjhFKqa6uLu4DZyyb3kwAgMx8/vx5bGxMOoUXcnJyOjo6pFNgHxQOAAiEgYGB\nRCIhneKnPStquL5YGXdjMRCFAwCCwqjJHMeOHbtw4cKef4zH4/fv34/H49k/v1Kqp6cn++eB\nWygcABAgRt3F/oDlNNbW1h48eLC1tZXlJlpaWkpKSrJ8EriCwgEAwWJU5zh0tfKnT58uLi5m\ns4lQKNTd3Z3NM8AVFA4ACJwMOoe+K1b++eefgoKCg39mYWFhZGQk4wDhcLirqyuzx8ItFA4A\nCJzh4eEfP35Ip/hXZ2dnKvegz/JamxS3Ak0oHAAQREadWHHSaQOLi4vPnj3L7ODF+mCCKBwA\nEEQGrsyR1rWsjx49Wl5ezmAreXl5bW1tGTwQWaJwAEBAmTbI4ThOe3t7NBpN8YeTyWR/f38G\nW2EaqQiWgAWAgDLwetHBwcEPHz6k+MOhUCgWi+Xn56e7lWQyaWDZ8j0KBwAEVEtLi3SEfbx9\n+zatFVFv3LhRX1+fwYZ6e3vX1tYyeCAyQ+EAAJhlYGAgrZ+vra2tq6vLYEN3795dWlrK4IHI\nAIUDAGCcvr6+tH7+1KlTsVgsgw09efLE3du44E+YNAoAwZXxvEsP5Obm3rx5M91H9ff3J5PJ\ndB/FPWY9wAgHAATX/Py8dIQ/2tjYuHv3brqP6u7uPnfuXLqP2tzczGBbSAuFAwCCa2JiQjrC\nQdbW1lZXV9N91IkTJzo7OzPYFpeuaEXhAIDgMv8yjfv372fwqEgkktmUjnTnjiB1FA4AgNEy\nHniIxWJKqbQesr29zTiHJhQOAAioDM5WSMn41E9PT08Gj2I+hw4UDgAIomQymdnZChHZzDXJ\n4NzK2tra9PR0xlvEvigcABBExl4Nu6/t7e14PJ7xw/Py8tJ9yKtXr16/fp3xFvE7CgcABI6N\nUyPv3LmT8WMzuz3sp0+fMt4ifkfhAIAAWV5e7u3ttXHJx53pnGndZiV7NjYzY7HSKAAExdDQ\n0Pr6unSKbJWXlzc1NaX7qMxWIHUc5+jRo42NjRk8EHswwgEA/jc7O9vb2+uDtuE4zuLiYgYD\nDxl/u/7y5Ys/XjdxFA4A8LnJycmXL19Kp3BTBqdXshnOHxoayvix2MUpFQDws1u3bm1tbUmn\n0CUajba3tx/6Yx8/fnzz5k02G1JKZbakB3ZROADAn548ebK0tCSdwguH3uvVlcVDm5qaysvL\ns3+ewKJwAIDfPH78+OvXr9IpBOwsZB6NRnNzcxOJxMbGhrujO5ndnwU7KBwA4B8vXryYm5uT\nTuFbp06dqqurk05hq4h0AACAC75+/fr48WPpFD43PT1N4cgYhQMA7DY7O2vyRShK+WcofXNz\nUzqCxSgcAGCr8fHxqakp6RSH8E3b2LG6ulpYWCidwkr+KZ4AEBzr6+ssDiGipKSkpaVFOoWV\nGOEAAMuYdr2rn06aHOrcuXPSEWzFSqMAYJPe3l6j2obju5MmB5uenpaOYCtGOADADoZPDj2Y\nb0ZBampqpCPYihEOALBAPB63t204fhkFCYVCzBjNGCMcAGC6+fn5kZER6RRwzp49Kx3BYoxw\nAIDRkskkbcMQJ0+elI5gMUY4AMBcXP4K36BwAIChJiYm3r9/L50CPzFdNEsUDgAw0cDAQCKR\nkE6Bf50/f146gt2YwwEAxllcXKRtGOXq1avSEazHCAcAGOfp06fSEbLlm4U3lFI9PT3SKfzA\nJ28IAPCN3t5e6Qj46cyZM6dPn5ZO4ROMcACAQfr7+6Uj4KdYLCYdwVcoHABgir6+PkadTVBb\nW1tfXy+dwm8oHABghMnJSdqGuHA43NXVJZ3CnygcACCPeRvilFJdXV2hEBdv6kLhAABJyWSS\neRviGNjwAIUDAMQ8fvz469ev0ing0DY8QOEAAK8lk8kHDx58//5dOggch6tRvELhAACPxOPx\ne/fubW5uSgcBBFA4AECvkZGR+fl56RSAMAoHALgpkUhMTExMT09vbW1JZ8HhlFLSEYKCwgEA\n2frw4cOHDx84VwIcgMIBAGlIJpOjo6MLCwvJZFI6C1xw4cIF6QhBQeEAgL3i8fjY2NjGxsbG\nxgbjFv5WWVkpHSEoKBwAfGttbW1+fn57e3tlZeXbt2+JRGJ7e3v3nD1DFHAch6VFPUPhAOC1\n9fX1ubm5ubm5eDy+vb0dj8e93Dr3KwFEUDgAuCOZTL548eLr16+JREI6C1KilKJ+wTMUDgBZ\nWVtbu3fvHsctG/FXg5coHACycvfuXekIACzAZBkAmXv48KF0BCArKysr0hGCgsIBIHP5+fnS\nEYCsFBYWSkcICgoHgMxdvHhROgKQFS6L9QwvNICsXLp0SToCAAtQOABkpaqq6tq1a9IpAJiO\nwgEgW8XFxfX19dIpgLS1tbVJRwgQCgcAF9TW1sZisUiEK+1hjWg0mpeXJ50iQFhmDoDLEonE\n3bt3PV6wHEhXLBaTjhAsFA4AGk1OTr5//579DExTVlbW3NwsnSJYKBwAvJBIJIaHh7nVO0zQ\n3NxcVlYmnSJwKBwAZCwvL4+Pj3/79o29EDwTDoe7urqkUwQUhQOAEZ49e/blyxfpFPAtpdSl\nS5cqKyulgwQXhQOAcQYHB5lzChcVFhZev35dOkXQUTgAmCuRSLx+/Xpubo49FTKTm5t78+ZN\n6RRwHAoHAItMTEx8+PBha2tLOggsoJTq6uriVinmoHAAsNLi4uKrV682NjbYieF3RUVFra2t\n0inwHxQOAD7x6tWr6elpx3GUYs8WaDk5OR0dHdIpsBcfSwD+ND8/PzEx8f37d/ZygcKkDWNR\nOAD4WSKRmJqa+vTpE2uOBUE0Gm1vb5dOgf1xpyUAfrOysjIyMrKxsSEdBJ7Kz8+/ceOGdAr8\nEYUDgPWSyeTLly/n5+elg0CMUoq2YTgKBwArvX79enp6mpPC2NHT0yMdAYegcACwQDweHxsb\nY+1z7CsajUpHwOEoHABM9PTp08XFRekUkJfKRc5MFLUChQOAKe7du/f9+3fpFBC2p2Ec2jZY\nS9QWFA4Akt69ezc5OSmdAgZJd15OSUmJpiRwF4UDgIBnz54tLi4y5RPZO3nypHQEpITCAcAj\n4+Pjnz59SiaT0kHgKzMzMxUVFdIpcDgKBwCNEonE0NBQIpGQDgLfYt6PLSgcANzHfeThmbW1\nNekISAmFA4BrVldXHz58yEkT69h+f91kMsm1Kuaz+00GwASfP38eGxuTToE0/KlhWNo8uEOs\nFRjhAJCh+fn5kZER6RQ4xL4d4k+twsa24TgON+qzgpVlFoCsu3fvcuLcN3YaiWljG+nmCYfD\nXV1d+vIge4xwAEjVx48fx8fHjTosIV1KKee/Ixk7/53WnzX7dnLoM6T7/FtbW6urq4WFhdmk\nglZmVVoABlpfXx8eHmZfYSnThi5SkVlmpRT3jDWZfW9EAN5YWFh4/vy5dApoYWMLSVEsFpOO\ngP359j0HIDNccgKrVVZWXr58WToF9kHhANKwurq6sLAwOTm5M8ku4wUndr9fKqXC4XBlZWVu\nbm5tbW0kIjat6vbt24lEgh0Cdt+c0Wg0Ho9Lx8lEXl5eW1ubdArsReEA9lpbW3vy5Ek8Hhf/\ndCilQqFQNBotLCysqqqqqqpy65lnZmbGx8c3NzfdekLYLpWTLL//jLGnZurr62tra6VT4D8M\nfa8AnonH48+ePfv27Zt0EBfsXIDgWLuaAuCisrKy5uZm6RT4F4UDQfT27dupqSne/Ai4UCiU\nymnBPcMYxo5q/K6qqurSpUvSKfCTNe8bIEuJROL27du84YHf6e4Qgh2FcQ5zUDjgc6urq/fv\n35dOAVjJosGMA7A+hyH88GYC9tXX18fbG4DjOEqpmzdvRqNR6SCBRuGA37x7925yclI6BQDj\nNDc3l5WVSacILgoH/KO3t1c6AmCffc+bhEKh7e1t/x0gzp8/X1NTI50ioCgcsB4rcAMes3pu\nRzQabWtrC4VC0kECx+I3DXDv3r3v379LpwBgn+rq6osXL0qnCBYKB6w0MDCQSCSkUwCwWHFx\n8bVr16RTBAiFA5Z59OjR8vKydAoAP9m7LJjjOEqprq4uTq94w6Z3BgJucHDQ0ltJAUFgV9X4\n1ZEjR/73v/9Jp/A/W98fCJTx8fGpqSnpFAB8i6EOD1A4YLSVlZWHDx9KpwAQCOXl5U1NTdIp\nfIvCAXOxrgYAjxUVFbW2tkqn8CcKB0zEdA0AUrj3iiYUDpjl06dPr1+/lk7xc/qbUspxHD4j\nQNCEQqHu7m7pFH4TkQ4A/Muccyg7JYOqAQRTMplMJpPMIXUXIxwwwuzs7MuXL2UzMJ4BYBcn\nVlzHCAfkGTJjg6oBYNf29nYikYhEOEq6hvEiCOvt7TWhbfxqZ6gDQMDdvn1bOoKv0N0gZn5+\nfmRkRDrFv3bXSWSoA4DDrsBtFA7IuH379ubmpscbPXiWRio7lxQXb5Za4zkUCiWTSUPCAMCv\n2BPBax8+fHj79q10isNxnAbAXexdxBwOeGpkZMSKtuH8YcCD6R1AoMzOzkpH8A8KB7xz69at\n+fl56RRZ2W0hO80jLy9v3x9zsZdQcQBZo6Oj0hF8gsIBj/T29m5tbUmnSEkqx/id5rG+vn7A\n/3XF70+1G48uAnjAtMvo7MWkUWgXj8cHBwelU6RhzzHetMkcu2GMSgX41aVLl6Qj+ASFA3pN\nTEy8f/9eOkVW0jqu73udiKxfC5Np5QkwH2t/uYXXERr19/ebdvRNRTZrnGf8+6ZbBVIP+evP\nGD54A5imurpaOoJ/MIcDuvT29oq0jexnNmxvb/96GPZmqsSvW0zlllF7Qma/UQB7KKW4JtZF\nfL+B+5aXlx89eiSdgq/v+zDwjI9b+HPDdbFYTDqCr3BKBS4bHh7+8eOHdArH0fP1PYOzLW4d\nCF15Hr+2DYfRGritoaFBOoLf8J0Abrp165Yt175mya7v03alBcS1t7dHo1HpFH7DbgjuWF1d\nffDggQlvp30PrhxxAaQiPz//xo0b0in8iVMqcMf9+/elI/y0b7E4uG2Ew+G0BmZSP7EiWHQy\nu+zFSeH3or3Bl44dO3bhwgXpFH7GjgMu6OvrM+2NFJyDYjYX8Wa/6YC8yPAxpVRTU1NZWZl0\nEP9jf4Fs9fb2SkcwjgdH4n1HZSKRSCKRSP1JaAwIrKKioubmZhb18hK7G2TFkLGNLA+cGZxS\nMeG3lrLz6//+IgT8ZYH58vLyqqur6+rqpIMEFDsIZM7GsQ3W+Qb8TSm189E+cuRIVVVVQUHB\nkSNHCgoKpHOBwoFM2dg2fqWjbfzpq7/3PM5gwq8sZfd3D/KLIEgpVVFREY1Gz507J50Fh+AT\ngkxkcybFxmPhvgt0pj5hgkORmfi7WCESiVRUVJw4caK4uFg6C7LC5w1pM2TeRpbSnbdhgkMP\nkAE5gqb4a2bzagTklRSnlIpEIpFIJBqNHj16NCcnJzc39+jRo9K5oAUfKqRnYGAgresgTJPW\nzUQ4YqUoJydnc3PT8fW9Wg4QzN86FdyLBL/ibrFIQ19fn0jbSP1+rYf+5O8Hhj89JBQKZdMY\ngtM2HMfZaRuOr+/VcoBg/tZAuigcSFVvb6/UQTSVtS9T/MnUnzybo8ieEpPWDe73/eG0nsFY\n/vgtxPEywlIUDqSkr69POsJB3GpCbu3K9+T59ULcdB97wD+m+ITe+1OqQI366GPLy2jmmxOC\nWGQNh5idnX358qV0ir121/N2d+7nnmbg+p7d/Cf8XQY3w7PliAitmPuJPRjhwEGSyaSBbcNx\nnO3t7Z2j2k7b2JnrruP5f5fK97acnBwXw6Ti91ThcHjnP7K8y/a+wzNUChxqcXFROgLMEqCJ\n9MiA7at7ZUwplZ+fv7a25lh1vUk4HE4mk2ldMmrRb4cUGfU37e7uDoX4ZgvHoXDgAG6tt2HU\n7u9PdkOme/+zQ5/WOWw84IDXR99yqO4+5wHbchgOCbzjx483NDRIp4A8C44EEPHw4cOVlRXp\nFMY5eMWFndM64uuU7M5riUaj8Xg8rce6VUesaJmB5f2qd0qprq4uhjoCjp0C9vHu3bvJyUnp\nFNBrpxNILVqVwVxU2K6kpKSlpUU6BcTw8cZeui9LOfigYuOK43/ip98lY0wWwR51dXWnTp2S\nTgEB7ALwHysrKw8fPhTZtD8OSK6fkvDHywLswcSOAGJfhn99/PjxzZs30in+xQiBbqm0Gdsb\nj+35dZN9fU6fPn3mzBmprcNjfBTxr/7+fu4KkSLB3XRal37s5szLy1tfX9cdjP2JVn59hSOR\nSGdnp3QKaOfPty8yE9hVN2zh7iW7OBivtseUUvX19SdPnpQOAl0oHPjJrVU3ACAbkUjk+vXr\neXl50kHgMgoHHEeibewMDvt1iBg2cuXdyFvaRfn5+c3NzTQP3+CzAdb40iLjA8/OPVD2nS3L\nwcwH9P0Rffz2CIVCDQ0N1dXV0kGQFd++QZGily9fzs7OuviEvtnr+eYXAfxBKVVWVnblyhVW\nLLUUu9RA+/r16+PHj6VT4CBcG+xjstc6Wb3zP3LkSGtrK83DLna/55CNRCIxMDAgncIPpPbd\nth8zjMKLaSmlVGVl5aVLl6SD4HB8xoKLi2Dhjys/6QrYUVRUdPnyZSaZGosPakB50DY4DACQ\n0tjYePToUekU+A8OCUF0586djY0N6RSwgMmt0eRsMAfLmJqDT2wQcTJlXxzAAB9TSh0/fvz8\n+fPSQYKLPWzgDA8P//jxQzoFTGH4VTC0wAPw4mSstra2vr5eOkXg8H4NnCAMb7AjzkYoFDLt\nHn78QaFDOBxubGwsLS2VDhIUfIyD5fbt25ubm9IptPDrMcnM38vMVEBmioqKWltbpVP4H3uN\nAHnw4MG3b9+kU8Ag9IY/cf2V4aW2Qk1NDZM89OEzEBSPHj1aXl6WTgE77Ht0tOKQ6U1IK14K\nZIPmoQMfm0BIJpP9/f3SKWRwbBCn+0/AnxiasIypu/igBkIQJorCdvQGGKukpKSlpUU6hfX4\nhPtff3+/aRcdeMbkY5jJ2eyllHIchxcWOhQUFPzzzz/SKSzGLs/nhoaG1tfXpVMA9tlthFRD\n7NHc3FxWViadwj58kPyMiaLwJRoATJCbm3vz5k3pFDbhc+tbi4uLT58+lU4hjCNTEPz+V45E\nIslkcudMIu8B6HbmzJnTp09Lp7AAH0V/ev369adPn6RTWIyjFMCnIC3Hjh27cOGCdAqj8X7y\nobm5uRcvXkin8A67xaD5/S/Oe8B1x48fb2ho+PVf1tfXP378uLi4uLa2xqv9J+FwuKurSzqF\nofiU+s3o6OjMzIx0Cj/I4Bjm8WHPs5uecDg/mIF3n8leLBZL8ScTicTMzMynT5/W1ta0RrKI\nUqqlpaW4uFg6iFnYj/iK1ettcFSDaTx4T5r5tk+9bRxgbm7u7du38Xjcf20sde3t7dFoVDqF\nKUx8ryMD79+/n5iYkE4BwHqdnZ2RSMT1p11bW/v8+fPy8vLq6urW1pbrz2+y69evFxYWSqeQ\nR+GwXpCXLcfvzPzGfHAqMzMH08WLF6urqz3b3MrKyocPHxYWFpwALNdWV1d36tQp6RSS+Jzb\n7enTp4uLi9IpDJLioYv1KGEXb26n19TUVF5e7uITZmBmZmZsbMzHn01XTldZisJhq4WFhefP\nn0ungE/sOXQx5BBABq7bPT09PT4+7r/zL4G9koXdigVmZ2d35l7xxwKgicnfvJPJ5OPHj799\n++anfWBLS0tJSYl0Ck9ROEz0/PnzL1++OIz5A/DElStXKioqpFOkZHh4+O7lpRAAAA+5SURB\nVMePH9Ip3BGNRtvb26VTeIfCYZb5+fmRkRHpFAACpLq6+uLFi9Ip0ra4uDgyMmL7CRelVE9P\nj3QKj1A4DDI4OBiPx6VT+A3TEeAPmt7JPjjgzczMvH792t7mkZeX19bWJp3CC+yLTdHX18ff\nAkA2Migl3d3doVBIUx6Pffjw4e3bt9IpMmTyHBq3UDiMsLKy8vDhQ+kU8BtGd/zKrb/siRMn\nzp07l/3zGGV+fv7Fixc2vvMbGhqOHz8unUIjnxRb27EIHXSwcZ+LXTurxexr9y97wM8cKhKJ\n+K9tOI5TWVnZ09Nj40mKsbGxpaUl6RQa8QXIFFbfBgVAlnYHLTy7FZyfTqb8yefPn8fGxqRT\npKe8vLypqUk6hRY+f7dZJC8vTzoCADG73/32bRtKqT3lIBwOZ7O5iooK37cNx3GOHz8ei8Xs\n+k0XFxetK0kpsunP4G9tbW3d3d3SKQCYaHt7e6eI7J5DOfiijENPtVy5csWtbOazbtf6+fNn\n6QhaUDgMEgqFYrFYEOYqwwQZnP7PZsYAXJHiSfCDfyyA46mNjY3SEdLz7Nkz6Qjuc/8exMje\nTudIJpPDw8MbGxvSceBPGczfymzKFxfLmKampkY6gteOHj0qHSE9m5ub0hHcx47AGrOzs6Oj\no/y9AP/xuJMFcxj1/fv3ExMT0ilS5cu/ESMc1qiurq6urnYc5+PHj+Pj4zQPIC3FxcXnz58/\n9BL00dHRmZkZbyLtSv3jnH01Me2WsJ45c+aMLYUjEvHnoZkRDlt5f8KFgXFYJBQKNTY2lpWV\nZfwMb968+fjxo4uRTOCDhcyzMT09/erVK+kUh/Pl8IZD4bBdMpns7++XTgEYIRQKXb9+vaCg\nwMXnfPfu3eTkpItPKMuvR7LUGb7i0bFjxy5cuCCdQhcKhx8Y/hECtPrrr7/Onj2rdROvXr2a\nnp7WugkPNDU1lZeXS6cQZuzeMghd0J8nioKGkx0ImlAo1NLSUlRU5M3mzp8///fff9+6dUv2\ng5blJ5224TjOqVOnDBmyUkoVFhbW19eXlpZKZ/EIByo/MLazeyk3N9dxHK4i9r2WlpaSkhKp\nrT9+/Pjr169SW89GEL5ApyiRSExOTk5NTek+/O0UxNzc3JycnKKionPnztm15qnrGOGAxUKh\nUFtbWzQa3f2XZDIp/jUUOpw8efLvv/+WTuFcvXp1cHAwHo97tkVXxi936jh2RCKRs2fP/n4a\nbn5+fmxsbGtr69AXXCmllEomk6FQKCcnJ5FI7DSJhoaGiooKXbntxwiH9e7fv7+6uiqdwlOX\nL1+urKw84AdWV1fv37/vWR7oY+ZVFf39/d7cX+13mfUPhjdgAgqH3dbX14eGhqRTaKeUKi0t\nbW5uTutRL168mJub0xTpd8ykcde1a9eKi4ulU/yRjvOYv76FXHw71dbW1tfXu/JUQDbYRdrN\n97M3st9X3r5925eLBPvV0aNHrbjtRSKRGBgY8GZbWd6wnuENGII5HBbza9soLi5uampya629\njo6O+fn5kZERV54NmoTD4Y6ODoum1EUikcLCQhfPZh4wpJFN2/DsQh7gUIxw2Mp/baOxsVHr\nDZb894q5RfBkkFKqqakpm/VAZZk/fsbwBsxB4bCPn2ZEhkKhzs5Oz77X9vX18YY3gVKqpaXF\n5CkaKdK91G+WXdDMKbcILE6pWObevXvfv393/Wk9/o4bjUbb29s929yunp4eTS8gUhEOh1ta\nWg69fZpFQqHQkSNHMn5H/f652/MvO/+d8cfz3LlzmQUDdGCEwxo+uG1KJBJpb28XP09vyw2c\nfKOwsPDatWvif3d9jD1bx/kUGIURDju8fPlydnZWOkWGlFKNjY3mLKtcU1NTVVXl2SUGgSU1\njgXATIxwmM7qpTOrqqouXbokneKPjP1iajWlVEdHh1sXGVlhZWXl4cOH0in2wQgHjBKgnYKN\nRkdHZ2ZmpFOkTSl1+fJl85f4jcVidA63lJWVpbsym2/4YPYr4AFGOMx169atra0t6RTpycnJ\nuXHjhl3fbukc2aipqTl//rx0CnkfP3588+aNdIq9GOGAUSgcJnr9+vWnT5+kU6TH6oF0Okda\nKioqrly5Ip3COOm+i3RfGsY1sTCNlYcHH4vH48PDw3YNbBhy7Uk2uru77boCSGSpLt0rswWN\n7r+gny4/hj9QOAxi3TkU33yFCoVC//zzz927d6WDpMqztqGUam1t5dCVijNnzrx//17Tk2dQ\nMbklPUxD4TCClzeCckU4HO7q6pJO4aaCgoLi4uKVlRXpIEZQSl26dKmyslI6iE1Onz6tr3Ck\n2zaUUpz2gmkoHPKmpqbGx8elU6ShtbXVl3eEunbtWn9/fzY3yvqVpXer982oVcBx4QwMROEQ\nZt3dPfw97727u9utCaR2/Vkdx6mrqzt16pR0CrijurpaOgKwF4VDjHVLlVdXV1+8eFE6hXZ/\n/fXXhw8fpFN4Ryl17do1Xw5Zec+DYa0UN3HixAmtMYAMUDhkfP369fHjx9Ip0lBeXh6EtuE4\nztmzZ6empqwbn8hAeXl5U1OTdApfyc3NXV9f17qJILwz4VcUDgELCwvPnz+XTpEGpVSgjkwd\nHR12zeFN1/HjxxsaGqRT+JBbE4AAX6JweG1oaEj3dyDXdXR0SEfwVCQSycvLs+7PlIq//vrr\n7Nmz0il868iRI/F4XDoFYCgKh6esmyK6w9L1Q7PR1tbms+VHL1y4cOzYMekUPre8vCwdATBX\n4A4kgiw9gCmlpCPICIfDdq3D9ieManjGxq8TgGcsXo7aLn19fdIRMrS9vT06OiqdQoAPlvHO\nycmJxWK0DQAmoHB44c6dO1Z/9ZmZmZGOIODSpUvSEbJSX18ftMk34sz5mAfzMwvDUTi8sLGx\nIR0hW8PDw9IRkIbOzs7a2lrpFBDDbBIYiMKhnT+ulAvm3Pu8vDzpCGmrra2NxWIBnOeLX33+\n/Fk6ArAXhUO7W7duSUdwQUtLi3QEAdYNEnR3d9fX10ungDxzTu4Auygc2oVCdr/ISqlYLBbM\nG5SfPHlSOkKqwuFwLBaz/c0GFzGNA6Zh3FW7qqoqS4c3I5HI1atXg1k17FJWVtbc3CydAp7e\nIvjQbY2OjrLyCoxC4dCuoaFhZmbGihFOpVRVVVVDQwNflHeFQiHDZ+EopWgbhvDyY27FLgX4\nlXd9PODGx8enpqakU+yllCooKKirq6uoqJDOYqjR0VGTh6aVUj09PdIp8NOtW7eMWiyOtweM\nQuHw1ODgoNTlHtFotL6+vrq6WmTr9pqenn716pV0ij/6559/CgoKpFPgJwNXEy4pKQnmjG8Y\niFMqnmpvb3cc5927dx8+fHCl6u2sO15aWnrs2LGioqL8/HzOhrjL5OuBy8vLaRtGycnJ2dzc\nlE7xH8vLyy9fvrx48aJ0EIDCIaGurq6urs5xnLm5ubGxMcdxtra29kwB22kS29vbO/+Rk5NT\nUVGxvb197Nix0tJSoeBB9P37d+kIf9TU1CQdAf9RXFz85csX6RR7zc7OMjELJuCUCnAQY2/w\nW15eTuEwkIFnVXbEYjHpCAg6Oi9wEDPbhsPwBtI0OzsrHQFBR+EADrJzSsv7x8JSxv7Rd87e\nAoIoHMBBshnh0Dc6kpOTo+mZkSVj10QxfDkZBAGFA7CPsV+jwZxu4E8oHIB9dq5ygplqamqk\nIwAmonAAf5RIJKQj7G9paUk6Av7o/Pnz0hH2waJ/EEfhAP5oeHhYOsL+TFtdCnuYNskmGo2y\n9hfEUTiAP6qvr5eOsL9v375JR8BBLl++LB3hXydPntxZ4xiQxUqjwB8dO3ZsdHRUOsU+GOEw\nXGlpqfgy50qp0tJSY6+aQQCx0ihwEGMXjqyoqLhy5Yp0ChxkeHj4x48f3m+3rq7u1KlT3m8X\nOBgjHICVDLxnB/a4ceOGo3l1/Nzc3FOnTp04cULT8wMuYoQDOMji4uLTp0+lU+yPu2PYZWRk\nZGFhIeNdrlKqpqamrq4uEuGLIqzEGxc4SHl5uXQE+IRRM0kB73GVCgAA0I7CARyisrJSOsL+\n1tbWpCMAQKooHMAhjB0JLygokI4AAKmicACH6+7ulo6wV1FRkXQEAEgDhQM4XCgUMuqSkFAo\n1NraKp0CANLAZbFAGp4/f76wsCCbQSnV09MjmwEA0kXhANI2NDS0vr4usumcnJyOjg6RTQNA\nNigcQIaSyeSdO3e8uV9GKBQqKytrbGz0YFsAoAOFA3DH27dv4/H4/Px8YWHhysrKzg3KE4mE\n4zjJZFIpFQ6HCwoKCgoKcnJyIpHIysrK6dOnd640SSQSi4uLm5ub1dXVjuN8+/bt6NGjoRBT\nrAD4B4UDAABox1coAACgHYUDAABoR+EAAADaUTgAAIB2FA4AAKAdhQMAAGhH4QAAANpROAAA\ngHYUDgAAoB2FAwAAaEfhAAAA2lE4AACAdhQOAACgHYUDAABoR+EAAADaUTgAAIB2FA4AAKAd\nhQMAAGhH4QAAANpROAAAgHYUDgAAoB2FAwAAaEfhAAAA2lE4AACAdhQOAACgHYUDAABoR+EA\nAADaUTgAAIB2FA4AAKAdhQMAAGhH4QAAANpROAAAgHYUDgAAoB2FAwAAaEfhAAAA2lE4AACA\ndhQOAACgHYUDAABoR+EAAADaUTgAAIB2FA4AAKAdhQMAAGhH4QAAANpROAAAgHYUDgAAoB2F\nAwAAaEfhAAAA2lE4AACAdhQOAACgHYUDAABoR+EAAADaUTgAAIB2FA4AAKAdhQMAAGhH4QAA\nANpROAAAgHYUDgAAoB2FAwAAaEfhAAAA2lE4AACAdhQOAACgHYUDAABoR+EAAADaUTgAAIB2\nFA4AAKAdhQMAAGhH4QAAANpROAAAgHYUDgAAoB2FAwAAaEfhAAAA2lE4AACAdhQOAACgHYUD\nAABoR+EAAADaUTgAAIB2FA4AAKAdhQMAAGhH4QAAANpROAAAgHYUDgAAoB2FAwAAaEfhAAAA\n2lE4AACAdhQOAACgHYUDAABoR+EAAADaUTgAAIB2FA4AAKAdhQMAAGhH4QAAANpROAAAgHYU\nDgAAoB2FAwAAaEfhAAAA2lE4AACAdhQOAACgHYUDAABoR+EAAADaUTgAAIB2FA4AAKAdhQMA\nAGhH4QAAANpROAAAgHYUDgAAoB2FAwAAaEfhAAAA2lE4AACAdhQOAACgHYUDAABoR+EAAADa\nUTgAAIB2FA4AAKAdhQMAAGhH4QAAANpROAAAgHYUDgAAoB2FAwAAaEfhAAAA2lE4AACAdhQO\nAACgHYUDAABoR+EAAADaUTgAAIB2FA4AAKAdhQMAAGhH4QAAANpROAAAgHYUDgAAoB2FAwAA\naEfhAAAA2lE4AACAdhQOAACgHYUDAABo939UX5ziJmzcaAAAAABJRU5ErkJggg==", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_mesh(Xmu, F, \"grey\")" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "__Exercise 4__\n", "\n", "Solve this problem for various $\\mu$ on a 3D mesh.\n", "Draw the evolution of the SNR denoising error as a function of $\\mu$." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "source(\"nt_solutions/meshproc_3_denoising/exo4.R\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "## Insert your code here." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "R", "language": "R", "name": "ir" }, "language_info": { "codemirror_mode": "r", "file_extension": ".r", "mimetype": "text/x-r-source", "name": "R", "pygments_lexer": "r", "version": "3.4.2" } }, "nbformat": 4, "nbformat_minor": 0 }