{ "cells": [ { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello jupyter notebook world!\n" ] } ], "source": [ "print 'Hello jupyter notebook world!'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Open and show an image" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "from matplotlib.pyplot import imshow\n", "from skimage import filters, morphology, io, img_as_uint\n", "\n", "image=io.imread('chagas.png')\n", "imshow(image, cmap='gray')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A global manual threshold" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "from matplotlib.pyplot import imshow\n", "from skimage import filters, morphology, io, img_as_uint\n", "\n", "threshold=40\n", "\n", "image=io.imread('chagas.png')\n", "binary=image>threshold\n", "imshow(binary, cmap='gray')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Building the histogram" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n1M3QkCR1+z+/ZtHNc8hJUgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from skimage import filters, morphology, io, img_as_uint\n", "\n", "#get histogram of an image\n", "def getHistogram(gray_im):\n", " h=np.zeros(256, dtype=np.float32)\n", " for i in range(gray_im.shape[0]):\n", " for j in range(gray_im.shape[1]):\n", " h[gray_im[i,j]]+=1.0\n", " return h\n", "\n", "image=io.imread('chagas.png')\n", "h = getHistogram( image )\n", "plt.bar(range(0,256), h)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Computing a threshold value with k-means" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting...\n", "Iteration 0\n", "Cluster 0=12.5910482157\n", "Cluster 1=137.842643805\n", "Threshold=75.2168460105\n", "\n", "Iteration 1\n", "Cluster 0=6.55332885556\n", "Cluster 1=97.9589996837\n", "Threshold=52.2561642696\n", "\n", "Iteration 2\n", "Cluster 0=3.44497658132\n", "Cluster 1=84.383261171\n", "Threshold=43.9141188762\n", "\n", "Iteration 3\n", "Cluster 0=2.5011319162\n", "Cluster 1=79.582025363\n", "Threshold=41.0415786396\n", "\n", "Iteration 4\n", "Cluster 0=2.31609520039\n", "Cluster 1=78.5492366378\n", "Threshold=40.4326659191\n", "\n", "Iteration 5\n", "Cluster 0=2.23310041319\n", "Cluster 1=78.0710247568\n", "Threshold=40.152062585\n", "\n", "Iteration 6\n", "Cluster 0=2.23310041319\n", "Cluster 1=78.0710247568\n", "Threshold=40.152062585\n", "\n", "Iteration 7\n", "Cluster 0=2.23310041319\n", "Cluster 1=78.0710247568\n", "Threshold=40.152062585\n", "\n", "Iteration 8\n", "Cluster 0=2.23310041319\n", "Cluster 1=78.0710247568\n", "Threshold=40.152062585\n", "\n", "Iteration 9\n", "Cluster 0=2.23310041319\n", "Cluster 1=78.0710247568\n", "Threshold=40.152062585\n", "\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from skimage import filters, morphology, io, img_as_uint\n", "\n", "#get histogram of an image\n", "def getHistogram(gray_im):\n", " h=np.zeros(256, dtype=np.float32)\n", " for i in range(gray_im.shape[0]):\n", " for j in range(gray_im.shape[1]):\n", " h[gray_im[i,j]]+=1.0\n", " return h\n", "\n", "#kmeans for k=2\n", "def kmeans(histogram):\n", " print 'Starting...'\n", " k0=0\n", " k1=255\n", " \n", " for it in range(10):\n", " sumk0=0.0\n", " nk0=0\n", " sumk1=0.0\n", " nk1=0\n", " for i in range(256):\n", " if abs(i-k0) < abs(i-k1):\n", " sumk0=sumk0+i*histogram[i]\n", " nk0=nk0+histogram[i]\n", " else:\n", " sumk1=sumk1+i*histogram[i]\n", " nk1=nk1+histogram[i] \n", " \n", " k0=sumk0/nk0\n", " k1=sumk1/nk1\n", " threshold = k0 + (k1-k0)/2\n", " \n", " print 'Iteration %s' % it\n", " print 'Cluster 0=%s' % k0\n", " print 'Cluster 1=%s' % k1\n", " print 'Threshold=%s' % threshold\n", " print ''\n", " return threshold\n", "\n", "image=io.imread('chagas.png')\n", "h = getHistogram( image )\n", "threshold = kmeans(h)\n", "\n", "binary=image>threshold\n", "imshow(binary, cmap='gray')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Iterating over binary objects" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of objects=336\n", "Object 0, area=1720\n", "Object 1, area=3149\n", "Object 2, area=2754\n", "Object 3, area=19\n", "Object 4, area=4186\n", "Object 5, area=42\n", "Object 6, area=200\n", "Object 7, area=41\n", "Object 8, area=18\n", "Object 9, area=2365\n", "Object 10, area=31\n", "Object 11, area=54\n", "Object 12, area=48\n", "Object 13, area=47\n", "Object 14, area=23\n", "Object 15, area=50\n", "Object 16, area=86\n", "Object 17, area=5\n", "Object 18, area=1\n", "Object 19, area=14\n", "Object 20, area=95\n", "Object 21, area=47\n", "Object 22, area=10\n", "Object 23, area=20\n", "Object 24, area=25\n", "Object 25, area=1\n", "Object 26, area=30\n", "Object 27, area=24\n", "Object 28, area=51\n", "Object 29, area=30\n", "Object 30, area=32\n", "Object 31, area=26\n", "Object 32, area=71\n", "Object 33, area=38\n", "Object 34, area=2956\n", "Object 35, area=31\n", "Object 36, area=20\n", "Object 37, area=27\n", "Object 38, area=62\n", "Object 39, area=36\n", "Object 40, area=66\n", "Object 41, area=4919\n", "Object 42, area=29\n", "Object 43, area=50\n", "Object 44, area=56\n", "Object 45, area=55\n", "Object 46, area=25\n", "Object 47, area=20\n", "Object 48, area=27\n", "Object 49, area=116\n", "Object 50, area=1\n", "Object 51, area=34\n", "Object 52, area=32\n", "Object 53, area=21\n", "Object 54, area=16\n", "Object 55, area=25\n", "Object 56, area=29\n", "Object 57, area=35\n", "Object 58, area=68\n", "Object 59, area=23\n", "Object 60, area=3575\n", "Object 61, area=26\n", "Object 62, area=8\n", "Object 63, area=22\n", "Object 64, area=12\n", "Object 65, area=28\n", "Object 66, area=61\n", "Object 67, area=33\n", "Object 68, area=3\n", "Object 69, area=1\n", "Object 70, area=13\n", "Object 71, area=17\n", "Object 72, area=12\n", "Object 73, area=5178\n", "Object 74, area=89\n", "Object 75, area=16\n", "Object 76, area=16\n", "Object 77, area=22\n", "Object 78, area=25\n", "Object 79, area=13\n", "Object 80, area=31\n", "Object 81, area=10\n", "Object 82, area=31\n", "Object 83, area=64\n", "Object 84, area=16\n", "Object 85, area=29\n", "Object 86, area=24\n", "Object 87, area=10\n", "Object 88, area=25\n", "Object 89, area=25\n", "Object 90, area=28\n", "Object 91, area=18\n", "Object 92, area=27\n", "Object 93, area=11\n", "Object 94, area=26\n", "Object 95, area=14\n", "Object 96, area=60\n", "Object 97, area=32\n", "Object 98, area=31\n", "Object 99, area=14\n", "Object 100, area=37\n", "Object 101, area=24\n", "Object 102, area=2960\n", "Object 103, area=3\n", "Object 104, area=5\n", "Object 105, area=20\n", "Object 106, area=63\n", "Object 107, area=28\n", "Object 108, area=37\n", "Object 109, area=25\n", "Object 110, area=31\n", "Object 111, area=13\n", "Object 112, area=29\n", "Object 113, area=25\n", "Object 114, area=26\n", "Object 115, area=26\n", "Object 116, area=53\n", "Object 117, area=24\n", "Object 118, area=53\n", "Object 119, area=6\n", "Object 120, area=39\n", "Object 121, area=1\n", "Object 122, area=24\n", "Object 123, area=22\n", "Object 124, area=27\n", "Object 125, area=13\n", "Object 126, area=13\n", "Object 127, area=22\n", "Object 128, area=20\n", "Object 129, area=97\n", "Object 130, area=6\n", "Object 131, area=19\n", "Object 132, area=22\n", "Object 133, area=31\n", "Object 134, area=19\n", "Object 135, area=35\n", "Object 136, area=18\n", "Object 137, area=31\n", "Object 138, area=29\n", "Object 139, area=27\n", "Object 140, area=28\n", "Object 141, area=52\n", "Object 142, area=34\n", "Object 143, area=57\n", "Object 144, area=15\n", "Object 145, area=28\n", "Object 146, area=24\n", "Object 147, area=29\n", "Object 148, area=10\n", "Object 149, area=28\n", "Object 150, area=47\n", "Object 151, area=27\n", "Object 152, area=36\n", "Object 153, area=57\n", "Object 154, area=28\n", "Object 155, area=32\n", "Object 156, area=61\n", "Object 157, area=24\n", "Object 158, area=25\n", "Object 159, area=27\n", "Object 160, area=30\n", "Object 161, area=23\n", "Object 162, area=52\n", "Object 163, area=28\n", "Object 164, area=29\n", "Object 165, area=52\n", "Object 166, area=25\n", "Object 167, area=14\n", "Object 168, area=30\n", "Object 169, area=30\n", "Object 170, area=62\n", "Object 171, area=27\n", "Object 172, area=61\n", "Object 173, area=70\n", "Object 174, area=21\n", "Object 175, area=28\n", "Object 176, area=20\n", "Object 177, area=11\n", "Object 178, area=9\n", "Object 179, area=26\n", "Object 180, area=25\n", "Object 181, area=10\n", "Object 182, area=17\n", "Object 183, area=30\n", "Object 184, area=32\n", "Object 185, area=9\n", "Object 186, area=59\n", "Object 187, area=1754\n", "Object 188, area=15\n", "Object 189, area=3\n", "Object 190, area=2792\n", "Object 191, area=64\n", "Object 192, area=10\n", "Object 193, area=5\n", "Object 194, area=20\n", "Object 195, area=14\n", "Object 196, area=62\n", "Object 197, area=26\n", "Object 198, area=32\n", "Object 199, area=1\n", "Object 200, area=59\n", "Object 201, area=29\n", "Object 202, area=29\n", "Object 203, area=13\n", "Object 204, area=16\n", "Object 205, area=44\n", "Object 206, area=64\n", "Object 207, area=29\n", "Object 208, area=30\n", "Object 209, area=9\n", "Object 210, area=27\n", "Object 211, area=14\n", "Object 212, area=51\n", "Object 213, area=66\n", "Object 214, area=21\n", "Object 215, area=6\n", "Object 216, area=57\n", "Object 217, area=14\n", "Object 218, area=3\n", "Object 219, area=29\n", "Object 220, area=7\n", "Object 221, area=9\n", "Object 222, area=11\n", "Object 223, area=1\n", "Object 224, area=2\n", "Object 225, area=2832\n", "Object 226, area=24\n", "Object 227, area=24\n", "Object 228, area=48\n", "Object 229, area=32\n", "Object 230, area=10\n", "Object 231, area=63\n", "Object 232, area=29\n", "Object 233, area=37\n", "Object 234, area=22\n", "Object 235, area=15\n", "Object 236, area=29\n", "Object 237, area=40\n", "Object 238, area=15\n", "Object 239, area=70\n", "Object 240, area=64\n", "Object 241, area=59\n", "Object 242, area=27\n", "Object 243, area=1\n", "Object 244, area=26\n", "Object 245, area=29\n", "Object 246, area=26\n", "Object 247, area=1\n", "Object 248, area=15\n", "Object 249, area=26\n", "Object 250, area=1126\n", "Object 251, area=48\n", "Object 252, area=30\n", "Object 253, area=40\n", "Object 254, area=49\n", "Object 255, area=2\n", "Object 256, area=23\n", "Object 257, area=25\n", "Object 258, area=24\n", "Object 259, area=58\n", "Object 260, area=24\n", "Object 261, area=103\n", "Object 262, area=54\n", "Object 263, area=21\n", "Object 264, area=22\n", "Object 265, area=50\n", "Object 266, area=145\n", "Object 267, area=107\n", "Object 268, area=29\n", "Object 269, area=3\n", "Object 270, area=28\n", "Object 271, area=57\n", "Object 272, area=23\n", "Object 273, area=57\n", "Object 274, area=105\n", "Object 275, area=1326\n", "Object 276, area=58\n", "Object 277, area=19\n", "Object 278, area=4198\n", "Object 279, area=54\n", "Object 280, area=20\n", "Object 281, area=12\n", "Object 282, area=57\n", "Object 283, area=1\n", "Object 284, area=20\n", "Object 285, area=22\n", "Object 286, area=3460\n", "Object 287, area=1\n", "Object 288, area=80\n", "Object 289, area=4\n", "Object 290, area=73\n", "Object 291, area=31\n", "Object 292, area=8\n", "Object 293, area=6\n", "Object 294, area=2395\n", "Object 295, area=2\n", "Object 296, area=4\n", "Object 297, area=395\n", "Object 298, area=27\n", "Object 299, area=116\n", "Object 300, area=5289\n", "Object 301, area=21\n", "Object 302, area=5\n", "Object 303, area=3\n", "Object 304, area=18\n", "Object 305, area=187\n", "Object 306, area=17896\n", "Object 307, area=1\n", "Object 308, area=5\n", "Object 309, area=25\n", "Object 310, area=4984\n", "Object 311, area=70\n", "Object 312, area=12\n", "Object 313, area=4\n", "Object 314, area=1\n", "Object 315, area=4\n", "Object 316, area=22\n", "Object 317, area=16\n", "Object 318, area=1013\n", "Object 319, area=2\n", "Object 320, area=6\n", "Object 321, area=3693\n", "Object 322, area=42\n", "Object 323, area=7\n", "Object 324, area=27\n", "Object 325, area=24\n", "Object 326, area=10\n", "Object 327, area=44\n", "Object 328, area=3909\n", "Object 329, area=3\n", "Object 330, area=41\n", "Object 331, area=3752\n", "Object 332, area=2174\n", "Object 333, area=4070\n", "Object 334, area=3027\n", "Object 335, area=2\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nooTk/wG2GhbX+Hm11gAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from skimage import filters, morphology, io, measure\n", "\n", "#get histogram of an image\n", "def getHistogram(gray_im):\n", " h=np.zeros(256, dtype=np.float32)\n", " for i in range(gray_im.shape[0]):\n", " for j in range(gray_im.shape[1]):\n", " h[gray_im[i,j]]+=1.0\n", " return h\n", "\n", "#kmeans for k=2\n", "def kmeans(histogram):\n", " k0=0\n", " k1=255\n", " \n", " for it in range(10):\n", " sumk0=0.0\n", " nk0=0\n", " sumk1=0.0\n", " nk1=0\n", " for i in range(256):\n", " if abs(i-k0) < abs(i-k1):\n", " sumk0=sumk0+i*histogram[i]\n", " nk0=nk0+histogram[i]\n", " else:\n", " sumk1=sumk1+i*histogram[i]\n", " nk1=nk1+histogram[i] \n", " \n", " k0=sumk0/nk0\n", " k1=sumk1/nk1\n", " threshold = k0 + (k1-k0)/2\n", "\n", " return threshold\n", "\n", "image=io.imread('chagas.png')\n", "h = getHistogram( image )\n", "threshold = kmeans(h)\n", "\n", "binary=image>threshold\n", "all_labels = measure.label(binary, background=0)\n", "properties = measure.regionprops(all_labels)\n", "print 'Number of objects=%s' % len(properties)\n", "for i in range(0,len(properties)):\n", " print 'Object %s, area=%s' % (i, properties[i].area)\n", "\n", "imshow(all_labels, cmap='rainbow')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For each object compute PCA, and the eccentricity index using moments" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of objects=336\n", "0: area=1720 eccentricity=0.824600198325\n", "1: area=3149 eccentricity=0.493662930356\n", "2: area=2754 eccentricity=0.376583919941\n", "3: area=19 eccentricity=0.783213747562\n", "4: area=4186 eccentricity=0.723706102015\n", "5: area=42 eccentricity=0.825672562482\n", "6: area=200 eccentricity=0.900787372426\n", "7: area=41 eccentricity=0.818946187195\n", "8: area=18 eccentricity=0.920194375891\n", "9: area=2365 eccentricity=0.860713734489\n", "10: area=31 eccentricity=0.873052832566\n", "11: area=54 eccentricity=0.853846606123\n", "12: area=48 eccentricity=0.870361079631\n", "13: area=47 eccentricity=0.706603522251\n", "14: area=23 eccentricity=0.93348375908\n", "15: area=50 eccentricity=0.868449300791\n", "16: area=86 eccentricity=0.864629203786\n", "17: area=5 eccentricity=0.816496580928\n", "18: area=1 eccentricity=nan\n", "19: area=14 eccentricity=0.678393698847\n", "20: area=95 eccentricity=0.757869151641\n", "21: area=47 eccentricity=0.812374050784\n", "22: area=10 eccentricity=0.790569415042\n", "23: area=20 eccentricity=0.863426282784\n", "24: area=25 eccentricity=0.799088431863\n", "25: area=1 eccentricity=nan\n", "26: area=30 eccentricity=0.7047559674\n", "27: area=24 eccentricity=0.787148412936\n", "28: area=51 eccentricity=0.848306268026\n", "29: area=30 eccentricity=0.679084334133\n", "30: area=32 eccentricity=0.724220595979\n", "31: area=26 eccentricity=0.702080336097\n", "32: area=71 eccentricity=0.697097883821\n", "33: area=38 eccentricity=0.821855474638\n", "34: area=2956 eccentricity=0.662155155899\n", "35: area=31 eccentricity=0.883937530403\n", "36: area=20 eccentricity=0.888362552225\n", "37: area=27 eccentricity=0.88788124729\n", "38: area=62 eccentricity=0.655788262781\n", "39: area=36 eccentricity=0.793631366737\n", "40: area=66 eccentricity=0.831691533797\n", "41: area=4919 eccentricity=0.552405161365\n", "42: area=29 eccentricity=0.905456395325\n", "43: area=50 eccentricity=0.804025387188\n", "44: area=56 eccentricity=0.839943608728\n", "45: area=55 eccentricity=0.834181016378\n", "46: area=25 eccentricity=0.870411576337\n", "47: area=20 eccentricity=0.76409520216\n", "48: area=27 eccentricity=0.886063978609\n", "49: area=116 eccentricity=0.932873723169\n", "50: area=1 eccentricity=nan\n", "51: area=34 eccentricity=0.819107018653\n", "52: area=32 eccentricity=0.889925050638\n", "53: area=21 eccentricity=0.917746325181\n", "54: area=16 eccentricity=0.711763956319\n", "55: area=25 eccentricity=0.790730294219\n", "56: area=29 eccentricity=0.925205792366\n", "57: area=35 eccentricity=0.913276606841\n", "58: area=68 eccentricity=0.734352108028\n", "59: area=23 eccentricity=0.915881492686\n", "60: area=3575 eccentricity=0.765060572225\n", "61: area=26 eccentricity=0.923908422305\n", "62: area=8 eccentricity=0.884338494501\n", "63: area=22 eccentricity=0.870919600219\n", "64: area=12 eccentricity=0.780268252957\n", "65: area=28 eccentricity=0.853126449624\n", "66: area=61 eccentricity=0.864108471949\n", "67: area=33 eccentricity=0.81994323167\n", "68: area=3 eccentricity=0.816496580928\n", "69: area=1 eccentricity=nan\n", "70: area=13 eccentricity=0.523556754447\n", "71: area=17 eccentricity=0.67798375594\n", "72: area=12 eccentricity=0.823017312977\n", "73: area=5178 eccentricity=0.590384551971\n", "74: area=89 eccentricity=0.875146729388\n", "75: area=16 eccentricity=0.820908252262\n", "76: area=16 eccentricity=0.700207434243\n", "77: area=22 eccentricity=0.845214667005\n", "78: area=25 eccentricity=0.8749665395\n", "79: area=13 eccentricity=0.523556754447\n", "80: area=31 eccentricity=0.838035886741\n", "81: area=10 eccentricity=0.681072405752\n", "82: area=31 eccentricity=0.570424246078\n", "83: area=64 eccentricity=0.921969899331\n", "84: area=16 eccentricity=0.700207434243\n", "85: area=29 eccentricity=0.764796083246\n", "86: area=24 eccentricity=0.901679799008\n", "87: area=10 eccentricity=0.892356990343\n", "88: area=25 eccentricity=0.920437563457\n", "89: area=25 eccentricity=0.927396825108\n", "90: area=28 eccentricity=0.848295081857\n", "91: area=18 eccentricity=0.771690104885\n", "92: area=27 eccentricity=0.367745664933\n", "93: area=11 eccentricity=0.636862940981\n", "94: area=26 eccentricity=0.927558376293\n", "95: area=14 eccentricity=0.74667200462\n", "96: area=60 eccentricity=0.80910301999\n", "97: area=32 eccentricity=0.856150294385\n", "98: area=31 eccentricity=0.736777811645\n", "99: area=14 eccentricity=0.629288982059\n", "100: area=37 eccentricity=0.885498860003\n", "101: area=24 eccentricity=0.774198918036\n", "102: area=2960 eccentricity=0.459992779403\n", "103: area=3 eccentricity=0.816496580928\n", "104: area=5 eccentricity=0.816496580928\n", "105: area=20 eccentricity=0.721446411764\n", "106: area=63 eccentricity=0.807376868152\n", "107: area=28 eccentricity=0.917856373775\n", "108: area=37 eccentricity=0.731961273893\n", "109: area=25 eccentricity=0.762748156033\n", "110: area=31 eccentricity=0.805277833594\n", "111: area=13 eccentricity=0.508139715903\n", "112: area=29 eccentricity=0.813001071877\n", "113: area=25 eccentricity=0.680442520724\n", "114: area=26 eccentricity=0.855386621786\n", "115: area=26 eccentricity=0.836029836389\n", "116: area=53 eccentricity=0.625839007813\n", "117: area=24 eccentricity=0.820377395696\n", "118: area=53 eccentricity=0.899757272541\n", "119: area=6 eccentricity=0.912870929175\n", "120: area=39 eccentricity=0.721745257154\n", "121: area=1 eccentricity=nan\n", "122: area=24 eccentricity=0.820074844736\n", "123: area=22 eccentricity=0.949953432426\n", "124: area=27 eccentricity=0.805442548321\n", "125: area=13 eccentricity=0.508139715903\n", "126: area=13 eccentricity=0.523556754447\n", "127: area=22 eccentricity=0.884413177029\n", "128: area=20 eccentricity=0.887519589848\n", "129: area=97 eccentricity=0.90985439849\n", "130: area=6 eccentricity=0.487950036474\n", "131: area=19 eccentricity=0.702684006208\n", "132: area=22 eccentricity=0.88112344958\n", "133: area=31 eccentricity=0.848456616782\n", "134: area=19 eccentricity=0.871495196903\n", "135: area=35 eccentricity=0.750235396796\n", "136: area=18 eccentricity=0.823180414772\n", "137: area=31 eccentricity=0.833145163382\n", "138: area=29 eccentricity=0.915490149044\n", "139: area=27 eccentricity=0.917534663578\n", "140: area=28 eccentricity=0.633983786954\n", "141: area=52 eccentricity=0.808256261107\n", "142: area=34 eccentricity=0.889880917426\n", "143: area=57 eccentricity=0.769576338457\n", "144: area=15 eccentricity=0.713179531251\n", "145: area=28 eccentricity=0.775174529926\n", "146: area=24 eccentricity=0.828902661566\n", "147: area=29 eccentricity=0.71655924623\n", "148: area=10 eccentricity=0.683130051064\n", "149: area=28 eccentricity=0.896997044188\n", "150: area=47 eccentricity=0.854748899358\n", "151: area=27 eccentricity=0.906010371851\n", "152: area=36 eccentricity=0.781774120295\n", "153: area=57 eccentricity=0.809988993813\n", "154: area=28 eccentricity=0.619264249929\n", "155: area=32 eccentricity=0.802491163849\n", "156: area=61 eccentricity=0.63412944225\n", "157: area=24 eccentricity=0.816496580928\n", "158: area=25 eccentricity=0.856348544751\n", "159: area=27 eccentricity=0.781908325701\n", "160: area=30 eccentricity=0.72719591739\n", "161: area=23 eccentricity=0.841414019347\n", "162: area=52 eccentricity=0.892158422059\n", "163: area=28 eccentricity=0.838718068155\n", "164: area=29 eccentricity=0.824559766749\n", "165: area=52 eccentricity=0.837262969803\n", "166: area=25 eccentricity=0.927411813824\n", "167: area=14 eccentricity=0.816539963138\n", "168: area=30 eccentricity=0.831065494832\n", "169: area=30 eccentricity=0.629283328033\n", "170: area=62 eccentricity=0.837751372482\n", "171: area=27 eccentricity=0.936159884368\n", "172: area=61 eccentricity=0.535176553861\n", "173: area=70 eccentricity=0.908468369853\n", "174: area=21 eccentricity=0.927803649996\n", "175: area=28 eccentricity=0.868282576498\n", "176: area=20 eccentricity=0.89794207489\n", "177: area=11 eccentricity=0.819334278607\n", "178: area=9 eccentricity=0.694587520362\n", "179: area=26 eccentricity=0.867667067763\n", "180: area=25 eccentricity=0.543971310172\n", "181: area=10 eccentricity=0.790569415042\n", "182: area=17 eccentricity=0.875726735504\n", "183: area=30 eccentricity=0.815830165943\n", "184: area=32 eccentricity=0.628974436002\n", "185: area=9 eccentricity=0.860662965824\n", "186: area=59 eccentricity=0.86077715973\n", "187: area=1754 eccentricity=0.525162281157\n", "188: area=15 eccentricity=0.971554207735\n", "189: area=3 eccentricity=0.816496580928\n", "190: area=2792 eccentricity=0.804288063147\n", "191: area=64 eccentricity=0.772075272731\n", "192: area=10 eccentricity=0.816920735282\n", "193: area=5 eccentricity=0.816496580928\n", "194: area=20 eccentricity=0.674948557711\n", "195: area=14 eccentricity=0.816539963138\n", "196: area=62 eccentricity=0.742979100998\n", "197: area=26 eccentricity=0.902164055666\n", "198: area=32 eccentricity=0.852580770931\n", "199: area=1 eccentricity=nan\n", "200: area=59 eccentricity=0.745273359068\n", "201: area=29 eccentricity=0.805229569078\n", "202: area=29 eccentricity=0.810845009532\n", "203: area=13 eccentricity=0.784101278417\n", "204: area=16 eccentricity=0.875232124444\n", "205: area=44 eccentricity=0.873195065868\n", "206: area=64 eccentricity=0.83293493254\n", "207: area=29 eccentricity=0.661277941483\n", "208: area=30 eccentricity=0.862262828092\n", "209: area=9 eccentricity=0.694587520362\n", "210: area=27 eccentricity=0.870873992152\n", "211: area=14 eccentricity=0.775066799697\n", "212: area=51 eccentricity=0.824334074443\n", "213: area=66 eccentricity=0.777285101955\n", "214: area=21 eccentricity=0.709660993689\n", "215: area=6 eccentricity=0.790569415042\n", "216: area=57 eccentricity=0.837392661213\n", "217: area=14 eccentricity=0.735978028342\n", "218: area=3 eccentricity=0.816496580928\n", "219: area=29 eccentricity=0.742140068621\n", "220: area=7 eccentricity=0.816496580928\n", "221: area=9 eccentricity=0.561211150653\n", "222: area=11 eccentricity=0.636862940981\n", "223: area=1 eccentricity=nan\n", "224: area=2 eccentricity=1.0\n", "225: area=2832 eccentricity=0.746555859607\n", "226: area=24 eccentricity=0.592406111844\n", "227: area=24 eccentricity=0.57773869439\n", "228: area=48 eccentricity=0.746310111735\n", "229: area=32 eccentricity=0.770476866342\n", "230: area=10 eccentricity=0.800471412378\n", "231: area=63 eccentricity=0.887718602733\n", "232: area=29 eccentricity=0.807518771992\n", "233: area=37 eccentricity=0.909290461185\n", "234: area=22 eccentricity=0.40459864888\n", "235: area=15 eccentricity=0.880512491955\n", "236: area=29 eccentricity=0.766022059587\n", "237: area=40 eccentricity=0.738306284493\n", "238: area=15 eccentricity=0.767944305937\n", "239: area=70 eccentricity=0.757445357821\n", "240: area=64 eccentricity=0.808333541641\n", "241: area=59 eccentricity=0.831486215624\n", "242: area=27 eccentricity=0.877802521766\n", "243: area=1 eccentricity=nan\n", "244: area=26 eccentricity=0.922824116207\n", "245: area=29 eccentricity=0.850141963375\n", "246: area=26 eccentricity=0.807048951869\n", "247: area=1 eccentricity=nan\n", "248: area=15 eccentricity=0.489897948557\n", "249: area=26 eccentricity=0.7856947786\n", "250: area=1126 eccentricity=0.683112082357\n", "251: area=48 eccentricity=0.846697250757\n", "252: area=30 eccentricity=0.752391714506\n", "253: area=40 eccentricity=0.753922693809\n", "254: area=49 eccentricity=0.808689820022\n", "255: area=2 eccentricity=1.0\n", "256: area=23 eccentricity=0.878706193156\n", "257: area=25 eccentricity=0.834975578029\n", "258: area=24 eccentricity=0.704696330496\n", "259: area=58 eccentricity=0.829356466179\n", "260: area=24 eccentricity=0.830869411034\n", "261: area=103 eccentricity=0.91976649956\n", "262: area=54 eccentricity=0.730966534638\n", "263: area=21 eccentricity=0.921422574523\n", "264: area=22 eccentricity=0.828887313468\n", "265: area=50 eccentricity=0.872351305187\n", "266: area=145 eccentricity=0.884438073835\n", "267: area=107 eccentricity=0.868722422209\n", "268: area=29 eccentricity=0.37124417453\n", "269: area=3 eccentricity=0.816496580928\n", "270: area=28 eccentricity=0.875057638268\n", "271: area=57 eccentricity=0.921094890082\n", "272: area=23 eccentricity=0.701422710859\n", "273: area=57 eccentricity=0.877692944349\n", "274: area=105 eccentricity=0.845227079089\n", "275: area=1326 eccentricity=0.815902013992\n", "276: area=58 eccentricity=0.830591194853\n", "277: area=19 eccentricity=0.804279937549\n", "278: area=4198 eccentricity=0.449295481348\n", "279: area=54 eccentricity=0.765207497463\n", "280: area=20 eccentricity=0.97550493413\n", "281: area=12 eccentricity=0.590703089185\n", "282: area=57 eccentricity=0.821841632014\n", "283: area=1 eccentricity=nan\n", "284: area=20 eccentricity=0.910392808725\n", "285: area=22 eccentricity=0.873231311903\n", "286: area=3460 eccentricity=0.624328549245\n", "287: area=1 eccentricity=nan\n", "288: area=80 eccentricity=0.661879235469\n", "289: area=4 eccentricity=0.92417637183\n", "290: area=73 eccentricity=0.67649538929\n", "291: area=31 eccentricity=0.885101690167\n", "292: area=8 eccentricity=0.769755659939\n", "293: area=6 eccentricity=0.954041222792\n", "294: area=2395 eccentricity=0.56805627552\n", "295: area=2 eccentricity=1.0\n", "296: area=4 eccentricity=0.912870929175\n", "297: area=395 eccentricity=0.973569551665\n", "298: area=27 eccentricity=0.821717367596\n", "299: area=116 eccentricity=0.710628088407\n", "300: area=5289 eccentricity=0.609974958267\n", "301: area=21 eccentricity=0.84102210574\n", "302: area=5 eccentricity=0.816496580928\n", "303: area=3 eccentricity=0.816496580928\n", "304: area=18 eccentricity=0.837413446236\n", "305: area=187 eccentricity=0.869522420307\n", "306: area=17896 eccentricity=0.912282344169\n", "307: area=1 eccentricity=nan\n", "308: area=5 eccentricity=0.816496580928\n", "309: area=25 eccentricity=0.67721565938\n", "310: area=4984 eccentricity=0.635394575141\n", "311: area=70 eccentricity=0.94552378186\n", "312: area=12 eccentricity=0.830507193147\n", "313: area=4 eccentricity=0.912870929175\n", "314: area=1 eccentricity=nan\n", "315: area=4 eccentricity=0.0\n", "316: area=22 eccentricity=0.428259399823\n", "317: area=16 eccentricity=0.648159537281\n", "318: area=1013 eccentricity=0.817848255265\n", "319: area=2 eccentricity=1.0\n", "320: area=6 eccentricity=0.674199862463\n", "321: area=3693 eccentricity=0.653103312656\n", "322: area=42 eccentricity=0.80994248969\n", "323: area=7 eccentricity=0.877008386377\n", "324: area=27 eccentricity=0.713552646437\n", "325: area=24 eccentricity=0.787502796407\n", "326: area=10 eccentricity=0.874474632195\n", "327: area=44 eccentricity=0.536975620613\n", "328: area=3909 eccentricity=0.693538469649\n", "329: area=3 eccentricity=0.816496580928\n", "330: area=41 eccentricity=0.810488539417\n", "331: area=3752 eccentricity=0.528434595711\n", "332: area=2174 eccentricity=0.741430137137\n", "333: area=4070 eccentricity=0.685599132924\n", "334: area=3027 eccentricity=0.8622007677\n", "335: area=2 eccentricity=1.0\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python2.7/dist-packages/ipykernel_launcher.py:73: RuntimeWarning: invalid value encountered in double_scalars\n" ] } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from skimage import filters, morphology, io, measure\n", "from scipy.spatial import Voronoi, voronoi_plot_2d\n", "\n", "#get histogram of an image\n", "def getHistogram(gray_im):\n", " h=np.zeros(256, dtype=np.float32)\n", " for i in range(gray_im.shape[0]):\n", " for j in range(gray_im.shape[1]):\n", " h[gray_im[i,j]]+=1.0\n", " return h\n", "\n", "#kmeans for k=2\n", "def kmeans(histogram):\n", " k0=0\n", " k1=255\n", " \n", " for it in range(10):\n", " sumk0=0.0\n", " nk0=0\n", " sumk1=0.0\n", " nk1=0\n", " for i in range(256):\n", " if abs(i-k0) < abs(i-k1):\n", " sumk0=sumk0+i*histogram[i]\n", " nk0=nk0+histogram[i]\n", " else:\n", " sumk1=sumk1+i*histogram[i]\n", " nk1=nk1+histogram[i] \n", " \n", " k0=sumk0/nk0\n", " k1=sumk1/nk1\n", " threshold = k0 + (k1-k0)/2\n", "\n", " return threshold\n", "\n", "def getmoments(x,y):\n", " meanx=np.mean(x)\n", " meany=np.mean(y)\n", " mu00=len(x)\n", " mu10=sum(x-meanx)\n", " mu01=sum(y-meany)\n", " mu11=sum((x-meanx)*(y-meany))\n", " mu20=sum((x-meanx)**2)\n", " mu02=sum((y-meany)**2)\n", " \n", " return mu00, mu10, mu01, mu11, mu20, mu02\n", " \n", "image=io.imread('chagas.png')\n", "h = getHistogram( image )\n", "threshold = kmeans(h)\n", "\n", "binary=image > threshold\n", "all_labels = measure.label(binary, background=0)\n", "properties = measure.regionprops(all_labels)\n", "print 'Number of objects=%s' % len(properties)\n", "\n", "centers=np.zeros((len(properties),2), 'float')\n", "\n", "for i in range(0,len(properties)):\n", " coords = properties[i].coords\n", " mu00, mu10, mu01, mu11, mu20, mu02 =getmoments(coords[:,1], coords[:,0])\n", " covxx=mu20/mu00\n", " covyy=mu02/mu00\n", " covxy=mu11/mu00\n", " \n", " tr=covxx+covyy\n", " arg=(covxx-covyy)**2 + 4*covxy**2\n", " eigenvalue1=0.5*(tr+np.sqrt(arg))\n", " eigenvalue2=0.5*(tr-np.sqrt(arg))\n", " \n", " eccentricity=np.sqrt(1-eigenvalue2/eigenvalue1)\n", " centers[i,0]=(properties[i].centroid)[0]\n", " centers[i,1]=(properties[i].centroid)[1]\n", "\n", " print '%s: area=%s eccentricity=%s' % (i, mu00, eccentricity)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.12" } }, "nbformat": 4, "nbformat_minor": 2 }