Skip to content

Instantly share code, notes, and snippets.

@RichieSams
Last active March 1, 2016 23:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RichieSams/ce2ca2a201227c1de543 to your computer and use it in GitHub Desktop.
Save RichieSams/ce2ca2a201227c1de543 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 275,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 276,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import math\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 277,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"class ReconstructionFilter:\n",
" def __init__(self, filterType):\n",
" self.filterType = filterType\n",
" self.width = 0.0\n",
" self.binSize = 0.0\n",
" self.invBinSize = 0.0\n",
" self.filterResolution = 32\n",
" self.cdf = np.empty(self.filterResolution + 1)\n",
" \n",
" self.precompute()\n",
" \n",
" # Public\n",
" \n",
" def sample(self, x):\n",
" negative = x < 0.5;\n",
" x = x * 2.0 if negative else (x - 0.5) * 2.0;\n",
" \n",
" idx = self.filterResolution;\n",
" for i in range(1, self.filterResolution + 1):\n",
" if (x < self.cdf[i]):\n",
" idx = i - 1\n",
" break\n",
" \n",
" pdf = self.cdf[idx + 1] - self.cdf[idx]\n",
" u = self.binSize * ((idx) + ((x - self.cdf[idx]) / pdf))\n",
"\n",
" return -u if negative else u\n",
" \n",
" # Private \n",
" \n",
" def precompute(self):\n",
" self.width = self.filterWidth()\n",
" \n",
" if (self.filterType == \"Dirac\"):\n",
" return\n",
" \n",
" self.binSize = self.width / (self.filterResolution - 1);\n",
" self.invBinSize = (self.filterResolution - 1) / self.width;\n",
"\n",
" normalizationFactor = 0.0\n",
" pdf = np.empty(self.filterResolution)\n",
" for i in range(self.filterResolution - 1):\n",
" temp = self.eval(i * self.binSize)\n",
" pdf[i] = temp\n",
" normalizationFactor += temp\n",
" \n",
" pdf[self.filterResolution - 1] = 0.0\n",
" \n",
" # Normalize. Aka, we want the area under the curve to equal 1.0\n",
" for i in range(self.filterResolution - 1):\n",
" pdf[i] /= normalizationFactor\n",
" \n",
" self.cdf[0] = 0.0\n",
" for i in range(1, self.filterResolution):\n",
" self.cdf[i] = self.cdf[i - 1] + (pdf[i - 1])\n",
" self.cdf[self.filterResolution] = 1.0\n",
" \n",
" def eval(self, x):\n",
" if (self.filterType == \"Dirac\"):\n",
" return 0.0\n",
" elif (self.filterType == \"Box\"):\n",
" return 1.0 if (x >= -0.5 and x <= 0.5) else 0.0\n",
" elif (self.filterType == \"Tent\"):\n",
" return 1.0 - abs(x)\n",
" elif (self.filterType == \"Gaussian\"):\n",
" alpha = 2.0\n",
" return max(math.exp(-alpha * x * x) - math.exp(-alpha * 4.0), 0.0)\n",
" elif (self.filterType == \"MitchellNetravali\"):\n",
" return self.mitchellNetravali(abs(x))\n",
" elif (self.filterType == \"CatmullRom\"):\n",
" return self.catmullRom(abs(x))\n",
" elif (self.filterType == \"Lanczos\"):\n",
" return self.lanczos(abs(x))\n",
" else:\n",
" return 0.0\n",
" \n",
" def filterWidth(self):\n",
" if (self.filterType == \"Dirac\"):\n",
" return 0.0\n",
" elif (self.filterType == \"Box\"):\n",
" return 0.5\n",
" elif (self.filterType == \"Tent\"):\n",
" return 1.0\n",
" elif (self.filterType == \"Gaussian\" or \n",
" self.filterType == \"MitchellNetravali\" or\n",
" self.filterType == \"CatmullRom\" or \n",
" self.filterType == \"Lanczos\"):\n",
" return 2.0\n",
" else:\n",
" return 0.0\n",
" \n",
" def mitchellNetravali(self, x):\n",
" B = 1.0 / 3.0\n",
" C = 1.0 / 3.0\n",
" if (x < 1.0):\n",
" return 1.0 / 6.0 * \\\n",
" ((12.0 - 9.0 * B - 6.0 * C) * x * x * x + \\\n",
" (-18.0 + 12.0 * B + 6.0 * C) * x * x + \\\n",
" (6.0 - 2.0 * B))\n",
" elif (x < 2.0):\n",
" return 1.0 / 6.0 * \\\n",
" ((-B - 6.0 * C) * x * x * x + \\\n",
" (6.0 * B + 30.0 * C) * x * x + \\\n",
" (-12.0 * B - 48.0 * C) * x + \\\n",
" (8.0 * B + 24.0 * C))\n",
" else:\n",
" return 0.0\n",
"\n",
" def catmullRom(self, x):\n",
" if (x < 1.0):\n",
" return 1.0 / 6.0 * \\\n",
" ((12.0 - 3.0) * x * x * x + \\\n",
" (-18.0 + 3.0) * x * x + \\\n",
" 6.0)\n",
" elif (x < 2.0):\n",
" return 1.0 / 6.0 * \\\n",
" (-3.0 * x * x * x + \\\n",
" 15.0 * x * x - \\\n",
" 24.0 * x + \\\n",
" 12.0)\n",
" else:\n",
" return 0.0;\n",
"\n",
" def lanczos(self, x):\n",
" if (x == 0.0):\n",
" return 1.0;\n",
" elif (x < 2.0):\n",
" return math.sin(math.pi * x) * \\\n",
" math.sin(math.pi * x * 0.5) / \\\n",
" (math.pi * math.pi * x * x * 0.5);\n",
" else:\n",
" return 0.0"
]
},
{
"cell_type": "code",
"execution_count": 278,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"randNumbers = np.random.rand(100000)"
]
},
{
"cell_type": "code",
"execution_count": 279,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x97c7390>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"diracFilter = ReconstructionFilter(\"Dirac\")\n",
"\n",
"diracSamples = np.empty(100000)\n",
"for i in range(100000):\n",
" diracSamples[i] = diracFilter.sample(randNumbers[i])\n",
"\n",
"plt.hist(diracSamples, 50)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 280,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\ndPfufz+n8wAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x6203dd8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"boxFilter = ReconstructionFilter(\"Box\")\n",
"\n",
"boxSamples = np.empty(100000)\n",
"for i in range(100000):\n",
" boxSamples[i] = boxFilter.sample(randNumbers[i])\n",
"\n",
"plt.hist(boxSamples, 50)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 281,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0xa73dbe0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"tentFilter = ReconstructionFilter(\"Tent\")\n",
"\n",
"tentSamples = np.empty(100000)\n",
"for i in range(100000):\n",
" tentSamples[i] = tentFilter.sample(randNumbers[i])\n",
"\n",
"plt.hist(tentSamples, 50)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 282,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0xae5cd68>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"gaussianFilter = ReconstructionFilter(\"Gaussian\")\n",
"\n",
"gaussianSamples = np.empty(100000)\n",
"for i in range(100000):\n",
" gaussianSamples[i] = gaussianFilter.sample(randNumbers[i])\n",
"\n",
"plt.hist(gaussianSamples, 50)\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment