Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save monkeybutter/dc959e5fcc4969acd728e2d8c8fcc7f8 to your computer and use it in GitHub Desktop.
Save monkeybutter/dc959e5fcc4969acd728e2d8c8fcc7f8 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nXD39MOBTo2AAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1105d3748>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from scipy.spatial import Voronoi\n",
"from shapely.geometry import Polygon\n",
"\n",
"def voronoi_finite_polygons_2d(vor, radius=None):\n",
" \"\"\"\n",
" Reconstruct infinite voronoi regions in a 2D diagram to finite\n",
" regions.\n",
" Parameters\n",
" ----------\n",
" vor : Voronoi\n",
" Input diagram\n",
" radius : float, optional\n",
" Distance to 'points at infinity'.\n",
" Returns\n",
" -------\n",
" regions : list of tuples\n",
" Indices of vertices in each revised Voronoi regions.\n",
" vertices : list of tuples\n",
" Coordinates for revised Voronoi vertices. Same as coordinates\n",
" of input vertices, with 'points at infinity' appended to the\n",
" end.\n",
" \"\"\"\n",
"\n",
" if vor.points.shape[1] != 2:\n",
" raise ValueError(\"Requires 2D input\")\n",
"\n",
" new_regions = []\n",
" new_vertices = vor.vertices.tolist()\n",
"\n",
" center = vor.points.mean(axis=0)\n",
" if radius is None:\n",
" radius = vor.points.ptp().max()*2\n",
"\n",
" # Construct a map containing all ridges for a given point\n",
" all_ridges = {}\n",
" for (p1, p2), (v1, v2) in zip(vor.ridge_points, vor.ridge_vertices):\n",
" all_ridges.setdefault(p1, []).append((p2, v1, v2))\n",
" all_ridges.setdefault(p2, []).append((p1, v1, v2))\n",
"\n",
" # Reconstruct infinite regions\n",
" for p1, region in enumerate(vor.point_region):\n",
" vertices = vor.regions[region]\n",
"\n",
" if all(v >= 0 for v in vertices):\n",
" # finite region\n",
" new_regions.append(vertices)\n",
" continue\n",
"\n",
" # reconstruct a non-finite region\n",
" ridges = all_ridges[p1]\n",
" new_region = [v for v in vertices if v >= 0]\n",
"\n",
" for p2, v1, v2 in ridges:\n",
" if v2 < 0:\n",
" v1, v2 = v2, v1\n",
" if v1 >= 0:\n",
" # finite ridge: already in the region\n",
" continue\n",
"\n",
" # Compute the missing endpoint of an infinite ridge\n",
"\n",
" t = vor.points[p2] - vor.points[p1] # tangent\n",
" t /= np.linalg.norm(t)\n",
" n = np.array([-t[1], t[0]]) # normal\n",
"\n",
" midpoint = vor.points[[p1, p2]].mean(axis=0)\n",
" direction = np.sign(np.dot(midpoint - center, n)) * n\n",
" far_point = vor.vertices[v2] + direction * radius\n",
"\n",
" new_region.append(len(new_vertices))\n",
" new_vertices.append(far_point.tolist())\n",
"\n",
" # sort region counterclockwise\n",
" vs = np.asarray([new_vertices[v] for v in new_region])\n",
" c = vs.mean(axis=0)\n",
" angles = np.arctan2(vs[:,1] - c[1], vs[:,0] - c[0])\n",
" new_region = np.array(new_region)[np.argsort(angles)]\n",
"\n",
" # finish\n",
" new_regions.append(new_region.tolist())\n",
"\n",
" return new_regions, np.asarray(new_vertices)\n",
"\n",
"x_size = 60\n",
"y_size = 40\n",
"n_points = 15\n",
"\n",
"min_x = 0\n",
"max_x = x_size\n",
"min_y = 0\n",
"max_y = y_size\n",
"\n",
"points = np.multiply(np.multiply(np.random.random((n_points, 2)), np.array([x_size, 1])), np.array([1, y_size]))\n",
"\n",
"# compute Voronoi tesselation\n",
"vor = Voronoi(points)\n",
"\n",
"# plot\n",
"regions, vertices = voronoi_finite_polygons_2d(vor)\n",
"\n",
"\n",
"mins = np.tile((min_x, min_y), (vertices.shape[0], 1))\n",
"bounded_vertices = np.max((vertices, mins), axis=0)\n",
"maxs = np.tile((max_x, max_y), (vertices.shape[0], 1))\n",
"bounded_vertices = np.min((bounded_vertices, maxs), axis=0)\n",
"\n",
"box = Polygon([[min_x, min_y], [min_x, max_y], [max_x, max_y], [max_x, min_y]])\n",
"\n",
"polys = []\n",
"# colorize\n",
"for region in regions:\n",
" polygon = vertices[region]\n",
" # Clipping polygon\n",
" poly = Polygon(polygon)\n",
" poly = poly.intersection(box)\n",
" polys.append(poly)\n",
" polygon = [(p[0], p[1]) for p in poly.exterior.coords]\n",
" plt.fill(*zip(*polygon), alpha=0.4)\n",
" \n",
"\n",
"for i, p in enumerate(points):\n",
" #plt.plot(points[:, 0], points[:, 1], 'ko')\n",
" plt.plot(p[0], p[1], 'ko')\n",
" plt.annotate(\n",
" i,\n",
" xy=(p[0], p[1]), xytext=(-20, 20),\n",
" textcoords='offset points', ha='right', va='bottom',\n",
" bbox=dict(boxstyle='round,pad=0.5', fc='yellow', alpha=0.5),\n",
" arrowprops=dict(arrowstyle = '->', connectionstyle='arc3,rad=0'))\n",
"plt.axis('equal')\n",
"plt.xlim(min_x, max_x)\n",
"plt.ylim(min_y, max_y)\n",
"\n",
"plt.savefig('voro.png')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from PIL import Image, ImageFont, ImageDraw\n",
"from matplotlib.pyplot import imshow\n",
"from shapely.geometry import LineString\n",
"import random\n",
"\n",
"def random_point(min_x, max_x, min_y, max_y):\n",
" return random.randint(min_x, max_x), random.randint(min_y, max_y)\n",
" \n",
" \n",
"def random_linestring(n, min_x, max_x, min_y, max_y):\n",
" x, y = random_point(min_x, max_x, min_y, max_y)\n",
" ls = [(x, y)]\n",
" for _ in range(n):\n",
" x, y = random_point(x-5, x+5, y-5, y+5)\n",
" ls.append((x, y))\n",
" \n",
" return LineString(ls).buffer(5.0).simplify(5, preserve_topology=False)\n",
"\n",
"def generate_clouds(max_clouds, poly_vertices, min_x, max_x, min_y, max_y):\n",
" n_clouds = random.randint(1, max_clouds)\n",
" clouds = []\n",
" \n",
" for _ in range(n_clouds):\n",
" cld = random_linestring(poly_vertices, min_x, max_x, min_y, max_y)\n",
" if cld.exterior is not None:\n",
" clouds.append(cld)\n",
" \n",
" return clouds\n",
"\n",
"def generate_output(clouds, regions):\n",
" out = np.zeros((len(regions),))\n",
"\n",
" for cloud in clouds:\n",
" for i, region in enumerate(regions):\n",
" if cloud.intersects(region):\n",
" out[i] = 1\n",
" \n",
" return out\n",
"\n",
"def cloud_array(clouds, max_x, max_y):\n",
" im = Image.new('F', (max_x, max_y), (0))\n",
" dr = ImageDraw.Draw(im)\n",
" \n",
" for cloud in clouds:\n",
" dr.polygon(cloud.exterior.coords, fill=\"grey\", outline = \"grey\")\n",
" \n",
" return np.asarray(im)/256."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def create_batch(n):\n",
" cloud_arrays = []\n",
" outputs = []\n",
" for _ in range(n):\n",
" clouds = generate_clouds(4, 4, 0, 60, 0, 40)\n",
" outputs.append(generate_output(clouds, polys))\n",
" cloud_arrays.append(cloud_array(clouds, 60, 40))\n",
" \n",
" return np.swapaxes(np.swapaxes(np.dstack(cloud_arrays), 0, 2), 1, 2), np.vstack(outputs)\n",
"\n",
"def generate_dataset(batches, batch_size):\n",
" for i in range(batches):\n",
" c_arrs, outs = create_batch(batch_size)\n",
" np.save(\"input_batch{0:02d}\".format(i), c_arrs)\n",
" np.save(\"output_batch{0:02d}\".format(i), outs)\n",
" \n",
"generate_dataset(100, 1000)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"463 [ 0. 0. 0. 0. 1. 1. 0. 0. 0. 1. 1. 1. 0. 1. 0.]\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x11079c4e0>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\niEhA/h263Fm5SeB1SQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10635c4e0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"i = random.randint(0, 1000)\n",
"print(i, outs[i])\n",
"imshow(c_arrs[i, :, :], origin='lower')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"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.5"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment