├── .gitignore ├── LICENSE ├── README.md ├── data └── minnesota.mat ├── img ├── basic_operations_0.pdf ├── basic_operations_1.pdf ├── basic_operations_2.pdf ├── basic_operations_3.pdf ├── basic_operations_4.pdf ├── clustering_methods_0.pdf ├── clustering_methods_1.pdf ├── clustering_methods_2.pdf ├── clustering_methods_3.pdf ├── graph_fourier_transform_0.pdf ├── graph_fourier_transform_1.pdf ├── graph_fourier_transform_2.pdf ├── graph_fourier_transform_3.pdf ├── graph_fourier_transform_4.pdf ├── graph_fourier_transform_5.pdf ├── graph_fourier_transform_6.pdf ├── graph_fourier_transform_7.pdf ├── graph_fourier_transform_8.pdf ├── signal_smoothness_0.pdf ├── tikhonov_regularization_0.pdf ├── tikhonov_regularization_1.pdf ├── tikhonov_regularization_2.pdf ├── wavelet_filter_0.pdf ├── wavelet_filter_1.pdf ├── wavelet_filter_2.pdf ├── wavelet_filter_3.pdf ├── wavelet_filter_4.pdf ├── wavelet_filter_5.pdf ├── wavelet_filter_6.pdf └── wavelet_filter_7.pdf ├── notebooks ├── basic_operations.ipynb ├── clustering_methods.ipynb ├── graph3d.py ├── graph_fourier_transform.ipynb ├── signal_smoothness.ipynb ├── tikhonov_regularization.ipynb └── wavelet_filter.ipynb └── tex ├── bartos_journal_club.pdf └── bartos_journal_club.tex /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | 49 | # Translations 50 | *.mo 51 | *.pot 52 | 53 | # Django stuff: 54 | *.log 55 | local_settings.py 56 | 57 | # Flask stuff: 58 | instance/ 59 | .webassets-cache 60 | 61 | # Scrapy stuff: 62 | .scrapy 63 | 64 | # Sphinx documentation 65 | docs/_build/ 66 | 67 | # PyBuilder 68 | target/ 69 | 70 | # Jupyter Notebook 71 | .ipynb_checkpoints 72 | 73 | # pyenv 74 | .python-version 75 | 76 | # celery beat schedule file 77 | celerybeat-schedule 78 | 79 | # SageMath parsed files 80 | *.sage.py 81 | 82 | # dotenv 83 | .env 84 | 85 | # virtualenv 86 | .venv 87 | venv/ 88 | ENV/ 89 | 90 | # Spyder project settings 91 | .spyderproject 92 | .spyproject 93 | 94 | # Rope project settings 95 | .ropeproject 96 | 97 | # mkdocs documentation 98 | /site 99 | 100 | # mypy 101 | .mypy_cache/ 102 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Matt Bartos 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # graph-signals 2 | Implementations of graph signal processing techniques from "The emerging field of signal processing on graphs": 3 | 4 | ``` 5 | D. I. Shuman, S. K. Narang, P. Frossard, A. Ortega, and P. Vandergheynst, 6 | “The emerging field of signal processing on graphs: Extending high-dimensional 7 | data analysis to networks and other irregular domains,” IEEE Signal Processing 8 | Magazine, vol. 30, no. 3, pp. 83–98, May 2013. 9 | ``` 10 | -------------------------------------------------------------------------------- /data/minnesota.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/data/minnesota.mat -------------------------------------------------------------------------------- /img/basic_operations_0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/basic_operations_0.pdf -------------------------------------------------------------------------------- /img/basic_operations_1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/basic_operations_1.pdf -------------------------------------------------------------------------------- /img/basic_operations_2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/basic_operations_2.pdf -------------------------------------------------------------------------------- /img/basic_operations_3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/basic_operations_3.pdf -------------------------------------------------------------------------------- /img/basic_operations_4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/basic_operations_4.pdf -------------------------------------------------------------------------------- /img/clustering_methods_0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/clustering_methods_0.pdf -------------------------------------------------------------------------------- /img/clustering_methods_1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/clustering_methods_1.pdf -------------------------------------------------------------------------------- /img/clustering_methods_2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/clustering_methods_2.pdf -------------------------------------------------------------------------------- /img/clustering_methods_3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/clustering_methods_3.pdf -------------------------------------------------------------------------------- /img/graph_fourier_transform_0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/graph_fourier_transform_0.pdf -------------------------------------------------------------------------------- /img/graph_fourier_transform_1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/graph_fourier_transform_1.pdf -------------------------------------------------------------------------------- /img/graph_fourier_transform_2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/graph_fourier_transform_2.pdf -------------------------------------------------------------------------------- /img/graph_fourier_transform_3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/graph_fourier_transform_3.pdf -------------------------------------------------------------------------------- /img/graph_fourier_transform_4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/graph_fourier_transform_4.pdf -------------------------------------------------------------------------------- /img/graph_fourier_transform_5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/graph_fourier_transform_5.pdf -------------------------------------------------------------------------------- /img/graph_fourier_transform_6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/graph_fourier_transform_6.pdf -------------------------------------------------------------------------------- /img/graph_fourier_transform_7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/graph_fourier_transform_7.pdf -------------------------------------------------------------------------------- /img/graph_fourier_transform_8.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/graph_fourier_transform_8.pdf -------------------------------------------------------------------------------- /img/signal_smoothness_0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/signal_smoothness_0.pdf -------------------------------------------------------------------------------- /img/tikhonov_regularization_0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/tikhonov_regularization_0.pdf -------------------------------------------------------------------------------- /img/tikhonov_regularization_1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/tikhonov_regularization_1.pdf -------------------------------------------------------------------------------- /img/tikhonov_regularization_2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/tikhonov_regularization_2.pdf -------------------------------------------------------------------------------- /img/wavelet_filter_0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/wavelet_filter_0.pdf -------------------------------------------------------------------------------- /img/wavelet_filter_1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/wavelet_filter_1.pdf -------------------------------------------------------------------------------- /img/wavelet_filter_2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/wavelet_filter_2.pdf -------------------------------------------------------------------------------- /img/wavelet_filter_3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/wavelet_filter_3.pdf -------------------------------------------------------------------------------- /img/wavelet_filter_4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/wavelet_filter_4.pdf -------------------------------------------------------------------------------- /img/wavelet_filter_5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/wavelet_filter_5.pdf -------------------------------------------------------------------------------- /img/wavelet_filter_6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/wavelet_filter_6.pdf -------------------------------------------------------------------------------- /img/wavelet_filter_7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/img/wavelet_filter_7.pdf -------------------------------------------------------------------------------- /notebooks/graph3d.py: -------------------------------------------------------------------------------- 1 | from matplotlib import pyplot as plt 2 | from matplotlib import collections 3 | import mpl_toolkits.mplot3d.art3d as art3d 4 | 5 | def Graph3d(x, y, z, **kwargs): 6 | xmin = kwargs.setdefault('xmin', x.min()) 7 | xmax = kwargs.setdefault('xmax', x.max()) 8 | ymin = kwargs.setdefault('ymin', y.min()) 9 | ymax = kwargs.setdefault('ymax', y.max()) 10 | zmin = kwargs.setdefault('zmin', z.min()) 11 | zmax = kwargs.setdefault('zmax', z.max()) 12 | 13 | if 'fig' in kwargs: 14 | fig = kwargs['fig'] 15 | else: 16 | fig = plt.figure(figsize=(6,6)) 17 | if 'ax' in kwargs: 18 | ax = kwargs['ax'] 19 | else: 20 | ax = fig.add_subplot(1, 1, 1, projection='3d') 21 | 22 | ax._axis3don = False 23 | 24 | for xi, yi, zi in zip(x, y, z): 25 | if zi >= 0: 26 | color = 'b' 27 | else: 28 | color = 'r' 29 | line = art3d.Line3D(*zip((xi, yi, 0), (xi, yi, zi)), marker='o', 30 | markersize=2, markevery=(1, 1), color=color) 31 | ax.add_line(line) 32 | if 'lc' in kwargs: 33 | ax.add_collection3d(kwargs['lc']) 34 | 35 | ax.set_xlim3d(xmin, xmax) 36 | ax.set_ylim3d(ymin, ymax) 37 | ax.set_zlim3d(zmin, zmax) 38 | ax.set_facecolor('white') 39 | ax.view_init(elev=30., azim=300) 40 | plt.tight_layout() 41 | -------------------------------------------------------------------------------- /notebooks/signal_smoothness.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "import numpy as np\n", 12 | "from scipy import io\n", 13 | "from scipy import sparse\n", 14 | "from scipy.sparse import csgraph\n", 15 | "from scipy import fftpack\n", 16 | "from scipy import signal\n", 17 | "from scipy import linalg\n", 18 | "from matplotlib import pyplot as plt\n", 19 | "from matplotlib import collections\n", 20 | "import mpl_toolkits.mplot3d.art3d as art3d\n", 21 | "import seaborn as sns\n", 22 | "import igraph\n", 23 | "\n", 24 | "import graph3d\n", 25 | "\n", 26 | "%matplotlib inline" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 2, 32 | "metadata": { 33 | "collapsed": true 34 | }, 35 | "outputs": [], 36 | "source": [ 37 | "sns.set_palette('husl')" 38 | ] 39 | }, 40 | { 41 | "cell_type": "markdown", 42 | "metadata": {}, 43 | "source": [ 44 | "# Signal smoothness with respect to graph structure" 45 | ] 46 | }, 47 | { 48 | "cell_type": "code", 49 | "execution_count": 3, 50 | "metadata": { 51 | "collapsed": true 52 | }, 53 | "outputs": [], 54 | "source": [ 55 | "# Define a ring graph\n", 56 | "n = 100\n", 57 | "Aring = np.roll(np.eye(n), -1, axis=1) + np.roll(np.eye(n), 1, axis=1)\n", 58 | "\n", 59 | "# Define a signal over the ring graph\n", 60 | "f = np.sin(np.linspace(-8*np.pi, 8*np.pi, n))" 61 | ] 62 | }, 63 | { 64 | "cell_type": "code", 65 | "execution_count": 4, 66 | "metadata": { 67 | "collapsed": true 68 | }, 69 | "outputs": [], 70 | "source": [ 71 | "# Generate coords for plotting\n", 72 | "x = np.cos(np.linspace(-2*np.pi, 2*np.pi, n))\n", 73 | "y = np.sin(np.linspace(-2*np.pi, 2*np.pi, n))\n", 74 | "xy = np.column_stack([x, y])\n", 75 | "startcoords = xy[np.where(Aring)[0]]\n", 76 | "endcoords = xy[np.where(Aring)[1]]\n", 77 | "Aring_lines = [[tuple(x), tuple(y)] for x, y in zip(startcoords, endcoords)]" 78 | ] 79 | }, 80 | { 81 | "cell_type": "code", 82 | "execution_count": 5, 83 | "metadata": { 84 | "collapsed": true 85 | }, 86 | "outputs": [], 87 | "source": [ 88 | "Acrossed = Aring.copy()\n", 89 | "\n", 90 | "# Randomly connect 40 vertices of the ring\n", 91 | "s = np.random.randint(0, len(Aring), 40)\n", 92 | "e = np.random.randint(0, len(Aring), 40)\n", 93 | "for i, j in zip(s, e):\n", 94 | " Acrossed[i, j] = 1\n", 95 | " Acrossed[j, i] = 1\n", 96 | "\n", 97 | "# Regenerate coords for plotting\n", 98 | "startcoords = xy[np.where(Acrossed)[0]]\n", 99 | "endcoords = xy[np.where(Acrossed)[1]]\n", 100 | "Acrossed_lines = [[tuple(x), tuple(y)] for x, y in zip(startcoords, endcoords)]" 101 | ] 102 | }, 103 | { 104 | "cell_type": "code", 105 | "execution_count": 6, 106 | "metadata": { 107 | "collapsed": true 108 | }, 109 | "outputs": [], 110 | "source": [ 111 | "# Compute laplacian eigendecompositions\n", 112 | "Lring = csgraph.laplacian(Aring)\n", 113 | "lring, uring = linalg.eigh(Lring)\n", 114 | "Lcrossed = csgraph.laplacian(Acrossed)\n", 115 | "lcrossed, ucrossed = linalg.eigh(Lcrossed)" 116 | ] 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": 7, 121 | "metadata": { 122 | "collapsed": true 123 | }, 124 | "outputs": [], 125 | "source": [ 126 | "# Compute graph Fourier transform of signals\n", 127 | "fhat_ring = np.conj(uring.T) @ f\n", 128 | "fhat_crossed = np.conj(ucrossed.T) @ f" 129 | ] 130 | }, 131 | { 132 | "cell_type": "code", 133 | "execution_count": 8, 134 | "metadata": {}, 135 | "outputs": [ 136 | { 137 | "data": { 138 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsgAAAGqCAYAAAAWf7K6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8FPX9x/HX7G7uBAxJEAWU0wGkcmjlEG+0VlHUWsqv\nFQ/UalutN1oVe2pFKq31qNWK/rxvBK2/qoAHCkjlUBEZEESEeATCEcix2eP3x2Sys2E352Y3x/v5\nePiY7Hd3Zj47ieG933xmxgiHw4iIiIiIiM2T6gJERERERNoSBWQRERERERcFZBERERERFwVkERER\nEREXBWQRERERERcFZBERERERFwVkEREREREXBWQRERERERdfA8/rLiLSqgKBAKeffjrBYJA33ngj\n1eWI1MdIdQGJUlJS1qzf7fn52ezYUZ7oclpENTWOampYW6sHVFNjtaSmoqK8mL/bGwrIIq3qmWee\nobS0lN27d1NeXk52dnaqSxJpV0zTTANmA32ADOBPlmXNa419+Xze1thsi6imxlFNDWtr9YBqaqzW\nqEktFpIyZWVl3HvvvUyfPh2v18v69etTXZJIe3QusN2yrKOBU4B7U1yPiEi7pxlkSZn777+f3r17\nM2HCBB544AEsy2LYsGGpLkukvXkeeKHmawMINLRCfn52s2dciorymrVea1JNjaOaGtbW6gHV1FiJ\nrkkBWVLiq6++4vHHH+fhhx8GYMCAAViWFff1TzzxBOPGjaNPnz5JqlCkfbAsaw+AaZp52EH5lobW\naUGvHiUlZc1at7WopsZRTQ1ra/WAamqsltQUL1grIEtKzJw5k7FjxzJq1CjADshLlizZ53WhUAiP\nx8O5556b7BJF2g3TNHsDc4D7Lct6KtX11Me3Zj3pi1fg2baDUGE+/rEjCQwZmOqyRESiKCBL0n34\n4Ye8/vrr5ObmctRRRwFQWVmJxxNpiT/77LMZOnQogUCA22+/nSlTpvD4449zzjnnMGzYMJYuXcrk\nyZOZMmUKTz75JK+88goHHXQQxcXFPPHEE6l6ayJJZ5rm/sAbwOWWZS1IdT318a1ZT9bc+bWPvSWl\nZM2dTwUoJItIm6KALEkVDoe54447mDx5MpdffnnteHFxMZMmTaK4uJjMzEy2b9/ONddcw3777Udp\naSndunWjtLSUnTt3cvXVV1NdXc20adP4/ve/z7Jly3j66adZvnw59913XwrfnUhK3ATkA9NN05xe\n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\nHeT2yJnd1C2Ek885udF97EeP3vcCy+Xl9jXv3Hcliddi4YRhgN277aUTjMvK7OWmTQl7C9LxmKbZ\nBbgLqEp1LSIiHYECskhLPf/8vjfnyM62w607NFdW2gHYCc3OiXwffxwZc2aTn3vOXl52mb3tiy9u\n3fcg7ZZpmgbwIHATUJ7ickREOgQjXP/FZRt55VkRibJtmx2OL7ooMtt8+unw6qt24L3+entGefx4\nu8fcGdu+Pbp9RtqSOLesSR7TNC8C6jagfwk8Y1nW46ZpbgIGNdRiEQgEwz6ft3WKbITKP9qXa8yc\nflnKahARqRHzd7sCskiyxAq/CsTtScoDciymaX5O5JIto4FllmUdU986JSVlzfrdXlSUR0lJWXNW\njZJz/xMA7P3luS3eVqJqSiTV1Dhtraa2Vg+opsZqSU1FRXkxf7frJD2RZIl1ZQxdpk1ayLKsAc7X\nNTPIJ6esGBGRDkI9yCIiIiIiLppBFhHpICzL6pPqGkREOgLNIIuIiIiIuCggi4iIiIi4KCCLiIiI\niLgoIIuIiIiIuCggi4iIiIi4KCCLiIiIiLgoIIuIiIiIuCggi4iIiIi4KCCLiIiIiLgoIIuIiIiI\nuCggi4iIiIi4KCCLiIiIiLgoIIuIiIiIuCggi4iIiIi4KCCLiIiIiLgoIIuIiIiIuCggi4iIiIi4\nKCCLiIiIiLgoIIuIiIiIuCggi4iIiIi4KCCLiIiIiLgoIIuIiIiIuCggi4iIiIi4KCCLiIiIiLgo\nIIuIiIiIuCggi4iIiIi4KCCLiIiIiLgoIIuIiIiIuCggi4iIiIi4KCCLiIiIiLj4Ul2AiIg0n2ma\nXmAWcASQAfzOsqxXU1uViEj7phlkEZH2bQqQZlnWUcBEYECK6xERafc0gywi0r79AFhtmua/AQO4\noqEV8vOz8fm8zdpZUVFes9Zzq/QYCdtWIreTSKqpcdpaTW2tHlBNjZXomhSQRUTaCdM0LwKurjNc\nAlQCE4BjgEdqlnHt2FHerP0XFeVRUlLWrHXdckJhgIRsK1E1JZJqapy2VlNbqwdUU2O1pKZ4wVoB\nWUSknbAs62HgYfeYaZrPAK9alhUG3jFN85CUFCci0oGoB1lEpH17DzgVwDTNYcDm1JYjItL+KSCL\niLRvDwGGaZpLgQeBy1Jcj4hIu6cWCxGRdsyyrCpgaqrrEBHpSDSDLCIiIiLiooAsIiIiIuKigCwi\n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\ntzBs2DCqq6u5+eab+eabb6iqquK+++7jzjvvjHr87rvvMmfOHMrLy7nhhhs48sgjeeqpp3j55Zfp\n27cv27dvp7CwMFWHRqS13ATkA9NN03R6kX9oWVZFCmuK4luznvTFK/Bs20GoMB//2JEEhujCNiLS\ndikgS8KEw2HuuOMOJk+ezOWXX147XlxczKRJkyguLmbnzp289NJLPProo6SlpVFdXU1paSnbt2/n\nmmuuYfPmzTz66KM8++yzFBcXM2PGDP7+97/zySefkJOTw2OPPUY4HGblypVRj1evXs0777zDY489\nRllZGdOmTaNr167897//5dlnn2XVqlX8/e9/T+HREWkdlmVdCVyZ6jri8a1ZT9bc+bWPvSWlZM2d\nTwUoJItIm6WALAkzb948tm/fzrRp08jJyakdLywsJCcnB8uyWLFiBRdeeCFpaWkApKWlYVkWEyZM\nYL/99mP27Nn89Kc/xTAMPB4PGRkZAAwdOpSFCxdy1VVXccYZZzBu3LioxytXrmTTpk2cd955APTo\n0YP58+czadIkDMPAMAwOOeSQ5B8UkU4uffGK2ONLViogi0ibpYAsCTNx4kQmTpy4z7hhGKxYYf8j\nuXTp0to+40AggM/nw7Isvve97wFQXV1NdXU1AE888QQnnngiAMFgkOuuu46dO3dy2WWXMWbMmKjH\nw4cPZ/r06RxxxBG1254xYwaBgH3Fq8cff1wn54mkgGfbjiaNi4i0BQrIklSTJk3ixhtv5J///CfD\nhg3j+uuvZ926dRx//PEATJ48mRtuuIG7776bI444glNOOQWAm266ia+//ppgMMiVV165z+MDDzyQ\nm266ibS0NNLT05kxYwYTJ05k2rRpPProo2zbto2pU6em8q2LdEqhwny8JaUxx5tLPc0i0tp0HWQR\nkcZp09dBborm3kmvOZdiqtuD7KiYOL5Zoba+7eUfO7LNXsYK2vZltkD1tZTqa74UX+ZNd9ITEZHk\nCgwZSMXE8YQ9HsJAsHtBs8Mx1N/TLCKSKGqxEBGRVhUYMpDw2x8AUH5Ry+6oqZ5mEUkGzSCLiEi7\nEa93uSU9zSIidSkgi4hIu+EfOzL2+JgRSa5ERDoytViIiEi7ERgykAog85WFEAoR6l6Af8wIXcVC\nRBJKAVlERNqVRPY0i4jEohYLEREREREXBWQRERERERcFZBERERERFwVkEREREREXBWQRERERERcF\n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\niIiISJD/BeQASrad7vqmAAAAAElFTkSuQmCC\n", 139 | "text/plain": [ 140 | "" 141 | ] 142 | }, 143 | "metadata": {}, 144 | "output_type": "display_data" 145 | } 146 | ], 147 | "source": [ 148 | "# Plot frequency spectrum for ring and crossed ring\n", 149 | "fig = plt.figure(figsize=(10,6))\n", 150 | "\n", 151 | "lc = collections.LineCollection(Aring_lines, linewidths=1, colors='k')\n", 152 | "ax0 = fig.add_subplot(2, 2, 1, projection='3d')\n", 153 | "graph3d.Graph3d(xy[:,0], xy[:,1], f, zmin=-4, zmax=4, fig=fig, ax=ax0, lc=lc)\n", 154 | "ax0.set_title(r'$A_{ring}$')\n", 155 | "\n", 156 | "lc = collections.LineCollection(Acrossed_lines, linewidths=1, colors='k')\n", 157 | "ax1 = fig.add_subplot(2, 2, 3, projection='3d')\n", 158 | "graph3d.Graph3d(xy[:,0], xy[:,1], f, zmin=-4, zmax=4, fig=fig, ax=ax1, lc=lc)\n", 159 | "ax1.set_title(r'$A_{crossed}$')\n", 160 | "\n", 161 | "ax2 = fig.add_subplot(2, 2, 2)\n", 162 | "ax2.stem(lring, fhat_ring)\n", 163 | "ax2.set_ylabel(r'$\\hat{f}(\\lambda)$')\n", 164 | "\n", 165 | "ax4 = fig.add_subplot(2, 2, 4)\n", 166 | "ax4.stem(lcrossed, fhat_crossed)\n", 167 | "ax4.set_ylabel(r'$\\hat{f}(\\lambda)$')\n", 168 | "ax4.set_xlabel(r'$\\lambda$')\n", 169 | "\n", 170 | "plt.tight_layout()\n", 171 | "plt.savefig('../img/signal_smoothness_0.pdf', bbox_inches='tight')" 172 | ] 173 | }, 174 | { 175 | "cell_type": "markdown", 176 | "metadata": {}, 177 | "source": [ 178 | "# Local metrics of smoothness" 179 | ] 180 | }, 181 | { 182 | "cell_type": "markdown", 183 | "metadata": {}, 184 | "source": [ 185 | "#### The edge derivative of $f$ with respect to edge $e=(i,j)$\n", 186 | "\n", 187 | "\\begin{equation}\n", 188 | " \\frac{\\partial f}{\\partial e} \\bigg|_i = \\sqrt{W_{i,j}} [f(j) - f(i)]\n", 189 | "\\end{equation}\n", 190 | "\n", 191 | " The local variation can be measured by the square root of the sum of the squared differences\n", 192 | " between signal values at adjacent vertices.\n", 193 | " \n", 194 | "#### The graph gradient of $f$ at vertex $i$\n", 195 | "\n", 196 | "\\begin{equation}\n", 197 | " || \\nabla_i f || = \\bigg[ \\bigg\\{ \\frac{\\partial f}{\\partial e} \\bigg|_i \\bigg\\} \\bigg|_{e \\in \\epsilon \\ s.t. \\ e=(i,j) \\text{ for some } j \\in V} \\bigg]\n", 198 | "\\end{equation}\n", 199 | "\n", 200 | " \n", 201 | "#### The local variation at vertex $i$\n", 202 | "\\begin{equation}\n", 203 | " || \\nabla_i f ||_2 = \\bigg[ \\sum_{\\text{e connected to i}} \\bigg( \\frac{\\partial f}{\\partial e} \\bigg|_i \\bigg)^2 \\bigg]^{1/2} = \\bigg[ \\sum_{j \\in N_i} W_{i,j} [f(j) - f(i)]^2 \\bigg]^{1/2}\n", 204 | "\\end{equation}" 205 | ] 206 | }, 207 | { 208 | "cell_type": "code", 209 | "execution_count": 9, 210 | "metadata": { 211 | "collapsed": true 212 | }, 213 | "outputs": [], 214 | "source": [ 215 | "def graph_gradient(A, f, i):\n", 216 | " # j : unique neighbors of i (possibly asymmetrical)\n", 217 | " j = np.unique(np.concatenate([np.where(A[i, :])[0],\n", 218 | " np.where(A[:, i])[0]]))\n", 219 | " return A[i, j]*(f[i] - f[j])" 220 | ] 221 | }, 222 | { 223 | "cell_type": "code", 224 | "execution_count": 10, 225 | "metadata": {}, 226 | "outputs": [ 227 | { 228 | "data": { 229 | "text/plain": [ 230 | "array([ 0.50229597, -0.43893102])" 231 | ] 232 | }, 233 | "execution_count": 10, 234 | "metadata": {}, 235 | "output_type": "execute_result" 236 | } 237 | ], 238 | "source": [ 239 | "graph_gradient(Aring, f, 50)" 240 | ] 241 | }, 242 | { 243 | "cell_type": "code", 244 | "execution_count": 11, 245 | "metadata": { 246 | "collapsed": true 247 | }, 248 | "outputs": [], 249 | "source": [ 250 | "def local_variation(A, f, i):\n", 251 | " local_var = np.sqrt(np.sum(graph_gradient(A, f, i)**2))\n", 252 | " return local_var" 253 | ] 254 | }, 255 | { 256 | "cell_type": "code", 257 | "execution_count": 12, 258 | "metadata": {}, 259 | "outputs": [ 260 | { 261 | "data": { 262 | "text/plain": [ 263 | "0.66705448799508404" 264 | ] 265 | }, 266 | "execution_count": 12, 267 | "metadata": {}, 268 | "output_type": "execute_result" 269 | } 270 | ], 271 | "source": [ 272 | "local_variation(Aring, f, 50)" 273 | ] 274 | }, 275 | { 276 | "cell_type": "markdown", 277 | "metadata": {}, 278 | "source": [ 279 | "# Global metrics of smoothness" 280 | ] 281 | }, 282 | { 283 | "cell_type": "markdown", 284 | "metadata": {}, 285 | "source": [ 286 | "#### Discrete p-Dirichlet form of $f$\n", 287 | "\\begin{equation}\n", 288 | " S_p(f) = \\frac{1}{p} \\sum_{i \\in V} \\bigg[ \\sum_{j \\in N_i} W_{i,j} [f(j) - f(i)]^2 \\bigg]^{\\frac{p}{2}}\n", 289 | "\\end{equation}\n", 290 | "\n", 291 | "For $p=1$, $S_1$ is simply the sum of local variations across all vertices.\n", 292 | "\n", 293 | "For $p=2$, $S_2$ is a quadratic function of the Laplacian:\n", 294 | "\n", 295 | "#### Graph Laplacian Quadratic Form\n", 296 | "\\begin{equation}\n", 297 | " \\begin{split}\n", 298 | " S_2(f) = \\frac{1}{2} \\sum_{i \\in V} \\bigg[ \\sum_{j \\in N_i} W_{i,j}\n", 299 | " [f(j) - f(i)]^2 \\bigg]^{\\frac{1}{2}} = \\sum_{(i, j) \\in \\epsilon}\n", 300 | " W_{i,j} [f(j) - f(i)]^2 \\\\\n", 301 | " = f^T L f\n", 302 | " \\end{split}\n", 303 | "\\end{equation}\n", 304 | "\n", 305 | "$S_2$ is small when $f$ has similar values at strongly-connected vertices.\n" 306 | ] 307 | }, 308 | { 309 | "cell_type": "code", 310 | "execution_count": 13, 311 | "metadata": { 312 | "collapsed": true 313 | }, 314 | "outputs": [], 315 | "source": [ 316 | "def dirichlet_p(A, f, p=2):\n", 317 | " i, j = np.where(A)\n", 318 | " return (1/p)*np.sum((A[i, j]*(f[i] - f[j])**2)**(p/2))" 319 | ] 320 | }, 321 | { 322 | "cell_type": "code", 323 | "execution_count": 14, 324 | "metadata": { 325 | "collapsed": true 326 | }, 327 | "outputs": [], 328 | "source": [ 329 | "def quad_laplace(L, f):\n", 330 | " return f @ L @ f" 331 | ] 332 | }, 333 | { 334 | "cell_type": "code", 335 | "execution_count": 15, 336 | "metadata": {}, 337 | "outputs": [ 338 | { 339 | "data": { 340 | "text/plain": [ 341 | "True" 342 | ] 343 | }, 344 | "execution_count": 15, 345 | "metadata": {}, 346 | "output_type": "execute_result" 347 | } 348 | ], 349 | "source": [ 350 | "# Is the dirichlet p form equivalent to the quadratic form?\n", 351 | "dirichlet_ring = dirichlet_p(Aring, f, p=2)\n", 352 | "quadratic_ring = quad_laplace(Lring, f)\n", 353 | "np.isclose(dirichlet_ring, quadratic_ring)" 354 | ] 355 | }, 356 | { 357 | "cell_type": "code", 358 | "execution_count": 16, 359 | "metadata": {}, 360 | "outputs": [ 361 | { 362 | "data": { 363 | "text/plain": [ 364 | "True" 365 | ] 366 | }, 367 | "execution_count": 16, 368 | "metadata": {}, 369 | "output_type": "execute_result" 370 | } 371 | ], 372 | "source": [ 373 | "dirichlet_crossed = dirichlet_p(Acrossed, f, p=2)\n", 374 | "quadratic_crossed = quad_laplace(Lcrossed, f)\n", 375 | "np.isclose(dirichlet_crossed, quadratic_crossed)" 376 | ] 377 | }, 378 | { 379 | "cell_type": "code", 380 | "execution_count": 17, 381 | "metadata": {}, 382 | "outputs": [ 383 | { 384 | "name": "stdout", 385 | "output_type": "stream", 386 | "text": [ 387 | "Graph laplacian quadratic form:\n", 388 | "\n", 389 | "\n", 390 | "Ring: 12.4889116701\n", 391 | "Crossed ring: 56.6338735435\n" 392 | ] 393 | } 394 | ], 395 | "source": [ 396 | "print('Graph laplacian quadratic form:')\n", 397 | "print('\\n')\n", 398 | "print(r'Ring: ', f @ Lring @ f)\n", 399 | "print(r'Crossed ring: ', f @ Lcrossed @ f)" 400 | ] 401 | } 402 | ], 403 | "metadata": { 404 | "kernelspec": { 405 | "display_name": "Python 3", 406 | "language": "python", 407 | "name": "python3" 408 | }, 409 | "language_info": { 410 | "codemirror_mode": { 411 | "name": "ipython", 412 | "version": 3 413 | }, 414 | "file_extension": ".py", 415 | "mimetype": "text/x-python", 416 | "name": "python", 417 | "nbconvert_exporter": "python", 418 | "pygments_lexer": "ipython3", 419 | "version": "3.6.0" 420 | } 421 | }, 422 | "nbformat": 4, 423 | "nbformat_minor": 2 424 | } 425 | -------------------------------------------------------------------------------- /notebooks/tikhonov_regularization.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "import numpy as np\n", 12 | "from scipy import ndimage\n", 13 | "from scipy import spatial\n", 14 | "from scipy import io\n", 15 | "from scipy import sparse\n", 16 | "from scipy.sparse import csgraph\n", 17 | "from scipy import linalg\n", 18 | "from matplotlib import pyplot as plt\n", 19 | "import seaborn as sns\n", 20 | "from skimage import data\n", 21 | "from skimage import color\n", 22 | "from skimage import img_as_float\n", 23 | "\n", 24 | "import graph3d\n", 25 | "\n", 26 | "%matplotlib inline" 27 | ] 28 | }, 29 | { 30 | "cell_type": "markdown", 31 | "metadata": {}, 32 | "source": [ 33 | "# Load data" 34 | ] 35 | }, 36 | { 37 | "cell_type": "code", 38 | "execution_count": 2, 39 | "metadata": { 40 | "collapsed": true 41 | }, 42 | "outputs": [], 43 | "source": [ 44 | "image = img_as_float(data.camera()[::2, ::2])" 45 | ] 46 | }, 47 | { 48 | "cell_type": "code", 49 | "execution_count": 3, 50 | "metadata": {}, 51 | "outputs": [ 52 | { 53 | "data": { 54 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOcAAAD1CAYAAACr6uKwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXuQXWWd7/3de3fv3n1P0ukQGnJjErYhIhrRISiCziii\nw8BRLuowjqIeZ8p35lyr9Mw5b5XveavOzFTN6MycozI1OipgUFHxhjhIgqAkIBhCgIQdSEgg92vf\nr7v3fv/ofFc+69eruyM19eo5k6eqa+9ee63n+T2/6/f3e561Vq5er+tsO9vOtt+8lv91E3C2nW1n\nW3Y7a5xn29n2G9rOGufZdrb9hrazxnm2nW2/oe2scZ5tZ9tvaDtrnGfb2fYb2hp+3QT879zK5fIf\nS/oTSY2S6pK2SPqvlUrlpRnO/5Gk/1ypVLbP0ud/l/RCpVK5/RXS9FNJ/6tSqXwrHP+ipK9XKpUH\nXkm/Z9v//y13dp3zlbVyufzXki6RdGulUnm5XC7nJd0i6S8k/XalUtn3a6Lrp8owzrPtf792NnK+\nglYul8+X9MeSllQqlZOSVKlUapJuL5fLr5f0XyR9olwu75H0mKTXSPpzSZ+VdEOlUnmiXC5/StJH\nJA1IeljS9ZVKZXm5XP6KpGcqlcpfl8vlUUl/Kentknok/V2lUvnbcrncKukLki6UtOBUHx+oVCqV\nWWj+qaT/JekJSRtP/a3TVNT/z5I+LulVp35/f6VSqZXL5T+XdL2kkqRWTUX9e8rlcouk2yRdJqlX\n0vZTPPhQuVw+79Q4S0/1/fVKpfI/XhGj/5W3sznnK2u/LWmHDTO0ByS9Gf8/U6lUVlcqlXt8oFwu\nXy3pQ5LeIOn1ktpnGKdJ0rFKpfImSTdI+styuVySdI2k3kqlclmlUrlQ0uOS/q9fgf4Vkr5fqVTW\nSNog6e8kvV/SGklXSLqsXC4vk/S7kq6sVCqvkfRfJf33U9f/35py7K86dc7r0Pcdkv6pUqm8XtIb\nJf1uuVy+6Veg7Ww71c4a5ytvjTMcb9JU/un2s4xz3iXp7kql0lupVOqSPjfLON879bnlVN+tpyDr\nV8rl8p+Wy+W/k3SVpLZfgfYJST849X2XpE2VSqW/UqmMSjogaUGlUtkr6Y8k/UG5XP5LTSEFj/Eu\nSV+qVCq1SqXSL+mrknQqol8p6f8tl8tbJT2qqQj62l+BtrPtVDtrnK+sPSppVblcXpzx21slbcL/\ngxnnVCXl8P/kLGONSNIpI5akXLlc/hNJX5I0LGm9pLtCf3O1cfQnTRlrqpXL5bWamkeHpPsl/RXG\nmIn+wqnjl1cqlddWKpXXagr6noW1r6CdNc5X0CqVyn5Jfy/prlM5liSpXC5/WNJ7NaXIs7V7Jb23\nXC53nvr/I0pH27na1ZK+UqlUviSpIulaTRnGv2R7i6QnKpXKZyQ9pKnc02PcK+nD5XI5fyr//ICk\n+qko+qik/yhJ5XJ5nqRHJF33L0zbv4p21jhfYatUKv9F0p2Svlcul58pl8vPayr/WncKEs527UZJ\n/yhpc7lcfkJSp6ai4Jm2v5b08VPQcYOmIO/KVzCN2dpdkhaWy+Xtkn6pKQSwoFwut2uqIj0q6WlN\n5dhHdJr+D2gqZ31aU8WwuyqVytf+hWn7V9HOLqX8Glq5XL5UU9Dv70/9/x81tfxy86+XsjNr5XL5\nfZL6K5XKj04tIX1b0v2VSuULv2bS/o9qZ5dSfj1tp6RPlsvlf6spOPuSpH/76yXpV2rPSPqHcrn8\nPyQVJT0o6Yu/XpL+z2tnI+fZdrb9hrazOefZdrb9hrazxnm2nW2/oW3WnPNLX/pSvaGhQbVaTZJU\nq9VUKBRUr9dlOJzP55XLnV7yqtVqamhoSJ0/OTmpYrGoiYkJ5fN51Wo15fN5FQoFVatVFQqnVwHy\n+byq1eoUcWHspqYmTU5OLakVCgXVajXlcrnkWENDQ4ouX8vvpM008LuvZ1+5XE7VajU1T0lqbGzU\n5OSkcrmccrmcmCL4f/fvMUwLf/cceI7Ha2hoSPiWy+USfnpek5OTmpycVGPj6T0RY2NjKpVKGh8f\nT3hYrVan9dHQ0KBqtap6vZ7QQ376PI/jeZl/7Mu0u4+JiYlkbhMTU8uo9XpdjY2NiY5MTEyoWq2q\nsbExmWO1Wk36Il9NV6FQ0Pj4eKIzpq+hoSH53cd4nfuyblWrVTU0NCRz8zhx7p4v50C5mr8eq1ar\naWJiQk1NTQmPaBu+jvz8+Mc/nrlGPatxUkn8PxWWSk6FNFFk8uTkZMpwPNHYj5nnc/wbz6fAcrlc\nyrDq9Xrq2mg0nFvsx+dZSDQEXmeayHw6Is6bziWXy2l8fFyNjY0pg+C4kqYpC38nL/xJR2JDtfK5\nfzslzoP0x/+zzuPvVHZ/p/zJJ+qHFdnzch8+x86JsvOn9c9GL00ZEf+nUboPz4F64HEs32jk1Is4\n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\n", 55 | "text/plain": [ 56 | "" 57 | ] 58 | }, 59 | "metadata": {}, 60 | "output_type": "display_data" 61 | } 62 | ], 63 | "source": [ 64 | "fig, ax = plt.subplots()\n", 65 | "plt.imshow(image, cmap='gray')\n", 66 | "plt.grid('off')\n", 67 | "ax.xaxis.set_ticks([])\n", 68 | "ax.yaxis.set_ticks([])\n", 69 | "ax.set_title('Original image')\n", 70 | "plt.savefig('../img/tikhonov_regularization_0.pdf', bbox_inches='tight')" 71 | ] 72 | }, 73 | { 74 | "cell_type": "markdown", 75 | "metadata": {}, 76 | "source": [ 77 | "# Crop and add noise" 78 | ] 79 | }, 80 | { 81 | "cell_type": "code", 82 | "execution_count": 4, 83 | "metadata": { 84 | "collapsed": true 85 | }, 86 | "outputs": [], 87 | "source": [ 88 | "image = image[40:80, 100:140]\n", 89 | "noisy_image = image + 0.05*np.random.randn(*image.shape)" 90 | ] 91 | }, 92 | { 93 | "cell_type": "code", 94 | "execution_count": 5, 95 | "metadata": {}, 96 | "outputs": [ 97 | { 98 | "data": { 99 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcwAAADnCAYAAACTx2bHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXmwXdWZ3Rdgg0CArBnNs44m0EMTSCCZIUZGRcwg0QZs\niElhGtLE6U6Risux41Q5dHWc7iSdIjHBHdsxNBgTSIMJo0EMtmQEwkhCFhsND4EEwkITQgwGQ/64\nV4nyvt95fM9XIL2u9fun3eudc88+++x9tu7di/Ud8uGHH8oYY4wxnXPogW6AMcYY0x3wgmmMMcYk\n8IJpjDHGJPCCaYwxxiTwgmmMMcYk8IJpjDHGJPjUgW7AwUhVVYdJ+meSLlGjjw6X9DNJ/7qU8u6B\nbNu+VFXVT9LWUsoh8LdnJZ1WStn5ybfMmIOfqqpGSmqX9NVSyt/so18raUop5Ssfcf5+mWOeq90H\nL5jM9yT1lnRmKWVXVVU9Jf2tpL+RdOkBbVmSUkrbgW6DMd2ADyT9ZVVVj5dSXujKiftrjnmudh+8\nYHagqqpRkr4kaVAp5Q1JKqXsqarqKklzmsf8SFIfSWMk3SPpzyX9F0ltkj6UdJ+kb5RS3q+q6n1J\n/0nS6ZJ6NvU7q6r6iqSL1fhZfIikzZL+USnllaqqekn6a0nHS/q0pIcl/Yvm510g6TpJb0l6qpP7\n+FBSf0nnSFoo6UhJIyW91GzrNZLGS/oPpZS/av6j4HtNrY+k3ZIuKaWUqqrGSvpBU39V0iGSbi6l\n/KiqqjmS/l3z3j6Q9G9KKfd0td+NOUC8LemvJN1aVdXsUsrv9v1jcy7Wze29c+xTkn4sqV/ztP9d\nSvlWVVUPSbq9lHJj87P+laR+pZQ/63ANz9VugvcwI9Mkrd67WO6llLKllHLnPtJRpZTJpZR/Kek/\nS9qmxgI3Q9JUSdc2jztM0vZSynRJfyTpB1VV9W/+7RRJf1JKmSRpefNzJOk/SlrePOdENSbiP6+q\naqAak2Fh828bk/c0V9LlakywgZIuknSmpAWS/m1VVYdKOlvSzlLKyaWU8Wosxtc0z79J0q2llCmS\nviZptiRVVdVb0g8lXVpKmSbpC5K+V1XV8GS7jDkYuE7SHjX+4duRzub2Xr4qaUNzDsyVNG6fhfYK\nSWrOsSsk3fARbfFcPYjxghn5QLl++cU+//tsSdeXUj5s7nHe0NT2cr0klVJWSlolaV5Tf3Cfn4G+\n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\nrkJggg==\n", 100 | "text/plain": [ 101 | "" 102 | ] 103 | }, 104 | "metadata": {}, 105 | "output_type": "display_data" 106 | } 107 | ], 108 | "source": [ 109 | "fig, ax = plt.subplots(1, 2, figsize=(8, 4))\n", 110 | "\n", 111 | "ax[0].imshow(image, cmap='gray')\n", 112 | "ax[1].imshow(noisy_image, cmap='gray')\n", 113 | "ax[0].grid('off')\n", 114 | "ax[1].grid('off')\n", 115 | "ax[0].xaxis.set_ticks([])\n", 116 | "ax[0].yaxis.set_ticks([])\n", 117 | "ax[1].xaxis.set_ticks([])\n", 118 | "ax[1].yaxis.set_ticks([])\n", 119 | "ax[0].set_title('Cropped image')\n", 120 | "ax[1].set_title('Noisy image')\n", 121 | "plt.savefig('../img/tikhonov_regularization_1.pdf', bbox_inches='tight')" 122 | ] 123 | }, 124 | { 125 | "cell_type": "markdown", 126 | "metadata": {}, 127 | "source": [ 128 | "# Perform graph filtering" 129 | ] 130 | }, 131 | { 132 | "cell_type": "markdown", 133 | "metadata": {}, 134 | "source": [ 135 | "#### Given a signal $f_0$ corrupted by Gaussian noise $\\eta$\n", 136 | "\n", 137 | "\\begin{equation}\n", 138 | " \\mathbf{y} = \\mathbf{f_0} + \\mathbf{\\eta}\n", 139 | "\\end{equation}\n", 140 | "\n", 141 | "#### Solve the regularization problem\n", 142 | "\n", 143 | "\\begin{equation}\n", 144 | " \\underset{f}{\\text{argmin}} \\{ ||f - y||_2^2 + \\gamma f^T L f\\}\n", 145 | "\\end{equation}\n", 146 | "\n", 147 | "#### Solution is given by\n", 148 | "\n", 149 | "\\begin{equation}\n", 150 | " f_{*}(i) = \\sum_{l=0}^{N-1} \\bigg[ \\frac{1}{1 + \\gamma \\lambda_l} \\bigg] \\hat{y}\n", 151 | "(\\lambda_l) u_l(i)\n", 152 | "\\end{equation}\n", 153 | "\n", 154 | "#### Or equivalently\n", 155 | "\n", 156 | "\\begin{equation}\n", 157 | " \\mathbf{f} = \\hat{h}(L) \\mathbf{y}\n", 158 | "\\end{equation}\n", 159 | "\n", 160 | "#### Where L is the laplacian of the adjacency matrix defined by:\n", 161 | "\n", 162 | "\\begin{equation}\n", 163 | " W_{i,j} = \n", 164 | " \\begin{cases}\n", 165 | " \\exp \\bigg( - \\frac{[dist(i, j)]^2}{2 \\theta^2} \\bigg) & \\text{if $dist(i,j)$ < $\\kappa$} \\\\\n", 166 | " 0 & \\text{otherwise}\n", 167 | " \\end{cases}\n", 168 | "\\end{equation}\n" 169 | ] 170 | }, 171 | { 172 | "cell_type": "code", 173 | "execution_count": 6, 174 | "metadata": { 175 | "collapsed": true 176 | }, 177 | "outputs": [], 178 | "source": [ 179 | "# Parameters\n", 180 | "kappa = np.sqrt(2)\n", 181 | "theta = 20\n", 182 | "gamma = 10" 183 | ] 184 | }, 185 | { 186 | "cell_type": "code", 187 | "execution_count": 7, 188 | "metadata": { 189 | "collapsed": true 190 | }, 191 | "outputs": [], 192 | "source": [ 193 | "# Query neighboring pixels for each pixel\n", 194 | "yx = np.vstack(np.dstack(np.indices(noisy_image.shape)))\n", 195 | "tree = spatial.cKDTree(yx)\n", 196 | "q = tree.query_ball_point(yx, kappa)\n", 197 | "\n", 198 | "# Get pixels I, and neighbors J\n", 199 | "I = np.concatenate([np.repeat(k, len(q[k])) for k in range(len(q))])\n", 200 | "J = np.concatenate(q)\n", 201 | "\n", 202 | "# Distance metric is difference between neighboring pixels\n", 203 | "dist_ij = np.sqrt(((noisy_image.flat[I] - noisy_image.flat[J])**2))\n", 204 | "\n", 205 | "# Thresholded Gaussian kernel weighting function\n", 206 | "W = np.exp(- ((dist_ij)**2 / 2*(theta**2)) )" 207 | ] 208 | }, 209 | { 210 | "cell_type": "code", 211 | "execution_count": 8, 212 | "metadata": { 213 | "collapsed": true 214 | }, 215 | "outputs": [], 216 | "source": [ 217 | "# Construct sparse adjacency matrix\n", 218 | "A = sparse.lil_matrix((noisy_image.size, noisy_image.size))\n", 219 | "\n", 220 | "for i, j, w in zip(I, J, W):\n", 221 | " A[i, j] = w\n", 222 | " A[j, i] = w\n", 223 | " \n", 224 | "A = A.todense()" 225 | ] 226 | }, 227 | { 228 | "cell_type": "code", 229 | "execution_count": 9, 230 | "metadata": { 231 | "collapsed": true 232 | }, 233 | "outputs": [], 234 | "source": [ 235 | "# Compute Laplacian\n", 236 | "L = csgraph.laplacian(A)\n", 237 | "\n", 238 | "# Compute eigenvalues and eigenvectors of laplacian\n", 239 | "l, u = linalg.eigh(L)\n", 240 | "\n", 241 | "# Compute filtering kernel\n", 242 | "h = u @ np.diag(1 / (1 + gamma*l)) @ u.T\n", 243 | "\n", 244 | "# Filter the image using the kernel\n", 245 | "graph_filtered_image = (h @ noisy_image.ravel()).reshape(noisy_image.shape)" 246 | ] 247 | }, 248 | { 249 | "cell_type": "code", 250 | "execution_count": 10, 251 | "metadata": { 252 | "collapsed": true 253 | }, 254 | "outputs": [], 255 | "source": [ 256 | "# Filter the image using traditional gaussian filtering\n", 257 | "traditional_filtered_image = ndimage.gaussian_filter(noisy_image, 0.8)" 258 | ] 259 | }, 260 | { 261 | "cell_type": "code", 262 | "execution_count": 11, 263 | "metadata": {}, 264 | "outputs": [ 265 | { 266 | "data": { 267 | "image/png": "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\n", 268 | "text/plain": [ 269 | "" 270 | ] 271 | }, 272 | "metadata": {}, 273 | "output_type": "display_data" 274 | } 275 | ], 276 | "source": [ 277 | "# Plot the result\n", 278 | "fig, ax = plt.subplots(2, 2, figsize=(6, 6))\n", 279 | "\n", 280 | "ax.flat[0].imshow(image, cmap='gray')\n", 281 | "ax.flat[1].imshow(noisy_image, cmap='gray')\n", 282 | "ax.flat[2].imshow(graph_filtered_image, cmap='gray')\n", 283 | "ax.flat[3].imshow(traditional_filtered_image, cmap='gray')\n", 284 | "ax.flat[0].grid('off')\n", 285 | "ax.flat[1].grid('off')\n", 286 | "ax.flat[2].grid('off')\n", 287 | "ax.flat[3].grid('off')\n", 288 | "ax.flat[0].xaxis.set_ticks([])\n", 289 | "ax.flat[0].yaxis.set_ticks([])\n", 290 | "ax.flat[1].xaxis.set_ticks([])\n", 291 | "ax.flat[1].yaxis.set_ticks([])\n", 292 | "ax.flat[2].xaxis.set_ticks([])\n", 293 | "ax.flat[2].yaxis.set_ticks([])\n", 294 | "ax.flat[3].xaxis.set_ticks([])\n", 295 | "ax.flat[3].yaxis.set_ticks([])\n", 296 | "ax.flat[0].set_title('Cropped Image')\n", 297 | "ax.flat[1].set_title('Noisy Image')\n", 298 | "ax.flat[2].set_title('Graph Filtered')\n", 299 | "ax.flat[3].set_title('Gaussian Filtered')\n", 300 | "plt.tight_layout()\n", 301 | "plt.savefig('../img/tikhonov_regularization_2.pdf', bbox_inches='tight')" 302 | ] 303 | }, 304 | { 305 | "cell_type": "code", 306 | "execution_count": null, 307 | "metadata": { 308 | "collapsed": true 309 | }, 310 | "outputs": [], 311 | "source": [] 312 | } 313 | ], 314 | "metadata": { 315 | "kernelspec": { 316 | "display_name": "Python 3", 317 | "language": "python", 318 | "name": "python3" 319 | }, 320 | "language_info": { 321 | "codemirror_mode": { 322 | "name": "ipython", 323 | "version": 3 324 | }, 325 | "file_extension": ".py", 326 | "mimetype": "text/x-python", 327 | "name": "python", 328 | "nbconvert_exporter": "python", 329 | "pygments_lexer": "ipython3", 330 | "version": "3.6.0" 331 | } 332 | }, 333 | "nbformat": 4, 334 | "nbformat_minor": 2 335 | } 336 | -------------------------------------------------------------------------------- /tex/bartos_journal_club.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdbartos/graph-signals/e598d8fe7bcef101f740f7b810414043c607f06e/tex/bartos_journal_club.pdf -------------------------------------------------------------------------------- /tex/bartos_journal_club.tex: -------------------------------------------------------------------------------- 1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2 | % Beamer Presentation 3 | % LaTeX Template 4 | % Version 1.0 (10/11/12) 5 | % 6 | % This template has been downloaded from: 7 | % http://www.LaTeXTemplates.com 8 | % 9 | % License: 10 | % CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/) 11 | % 12 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 13 | 14 | %---------------------------------------------------------------------------------------- 15 | % PACKAGES AND THEMES 16 | %---------------------------------------------------------------------------------------- 17 | 18 | \documentclass{beamer} 19 | 20 | \mode { 21 | 22 | % The Beamer class comes with a number of default slide themes 23 | % which change the colors and layouts of slides. Below this is a list 24 | % of all the themes, uncomment each in turn to see what they look like. 25 | 26 | %\usetheme{default} 27 | %\usetheme{AnnArbor} 28 | %\usetheme{Antibes} 29 | %\usetheme{Bergen} 30 | %\usetheme{Berkeley} 31 | %\usetheme{Berlin} 32 | %\usetheme{Boadilla} 33 | %\usetheme{CambridgeUS} 34 | %\usetheme{Copenhagen} 35 | %\usetheme{Darmstadt} 36 | %\usetheme{Dresden} 37 | %\usetheme{Frankfurt} 38 | %\usetheme{Goettingen} 39 | %\usetheme{Hannover} 40 | %\usetheme{Ilmenau} 41 | %\usetheme{JuanLesPins} 42 | %\usetheme{Luebeck} 43 | \usetheme{Madrid} 44 | %\usetheme{Malmoe} 45 | %\usetheme{Marburg} 46 | %\usetheme{Montpellier} 47 | %\usetheme{PaloAlto} 48 | %\usetheme{Pittsburgh} 49 | %\usetheme{Rochester} 50 | %\usetheme{Singapore} 51 | %\usetheme{Szeged} 52 | %\usetheme{Warsaw} 53 | 54 | % As well as themes, the Beamer class has a number of color themes 55 | % for any slide theme. Uncomment each of these in turn to see how it 56 | % changes the colors of your current slide theme. 57 | 58 | %\usecolortheme{albatross} 59 | %\usecolortheme{beaver} 60 | %\usecolortheme{beetle} 61 | %\usecolortheme{crane} 62 | %\usecolortheme{dolphin} 63 | %\usecolortheme{dove} 64 | %\usecolortheme{fly} 65 | %\usecolortheme{lily} 66 | %\usecolortheme{orchid} 67 | %\usecolortheme{rose} 68 | %\usecolortheme{seagull} 69 | %\usecolortheme{seahorse} 70 | %\usecolortheme{whale} 71 | %\usecolortheme{wolverine} 72 | 73 | %\setbeamertemplate{footline} % To remove the footer line in all slides uncomment this line 74 | %\setbeamertemplate{footline}[page number] % To replace the footer line in all slides with a simple slide count uncomment this line 75 | 76 | %\setbeamertemplate{navigation symbols}{} % To remove the navigation symbols from the bottom of all slides uncomment this line 77 | } 78 | 79 | \usepackage{graphicx} % Allows including images 80 | \usepackage{booktabs} % Allows the use of \toprule, \midrule and \bottomrule in tables 81 | 82 | \AtBeginSection[]{ 83 | \begin{frame} 84 | \vfill 85 | \centering 86 | \begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title} 87 | \usebeamerfont{title}\insertsectionhead\par% 88 | \end{beamercolorbox} 89 | \vfill 90 | \end{frame} 91 | } 92 | 93 | \AtBeginSubsection[]{ 94 | \begin{frame} 95 | \vfill 96 | \centering 97 | \begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title} 98 | \usebeamerfont{title}\insertsubsectionhead\par% 99 | \end{beamercolorbox} 100 | \vfill 101 | \end{frame} 102 | } 103 | 104 | 105 | %---------------------------------------------------------------------------------------- 106 | % TITLE PAGE 107 | %---------------------------------------------------------------------------------------- 108 | 109 | \title[Signal Processing on Graphs]{Journal Club: The Emerging Field of Signal Processing on Graphs} % The short title appears at the bottom of every slide, the full title is only on the title page 110 | 111 | \author{Matt Bartos} % Your name 112 | \institute[UM] % Your institution as it will appear on the bottom of every slide, may be shorthand to save space 113 | { 114 | University of Michigan \\ % Your institution for the title page 115 | \medskip 116 | \textit{mdbartos@umich.edu} % Your email address 117 | } 118 | \date{\today} % Date, can be changed to a custom date 119 | 120 | \begin{document} 121 | 122 | \begin{frame} 123 | \titlepage % Print the title page as the first slide 124 | \end{frame} 125 | 126 | \begin{frame} 127 | \frametitle{Overview} % Table of contents slide, comment this block out to remove it 128 | \tableofcontents % Throughout your presentation, if you choose to use \section{} and \subsection{} commands, these will automatically be printed on this slide as an overview of your presentation 129 | \end{frame} 130 | 131 | %---------------------------------------------------------------------------------------- 132 | % PRESENTATION SLIDES 133 | %---------------------------------------------------------------------------------------- 134 | 135 | %------------------------------------------------ 136 | \section{Other work on graph signals} % Sections can be created in order to organize your presentation into discrete blocks, all sections and subsections are automatically printed in the table of contents as an overview of the talk 137 | %------------------------------------------------ 138 | 139 | \begin{frame} 140 | \frametitle{Other work on graph signals} 141 | 142 | \begin{description} 143 | \item[\textbf{SNFOV}] Shuman, D. I., Narang, S. K., Frossard, P., Ortega, A., \& 144 | Vandergheynst, P. (2013). The emerging field of signal processing on graphs: 145 | Extending high-dimensional data analysis to networks and other irregular 146 | domains. Signal Processing Magazine, IEEE, 30(3), 83-98. 147 | 148 | \item[ZFC] Zhang, C., Florencio, D., \& Chou, P. A. (2015). Graph signal processing: a 149 | probabilistic framework. Microsoft Res., Redmond, WA, USA, Tech. Rep. 150 | MSR-TR-2015-31. 151 | 152 | \item[MSLR] Marques, A. G., Segarra, S., Leus, G., \& Ribeiro, A. (2016). Sampling of 153 | graph signals with successive local aggregations. IEEE Transactions on Signal 154 | Processing, 64(7), 1832-1843. 155 | 156 | \item[PV] Perraudin, N., \& Vandergheynst, P. (2017). Stationary signal processing on 157 | graphs. IEEE Transactions on Signal Processing, 65(13), 3462-3477. 158 | \end{description} 159 | \end{frame} 160 | 161 | %------------------------------------------------ 162 | \section{Contribution of Shuman et al.} 163 | %------------------------------------------------ 164 | 165 | \begin{frame} 166 | \frametitle{Contribution of Shuman et al.} 167 | This is a tutorial review paper: 168 | 169 | \begin{itemize} 170 | \item Reviews existing work 171 | \item Provides definitions for graph signal operations and transforms (e.g. graph 172 | signal translation, graph Fourier transform) 173 | \item Provides example implementations (e.g. Tikhonov regularization, wavelet filtering) 174 | \item Summarizes open issues in the field 175 | \end{itemize} 176 | \end{frame} 177 | 178 | \begin{frame} 179 | \frametitle{Topics} 180 | \begin{itemize} 181 | \item Challenges of signal processing on graphs 182 | \item The Graph Laplacian 183 | \item Definition of the Graph Fourier transform 184 | \item Metrics of signal smoothness 185 | \item Generalized operators for signals on graphs 186 | \begin{itemize} 187 | \item Filtering 188 | \item Translation 189 | \item Convolution 190 | \item Modulation and Dilation 191 | \end{itemize} 192 | \item Graph coarsening 193 | \item Graph wavelet filtering 194 | \end{itemize} 195 | \end{frame} 196 | 197 | 198 | \begin{frame} 199 | \frametitle{Challenges of graph signal processing} 200 | How can we extend traditional signal processing tools to graphs? 201 | \begin{itemize} 202 | \item Translation, downsampling and modulation of signals in the graph 203 | domain 204 | \item How to implement filtering operations on graphs 205 | \end{itemize} 206 | 207 | Challenges: 208 | \begin{itemize} 209 | \item Graphs are irregular structures that lack a shift-invariant notion of translation. 210 | \item Modulation is nontrivial, given that the graph frequency spectrum is 211 | discrete and irregularly spaced. 212 | \item Downsampling is nontrivial, as there is no notion of ``every other 213 | vertex''. 214 | \item How can we capture the structure of the graph in downsampling operations? 215 | \end{itemize} 216 | \end{frame} 217 | 218 | \begin{frame} 219 | \begin{center} 220 | This presentation is interactive. 221 | 222 | \vspace{1cm} 223 | 224 | Follow along at: 225 | 226 | \url{github.com/mdbartos/graph-signals} 227 | \end{center} 228 | \end{frame} 229 | 230 | %------------------------------------------------ 231 | 232 | \subsection{The Graph Fourier Transform} 233 | 234 | \begin{frame} 235 | \frametitle{Review of the Fourier Transform} 236 | 237 | In the traditional Euclidean domain, we can find the frequency-domain 238 | representation of a time series signal using the Fourier transform: 239 | 240 | \begin{block}{Classical Fourier Transform} 241 | \begin{equation} 242 | \hat{f}(\xi) = \int_{-\infty}^{\infty} f(t) e^{-2 \pi j \xi t} dt 243 | \end{equation} 244 | \end{block} 245 | 246 | $\hat{f}$ is an expansion of $f$ in terms of complex exponentials, which are the 247 | eigenfunctions of the Laplace operator: 248 | 249 | \begin{block}{Classical Fourier transform in terms of the Laplace operator} 250 | \begin{equation} 251 | - \Delta (e^{2 \pi j \xi t}) = - \frac{\partial^2}{\partial t^2} e^{2 \pi j \xi t} = 4 \pi^2 \xi^2 e^{2 \pi j \xi t} = k e^{2 \pi j \xi t} 252 | \end{equation} 253 | \end{block} 254 | \end{frame} 255 | 256 | \begin{frame} 257 | \frametitle{Classical Fourier Transform} 258 | \begin{figure} 259 | \includegraphics[width=0.7\linewidth]{../img/graph_fourier_transform_0.pdf} 260 | \end{figure} 261 | \end{frame} 262 | 263 | 264 | \begin{frame} 265 | \frametitle{The Graph Laplacian} 266 | 267 | For each vertex $i$, the Laplace operator computes the weighted sum of the 268 | differences between the signal value at $i$ and the signal value at $i's$ 269 | neighbors ($j \in N_i$). 270 | 271 | \begin{block}{The Laplacian is a difference operator} 272 | \begin{equation} 273 | (\Delta f) (i) = (L f) (i) = \sum_{j \in N_i} W_{i, j} [f(i) - f(j)] 274 | \end{equation} 275 | \end{block} 276 | 277 | The Laplace operator for an undirected graph is simply the degree matrix minus the 278 | adjacency matrix. 279 | 280 | \begin{block}{The Graph Laplacian} 281 | \begin{equation} 282 | L = D - W 283 | \end{equation} 284 | \end{block} 285 | 286 | $L$ will have a full set of orthonormal eigenvectors, and real eigenvalues. Zero 287 | will occur as an eigenvalue with multiplicity equal to the number of connected 288 | components. 289 | \end{frame} 290 | 291 | \begin{frame} 292 | \frametitle{The Graph Fourier Transform} 293 | The Graph Fourier transform is an expansion of $f$ in terms of the 294 | eigenvectors $u_l$ of the Graph Laplacian. 295 | 296 | \begin{block}{The Graph Fourier Transform} 297 | \begin{equation} 298 | \hat{f}(\lambda_l) = \sum_{i=1}^N f(i) u^*_l(i) 299 | \end{equation} 300 | \end{block} 301 | 302 | \begin{block}{The Graph Fourier Transform (alt.)} 303 | \begin{equation} 304 | \hat{\mathbf{f}} = U^* \mathbf{f} 305 | \end{equation} 306 | \end{block} 307 | 308 | \begin{itemize} 309 | \item Eigenvectors associated with the smallest eigenvalues vary slowly across 310 | the graph. 311 | \item Eigenvectors associated with the largest eigenvalues oscillate rapidly. 312 | \end{itemize} 313 | \end{frame} 314 | 315 | \begin{frame} 316 | \frametitle{Example: Eigenvectors of the Laplacian of the Minnesota Road Network} 317 | \begin{columns} 318 | \begin{column}{0.5\textwidth} 319 | \begin{figure} 320 | \includegraphics[trim={0 10cm 0 0},clip,width=\linewidth]{../img/graph_fourier_transform_5.pdf} 321 | \end{figure} 322 | \end{column} 323 | \begin{column}{0.5\textwidth} 324 | \begin{figure} 325 | \includegraphics[trim={0 0 0 16cm},clip,width=\linewidth]{../img/graph_fourier_transform_5.pdf} 326 | \end{figure} 327 | \end{column} 328 | \end{columns} 329 | \end{frame} 330 | 331 | \begin{frame} 332 | \frametitle{Example: Fourier transform of a graph signal on a ring graph} 333 | \begin{figure} 334 | \includegraphics[width=0.7\linewidth]{../img/graph_fourier_transform_2.pdf} 335 | \end{figure} 336 | \end{frame} 337 | 338 | \subsection{Signal smoothness on a graph} 339 | 340 | \begin{frame} 341 | \frametitle{Signal smoothness depends on underlying structure of graph} 342 | \begin{figure} 343 | \includegraphics[width=0.9\linewidth]{../img/signal_smoothness_0.pdf} 344 | \end{figure} 345 | \end{frame} 346 | 347 | \begin{frame} 348 | \frametitle{Measuring local signal smoothness on a graph} 349 | \begin{block}{The edge derivative of $f$ with respect to edge $e=(i,j)$} 350 | \begin{equation} 351 | \frac{\partial f}{\partial e} \bigg|_i = \sqrt{W_{i,j}} [f(j) - f(i)] 352 | \end{equation} 353 | \end{block} 354 | 355 | The local variation can be measured by the square root of the sum of the squared differences 356 | between signal values at adjacent vertices. 357 | 358 | \begin{block}{The local variation at vertex $i$} 359 | \begin{equation} 360 | || \nabla_i f || = \bigg[ \sum_{\text{e connected to i}} \bigg( \frac{\partial f}{\partial e} \bigg|_i \bigg)^2 \bigg]^{1/2} = \bigg[ \sum_{j \in N_i} W_{i,j} [f(j) - f(i)]^2 \bigg]^{1/2} 361 | \end{equation} 362 | \end{block} 363 | \end{frame} 364 | 365 | \begin{frame} 366 | \frametitle{Measuring global signal smoothness on a graph} 367 | 368 | \begin{block}{Discrete p-Dirichlet form of $f$} 369 | \begin{equation} 370 | S_p(f) = \frac{1}{p} \sum_{i \in V} \bigg[ \sum_{j \in N_i} W_{i,j} [f(j) - f(i)]^2 \bigg]^{\frac{p}{2}} 371 | \end{equation} 372 | \end{block} 373 | 374 | For $p=1$, $S_1$ is simply the sum of local variations across all vertices. 375 | 376 | For $p=2$, $S_2$ is a quadratic function of the Laplacian: 377 | 378 | \begin{block}{Graph Laplacian Quadratic Form} 379 | \begin{equation} 380 | \begin{split} 381 | S_2(f) = \frac{1}{2} \sum_{i \in V} \bigg[ \sum_{j \in N_i} W_{i,j} 382 | [f(j) - f(i)]^2 \bigg]^{\frac{1}{2}} = \sum_{(i, j) \in \epsilon} 383 | W_{i,j} [f(j) - f(i)]^2 \\ 384 | = f^T L f 385 | \end{split} 386 | \end{equation} 387 | \end{block} 388 | 389 | $S_2$ is small when $f$ has similar values at strongly-connected vertices. 390 | 391 | \end{frame} 392 | 393 | 394 | \begin{frame} 395 | \frametitle{Alternatives to the Graph Laplacian} 396 | 397 | \begin{block}{Normalized Graph Laplacian} 398 | \begin{equation} 399 | \tilde{L} = D^{-1/2} L D^{-1/2} 400 | \end{equation} 401 | \end{block} 402 | 403 | The eigenvalues of $\tilde{L}$ will be between 0 and 2. For bipartite graphs, 404 | the spectral folding phenomenon can be used. 405 | 406 | \begin{block}{Random Walk Matrix} 407 | \begin{equation} 408 | P = D^{-1} W 409 | \end{equation} 410 | \end{block} 411 | 412 | \begin{block}{Asymmetric Graph Laplacian} 413 | \begin{equation} 414 | L_a = I - D^{-1} W 415 | \end{equation} 416 | \end{block} 417 | 418 | \end{frame} 419 | 420 | \subsection{Graph signal operations} 421 | 422 | \begin{frame} 423 | \frametitle{Filtering in the frequency/graph spectral domain} 424 | 425 | Using some transfer function $\hat{h}$, we can filter an input signal as follows: 426 | \begin{block}{Classical frequency filtering} 427 | \begin{equation} 428 | f_{out}(t) = \mathcal{F}^{-1} \{ \hat{f}_{in}(\xi) \hat{h}(\xi)\} 429 | \end{equation} 430 | \end{block} 431 | 432 | In the graph setting: 433 | 434 | \begin{block}{Graph filtering in the graph spectral domain} 435 | \begin{equation} 436 | \begin{split} 437 | \hat{h}(L) = U 438 | \begin{bmatrix} 439 | \hat{h}(\lambda_0) & & 0 \\ 440 | & \ddots & \\ 441 | 0 & & \hat{h}(\lambda_{N-1}) 442 | \end{bmatrix} 443 | U^* 444 | \\\\ 445 | f_{out} = \hat{h}(L) f_{in} 446 | \end{split} 447 | \end{equation} 448 | \end{block} 449 | 450 | \end{frame} 451 | 452 | \begin{frame} 453 | \frametitle{Example: Gaussian Filtering} 454 | \begin{columns} 455 | \begin{column}{0.5\textwidth} 456 | \begin{figure} 457 | \includegraphics[trim={0 10cm 0 0},clip,width=\linewidth]{../img/basic_operations_1.pdf} 458 | \end{figure} 459 | \end{column} 460 | \begin{column}{0.5\textwidth} 461 | \begin{figure} 462 | \includegraphics[trim={0 0 0 20cm},clip,width=\linewidth]{../img/basic_operations_1.pdf} 463 | \end{figure} 464 | \end{column} 465 | \end{columns} 466 | \end{frame} 467 | 468 | 469 | \begin{frame} 470 | \frametitle{Filtering example: Tikhonov regularization} 471 | \begin{figure} 472 | \includegraphics[width=0.5\linewidth]{../img/tikhonov_regularization_2.pdf} 473 | \end{figure} 474 | \end{frame} 475 | 476 | 477 | \begin{frame} 478 | \frametitle{Filtering in the time/vertex domain} 479 | 480 | We can also filter in the time domain using convolution: 481 | 482 | \begin{block}{Classical time-domain filtering} 483 | \begin{equation} 484 | f_{out}(t) = (f_{in} * h)(t) 485 | \end{equation} 486 | \end{block} 487 | 488 | In the graph setting, the output at any vertex $i$ is a linear combination of the elements of 489 | the input signal within a K-hop neighborhood (for some constants $b$): 490 | 491 | \begin{block}{Graph filtering in the vertex domain} 492 | \begin{equation} 493 | f_{out}(i) = b_{i,i} f_{in}(i) + \sum_{j \in N(i, K)} b_{i,j} f_{in}(j) 494 | \end{equation} 495 | \end{block} 496 | \end{frame} 497 | 498 | \begin{frame} 499 | \frametitle{Equivalence of vertex/spectral filtering} 500 | If the frequency filter is a K-order polynomial $\hat{h} = \sum_{k=0}^K a_k 501 | \lambda_l^k$, the frequency filtered signal at vertex $i$ is a linear combination of the 502 | elements of the input signal at vertices within a K-hop neighborhood: 503 | 504 | \begin{block}{Frequency filtering when the filter is a K-order polynomial} 505 | \begin{equation} 506 | f_{out}(i) = b_{i,i} f_{in}(i) + \sum_{j \in N(i, K)} \sum_{d G(i,j)}^K a_k (L^k)_{i,j} f_{in}(j) 507 | \end{equation} 508 | \end{block} 509 | \end{frame} 510 | 511 | \begin{frame} 512 | \frametitle{Convolution} 513 | 514 | Although we cannot directly generalize a convolution product on a graph 515 | because $h(t - \tau)$ is undefined, we can use frequency filtering, as 516 | previously defined: 517 | 518 | \begin{block}{Convolution of a signal on a graph} 519 | \begin{equation} 520 | (f * h)(i) = \sum_{l=0}^{N-1} \hat{f}(\lambda_l) \hat{h}(\lambda_l) u_l(i) 521 | \end{equation} 522 | \end{block} 523 | \end{frame} 524 | 525 | \begin{frame} 526 | \frametitle{Translation} 527 | 528 | \begin{block}{Classical translation operation} 529 | \begin{equation} 530 | (T_vf)(t) = f(t - v) = (f * \delta_v)(t) 531 | \end{equation} 532 | \end{block} 533 | 534 | Again, we cannot directly generalize $(t - v)$ for a graph, so we consider 535 | instead the definition of translation as convolution with a Dirac delta. 536 | 537 | \begin{block}{Translation of a graph signal} 538 | \begin{equation} 539 | (T_n f)(i) = \sqrt{N} (f * \delta_n)(i) = \sqrt{N} \sum_{l=0}^{N-1} \hat{f}(\lambda_l) u_l^*(n) u_l(i) 540 | \end{equation} 541 | \end{block} 542 | 543 | Where: 544 | 545 | \begin{equation} 546 | \delta_n = 547 | \begin{cases} 548 | 1 \ if \ i=n \\ 549 | 0 \ otherwise 550 | \end{cases} 551 | \end{equation} 552 | 553 | \end{frame} 554 | 555 | \begin{frame} 556 | \frametitle{Graph signal translation example} 557 | \begin{columns} 558 | \begin{column}{0.5\textwidth} 559 | \begin{figure} 560 | \includegraphics[trim={0 16cm 0 0},clip,width=\linewidth]{../img/basic_operations_0.pdf} 561 | \end{figure} 562 | \end{column} 563 | \begin{column}{0.5\textwidth} 564 | \begin{figure} 565 | \includegraphics[trim={0 0 0 15cm},clip,width=\linewidth]{../img/basic_operations_0.pdf} 566 | \end{figure} 567 | \end{column} 568 | \end{columns} 569 | \end{frame} 570 | 571 | 572 | \begin{frame} 573 | \frametitle{Modulation} 574 | 575 | In simple terms, like a ``translation'' in the frequency domain. 576 | 577 | \begin{block}{Classical modulation} 578 | \begin{equation} 579 | \begin{split} 580 | \text{Time domain: } (M_\omega f)(t) = e^{2 \pi j \omega t} f(t) \\ 581 | \text{Frequency domain: } \overline{M_\omega f}(\xi) = \hat{f}(\xi - 582 | \omega) 583 | \end{split} 584 | \end{equation} 585 | \end{block} 586 | 587 | Replace complex exponential with a graph Laplacian eigenvector: 588 | 589 | \begin{block}{Graph modulation} 590 | \begin{equation} 591 | (M_kf)(i) = \sqrt{N} u_k(i) f(i) 592 | \end{equation} 593 | \end{block} 594 | 595 | If a kernel $f$ is localized around 0 in the graph spectral domain, then 596 | $\overline{M_kg}$ is localized around $\lambda_k$. 597 | \end{frame} 598 | 599 | \begin{frame} 600 | \frametitle{Graph signal modulation example} 601 | \begin{columns} 602 | \begin{column}{0.5\textwidth} 603 | \begin{figure} 604 | \includegraphics[trim={0 10cm 0 0},clip,width=\linewidth]{../img/basic_operations_3.pdf} 605 | \end{figure} 606 | \end{column} 607 | \begin{column}{0.5\textwidth} 608 | \begin{figure} 609 | \includegraphics[trim={0 0 0 20cm},clip,width=\linewidth]{../img/basic_operations_3.pdf} 610 | \end{figure} 611 | \end{column} 612 | \end{columns} 613 | \end{frame} 614 | 615 | 616 | \begin{frame} 617 | \frametitle{Dilation} 618 | 619 | \begin{block}{Classical dilation} 620 | \begin{equation} 621 | \begin{split} 622 | \text{Time domain: } (D_s f)(t) = \frac{1}{s} f \bigg( \frac{t}{s} \bigg) \\ 623 | \text{Frequency domain: } \overline{D_s f}(\xi) = \hat{f}(s \xi) 624 | \end{split} 625 | \end{equation} 626 | \end{block} 627 | 628 | Replace the frequency $\xi$ with an eigenvalue of the Laplacian. 629 | 630 | \begin{block}{Graph dilation} 631 | \begin{equation} 632 | (D_sf)(\lambda) = \hat{f} (s \lambda) 633 | \end{equation} 634 | \end{block} 635 | \end{frame} 636 | 637 | \begin{frame} 638 | \frametitle{Graph signal dilation example} 639 | \begin{columns} 640 | \begin{column}{0.5\textwidth} 641 | \begin{figure} 642 | \includegraphics[trim={0 10cm 0 0},clip,width=0.9\linewidth]{../img/basic_operations_4.pdf} 643 | \end{figure} 644 | \end{column} 645 | \begin{column}{0.5\textwidth} 646 | \begin{figure} 647 | \includegraphics[trim={0 0 0 20cm},clip,width=0.9\linewidth]{../img/basic_operations_4.pdf} 648 | \end{figure} 649 | \end{column} 650 | \end{columns} 651 | \end{frame} 652 | 653 | \subsection{Graph coarsening, downsampling and reduction} 654 | 655 | \begin{frame} 656 | \frametitle{Graph coarsening, downsampling and reduction} 657 | 658 | \begin{itemize} 659 | \item For bipartite graphs, one can recursively downsample by a factor of two 660 | \item Downsampling based on diffusion distances 661 | \item Greedy seed selection algorithm 662 | \item Recursive spectral bisection 663 | \item Minimize number of edges connecting two vertices in a downsampled subset 664 | \end{itemize} 665 | \end{frame} 666 | 667 | \begin{frame} 668 | \frametitle{Example: Spectral clustering} 669 | \begin{figure} 670 | \includegraphics[trim={1cm 0.7cm 2cm 0},clip,width=0.9\linewidth]{../img/clustering_methods_1.pdf} 671 | \end{figure} 672 | \end{frame} 673 | 674 | \begin{frame} 675 | \frametitle{Example: Recursive spectral bisection} 676 | \begin{figure} 677 | \includegraphics[trim={1cm 0.7cm 0 0},clip,width=0.5\linewidth]{../img/clustering_methods_2.pdf} 678 | \end{figure} 679 | \begin{figure} 680 | \includegraphics[trim={1cm 0.7cm 0 0},clip,width=0.5\linewidth]{../img/clustering_methods_3.pdf} 681 | \end{figure} 682 | \end{frame} 683 | 684 | \subsection{Graph wavelets} 685 | 686 | \begin{frame} 687 | \frametitle{Localized multiscale transforms} 688 | 689 | Measuring the spread of graph signals in both time and frequency domains: 690 | 691 | \begin{block}{Spatial spread of a signal f around a center vertex i} 692 | \begin{equation} 693 | \Delta_{G,i}^2(f) = \frac{1}{|| f ||_2^2} \sum_{j \in V} [d_G(i, j)]^2 [f(j)]^2 694 | \end{equation} 695 | \end{block} 696 | 697 | \begin{itemize} 698 | \item Where $d_G(i, \cdot)$ is the geodesic distance function. 699 | \item $[f(j)]^2 / || f ||^2$ represents the pmf of signal $f$. 700 | \item $\Delta_{G, i}^2$ is the variance of the geodesic distance function at 701 | node i. 702 | \end{itemize} 703 | \end{frame} 704 | 705 | \begin{frame} 706 | \frametitle{Localized multiscale transforms} 707 | 708 | The spatial and spectral spreads can thus both be characterized: 709 | 710 | \begin{block}{Total spatial spread of a graph signal} 711 | \begin{equation} 712 | \Delta_{G}^2(f) = min_{i \in V} \{ \Delta_{G, i} (f) \} 713 | \end{equation} 714 | \end{block} 715 | \begin{block}{Total spectral spread of a graph signal} 716 | \begin{equation} 717 | \Delta_{\sigma}^2(f) = min_{\mu \in \mathcal{R}} \bigg\{ \frac{1}{|| f ||_2^2} \sum_{\lambda \in \sigma(L)} [\sqrt{\lambda} - \sqrt{\mu}]^2 [\hat{f}(\lambda)]^2 \bigg\} 718 | \end{equation} 719 | \end{block} 720 | \end{frame} 721 | 722 | \begin{frame} 723 | \frametitle{Wavelets in the vertex domain} 724 | The wavelet function $\Psi$ at scale k and center vertex i is defined by: 725 | 726 | \begin{block}{Wavelet in the vertex domain around a vertex i} 727 | \begin{equation} 728 | \Psi_{k,i}^{CKWT} (j) = \frac{a_{k, \tau}}{|\partial N_{(i, \tau)}|}, \forall j \in \partial N(i, \tau) 729 | \end{equation} 730 | \end{block} 731 | 732 | Where $\partial N_{(i, \tau)}$ is the set of all vertices $j \in N$ such that the geodesic distance between $i$ and $j$ is $\tau$. $a_{k, \tau}$ is a set of coefficients that approximate the continuous wavelet function. 733 | 734 | \begin{block}{Wavelet Transform} 735 | \begin{equation} 736 | \mathbf{\Psi}_{k}^{CKWT} = [\Psi_{k,1}^{CKWT} ; \Psi_{k,2}^{CKWT} \cdots \Psi_{k,N}^{CKWT}] 737 | \end{equation} 738 | \end{block} 739 | 740 | \end{frame} 741 | 742 | \begin{frame} 743 | \frametitle{Example: Ricker wavelet} 744 | \begin{figure} 745 | \includegraphics[width=0.9\linewidth]{../img/wavelet_filter_0.pdf} 746 | \end{figure} 747 | \end{frame} 748 | 749 | \begin{frame} 750 | \frametitle{Example: Applying Ricker Wavelet Transform for edge detection} 751 | \begin{figure} 752 | \includegraphics[width=0.9\linewidth]{../img/wavelet_filter_1.pdf} 753 | \end{figure} 754 | \end{frame} 755 | 756 | \begin{frame} 757 | \frametitle{Example: Tradeoff between spectral and spatial spread} 758 | \begin{figure} 759 | \includegraphics[width=0.9\linewidth]{../img/wavelet_filter_7.pdf} 760 | \end{figure} 761 | \end{frame} 762 | 763 | \section{Strengths and weaknesses} 764 | 765 | \begin{frame} 766 | \frametitle{Strengths and weaknesses} 767 | Strengths: 768 | 769 | \begin{itemize} 770 | \item Highly accessible 771 | \item Comprehensive introduction to signal processing on graphs 772 | \item Excellent examples and illustrations from different fields 773 | \end{itemize} 774 | 775 | Weaknesses: 776 | 777 | \begin{itemize} 778 | \item Doesn't emphasize computational difficulty of several proposed methods 779 | \item Some notation could be simplified 780 | \item Some assertions aren't proved or expanded upon 781 | \item Couldn't find any code 782 | \end{itemize} 783 | \end{frame} 784 | \section{Extensions and applications} 785 | 786 | \begin{frame} 787 | \frametitle{Extensions and applications} 788 | \begin{itemize} 789 | \item Little is known about how the structure of the graph affects transforms 790 | \item Unclear when to use different graph matrices (Laplacian, Normalized 791 | Laplacian, etc.) 792 | \item Unclear when to use different distance metrics (geodesic, algebraic, 793 | diffusion, resistance, etc.) 794 | \item Computing the eigendecomposition of the Laplacian is \textbf{slow} 795 | \end{itemize} 796 | \end{frame} 797 | 798 | 799 | \begin{frame} 800 | \frametitle{Appendix} 801 | 802 | For an infinite square lattice grid, it can be shown that the Graph Laplacian 803 | corresponds to the continuous Laplacian as $\epsilon \rightarrow 0$: 804 | 805 | \begin{block}{Equivalence between Continous and Graph Laplacians} 806 | \begin{equation} 807 | \frac{\partial^2 F}{\partial x^2} = \lim_{\epsilon \rightarrow 0} \frac{[F(x + \epsilon) - F(x)] + [F(x - \epsilon) - F(x)]}{\epsilon^2} 808 | \end{equation} 809 | \end{block} 810 | 811 | \end{frame} 812 | 813 | \end{document} --------------------------------------------------------------------------------