Skip to content

Instantly share code, notes, and snippets.

@fomightez
Created October 3, 2023 15:49
Show Gist options
  • Save fomightez/3ec0088f96fb1fab340fdd24657d6f9e to your computer and use it in GitHub Desktop.
Save fomightez/3ec0088f96fb1fab340fdd24657d6f9e to your computer and use it in GitHub Desktop.
Working IPywidgets Image Processing notebook - 'Fixed' version of notebook presently in ipywidgets repo at docs/source/examples/Image%2520Processing.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Image Manipulation with skimage\n",
"\n",
"(The [original source of this](https://github.com/jupyter-widgets/ipywidgets/blob/6f6156c7e2421f437614b0649a5a3f37c3b4a3ec/docs/source/examples/Image%20Processing.ipynb) was under `docs/source/examples` at main ipywidgets repo presently. I fixed it to work in full JupyterLab with a few noted edits herein.)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This example builds a simple UI for performing basic image manipulation with [scikit-image](http://scikit-image.org/)."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": [
"remove-cell"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Note: you may need to restart the kernel to use updated packages.\n"
]
}
],
"source": [
"# Imports for JupyterLite\n",
"%pip install -q ipywidgets scikit-learn numpy matplotlib scikit-image"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"(Added `scikit-image` to above list of installs beyond what [original notebook](https://github.com/jupyter-widgets/ipywidgets/blob/6f6156c7e2421f437614b0649a5a3f37c3b4a3ec/docs/source/examples/Image%20Processing.ipynb) had, based on https://stackoverflow.com/a/46380661/8508004.)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Stdlib imports\n",
"from io import BytesIO\n",
"\n",
"# Third-party libraries\n",
"from IPython.display import Image\n",
"from ipywidgets import interact, interactive, fixed\n",
"import matplotlib as mpl\n",
"from skimage import data, filters, io, img_as_float\n",
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's load an image from scikit-image's collection, stored in the `data` module. These come back as regular numpy arrays:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(400, 600, 3)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"i = img_as_float(data.coffee())\n",
"i.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's make a little utility function for displaying Numpy arrays with the IPython display protocol:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt # added to source notebook (https://github.com/jupyter-widgets/ipywidgets/blob/6f6156c7e2421f437614b0649a5a3f37c3b4a3ec/docs/source/examples/Image%20Processing.ipynb), based on https://stackoverflow.com/a/66771428/8508004\n",
"def arr2img(arr):\n",
" \"\"\"Display a 2- or 3-d numpy array as an image.\"\"\"\n",
" if arr.ndim == 2:\n",
" format, cmap = 'png', mpl.cm.gray\n",
" elif arr.ndim == 3:\n",
" format, cmap = 'jpg', None\n",
" else:\n",
" raise ValueError(\"Only 2- or 3-d arrays can be displayed as images.\")\n",
" # Don't let matplotlib autoscale the color range so we can control overall luminosity\n",
" vmax = 255 if arr.dtype == 'uint8' else 1.0\n",
" with BytesIO() as buffer:\n",
" mpl.image.imsave(buffer, arr, format=format, cmap=cmap, vmin=0, vmax=vmax)\n",
" out = buffer.getvalue()\n",
" return Image(out)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/jpeg": "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",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"arr2img(i)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, let's create a simple \"image editor\" function, that allows us to blur the image or change its color balance:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def edit_image(image, sigma=0.1, R=1.0, G=1.0, B=1.0):\n",
" new_image = filters.gaussian(image, sigma=sigma, channel_axis=-1)\n",
" new_image[:,:,0] = R*new_image[:,:,0]\n",
" new_image[:,:,1] = G*new_image[:,:,1]\n",
" new_image[:,:,2] = B*new_image[:,:,2]\n",
" return arr2img(new_image)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can call this function manually and get a new image. For example, let's do a little blurring and remove all the red from the image:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/jpeg": "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",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"edit_image(i, sigma=5, R=0.1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"But it's a lot easier to explore what this function does by controlling each parameter interactively and getting immediate visual feedback. IPython's `ipywidgets` package lets us do that with a minimal amount of code:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "5270e46823e14c0f841cd7dbaf1a7ac4",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(FloatSlider(value=0.1, description='sigma', max=10.0), FloatSlider(value=1.0, descriptio…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"lims = (0.0,1.0,0.01)\n",
"interact(edit_image, image=fixed(i), sigma=(0.0,10.0,0.1), R=lims, G=lims, B=lims);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Browsing the scikit-image gallery, and editing grayscale and jpg images\n",
"\n",
"The coffee cup isn't the only image that ships with scikit-image, the `data` module has others. Let's make a quick interactive explorer for this:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "447df1aa21cc461baaa6a220ca9a75b8",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(Dropdown(description='name', options=('astronaut', 'binary_blobs', 'brain', 'brick', 'ca…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def choose_img(name):\n",
" # Let's store the result in the global `img` that we can then use in our image editor below\n",
" global img\n",
" img = getattr(data, name)()\n",
" return arr2img(img)\n",
"\n",
"# Skip 'load' and 'lena', two functions that don't actually return images\n",
"interact(choose_img, name=sorted(set(data.__all__)-{'lena', 'load'}));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And now, let's update our editor to cope correctly with grayscale and color images, since some images in the scikit-image collection are grayscale. For these, we ignore the red (R) and blue (B) channels, and treat 'G' as 'Grayscale':"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "5c456702502a4316919bd58b1a6d5c32",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(FloatSlider(value=5.0, description='sigma', max=10.0), FloatSlider(value=0.5, descriptio…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"lims = (0.0, 1.0, 0.01)\n",
"\n",
"def edit_image(image, sigma, R, G, B):\n",
" new_image = filters.gaussian(image, sigma=sigma, channel_axis=-1)\n",
" if new_image.ndim == 3:\n",
" new_image[:,:,0] = R*new_image[:,:,0]\n",
" new_image[:,:,1] = G*new_image[:,:,1]\n",
" new_image[:,:,2] = B*new_image[:,:,2]\n",
" else:\n",
" new_image = G*new_image\n",
" return arr2img(new_image)\n",
"\n",
"interact(edit_image, image=fixed(img), sigma=(0.0, 10.0, 0.1), \n",
" R=lims, G=lims, B=lims);"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.10.10"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment