Skip to content

Instantly share code, notes, and snippets.

@guiwitz
Last active July 25, 2022 10:00
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guiwitz/bbea1ca941b68e9973bc51b7ad36bc84 to your computer and use it in GitHub Desktop.
Save guiwitz/bbea1ca941b68e9973bc51b7ad36bc84 to your computer and use it in GitHub Desktop.
split_object_superpixels.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "split_object_superpixels.ipynb",
"provenance": [],
"collapsed_sections": [],
"toc_visible": true,
"authorship_tag": "ABX9TyPl3iqxLlXDpmWESZVuPNVY",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/guiwitz/bbea1ca941b68e9973bc51b7ad36bc84/split_object_superpixels.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "QrFhexOEymIX"
},
"source": [
"import skimage\n",
"from skimage.draw import ellipse\n",
"import skimage.segmentation\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"import matplotlib\n",
"cmap = matplotlib.colors.ListedColormap(np.random.rand(256,3))"
],
"execution_count": 1,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "Eoof1btXB7Pa"
},
"source": [
"## Create fake image"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 268
},
"id": "ENk_rkFm-aMY",
"outputId": "1ff1d25c-8148-45cc-de78-96975013e53b"
},
"source": [
"img = np.zeros((100, 100), dtype=np.uint8)\n",
"rr, cc = ellipse(50, 50, 30, 15, rotation=np.deg2rad(30))\n",
"img[rr, cc] = 1\n",
"plt.imshow(img);"
],
"execution_count": 2,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "uruXXX3CB-B9"
},
"source": [
"## Estimate grid size\n",
"\n",
"Measure the object area and estimate how many points are needed to split the object. We want here 40 superpixels."
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "HJBpR5N3CILv",
"outputId": "72f5c01c-0ba7-4312-9ec3-38fe0893fa15"
},
"source": [
"super_pixels = 40\n",
"area = np.sum(img)\n",
"super_pixel_len = np.round(np.sqrt(area / super_pixels))\n",
"print(f'estimated size of superpixel square: {super_pixel_len}')"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"estimated size of superpixel square: 6.0\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "bjR-00BlC2lk"
},
"source": [
"## Create a grid to generate the superpixels\n",
"\n",
"Create a grid of regularly speaced coordinates. Set those at the right spacing (super pixel size) to ```True```:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "l2xX-hJwAY7P"
},
"source": [
"xx, yy = np.meshgrid(np.arange(0,img.shape[0],1), np.arange(0,img.shape[1],1))\n",
"seeds = (xx % super_pixel_len == 0) * (yy % super_pixel_len == 0)\n",
"seeds = skimage.morphology.label(seeds)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "Te6JbS1kDV2m"
},
"source": [
"These are the seed points to create the superpixels:"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 593
},
"id": "DZMyT1DIBAOy",
"outputId": "1a3736ca-f6c5-4554-97d8-83d32248197f"
},
"source": [
"plt.figure(figsize=(10,10))\n",
"plt.imshow(seeds, cmap=cmap);"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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Wu/5v/6cyWPH1xkTJy3pzgAAi2X64JyYPW9u74+cLtaPyNdafxsRU3sObb8kiwEAjBafGA0ApKQEAQApKUEAQEpKEACQkhIEAKSkBAEAKSlBAEBKShAAkJISBACkpAQBACkpQQBASkoQAJCSEgQApKQEAQApKUEAQEpKEACQkhIEAKSkBAEAKSlBAEBKShAAkJISBACkpAQBACkpQQBASkoQAJCSEgQApDTQctic+SvFbn/eeaHs/FW+23KFOHf9d3eyPW/4YLP5+81ZrTc/ZdJdzXY497hPdrI9D3trs/kREftMObmTnTlr/1Gd33qH455xZCc77PfHNJs/4akTe/P7rx5stsN3tnhqb77L5Vc322H+w7/sZANjnt1s/q1vWas3X+tTtzbb4Yyj9u5krzn6rGbzIyKeuOPsTnbvBZObzf/ONZv35rts8ttR3aHl/IiI5z/tjZ3sp1ed2mz+RXte2ptve+7UEZnnShAAkJISBACkpAQBACkpQQBASqXW2mzY5LHj64yJk5rNAwBymz44J2bPm1v6jrkSBACkpAQBACkpQQBASkoQAJCSEgQApKQEAQApKUEAQEpKEACQkhIEAKSkBAEAKSlBAEBKShAAkJISBACkpAQBACkpQQBASkoQAJCSEgQApKQEAQApKUEAQEpKEACQkhIEAKSkBAEAKSlBAEBKShAAkJISBACkpAQBACkpQQBASgMth9276apxzk/3XSjba9LpLVeIuy7+fCdbbdprm82f/qKLe/MZ357WbId137hbJ7v51PObzY+I2GbsnzvZJfNWaTb/46/9aW/+9s8/f1R3aDn/Kau9ujf/w11faLbDIRdf35t/dNqGzXb44rpv62SvuvkTzebvNW313vyci+9otsP1X+9+H97wJfv2PHPkbLzmVp3s2tt+1Wz+Kzb5ZG/+5WveOqo7tJwfEfGGHf/ayU674PHN5j/3gAN785+fdOKIzHMlCABISQkCAFJSggCAlJQgACClUmttNmzy2PF1xsRJzeYBALlNH5wTs+fNLX3HXAkCAFJSggCAlJQgACAlJQgASEkJAgBSUoIAgJSUIAAgJSUIAEhJCQIAUlKCAICUlCAAICUlCABISQkCAFJSggCAlJQgACAlJQgASEkJAgBSUoIAgJSUIAAgJSUIAEhJCQIAUlKCAICUlCAAICUlCABISQkCAFJSggCAlAZaDpu75oMx69BrF8qmHL1xyxXiV8dt1Mm2Ouy6ZvNX3e4lvfndF3692Q7TL9+7k83Y4qxm8yMiTtrj/k52wDcmNJt/3emf6c032vdNo7pDy/kXzH9zb77jwKeb7fD+n7+9N3/Pcz/ebIfnvPnDnewXn35Xs/k3b/ju3nzd6z/YbId5czfrZGPH/67Z/IiI//r2md3sRfs0m//4N7+yN//rp7/UbIc/fPWSTvaUl27TbP7SsMN3Prd5b77L6347IvNcCQIAUlKCAICUlCAAICUlCABISQkCAFIqtdZmwyaPHV9nTJzUbB4AkNv0wTkxe97c0nfMlSAAICUlCABISQkCAFJarBJUSjmolHJVKeXKUspZpZQVSikblFJmllLmlFLOLqWMG+llAQCGyyJLUCll7Yh4R0RMrbVuGhFjIuIVEXFcRJxQa50UEfdGxBtGclEAgOG0uG+HDUTE+FLKQESsGBG3RcQLIuLcoeOnR8Qew78eAMDIWGQJqrX+KSI+EhE3xYLyc19EXBYRg7XW+UNPuyUi1h6pJQEAhtvivB32xIjYPSI2iIi1ImJCROy0uANKKfuVUi4tpVx63yMP/8uLAgAMp8V5O2yHiPhjrfWuWuu8iPhaREyLiIlDb49FRKwTEX/q++Ja6ym11qm11qkrLTdmWJYGAFhSi1OCboqIbUopK5ZSSkRsHxGzIuInEbHn0HP2jYjzRmZFAIDhtzj3BM2MBTdA/yYirhj6mlMi4rCIOLiUMiciVomI00ZwTwCAYTWw6KdE1FqPioij/ld8fURsNewbAQA04BOjAYCUlCAAICUlCABISQkCAFJSggCAlJQgACAlJQgASEkJAgBSUoIAgJSUIAAgJSUIAEhJCQIAUlKCAICUlCAAIKWBlsNuWeGROHzTvyyUHXvlE1quEB947q2d7Iifr9Vs/qu/85Le/Au7fL3ZDu/Y9Y+d7GPf2qDZ/IiIKSut2slm3Xd3s/nP3Pbfe/PLLvp+sx1mffYbnWzK6/cY1fmtdzj2ff1/7w9/b/95MhJ+88uLOtmWz9622fyPHPLs3vydH/1lsx0+MO6CTnbEQzs2mx8R8bx9H+pkPzt9XLP5a5x/Q29++27rN9vhP9/+t0723x9/XLP5S8MO6511Rm9+096vGZF5rgQBACkpQQBASkoQAJCSEgQApFRqrc2GTR47vs6YOKnZPAAgt+mDc2L2vLml75grQQBASkoQAJCSEgQApKQEAQApKUEAQEpKEACQkhIEAKSkBAEAKSlBAEBKShAAkJISBACkpAQBACkpQQBASkoQAJCSEgQApKQEAQApKUEAQEpKEACQkhIEAKSkBAEAKSlBAEBKShAAkJISBACkpAQBACkpQQBASkoQAJCSEgQApDTQctj9yz0Qv3rC1QtlW/3lqS1XiFs/dUknW+st2zSb/673T+jNP/ye+5vt8M0HrulkL15hk2bzIyKumPGSTvb06V9vNv/gmf39//itH2m2w7XrrtfJNr75plGd33qHlz80vzc/e1y7b01HTrmvkx0za6Vm8wem/K43nz9rs2Y7vPzc8Z3s7D3nNpsfETH7W93vCZN3bfc94cJfHd6bb7fVsc12+MC/z+tkR3x/bLP5ERE/XmPlTvaC2+8Z1fkjuYMrQQBASkoQAJCSEgQApKQEAQAplVprs2GTx46vMyZOajYPAMht+uCcmD1vbuk75koQAJCSEgQApKQEAQApKUEAQEpKEACQkhIEAKSkBAEAKSlBAEBKShAAkJISBACkpAQBACkpQQBASkoQAJCSEgQApKQEAQApKUEAQEpKEACQkhIEAKSkBAEAKSlBAEBKShAAkJISBACkpAQBACkpQQBASkoQAJCSEgQApDTQctgDG60W153xpoWyjXb+TMsV4j/vf28n++8J72s2f9UHr+/N715+w2Y7/NuUGZ3sJ7OmN5sfEXHTNT/sZOttskOz+XMPvLI3H3/ips12uOb+yzvZJhO2aDZ/8pz/6M1nT/paqh22OuE5nexXB/2i2fztnvDb3vzCv2zebIcxp7yikz2835ebzY+IuHzw1k62xcS1ms3f+oXL9+Yzf/Bgsx12eHr3//MfXtF9bUbUJ2d3s7dOHt35I7iDK0EAQEpKEACQkhIEAKSkBAEAKSlBAEBKpdbabNjksePrjImTms0DAHKbPjgnZs+bW/qOuRIEAKSkBAEAKSlBAEBKShAAkJISBACkpAQBACkpQQBASkoQAJCSEgQApKQEAQApKUEAQEpKEACQkhIEAKSkBAEAKSlBAEBKpdbablgpd0XEjUMPV42Iu5sNZ0l5vZY9XrNlj9ds2eL1WjY8uda6Wt+BpiVoocGlXFprnToqw/mneb2WPV6zZY/XbNni9Vr2eTsMAEhJCQIAUhrNEnTKKM7mn+f1WvZ4zZY9XrNli9drGTdq9wQBAIwmb4cBACk1L0GllJ1KKdeWUuaUUg5vPZ9FK6WsW0r5SSllVinlqlLKAUP5yqWUH5RSrhv69YmjvSv/UEoZU0q5vJTyraHHG5RSZg6da2eXUsaN9o78QyllYinl3FLKNaWUq0spz3aOLd1KKQcNfU+8spRyVillBefZsq1pCSqljImIT0TEzhExJSL2LqVMabkDi2V+RBxSa50SEdtExNuGXqfDI+JHtdaNIuJHQ49ZehwQEVc/6vFxEXFCrXVSRNwbEW8Yla14LCdFxPdqrdlEwZkAAALWSURBVJtExGax4LVzji2lSilrR8Q7ImJqrXXTiBgTEa8I59kyrfWVoK0iYk6t9fpa60MR8eWI2L3xDixCrfW2Wutvhn7/11jwzXntWPBanT70tNMjYo/R2ZD/rZSyTkS8KCJOHXpcIuIFEXHu0FO8XkuRUspKEbFdRJwWEVFrfajWOhjOsaXdQESML6UMRMSKEXFbOM+Waa1L0NoRcfOjHt8ylLGUKqWsHxFbRMTMiFi91nrb0KHbI2L1UVqLrhMj4tCIeGTo8SoRMVhrnT/02Lm2dNkgIu6KiM8NvYV5aillQjjHllq11j9FxEci4qZYUH7ui4jLwnm2THNjNI+plPK4iPhqRBxYa/3Lo4/VBT9W6EcLlwKllF0j4s5a62WjvQuLbSAitoyIk2utW0TE/fG/3vpyji1dhu7P2j0WFNi1ImJCROw0qkuxxFqXoD9FxLqPerzOUMZSppQyNhYUoC/WWr82FN9RSllz6PiaEXHnaO3HQqZFxG6llBtiwVvML4gF95tMHLpsH+FcW9rcEhG31FpnDj0+NxaUIufY0muHiPhjrfWuWuu8iPhaLDj3nGfLsNYl6NcRsdHQ3fTjYsFNZec33oFFGLqf5LSIuLrWevyjDp0fEfsO/X7fiDiv9W501VrfXWtdp9a6fiw4p35ca31VRPwkIvYceprXaylSa709Im4upWw8FG0fEbPCObY0uykitimlrDj0PfL/v2bOs2VY8w9LLKXsEgvuXxgTEZ+ttb6/6QIsUill24j4eURcEf+4x+SIWHBf0DkRsV5E3BgRe9Va7xmVJelVSnl+RLyz1rprKWXDWHBlaOWIuDwiXl1rfXA09+MfSimbx4Ib2cdFxPUR8bpY8C+mzrGlVCnl6Ih4eSz4CdrLI+KNseAeIOfZMsonRgMAKbkxGgBISQkCAFJSggCAlJQgACAlJQgASEkJAgBSUoIAgJSUIAAgpf8HNQok9Yaiu8wAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 720x720 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5ZqGSWSADh_A"
},
"source": [
"## Split the area using watershed\n",
"Now we split the area using those seeds and the watershed algorithm. The ```compactness``` sets how regular the superpixels should be."
]
},
{
"cell_type": "code",
"metadata": {
"id": "VbWLEM-9-goN"
},
"source": [
"im_water = skimage.segmentation.watershed(img, markers=seeds, mask=img>0)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 593
},
"id": "Skkr339vAJXV",
"outputId": "fd722726-378c-4817-a72c-5c985b1c83e9"
},
"source": [
"plt.figure(figsize=(10,10))\n",
"plt.imshow(im_water, cmap=cmap);"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x720 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8TMag1wGETBK"
},
"source": [
"## Check how many objects were actually generated"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "q4OPtT49EPbp",
"outputId": "b8461384-2bdb-4078-f8e6-35fbcdc89cef"
},
"source": [
"len(np.unique(im_water))-1"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"37"
]
},
"metadata": {
"tags": []
},
"execution_count": 83
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "yFqK5CB-fBGy"
},
"source": [
"## Using slic\n",
"\n",
"To use the mask option with ```skimage.segmentation.slic``` you need to upgrade the scikit-image version on Colab:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "qO_4YDplhXUb"
},
"source": [
"!pip install scikit-image==0.18.*"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "hJkn2Oz6hNIg"
},
"source": [
"from skimage import segmentation\n",
"\n",
"m_slic = segmentation.slic(img, n_segments=40, mask=img>0, start_label=1)"
],
"execution_count": 3,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 446
},
"id": "Gii5AlUQhYqH",
"outputId": "ff320559-9e26-44ad-bddc-6e6b4cc1bd5c"
},
"source": [
"fig, ax = plt.subplots(1, 2, figsize=(12,6))\n",
"ax[0].imshow(img)\n",
"ax[1].imshow(m_slic, cmap=cmap);\n",
"plt.tight_layout()"
],
"execution_count": 4,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x432 with 2 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "6U8SLD-whaYY",
"outputId": "3d917c76-3222-4014-e6ed-c00a322a7106"
},
"source": [
"len(np.unique(m_slic))-1"
],
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"40"
]
},
"metadata": {
"tags": []
},
"execution_count": 5
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "iKDtUH7Vhc2Y"
},
"source": [
""
],
"execution_count": null,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment