Skip to content

Instantly share code, notes, and snippets.

@nebw
Created September 30, 2015 14:05
Show Gist options
  • Save nebw/d422c5ac6bb42a774dd6 to your computer and use it in GitHub Desktop.
Save nebw/d422c5ac6bb42a774dd6 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import random\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"from colormath.color_objects import LabColor, XYZColor, sRGBColor\n",
"from colormath.color_conversions import convert_color\n",
"from colormath.color_diff import delta_e_cie2000\n",
"\n",
"from tsp_solver.greedy import solve_tsp\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"colours_length = 1000\n",
"colours = []\n",
"\n",
"for i in range(colours_length):\n",
" colours.append (\n",
" [\n",
" random.random(),\n",
" random.random(),\n",
" random.random()\n",
" ]\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def plot_colours(colours):\n",
" height = 50\n",
"\n",
" im = np.zeros((height, len(colours), 3))\n",
"\n",
" for idx, col in enumerate(colours):\n",
" im[:, idx, :] = col\n",
"\n",
" fig, axes = plt.subplots(1, figsize=(16, 12))\n",
" axes.imshow(im, interpolation='nearest')\n",
" axes.axis('off')\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nHYtZT89387Gz1iiab9lD5g8v0zS6KZ3O/c7G1TfZ3LsivyWtJPfIP6h38Dk3oxrRfW4rFm6IYuia\nCnxWcSgvv5JA5TRH+aXfEW5/XpTj+y5zcVk1Xqq4hJQG/elQci3vr3iDYhPX0GFgCg2K72HmTxeY\nfWk6ZdLe4uaz40SHD2f+5vLEZezKtqon+fG/FShbLR0R4YMpkXM5Iz8eyYAVrZk4qzBFzl4jsexI\nEtaOpcuuJNYfaEZUmW/4ssYpdlYqwbI2nWhVpAh//SOJjY/6kz3by2R+83u6lWzLsYJ/U7ZKEil5\n6tN1dQJ/DVnPz5d6k9BnHSsbNaB27H729mxOu3fb0CnfWf4u+IThUQN4a/UHbM3TlcgvGtLrcmWW\nDnvKlHpNeNR9B19vWkzD2Krsm3iHV+vmIX2HhzQscp9Z1dqRfuBiuh44wYyYU9wvvY5dIfm5l3kn\nD84NZWznELY32M6pi9s5fqQAk0YModyhzYQ/XET3iFy8XrMpo662YtuPX9Kq4H/J+P0EwtePpung\naXSqXoQpqbWY/F0uBnzTgaJDxxMzoTuvhdakQWxpDv51gOer+lD8r95MWXKXIT1TaDDtTfbVr8Oi\nmC5U/2Y708Zt4WR4GB/sfZ9RC2Yx7XlBSjYZzdctcjFjegR9thSndZOmTP+uNEUTs1Or1UtUTghl\nQfX1lEpXikw9SlH4p1iKrknio/Nj6fX8FPt/uM53n42ha+ZdfBl2i+hj3VnVdyR12v3E063XiKnb\nie+/WUCzV7Kz+73epJt5kaoDFvH1rA/IFrGQ0cVLsGZyd84f/pXWk8cy9OkJKv2SlQFfbSXk8TFq\nVMvLW1XWMeeDl7hQtDN7s3amULNnrJkZzZQtvbm6MJGQcjM4UKI2SyoXJTGyJ3ubfU9yzwdkn/8b\n6cr+wMZuH/LgSUkikwtQcnQv3vu0G6XLLuTOrb6cTvMxF85O5WGJITzvtJpCCf3pljGJuIL1+XDk\nOpo+68IHGWfyZN7FNP8b/ehyKkmSJEkKnHEqSZIkSQqccSpJkiRJCpxxKkmSJEkKnHEqSZIkSQqc\ncSpJkiRJCpxxKkmSJEkKnHEqSZIkSQqccSpJkiRJCpxxKkmSJEkKnHEqSZIkSQqccSpJkiRJCpxx\nKkmSJEkKnHEqSZIkSQqccSpJkiRJCpxxKkmSJEkKnHEqSZIkSQqccSpJkiRJCpxxKkmSJEkKnHEq\nSZIkSQqccSpJkiRJCpxxKkmSJEkKnHEqSZIkSQqccSpJkiRJCpxxKkmSJEkKnHEqSZIkSQqccSpJ\nkiRJCpxxKkmSJEkKnHEqSZIkSQqccSpJkiRJCpxxKkmSJEkKnHEqSZIkSQqccSpJkiRJCpxxKkmS\nJEkKnHEqSZIkSQqccSpJkiRJCpxxKkmSJEkKnHEqSZIkSQqccSpJkiRJCpxxKkmSJEkKnHEqSZIk\nSQqccSpJkiRJCpxxKkmSJEkKnHEqSZIkSQpcmhcvXgT9gyRJkiTp/zmXU0mSJElS4IxTSZIkSVLg\njFNJkiRJUuCMU0mSJElS4IxTSZIkSVLgjFNJkiRJUuCMU0mSJElS4IxTSZIkSVLgjFNJkiRJUuCM\nU0mSJElS4IxTSZIkSVLgjFNJkiRJUuCMU0mSJElS4IxTSZIkSVLgjFNJkiRJUuCMU0mSJElS4IxT\nSZIkSVLgjFNJkiRJUuCMU0mSJElS4IxTSZIkSVLg/getC0Hg9tloGwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fed1fef5208>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_colours(colours)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"cie_colours = []\n",
"\n",
"for i in range(colours_length):\n",
" rgb = sRGBColor(*colours[i])\n",
" xyz = convert_color(rgb, XYZColor)\n",
" lab = convert_color(xyz, LabColor)\n",
" cie_colours.append(lab)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"D = np.zeros((colours_length, colours_length))\n",
"\n",
"for i in range(colours_length):\n",
" for j in range(0, i):\n",
" delta_e = delta_e_cie2000(cie_colours[i], cie_colours[j])\n",
" D[i, j] = delta_e\n",
" D[j, i] = delta_e"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"path = solve_tsp(D)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"sorted_colours = []\n",
"\n",
"for i in range(colours_length):\n",
" sorted_colours.append(colours[path[i]])"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nJNTjNWFnSV58zXVxz81uSVzccz4eMmz2DJIRo2xEuQ5YLF4TlXvu1luu8w3r15cc6oxFs+eiCOjN\nTpkvvmQ26fDmmxfB/0Y/upxKkiRJklpnnEqSJEmSWmecSpIkSZJaZ5xKkiRJklpnnEqSJEmSWmec\nSpIkSZJaZ5xKkiRJklpnnEqSJEmSWmecSpIkSZJaZ5xKkiRJklpnnEqSJEmSWmecSpIkSZJaZ5xK\nkiRJklpnnEqSJEmSWmecSpIkSZJaZ5xKkiRJklpnnEqSJEmSWmecSpIkSZJaZ5xKkiRJklpnnEqS\nJEmSWmecSpIkSZJaZ5xKkiRJklpnnEqSJEmSWmecSpIkSZJaZ5xKkiRJklpnnEqSJEmSWmecSpIk\nSZJaZ5xKkiRJklpnnEqSJEmSWmecSpIkSZJaZ5xKkiRJklpnnEqSJEmSWmecSpIkSZJaZ5xKkiRJ\nklpnnEqSJEmSWmecSpIkSZJaZ5xKkiRJklpnnEqSJEmSWmecSpIkSZJaZ5xKkiRJklpnnEqSJEmS\nWmecSpIkSZJaZ5xKkiRJklpnnEqSJEmSWhc0TdP2D5IkSZKk/+dcTiVJkiRJrTNOJUmSJEmtM04l\nSZIkSa0zTiVJkiRJrTNOJUmSJEmtM04lSZIkSa0zTiVJkiRJrTNOJUmSJEmtM04lSZIkSa0zTiVJ\nkiRJrTNOJUmSJEmtM04lSZIkSa0zTiVJkiRJrTNOJUmSJEmtM04lSZIkSa0zTiVJkiRJrTNOJUmS\nJEmtM04lSZIkSa0zTiVJkiRJrTNOJUmSJEmt+x/vQifgHUC02AAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fed1f914128>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_colours(sorted_colours)"
]
}
],
"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