Skip to content

Instantly share code, notes, and snippets.

@MahdiKarimian
Last active March 6, 2020 19:26
Show Gist options
  • Save MahdiKarimian/9b1887099382a5ceba01b6e61f98b5c5 to your computer and use it in GitHub Desktop.
Save MahdiKarimian/9b1887099382a5ceba01b6e61f98b5c5 to your computer and use it in GitHub Desktop.
deconvolution with richardson_lucy
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "deconv_psf.ipynb",
"provenance": [],
"toc_visible": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "code",
"metadata": {
"id": "OLAjH6os9z0X",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 51
},
"outputId": "2dd22abc-627f-4ce6-f260-fbce133598e4"
},
"source": [
"# update url of image !!!\n",
"\n",
"from skimage import color, data, restoration\n",
"import numpy as np\n",
"from skimage import io\n",
"!pip install psf\n",
"\n",
"# update url of image \n",
"url = 'KCf52W4qyftEYY./download'\n",
"\n"
],
"execution_count": 77,
"outputs": [
{
"output_type": "stream",
"text": [
"Requirement already satisfied: psf in /usr/local/lib/python3.6/dist-packages (2020.1.1)\n",
"Requirement already satisfied: numpy>=1.14.5 in /usr/local/lib/python3.6/dist-packages (from psf) (1.17.5)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "GspwvU-zHNkx",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 272
},
"outputId": "3a8370ad-5d11-4722-e999-ec8abbe059df"
},
"source": [
"#making a psf function\n",
"import psf\n",
"args = dict(shape=(32, 32), dims=(1, 1), ex_wavelen=488, em_wavelen=520,\n",
" num_aperture=1.2, refr_index=1.333,pinhole_radius=0.55, pinhole_shape='round')\n",
"obsvol = psf.PSF(psf.GAUSSIAN | psf.CONFOCAL, **args)\n",
"#print(f'{obsvol.sigma.ou[0]:.5f}, {obsvol.sigma.ou[1]:.5f}')\n",
"#print(obsvol, end='') # doctest:+ELLIPSIS\n",
"print(obsvol)\n",
"psf_cam = obsvol[:,:]\n"
],
"execution_count": 69,
"outputs": [
{
"output_type": "stream",
"text": [
"PSF\n",
" Confocal, Gaussian\n",
" shape: (32, 32) pixel\n",
" dimensions: (1.00, 1.00) um, (13.91, 15.45) ou, (2.02, 2.02) au\n",
" excitation wavelength: 488.0 nm\n",
" emission wavelength: 520.0 nm\n",
" numeric aperture: 1.20\n",
" refractive index: 1.33\n",
" half cone angle: 64.19 deg\n",
" magnification: 1.00\n",
" underfilling: 1.00\n",
" pinhole radius: 0.550 um, 8.498 ou, 1.1086 au, 17.60 px\n",
" gauss sigma: (0.186, 0.089) um, (2.588, 1.371) ou, (0.375, 0.179) au, (5.95, 2.84) px\n",
" computing time: 0.81 ms\n",
"\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Wuvax0sLJV62",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 266
},
"outputId": "55183a66-b6ad-447d-d901-edda3bbac31d"
},
"source": [
"#plot psf function\n",
"import matplotlib.pyplot as plt\n",
"plt.figure(0)\n",
"plt.imshow(psf_cam, cmap='Greys')\n",
"plt.show()"
],
"execution_count": 70,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "yeOaZD_tDp3b",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "85acca3e-a983-40bb-d08c-c79582af64eb"
},
"source": [
"#download the file\n",
"\n",
"im = io.imread(url)\n",
"print(im.shape)"
],
"execution_count": 71,
"outputs": [
{
"output_type": "stream",
"text": [
"(6768, 6396)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "yKmgRYNpFjXR",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 269
},
"outputId": "5ce645b7-1a45-4c37-f24d-137cc27b72fc"
},
"source": [
"#Plot main image\n",
"import matplotlib.pyplot as plt\n",
"plt.figure(0)\n",
"plt.imshow(im, cmap='Greys')\n",
"plt.show()"
],
"execution_count": 72,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nwQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "jEy4HQHT-AGl",
"colab_type": "code",
"colab": {}
},
"source": [
"camera = im\n",
"from scipy.signal import convolve2d\n",
"psf_im = psf_cam\n",
"#camera = convolve2d(camera, psf, 'same')\n",
"#camera += 0.1 * camera.std() * np.random.standard_normal(camera.shape)\n",
"deconvolved = restoration.richardson_lucy(camera, psf_im, 5)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "_B1m-1_l-BPp",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 269
},
"outputId": "1f43b972-01bc-4c61-8123-2636318b315f"
},
"source": [
"#Plot\n",
"import matplotlib.pyplot as plt\n",
"plt.figure(0)\n",
"plt.imshow(deconvolved, cmap='Greys')\n",
"plt.show()"
],
"execution_count": 74,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n9v8BMn39gE1aOdoAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ZNjyO9nrGM_P",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "24cf06be-81df-4d3f-ed6a-81920987ad6d"
},
"source": [
"#save in local google\n",
"io.imsave('out.jpg', deconvolved)"
],
"execution_count": 75,
"outputs": [
{
"output_type": "stream",
"text": [
"WARNING:root:Lossy conversion from float64 to uint8. Range [0, 1]. Convert image to uint8 prior to saving to suppress this warning.\n"
],
"name": "stderr"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "9579MPGxNWfw",
"colab_type": "code",
"colab": {}
},
"source": [
"#you can download the output file, here is jpg you can change to tiff\n",
"from google.colab import files\n",
"\n",
"#with open('example.txt', 'w') as f:\n",
"# f.write('some content')\n",
"\n",
"files.download('out.jpg')\n",
"\n"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "YIrsIQTqOZXP",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment