{ "metadata": { "name": "skimage_morphology" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": "Morphological Techniques using NumPy and Scikit-image" }, { "cell_type": "raw", "metadata": {}, "source": "\"scikit-image(http://scikit-image.org/) is a collection of algorithms for image processing. It is available free of charge and free of restriction. We pride ourselves on high-quality, peer-reviewed code, written by an active community of volunteers.\"\n\nThis document is aimed to serve as a supplement the already existing documentation. It is aimed at people new to open software development and more specifically, to IP using scikit-image and numpy. This document explains the various basic functions found in scikit-image library using Morphological techniques and illustrates each by showing the results on an image followed by some comments to provide an intuitive understanding of the techniques.\n\nYou can check out the documentaion for individual modules using the help feature in python or '?' in ipython or directly browse through the files to see module specific information. \n\nAdditional Resources :\n\n1. http://scikit-image.org/docs/dev/ is the official site for documentation regarding the latest version. And of course google always to the rescue. \n2. http://www.mathworks.in/help/images/morphology-fundamentals-dilation-and-erosion.html#f18-14379 - provides a nice understanding of the most basic operations involved in morphological processing, i.e. erosion and dilation.\n\nThis tutorial was developed using iPython Notebook. For best viewing experience install iPython, download the .ipynb file and view it as a notebook." }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Importing the necessary modules" }, { "cell_type": "code", "collapsed": false, "input": "# We will be looking at the following techniques to begin with\nfrom skimage.morphology import erosion, dilation, opening, closing, white_tophat, black_tophat, skeletonize, convex_hull, convex_hull_image\n\n# Importing 'square' and 'disk' modules for creating BINARY structuring elements\nfrom skimage.morphology import square as sq\nfrom skimage.morphology import disk\n\n# Skimage supports NumPy data types and takes in images as type 'ndarray'. matplotlib.pyplot is a python library for providing MATLAB-like functionality, hence the same function names. E.g: imshow\nimport matplotlib.pyplot as plt\nimport numpy as np\n\n# Importing the '_io' module for reading, writing and showing images. Note thatin skimage, all files having the same name as the folder have been renamed with an '_'. Hence '_io'\nimport skimage.io._io as io\nfrom skimage.data import load\nfrom skimage.util import img_as_ubyte", "language": "python", "metadata": {}, "outputs": [], "prompt_number": 89 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "Importing images" }, { "cell_type": "markdown", "metadata": {}, "source": "There are essentially 2 ways for importing images for use with skimage. They are as follows :\n\n1. Using the plt.imread() to read the images as a *numpy.ndarray* data type\n2. Using the skimage modules like 'imread', 'imshow' etc provided under the '/skimage/io/_io.py'\n\nNote that plt.imread() will read the image, a grey-scale image as a 3D array, whereas with io.imread() there is a parameter 'as_grey=True' for reading it as a 2D array and using 'img_as_ubyte()', can be converted to type : *numpy.ndarray* with *uint8* element. This is the input array for the morphological functions.\n\nThe following checks should be made for running the morphological functions :\n\nImage :\n\n1. Type : numpy.ndarray\n2. Data type : uint8\n3. 2D\n\nStructuring Element :\n\n1. Type : Binary or boolean" }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": "1. Importing & displaying using plt.imread() and plt.imshow()" }, { "cell_type": "code", "collapsed": false, "input": "i_f = plt.imread('/Users/chintak/Repositories/scikit-image/skimage/data/bw_text.png')\n# Type : numpy.ndarray, dtype : float32, dimensions : 3\n#type(i_f)\n#i_f\n#ndim(i_f)\n# Slicing\ni_f2 = i_f[:,:,0]\n# To convert to uint8 data type\ni = img_as_ubyte(i_f2)\n\n# To display this image\nplt.imshow(i, cmap=plt.cm.gray) # For showing gray-scale images\n#ndim(i)\nplt.show()", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "skimage.dtype_converter: WARNING: Possible precision loss when converting from float32 to uint8\n" }, { "output_type": "display_data", "png": "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\nRK5CYII=\n" } ], "prompt_number": 90 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": "2. Importing & displaying using io.imread() and io.imshow()" }, { "cell_type": "code", "collapsed": false, "input": "phantom = img_as_ubyte(io.imread('/Users/chintak/Repositories/scikit-image/skimage/data/phantom.png', as_grey=True))\n# 'as_grey=True' ensures that the image is taken as a 2D rather than a 3D array with equal R,G,B values for a point\nio.imshow(phantom)\nplt.show()", "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": "skimage.dtype_converter: WARNING: Possible precision loss when converting from float64 to uint8\n" }, { "output_type": "display_data", "png": "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\nAElFTkSuQmCC\n" } ], "prompt_number": 91 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "EROSION" }, { "cell_type": "raw", "metadata": {}, "source": "Usage : erosion(image, selem, out=None, shift_x=False, shift_y=False)\n\nReturn greyscale morphological erosion of an image.\n\nMorphological erosion sets a pixel at (i,j) to the **minimum over all pixels\nin the neighborhood centered at (i,j)**. Erosion shrinks bright regions and\nenlarges dark regions.\n\nParameters\n----------\nimage : ndarray\n Image array.\nselem : ndarray\n The neighborhood expressed as a 2-D array of 1's and 0's.\nout : ndarray\n The array to store the result of the morphology. If None is\n passed, a new array will be allocated.\nshift_x, shift_y : bool\n shift structuring element about center point. This only affects\n eccentric structuring elements (i.e. selem with even numbered sides).\n\nReturns\n-------\neroded : uint8 array\n The result of the morphological erosion.\n" }, { "cell_type": "code", "collapsed": false, "input": "# We will be working with phantom.png for this function.\n# First defining the structuring element as a disk using disk()\n#selem = disk(3);\nselem = disk(6);\n#selem = disk(10);\neroded = erosion(phantom, selem)\n\n# Displaying the original and eroded image \n# 'plt.figure() can be used for showing multiple images together\nplt.figure(1) \nio.imshow(phantom)\nplt.figure(2)\nio.imshow(eroded)\nplt.show()", "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nAElFTkSuQmCC\n" }, { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 92 }, { "cell_type": "markdown", "metadata": {}, "source": "**Comments** : \n\nSee how the white boundary of the image disappers or gets eroded as we increse the size of the disk. \nAlso notice the increase in size of the two black ellipses in the center and the disappearance of the 3-4 light grey patches in the lower part of the image." }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "DILATION" }, { "cell_type": "raw", "metadata": {}, "source": "Documentation :\n\nDefinition: dilation(image, selem, out=None, shift_x=False, shift_y=False)\nDocstring:\nReturn greyscale morphological dilation of an image.\n\nMorphological dilation sets a pixel at (i,j) to the **maximum over all pixels\nin the neighborhood centered at (i,j)**. Dilation enlarges bright regions\nand shrinks dark regions.\n\nParameters\n----------\n\nimage : ndarray\n Image array.\nselem : ndarray\n The neighborhood expressed as a 2-D array of 1's and 0's.\nout : ndarray\n The array to store the result of the morphology. If None, is\n passed, a new array will be allocated.\nshift_x, shift_y : bool\n shift structuring element about center point. This only affects\n eccentric structuring elements (i.e. selem with even numbered sides).\n\nReturns\n-------\ndilated : uint8 array\n The result of the morphological dilation.\n" }, { "cell_type": "code", "collapsed": false, "input": "# We will be working with phantom.png to show difference between erosion and dilation.\n# First defining the structuring element as a disk using disk()\n#selem = disk(3);\nselem = disk(6);\n#selem = disk(10);\ndilate = dilation(phantom, selem)\n\n# Displaying the original and eroded image \n# 'plt.figure() can be used for showing multiple images together\nplt.figure(1) \nio.imshow(phantom)\nplt.figure(2)\nio.imshow(dilate)\nplt.show()", "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nAElFTkSuQmCC\n" }, { "output_type": "display_data", "png": "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\nAABJRU5ErkJggg==\n" } ], "prompt_number": 93 }, { "cell_type": "markdown", "metadata": {}, "source": "**Comments** : \n\nSee how the white boundary of the image thickens or gets dialted as we increse the size of the disk. \nAlso notice the decrease in size of the two black ellipses in the centre, with the thickening of the light grey circle in the center and the 3-4 patches in the lower part of the image." }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "OPENING" }, { "cell_type": "raw", "metadata": {}, "source": "Documentation :\n\nDefinition: opening(image, selem, out=None)\nDocstring:\nReturn greyscale morphological opening of an image.\n\nThe morphological opening on an image is defined as an **erosion followed by\na dilation**. Opening can remove small bright spots (i.e. \"salt\") and connect\nsmall dark cracks. This tends to \"open\" up (dark) gaps between (bright)\nfeatures.\n\nParameters\n----------\nimage : ndarray\n Image array.\nselem : ndarray\n The neighborhood expressed as a 2-D array of 1's and 0's.\nout : ndarray\n The array to store the result of the morphology. If None\n is passed, a new array will be allocated.\n\nReturns\n-------\nopening : uint8 array\n The result of the morphological opening.\n" }, { "cell_type": "code", "collapsed": false, "input": "# We will be working with phantom.png for this function.\n# First defining the structuring element as a disk using disk()\n#selem = disk(3);\nselem = disk(6);\n#selem = disk(10);\nopened = opening(phantom, selem)\n\n# Displaying the original and eroded image \n# 'plt.figure() can be used for showing multiple images together\nplt.figure(1) \nio.imshow(phantom)\nplt.figure(2)\nio.imshow(opened)\nplt.show()", "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nAElFTkSuQmCC\n" }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAQwAAAD5CAYAAADSpAuNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFeVJREFUeJzt3VtoFNcfB/DvmiYBLw22YdeQNaxGaI1ms+t6iYKithQq\nVTcIJRHTraZQJD7UBNO+CGkVjRRJa0AKtmKwpKWUVkMxLZTWa4W0aVSIghX3IcZNasRgonhJcv4P\n/rNN4l5md2dm58x8P2/GZM+cnXO+c2Z2dn42IYQAEZECU9K9AUQkDwYGESnGwCAixRgYRKQYA4OI\nFHtB7wZtNpveTRLR/6X6oShXGESkGAODiBRjYBCRYgwMIlKMgUFEijEwiEgxBgYRKcbAICLFdL9x\ni+Q1+aYf3oRnPQwMApDcHYBK/oahYi4MDAvS85lJkdpiiMiLgWEBRnuoGk9t5MXAMDGjBUU0Y9vJ\n4DA+BoYJyRIUkzE4jI+BYSKyBsVkDA7jYmBIzufz4a+//tK8ncWLF0f8uZZtjwXH4sWL0dHRoVk7\npJxN7zIDPGqow+fzAVBnwkYLA7WouY0MjtSkOt25wpDQWFgkS+uAiNdeKgHi8/kYGmnEwJCIbEER\nzdh2JBscY+8Dg0N/DAxJJBsWRgmJSMZvWzLhwdWG/ngNQwJKwmL8hDNySCiRaF8YGsqlOt0ZGAaW\n6imI1TA44uNTw02KYZE4vmfaY2AYEAd+8vjeaSvpUxKXy4UXX3wRGRkZyMzMRHt7OwYHB1FZWYmb\nN2+isLAQx48fx/Tp0yc2yFOSmDjg1cHTk8jSdg1jzpw56OjowEsvvRT+WV1dHXJzc1FXV4cDBw7g\n3r17aGhomNggAyMiBoU2GBwTpfUaxuTGW1tbEQgEAACBQAAnTpxI5eUtg2GhHb636ko6MGw2G9au\nXQuv14sjR44AAPr6+uBwOAAADocDfX196myliXFAa4/vsXqSvnHrwoULyMvLw7Vr17Bu3Tq8+uqr\nE/7fZrPx9CMODmT98CYvdSS9wsjLywMAzJ8/H2VlZWhvb4fD4UBvby8AIBQKwW63q7OVJsSw0B/f\n89QlFRgPHz7E4OAgAODOnTs4deoUiouLsWHDBjQ3NwMAmpub4ff71dtSE+HATR++96lJ6lOSYDCI\nsrIyAMDLL7+Mt99+G++//z4/VlWAA9YYrHp6wlvDJcKwMBYrhgZvDSci3XCFoQOuLIzNSisNrjAM\njmFhfNxHyjEwiEgxBoaGeOSSB/eVMgwMjXAAyof7LD4GBhEpxsDQAI9U8uK+i42BoTIOOPlxH0bH\nwFARB5p5cF9GxsAgIsV4p6dKzHpEGnuMQTyhUEjjLUkPs90FytqqpDqlIRHtb8waHsQVhirMsrpI\nJihiMUtwmGmVwe+SkCrUDgutXpPSiyuMFMm+utBrUsu+2jDLKoMrjDRiWBizLS3Ivq/VwsCwqHRM\nYNlDgxgYSZP5iJPOiStzaMi8z9USMzC2bdsGh8OB4uLi8M8GBwfh9/vhdrtRVlaGoaGh8P8dOnQI\nbrcbixYtwvnz57XbakqaESasEbaBkhMzMLZu3Yqff/55ws/27NmDFStW4MqVKygtLcXevXsBAFev\nXsXRo0fR0dGBH374Ae+++y5GR0e12/I0kvVIY6SJaqRtSYSs+14tMQNj5cqVmDlz5oSfRaufevLk\nSVRUVCAzMxMulwvz5s1De3u7RptNROmQ8DWMaPVTb9++DafTGf49p9OJnp4elTbTOGQ9whjxiG7E\nbVJC1jGghpQuesarn8p7LozByBPTyNsWi6xjIVUJB0a0+qn5+fno7u4O/96tW7eQn5+v0mYSkREk\nHBjR6qdu2LAB3377LZ48eYJgMIh//vkHS5cuVXdrKWEyHMFl2EZ6Jua3VSsqKnDmzBncvXsXs2fP\nxieffILdu3ejsrISbrc7XD8VAIqKirB161b4fD688MILOHbsmKlOSay6BKXofD6faW4ZV4rfJVFI\n1sCQ5egt63dNZAsMfpdEBwwL7cm0rePJOjaSxcAgIsUYGESkGAMjDqstOSlxVhojDAyTkvGagIzb\nbDUMDCJSjE8NjyGdS81IH9dZaekrG6vck8HAMJhYg278/8UKD5mX9nl5edLek2EFPCWJwuhHcysc\nzWRj9DGjBgaGQXR0dCQcAgwN0hsDwwBSmfjJBA1RshgYEci4tGRoGIOMYycRDIw0U3OiMzRIawwM\nk2FokJYYGCbEjyVJKwyMScxwDirzhVAzhJ0ZxlA0DIw00npSyxoaZFy805OkMzkIzXxENxquMExq\nbGkv0yoj3ulItFMtmU/BZJNwbdX6+no4nU54vV54vV60tbWF/4+1VUkLDATjSLi2qs1mQ01NDTo7\nO9HZ2Yk333wTgDlqq5p1aSvzhEtku43UR7OOpYRrqwKRnzzM2qqkNiMFAD2T1DWMpqYmFBUVoaqq\nCgMDAwCsU1tVJpOvCRh5Asq0rVaWcGBs374dwWAQFy9eREZGBmpra6P+rqw1SEheDBptJRwYdrsd\nNpsNOTk5qK6uDp92sLaqHGSYUDJso1UlHBhjS8fh4WG0tLSEP0GRvbaqWS9SyXDn5PhtNFNYmHFM\nKaqt2t/fj9mzZ+Pjjz/G6dOncenSJWRlZWHVqlVobGwEYP7aqjILhUITHtvX0dFhmMFs1rAwK9ZW\n/b90TCA9J8jk53yaOTCM0jfAeCHI2qoqMNIA04oRP4WwwurCbGOLgWEhRgoNK4SFGTEwiEgxBobF\nGOFTE64u5MXAsKB0TliGhdwYGBaVjpWGEVY3lBoGhoWFQiGEQiHNj/Rj7YzH1YWcGBgUcUKr+dpk\nHgwM0gzDwnwsHxhmu7EmWR0dHeGVRioTXclrWO10xExjjA8BpojGJvzkW8rj/T6Zm+VXGOlkpiOP\nUlZbXZgNA4PCIk1mJSsHri6sg4FBE8i+ArDiqk1PDAyKK9YKIpHVhexhRLzoSQpNvgjK0xBr4gqD\nnhNrJZDsx65cXZgDAyPNeM5NMmFgkGkwfLUXMzC6u7uxZs0aLFiwAKtXr8axY8cAAIODg/D7/XC7\n3SgrK8PQ0FD4b1hflSbj6Yh5xAyMzMxMNDY2oqurC99//z0++ugjXLt2DXv27MGKFStw5coVlJaW\nYu/evQDMUV+VnuEkp0hiBsasWbPg8XgAALm5uViyZAl6enrQ2tqKQCAAAAgEAjhx4gQA1ldNFpfS\nJAvF1zBu3LiBrq4ulJaWoq+vDw6HAwDgcDjQ19cHgPVVicxOUWAMDQ2hvLwcjY2NmD59+oT/s9ls\nMWuNGLUOCelDr1MbrtL0ETcwnj59ik2bNmHLli3YuHEjgGerit7eXgDPPpe32+0AWF/VbGS5jsGw\n0E/MwBBCoKqqCgsWLMAHH3wQ/vmGDRvQ3NwMAGhubobf7w//XOb6qunEQU8yiHlr+IULF/D111/D\n7XbD6/UCAPbv34/du3ejsrISbrcbhYWFOH78OADWVzUjI9VhpfSzfG1Vo00GI54GpPIe6dEfo+3D\nSIyyX1lblXSVl5en+ClcDAvz4bdVSZHJIcFvrVoTVxgGI9sRU+lqg8yBgUHSki1czYCBQTEpuWbB\nVYZ1MDAMyGhHTqNc4af0Y2BQTMk+NVzrkDFaqFqF5QODR0/5yBYWZhpjlg8Mo5JtUpA1MDAorlgP\n/tX7PgwGaXrxxi1SjDdpEVcYBsaj6UR8P9KPgWFwnCRkJAwMIlKMgSEBrjL4HhgFA4MUMdO9BJQ8\nBgbkmAxWPcL6fD6p+y7D2EoEA4OIFEuqVGJ9fT2cTie8Xi+8Xi/a2trCf8NSiaQWmVcWZhXzmZ69\nvb3o7e2Fx+NBf38/Fi5ciN9//x3fffcdZsyYgZqamgm/f/XqVWzevBl//vknenp68Prrr+P69euY\nMuW/XDLaMz3Hk2GApnOJm8j7o8Z2yrA/YjHi6Yimz/SMVioxWsMslai9dE2iRNtNdTtlDwuzSrhU\n4vLlywEATU1NKCoqQlVVFQYGBgCwVKJezD6ZzN4/mSVcKnHatGnYvn07gsEgLl68iIyMDNTW1kb9\nWyOfghBRYpIqlWi322Gz2ZCTk4Pq6urwaQdLJepHhqNwMqcxMvTLypIqlTj2rcXh4WG0tLSguLgY\ngPylEo14kcoqzBYUZh1LCZdK3LdvH7755htcunQJWVlZWLVqFRobGwGwVKLefD6f4Qemkm00W1iY\nmeVLJU4m4+CVocLY5G2U8X1OhFGDPNXpzgfomIAsKw2SH28Np7g42WkMA2MSox+po+GkNg5Zx5AS\nDAwTYWiQ1hgYRKQYA8Nk1F5lcNVC4/Fj1SjMMFFSPZc2w3ugN6Nfv9D026okt1QmPMOCImFgmBy/\nn0FqYmBEYfSlZaISCQ0GTHLMNmYi4Z2eFjIWBNEGNoOC4uFFzzg4iUgJWVYXvOhJRLphYBCRYgyM\nOGRZalL6WGmMMDCISDEGBhEpxsBQwEpLTkqM1cYGA4OIFIsZGI8ePcKyZcvg8XhQWloaftjv4OAg\n/H4/3G43ysrKMDQ0FP4bs9ZWtdqRhOKz4piIe+PWw4cPMXXqVDx+/Bg+nw8//vgjjhw5gtzcXNTV\n1eHAgQO4d+8eGhoapK+tGg9v4qLxZAwMzW/cmjp1KoBn1c9GRkaQnZ2N1tZWBAIBAEAgEMCJEycA\nsLYqkdnFDYzR0VGUlJTA4XCguroaBQUF6Ovrg8PhAAA4HA709fUBMH9tVRmPKKQNq46FuIExZcoU\nXL58GTdu3MDhw4fR2dk54f9tNlvM0wyZT0EisepAof9YeQwo/pTE5XJh3bp1OHPmDBwOB3p7ewE8\nK5tot9sBsLYqkdnFDIz+/n4MDAwAAO7evYu2tjYUFxdjw4YNaG5uBgA0NzfD7/cDkL+2qlJWPsJY\nndX3fcznYYRCIQQCAYyMjGDWrFmoqanBa6+9hqVLl6KyshJutxuFhYU4fvw4ANZWJTI7Pg8jBfyY\n1VrMsLrg8zCISDcMjBSY4YhDynBfP8PASBEHkvlxH/+HgUFEijEwVMAjkHlx307EwCAixRgYKuGR\nyHy4T5/HwCAixRgYKuIRyTy4LyNjYKiMA01+3IfRMTA0wAEnL+672BgYRKQYA0MjPFLJh/ssPgaG\nhjgA5cF9pQwDg4gUY2BojEcu4+M+Uo4P0NERH7hjLFYMCj5Ah4h0w8DQkRWPaEbFfZGcpGqr1tfX\nw+l0wuv1wuv1oq2tLfw3Zq2tqhYO1PTjPkheUrVVW1paMGPGDNTU1Ez4XbPXVlUTr2ekh9XDQtfa\nqsPDw8jOzo7aMGurKmf1gZsOfM9Tl1Bt1R07dqCgoAAA0NTUhKKiIlRVVYWLHZm9tqraOID1w/da\nHUnVVt2+fTuCwSAuXryIjIwM1NbWRv17noLExoGsPb7H6kmqtqrdbofNZkNOTg6qq6vDpx2srZoc\nDmjt8L1VV1K1VccKMQ8PD6OlpQXFxcUArFNbVQsdHR0c3Cri+6mNpGqrvvPOO7h06RKysrKwatWq\n8MetrK2auo6ODn6CkiIGhXZ4a7hBMTSSw7CIjbeGmxQHfuL4nmmPKwwJcLURG4NCOa4wLIATIjq+\nN/piYEiCE+N5fE/0x1MSCVn9FIVBkTyekliQlSeMlftuBFxhSM4qqw0GhTpSne4MDBMxW3gwJNTH\nwKDnyB4cDArtMDAoKtmCg0GhPQYGxWX04GBQ6IeBQQlLd4AwINKHgUGq0CpEGA7GwsAg3UwOFYaB\nfBgYRKQY7/QkIt0wMIhIMQYGESnGwCAixRgYRKQYA4OIFGNgEJFiDAwiUixmISMt6HyfGBGpiCsM\nIlKMgUFEijEwiEgxXQPj7NmzWLRoEdxuN5qamjRpw+Vywe12w+v1hivHDw4Owu/3w+12o6ysDEND\nQ0m//rZt2+BwOMIV6+O9/qFDh+B2u7Fo0SKcP39elfbq6+vhdDrh9Xrh9XrR1tamSnvd3d1Ys2YN\nFixYgNWrV+PYsWOa9i9ae1r179GjR1i2bBk8Hg9KS0vDRcS16l+09rTq35iRkRF4vV6sX79e/f4J\nnQwPD4vCwkIRDAbFkydPRElJibh69arq7bhcLnH37t0JP9u1a5c4cOCAEEKIhoYG8eGHHyb9+mfP\nnhV///23WLhwYdzX7+rqEiUlJeLJkyciGAyKwsJCMTIyknJ79fX14uDBg8/9bqrthUIh0dnZKYQQ\n4s6dO8LhcIirV69q1r9o7WnVPyGEePDggRBCiEePHokFCxaI69eva7r/IrWnZf+EEOLgwYNi8+bN\nYv369UIIdcenbiuM9vZ2zJs3Dy6XC5mZmSgvL8fJkyc1aUtM+iSmtbUVgUAAABAIBHDixImkX3vl\nypWYOXOmotc/efIkKioqkJmZCZfLhXnz5qG9vT3l9oDInzal2t6sWbPg8XgAALm5uViyZAl6eno0\n61+09rTqHwBMnToVADA0NISRkRFkZ2druv/Gtzc8PIzs7GxN+3fr1i2cOnUK7733XrgNNfunW2D0\n9PRg9uzZ4X87nc7w4FCTzWbD2rVr4fV6ceTIEQBAX18fHA4HAMDhcKCvr0/VNqO9/u3bt+F0OsO/\np2afm5qaUFRUhKqqKgwMDKje3o0bN9DV1YXS0lJd+jfW3vLlyzXt3+joKEpKSuBwOFBdXY2CggJN\n+ze+vR07dqCgoEDT/u3cuROffvoppkz5b2qr2T/dAkOvB+dcuHABly9fRktLC/bt24dz5849tx1a\nbku811ej7e3btyMYDOLixYvIyMhAbW2tqu0NDQ2hvLwcjY2NmD59+nOvp3b/xrc3bdo0Tfs3ZcoU\nXL58GTdu3MDhw4fR2dn53Oup2b9I7WnVv59++gl2ux1erzfq/U6p9k+3wMjPz0d3d3f4393d3RPS\nTS15eXkAgPnz56OsrAzt7e1wOBzo7e0FAIRCIdjtdlXbjPb6k/t869Yt5Ofnp9ye3W6HzWZDTk4O\nqqurw8tINdp7+vQpNm3ahC1btmDjxo0AtO1fpPa07N8Yl8uFdevW4cyZM7rsv/HtadW/P/74A62t\nrZgzZw4qKirw22+/obKyUt3+JXxFJUlPnz4Vc+fOFcFgUDx+/FiTi54PHjwQ9+/fF0II8e+//4pX\nXnlF/PLLL2LXrl2ioaFBCCHE/v37U7roKYQQwWDwuYuekV5/7KLS48ePxc2bN8XcuXPF6Ohoyu3d\nvn1bCPHsPa2rqxMVFRWqtDc6OioqKyvFzp07J/xcq/5Fa0+r/t25c0fcu3dPCCFEf3+/KCoqEr/+\n+qtm/YvWXigU0qR/450+fVq89dZbQgh1959ugSHEs054PB6xcOFC8fnnn6v++jdv3hQlJSWipKRE\nrF27VnzxxRdCCCHu378vNm7cKIqLi4Xf7xeDg4NJt1FeXi7y8vJEVlaWcDqd4ujRozFf/7PPPhML\nFy4UHo9HnD17Nun2MjMzhdPpFF999ZWorKwUxcXFwufziZ07d4re3l5V2jt37pyw2WyipKREeDwe\n4fF4RFtbm2b9i9TeqVOnNOvflStXhNfrFW63W7zxxhviyy+/FELEHh9atKdV/8Y7ffp0+FMSNfun\n+0OAiUhevNOTiBRjYBCRYgwMIlKMgUFEijEwiEgxBgYRKfY/mqjHQ1MLH1sAAAAASUVORK5CYII=\n" } ], "prompt_number": 94 }, { "cell_type": "markdown", "metadata": {}, "source": "**Comments** : \n\nSince 'opening' an image is equivalent to *erosion followed by dilation*, white or lighter portions in the image which are smaller than the structuring element tend to be removed, just as in erosion along with the increase in thickness of black portions and thinning of larger (than structing elements) white portions. But dilation reverses this effect and hence as we can see in the image, the central 2 dark ellipses and the circular lighter portion retain their thickness but the lighter patchs in the bottom get completely eroded." }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "CLOSING" }, { "cell_type": "raw", "metadata": {}, "source": "Documentation :\n\nDefinition: closing(image, selem, out=None)\nDocstring:\nReturn greyscale morphological closing of an image.\n\nThe morphological closing on an image is defined as a **dilation followed by\nan erosion**. Closing can remove small dark spots (i.e. \"pepper\") and connect\nsmall bright cracks. This tends to \"close\" up (dark) gaps between (bright)\nfeatures.\n\nParameters\n----------\nimage : ndarray\n Image array.\nselem : ndarray\n The neighborhood expressed as a 2-D array of 1's and 0's.\nout : ndarray\n The array to store the result of the morphology. If None,\n is passed, a new array will be allocated.\n\nReturns\n-------\nclosing : uint8 array\n The result of the morphological closing." }, { "cell_type": "code", "collapsed": false, "input": "# We will be working with phantom.png for this function.\n# First defining the structuring element as a disk using disk()\n#selem = disk(3);\nselem = disk(6);\n#selem = disk(10);\nphantom1 = phantom\nphantom[300:310, 200:210] = 0\nclosed = closing(phantom1, selem)\n\n# Displaying the original and eroded image \n# 'plt.figure() can be used for showing multiple images together\nplt.figure(1) \nio.imshow(phantom1)\nplt.figure(2)\nio.imshow(closed)\nplt.show()", "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nXM+h1IIAAAAASUVORK5CYII=\n" }, { "output_type": "display_data", "png": "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\n9sPrAAAAAElFTkSuQmCC\n" } ], "prompt_number": 95 }, { "cell_type": "markdown", "metadata": {}, "source": "**Comments** : \n\nSince 'closing' an image is equivalent to *dilation followed by erosion*, the small black 10X10 pixel wide square introduced has been removed and the -34 white ellipses at the bottom get connected, just as is expected after dilation along with the thinning of larger (than structing elements) black portions. But erosion reverses this effect and hence as we can see in the image, the central 2 dark ellipses and the circular lighter portion retain their thickness but the all black square is completely removed. But note that the white patches at the bottom remain connected even after erosion." }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "WHITE TOPHAT" }, { "cell_type": "raw", "metadata": {}, "source": "Documentation :\n\nDefinition: white_tophat(image, selem, out=None)\nDocstring:\nReturn white top hat of an image.\n\nThe white top hat of an image is defined as the **image minus its\nmorphological opening**. This operation returns the bright spots of the image\nthat are smaller than the structuring element.\n\nParameters\n----------\nimage : ndarray\n Image array.\nselem : ndarray\n The neighborhood expressed as a 2-D array of 1's and 0's.\nout : ndarray\n The array to store the result of the morphology. If None\n is passed, a new array will be allocated.\n\nReturns\n-------\nopening : uint8 array\n The result of the morphological white top hat.\n" }, { "cell_type": "code", "collapsed": false, "input": "# We will be working with phantom.png for this function.\n# First defining the structuring element as a disk using disk()\n#selem = disk(3);\nselem = disk(5);\n#selem = disk(10);\nphantom[150:160, 200:210] = 255\nw_tophat = white_tophat(phantom, selem)\n\n# Displaying the original and eroded image \n# 'plt.figure() can be used for showing multiple images together\nplt.figure(1) \nio.imshow(phantom)\nplt.figure(2)\nio.imshow(w_tophat)\n#plt.figure(3)\n#io.imshow(opening(phantom, selem))\nplt.show()", "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nXW2VeAAAAABJRU5ErkJggg==\n" }, { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 96 }, { "cell_type": "markdown", "metadata": {}, "source": "**Comments** : \n\nThis technique is used to locate the bright spots in an image which are smaller than the size of the structuring element. As can be seen, the 10X10 pixel wide white square and a part of the white boundary are highlighted since they are smaller in size as compared to the disk which is of radius 5, i.e. 10 pixels wide. If the radius is decreased to 4, we can see that a center of the square is removed and only the corners are visible, since diagonals are longer than sides." }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "BLACK TOPHAT" }, { "cell_type": "raw", "metadata": {}, "source": "Documentation :\n\nDefinition: black_tophat(image, selem, out=None)\nDocstring:\nReturn black top hat of an image.\n\nThe black top hat of an image is defined as its morphological **closing minus\nthe original image**. This operation returns the *dark spots of the image that\nare smaller than the structuring element*. Note that dark spots in the\noriginal image are bright spots after the black top hat.\n\nParameters\n----------\nimage : ndarray\n Image array.\nselem : ndarray\n The neighborhood expressed as a 2-D array of 1's and 0's.\nout : ndarray\n The array to store the result of the morphology. If None\n is passed, a new array will be allocated.\n\nReturns\n-------\nopening : uint8 array\n The result of the black top filter." }, { "cell_type": "code", "collapsed": false, "input": "# We will be working with phantom.png for this function.\n# First defining the structuring element as a disk using disk()\n#selem = disk(3);\nselem = disk(5);\n#selem = disk(10);\nphantom[150:160, 200:210] = 255\nb_tophat = black_tophat(phantom, selem)\n\n# Displaying the original and eroded image \n# 'plt.figure() can be used for showing multiple images together\nplt.figure(1) \nio.imshow(phantom)\nplt.figure(2)\nio.imshow(b_tophat)\n#plt.figure(3)\n#io.imshow(opening(phantom, selem))\nplt.show()", "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nXW2VeAAAAABJRU5ErkJggg==\n" }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAQwAAAD5CAYAAADSpAuNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEVhJREFUeJzt3W9olfX/x/HXcW5CShLFuRye5JTCctv5p1SrSNKgQMqd\nIcQW2rAFIfNGJstbwqKwSQytQQRWbBTWzZRwRBE6tcFuNBU0MPEEU8+WSrIzwz+b798Nv55ftu34\n2c45c549H/C54TnXud7Xx7Pz4jrXdZ3r7TMzEwA4mHWvNwDA/YPAAOCMwADgjMAA4IzAAOBs9lQX\n9Pl8U10SwP9ke1KUPQwAzggMAM4IDADOCAwAzggMAM4IDADOCAwAzggMAM4IDADOCAwAzggMAM4I\nDADOCAwAzggMAM4IDADOCAwAzggMAM4IDADOCAwAzggMAM4IDADOCAwAzggMAM4IDADOJt3IKBgM\n6sEHH1RRUZGKi4vV09OjVCql9evX68yZM1q8eLG+/vprzZs3L5fbC+AemvQehs/n04EDB9Tb26ue\nnh5J0gcffKBnn31Wx48fV1VVlT788MOcbSiAacAmKRgM2sWLF+94rKyszPr7+83MLJlMWllZ2ajX\nSWIwGPdoZCurPYxVq1YpFotp9+7dkqSBgQF5nidJ8jxPAwMDk109gGlo0scwjhw5otLSUv3+++9a\nvXq1nnjiiTue9/l8NF4GCsyk9zBKS0slSUuXLlVNTY16enrkeZ76+/slSclkUn6/PzdbCWBamFRg\n/PPPP0qlUpKkCxcuaP/+/QqFQlqzZo06OjokSR0dHYrH47nbUgD3nO9/ByInJJFIqKamRpL08MMP\n67XXXtPbb7/tdFqVrynAvTOJj/sdJhUYWRUkMIB7JtuPO1d6AnBGYABwRmAAcEZgAHBGYABwRmAA\ncEZgAHBGYABwRmAAcEZgAHBGYABwRmAAcEZgAHBGYABwRmAAcEZgAHBGYABwRmAAcEZgAHCWMTDe\nfPNNeZ6nUCiUfiyVSikejyscDqumpkZDQ0Pp5z799FOFw2EtW7ZMhw8fzt9WA7g3MrVF6+rqst9+\n+80qKyvTjzU1NdmOHTvMzKylpcW2bt1qZmYnTpywSCRi169ft0QiYYsXL7aRkRFaJTIY02hk665r\nSCQSdwTGeP1Tt2/fbi0tLenlXn75Zevu7iYwGIxpNLI14WMY4/VPPX/+vAKBQHq5QCCgc+fOTXT1\nAKaxrA563q1/Kj1IgMIy4cAYr3/qwoUL1dfXl17u7NmzWrhwYY42E8B0MOHAGK9/6po1a/Tdd9/p\n+vXrSiQS+uOPP/TUU0/ldmsB3FuZDnDU1tZaaWmplZSUWCAQsK+++soGBweturraQqGQxeNxS6VS\n6eV37dpllZWVFo1Graura8x1ahoc+GEwZurIFr1VgRkk2487V3oCcEZgAHBGYABwRmAAcEZgAHBG\nYABwRmAAcEZgAHBGYABwRmAAcEZgAHBGYABwRmAAcEZgAHBGYABwRmAAcEZgAHBGYOC+NsU3jJvx\nCAzc127f8pHgmBoT7q3a3NysQCCgWCymWCymzs7O9HP0VsW9wr1ip0imOwSP1Vu1ubnZWltbRy1L\nb1UGY/qPbGXcw3j++ef10EMPjXp8rN2/vXv3qq6uTsXFxQoGg1qyZIl6enoyrR7AfWZSxzDa2tpU\nXl6uhoYGXb58WRK9VYGZYMKBsXHjRiUSCXV3d6uoqEhbtmwZd1m+VwKFZcKB4ff75fP5NH/+fDU2\nNqa/dtBbFSh8Ew6MZDIpSRoeHtaePXvSZ1DorQoUvtmZnqyrq9PBgwd18eJFPfroo3r//fd14MAB\nHT16VCUlJVqxYoV27twpSSovL9eGDRu0fPlyzZ49W+3t7XwlAQoMvVWBGSTbjztXegJwRmAAcEZg\nAHBGYABwRmAAcEZgAHBGYABwRmAAcEZgAHBGYABwRmBgXNu2bcvLsrh/8VsSYAbhtyQApgyBAcAZ\ngQHAGYEBwBmBAcAZgQHAGYEBwFnGwOjr69PKlStVUVGhF154Qe3t7ZKkVCqleDyucDismpoaDQ0N\npV9Df1WggGXqo5hMJq23t9fMzC5cuGCe59nJkyetqanJduzYYWZmLS0ttnXrVuf+qpoG/SUZjJk6\nsjWhNbzyyiv2008/WVlZmfX396dDpayszMzMtm/fbi0tLenlX375Zevu7r6z4DT4T2MwZurIlvMx\njNOnT+vEiROqqqrSwMCAPM+TJHmep4GBAUn0VwUKnVNgDA0Nqba2Vjt37tS8efPueM7n82X8fQi/\nHQEKx10D48aNG1q7dq3WrVun6upqSbf2Kvr7+yXdap3o9/sl0V8VKHQZA8PM1NDQoIqKCr3zzjvp\nx9esWaOOjg5JUkdHh+LxePpx+qsCBSzTAY5Dhw6Zz+ezSCRi0WjUotGodXZ22uDgoFVXV1soFLJ4\nPG6pVCr9ml27dlllZaVFo1Hr6uoatU5NgwM/DMZMHdnifhjADJLtx50rPQE4IzAAOCMwADgjMAA4\nIzAAOCMwADgjMAA4IzAAOCMwADgjMAA4IzAAOCMwADgjMAA4IzAAOCMwADgjMAA4IzAAOCMwADib\nVKvE5uZmBQIBxWIxxWIxdXZ2pl9Dq0SggGW64ed4rRKbm5uttbV11PK0SmQwpvfIVsY9jAULFiga\njUqSHnnkET355JPpTmZj3Ux07969qqurU3FxsYLBoJYsWaKenp5MJQDcRybcKvGZZ56RJLW1tam8\nvFwNDQ26fPmyJFolAoVuwq0S586dq40bNyqRSKi7u1tFRUXasmXLuK+lrQBQOCbVKtHv98vn82n+\n/PlqbGxMf+2gVSJQ2CbVKjGZTEqShoeHtWfPHoVCIUm0SgQK3exMTx45ckTffPONwuGwYrGYJGn7\n9u369ttvdfToUZWUlGjFihXauXOnJKm8vFwbNmzQ8uXLNXv2bLW3t/OVBCggtErElDAz3vtpgFaJ\nuC8QFoWBwADgjMAA4IzAAOCMwADgjMAA4IzAAOCMwADgjMAA4IzAAOCMwJiBxro8eIp/IYD7FIEx\nA411mTaXbsMFgQHAGYEBwBmBAcAZgQHAGYEBwBmBAcAZgQHAWcbAuHr1qp5++mlFo1FVVVWlb/ab\nSqUUj8cVDodVU1OjoaGh9GvorQoUsLv1Urxy5YqZmV29etUqKirs1KlT1tTUZDt27DAzs5aWFtu6\ndSu9VRmM+2DktbeqJD3wwAOSbnU/GxkZ0Zw5c7Rv3z7V19dLkurr6/X9999LorcqUOjuGhg3b95U\nJBKR53lqbGzUokWLNDAwIM/zJEme52lgYEASvVWBQpexkZEkzZo1S8eOHdOff/6p1atX67nnnrvj\neZ/Pl/F3CPxGofCM90M13uvC53yWJBgMavXq1Tp48KA8z1N/f7+kW20T/X6/JHqrAoUuY2BcvHhR\nly9fliRdunRJnZ2dCoVCWrNmjTo6OiRJHR0disfjkuitChS8TEdEjx8/brFYzMLhsL300kv2xRdf\nmJnZ4OCgVVdXWygUsng8bqlUKv2aXbt2WWVlpUWjUevq6hq1Tk2DI8WM/Bxpv9fbxZj8e+eK3qqY\nsPH+ZHhvp79sP+5c6QnA2V3PkgD/xZ7EzMUeBgBnBAYAZwQGsrJt27Z7vQmYQgQG7mrbtm1jBgNh\nMfMQGHDywQcfOD2GwkZgwAl7GJA4rQoH7EngNq70BGYQrvQEMGUIDADOCAwAzggMAM4IDADOCAwA\nzggMAM4IDADOCAwAzibVW7W5uVmBQECxWEyxWEydnZ3p19BbFShgd7tL8Fi9VZubm621tXXUsvRW\nZTCm98jWhHqrDg8Pa86cOdKtyqOWpbcqUNgm1Ft106ZNWrRokSSpra1N5eXlamhoSDc7orcqUNju\nGhi3e6uePn1an332mXp7e7Vx40YlEgl1d3erqKhIW7ZsGff1/DoVKByT6q3q9/vl8/k0f/58NTY2\npr920FsVKGyT6q16uxHz8PCw9uzZo1AoJIneqkChy3jHrWQyqfr6eo2MjGjBggV699139eKLL+qN\nN97Q0aNHVVJSohUrVqRPt5aXl2vDhg1avny5Zs+erfb2dr6SAAWEO24BMwh33AIwZQgMAM4IDADO\nCAwAzggMAM4IDADOCAwAzggMAM4IDADOCAwAzggMAM4IDADOCAwAzggMAM4IDADOCAwAzggMAM4I\nDADOCAwAzggMAM4IDADOCAwAzggMAM4yNjLKhylugwIgh9jDAOCMwADgjMAA4GxKA6Orq0vLli1T\nOBxWW1tbXmoEg0GFw2HFYrF05/hUKqV4PK5wOKyamhoNDQ1Nev1vvvmmPM9Ld6y/2/o//fRThcNh\nLVu2TIcPH85JvebmZgUCAcViMcViMXV2duakXl9fn1auXKmKigq98MILam9vz+v8xquXr/ldvXpV\nTz/9tKLRqKqqqtJNxPM1v/Hq5Wt+t42MjCgWi+nVV1/N/fxsigwPD9vixYstkUjY9evXLRKJ2MmT\nJ3NeJxgM2qVLl+54rKmpyXbs2GFmZi0tLbZ169ZJr7+rq8t+++03q6ysvOv6T5w4YZFIxK5fv26J\nRMIWL15sIyMjWddrbm621tbWUctmWy+ZTFpvb6+ZmV24cME8z7OTJ0/mbX7j1cvX/MzMrly5YmZm\nV69etYqKCjt16lRe37+x6uVzfmZmra2t9vrrr9urr75qZrn9+5yyPYyenh4tWbJEwWBQxcXFqq2t\n1d69e/NSy/5zJmbfvn2qr6+XJNXX1+v777+f9Lqff/55PfTQQ07r37t3r+rq6lRcXKxgMKglS5ao\np6cn63rS2Gebsq23YMECRaNRSdIjjzyiJ598UufOncvb/Marl6/5SdIDDzwgSRoaGtLIyIjmzJmT\n1/fv3/WGh4c1Z86cvM7v7Nmz2r9/v9566610jVzOb8oC49y5c3r00UfT/w4EAuk/jlzy+XxatWqV\nYrGYdu/eLUkaGBiQ53mSJM/zNDAwkNOa463//PnzCgQC6eVyOee2tjaVl5eroaFBly9fznm906dP\n68SJE6qqqpqS+d2u98wzz+R1fjdv3lQkEpHneWpsbNSiRYvyOr9/19u0aZMWLVqU1/lt3rxZH3/8\nsWbN+v+Pdi7nN2WB4fP5pqTOkSNHdOzYMe3Zs0fbt2/XoUOHRm1HPrflbuvPRe2NGzcqkUiou7tb\nRUVF2rJlS07rDQ0Nqba2Vjt37tS8efNGrS/X8/t3vblz5+Z1frNmzdKxY8d0+vRpffbZZ+rt7R21\nvlzOb6x6+ZrfDz/8IL/fr1gsNu71TtnOb8oCY+HCherr60v/u6+v7450y5XS0lJJ0tKlS1VTU6Oe\nnh55nqf+/n5JUjKZlN/vz2nN8db/3zmfPXtWCxcuzLqe3++Xz+fT/Pnz1djYmN6NzEW9GzduaO3a\ntVq3bp2qq6sl5Xd+Y9XL5/xuCwaDWr16tQ4ePDgl79+/6+Vrfr/++qv27dunxx57THV1dfrll1+0\nfv363M5vwkdUJunGjRv2+OOPWyKRsGvXruXloOeVK1dscHDQzMz++usvKysrsx9//NGampqspaXF\nzMw++uijrA56mpklEolRBz3HWv/tg0rXrl2zM2fO2OOPP243b97Mut758+fN7Nb/6XvvvWd1dXU5\nqXfz5k1bv369bd68+Y7H8zW/8erla34XLlywv//+28zMLl68aOXl5fbzzz/nbX7j1Usmk3mZ378d\nOHDAXnnlFTPL7fs3ZYFhdmsS0WjUKisr7ZNPPsn5+s+cOWORSMQikYitWrXKPv/8czMzGxwctOrq\naguFQhaPxy2VSk26Rm1trZWWllpJSYkFAgH76quvMq5/165dVllZadFo1Lq6uiZdr7i42AKBgH35\n5Ze2fv16C4VCtnz5ctu8ebP19/fnpN6hQ4fM5/NZJBKxaDRq0WjUOjs78za/sert378/b/M7fvy4\nxWIxC4fD9tJLL9kXX3xhZpn/PvJRL1/z+7cDBw6kz5Lkcn4+M37cAcANV3oCcEZgAHBGYABwRmAA\ncEZgAHBGYABw9n/LDTW3Flr+nAAAAABJRU5ErkJggg==\n" } ], "prompt_number": 97 }, { "cell_type": "markdown", "metadata": {}, "source": "**Comments** : \n\nThis technique is used to locate the dark spots in an image which are smaller than the size of the structuring element. As can be seen, the 10X10 pixel wide black square is highlighted since it is smaller or equal in size as compared to the disk which is of radius 5, i.e. 10 pixels wide. If the radius is decreased to 4, we can see that a center of the square is removed and only the corners are visible, since diagonals are longer than sides." }, { "cell_type": "markdown", "metadata": {}, "source": "Duality\n-------\n\n1. Erosion <-> Dilation\n2. Opening <-> Closing\n3. White Tophat <-> Black Tophat" }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "SKELETONIZE" }, { "cell_type": "raw", "metadata": {}, "source": "Documentation :\n\nDefinition: skeletonize(image)\nDocstring:\nReturn the skeleton of a **binary image**.\n\nThinning is used to reduce each connected component in a binary image\nto a **single-pixel wide skeleton**.\n\nParameters\n----------\nimage : numpy.ndarray\n A binary image containing the objects to be skeletonized. '1'\n represents foreground, and '0' represents background. It\n also accepts arrays of boolean values where True is foreground.\n\nReturns\n-------\nskeleton : ndarray\n A matrix containing the thinned image.\n\nSee also\n--------\nmedial_axis\n\nNotes\n-----\nThe algorithm [1] works by making successive passes of the image,\nremoving pixels on object borders. This continues until no\nmore pixels can be removed. The image is correlated with a\nmask that assigns each pixel a number in the range [0...255]\ncorresponding to each possible pattern of its 8 neighbouring\npixels. A look up table is then used to assign the pixels a\nvalue of 0, 1, 2 or 3, which are selectively removed during\nthe iterations.\n\nNote that this algorithm will give different results than a\nmedial axis transform, which is also often referred to as\n\"skeletonization\".\n\nReferences\n----------\n.. [1] A fast parallel algorithm for thinning digital patterns,\n T. Y. ZHANG and C. Y. SUEN, Communications of the ACM,\n March 1984, Volume 27, Number 3" }, { "cell_type": "code", "collapsed": false, "input": "# For this we will use ip_text.gif\ntext = img_as_ubyte(io.imread('/Users/chintak/Repositories/scikit-image/skimage/data/ip_text.gif', as_grey=True)).astype(bool)\nskeleton = skeletonize(text)\n\n# Displaying the original image and the skeletonized image\nplt.figure(1)\nio.imshow(text)\nplt.figure(2)\nio.imshow(skeleton)\nplt.show()", "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nAXBtc2HRHnIAAAAASUVORK5CYII=\n" }, { "output_type": "display_data", "png": "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\n9QOGHYy6HgAAAABJRU5ErkJggg==\n" } ], "prompt_number": 98 }, { "cell_type": "markdown", "metadata": {}, "source": "**Comments** : \n\nAs the name suggests, this technique is used to thin the image to 1-pixel wide skeleton by applying thinning successively." }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": "CONVEX HULL" }, { "cell_type": "raw", "metadata": {}, "source": "Documentation :\n\nDefinition: convex_hull_image(image)\nDocstring:\nCompute the convex hull image of a **binary image**.\n\nThe convex hull is the **set of pixels included in the smallest convex\npolygon that surround all white pixels in the input image**.\n\nParameters\n----------\nimage : ndarray\n Binary input image. This array is cast to bool before processing.\n\nReturns\n-------\nhull : ndarray of uint8\n Binary image with pixels in convex hull set to 255.\n\nReferences\n----------\n.. [1] http://blogs.mathworks.com/steve/2011/10/04/binary-image-convex-hull-algorithm-notes/" }, { "cell_type": "code", "collapsed": false, "input": "# For this we will use chicken.png\nrooster = img_as_ubyte(io.imread('/Users/chintak/Repositories/scikit-image/skimage/data/rooster.png', as_grey=True)).astype(bool)\nhull1 = convex_hull_image(rooster)\nrooster1 = np.copy(rooster)\nrooster1[350:355, 90:95] = 1\nhull2 = convex_hull_image(rooster1)\n\n# Displaying the original image and the skeletonized image\nplt.figure(1)\nio.imshow(rooster)\nplt.figure(2)\nio.imshow(rooster1)\nplt.figure(3)\nio.imshow(hull1)\nplt.figure(4)\nio.imshow(hull2)\nplt.show()", "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAU0AAAD5CAYAAACj3GcTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEeNJREFUeJzt3UtoVGcfx/HfiPpCcVOQjJKpTI2gNclkEmkMisVLqRC8\nTHBjxDBqu3NTC9ZVV0qNlKKmm0LFGty4Eg1FW1qs2tRCii0KpqBiLElMUhVLEiHGJv93YTM1apJ5\nMtdz5vuBWWQyyZznZM43zzlnLgEzMwEAkjIj1wsAAF5CNAHAAdEEAAdEEwAcEE0AcDAz23cYCASy\nfZcA4GyiJxYx0wQAB0QTABwQTQBwQDQBwAHRBAAHRBMAHBBNAHBANAHAAdEEAAdEEwAcEE0AcEA0\nAcAB0QQAB0QTABwQTQBwQDQBwAHRBAAHRBMAHBBNAHBANAHAAdEEAAdEEwAcEE0AcEA0AcAB0QQA\nB0QTABwQTQBwMDPXCwA8z8zS/jsDgUDafycKF9FEXshELF/1uwkoUkU0kVOZjCWQCUQTWZXrSJoZ\ns02khBNBAOCAmSayItczzOdxjBOpIJpIu3wK5FTYXYcrds+RVl4K5hgvLjNyh2gCgAOiCQAOiCYg\ndtGRPKIJ/ItwIhlEE2nFmWj4HdEEAAdEEwAcEE3gXxxaQDJ4RRDSygsnU4gjUkE04XtEEunE7jkA\nOCCaAOCAaAKAA6IJAA4mjeauXbsUDAZVXl6euG5gYECxWEyRSER1dXUaHBxMfK+pqUmRSERVVVVq\nbW3N3FIj75iZJ86cA6maNJo7d+7Ut99+O+66/fv3a8WKFbp+/bpqamp04MABSVJ7e7uOHz+uq1ev\n6vTp09qxY4dGR0czt+TIG8QShWTSaK5atUqvv/76uOtaWloUj8clSfF4XGfOnJEknT17VvX19Zo1\na5bC4bAWLVqktra2DC028gXBRKFxPqbZ19enYDAoSQoGg+rr65Mk3bt3T6FQKHG7UCik7u7uNC0m\n8hHBzJyxwx1TXZB9KT25PRAITPrEYZ5U7F9ssJnhul7Hbs+2lj3OM81gMKje3l5JUk9Pj4qKiiRJ\nxcXF6uzsTNyuq6tLxcXFaVpMwF+YOXqXczQ3bdqk5uZmSVJzc7NisVji+lOnTml4eFgdHR26deuW\nqqur07u0AJBrNomtW7fa/Pnzbfbs2RYKhez48ePW399vmzdvtvLycovFYjYwMJC4/ZEjR6ysrMyi\n0ahdvnz5lb9TEhcfXLykENZPrh8PfrxMJPDvCs8ajr34Q5YfNinJ1GMun9YB21X6TfT35V2O4CSf\nQpErrIPCRjSRFELxDOsBRBOvRBz+w7rA84hmgfN7EKZ7rM/v6wXTRzQLGGEYz8vrw8w4GZQlvDUc\nADggmgXKy7OqZLnMvPywPoxXFWUFu+cFotA2pkIL5vNeNR523dOHmWYB8FsUpkIgXlZoj4FMIpo+\nx8YyOdYPXBFNHyMIQPoRTZ8q1GAW8rHMqRTaeDOFE0E+w4YxtUJeRzyfM3XMNH2kkGMgcQIoWYX+\nOEkV0fSJQt8QCCayhWj6AMEkmK4K/TGTCo5pelyhP/gJ5vQ9/9hhPSaPmaaHFXowgVwgmh5FMKeH\n9YZUEU0UDIKJdCCa8CyOwyEXiCY8iWAiV4gmPIdgIpeIpgcV8rE5golcI5oeU8jBBPIB0QQAB0QT\nABwQTQBwQDQ9hOOZQO4RTY8gmM+ksh448450IJrwHP6BIJeIJjxpuuFktvky1okbognPYsaZOoLp\njmjC0wgnso1owvPMzCmezK6QCj7uAr7xYjiJIzKBmSZ8a6LZJ7v0/2FduCOaAOCA3XP4GjOpqZkZ\nhzIcMNMEwD8XB0QTABwQTQCSmG0mi2gCgAOiCQAOJo1mZ2en1qxZo9LSUq1evVonTpyQJA0MDCgW\niykSiaiurk6Dg4OJn2lqalIkElFVVZVaW1szuvCFhLObQH4I2CQHMnp7e9Xb26toNKoHDx6orKxM\nP/74o77++mvNnTtXH3/8sQ4dOqRHjx6psbFR7e3t2rZtm3799Vd1d3fr3Xff1c2bNzVjxn9tZuOf\nPo45IdPYPv8z0fY26Uxz3rx5ikajkqS5c+fq7bffVnd3t1paWhSPxyVJ8XhcZ86ckSSdPXtW9fX1\nmjVrlsLhsBYtWqS2trZ0jqOg8YAGci/pY5q3b9/WjRs3VFNTo76+PgWDQUlSMBhUX1+fJOnevXsK\nhUKJnwmFQuru7k7zIhc2wgnkVlLRHBwc1NatW3X48GHNmTNn3PcCgcCkGzIbefqxToHcmTKaT58+\n1ZYtW7R9+3Zt3rxZ0rPZZW9vrySpp6dHRUVFkqTi4mJ1dnYmfrarq0vFxcWZWO6CRziRbjymkjNp\nNM1M77//vkpLS/Xhhx8mrt+0aZOam5slSc3NzYrFYonrT506peHhYXV0dOjWrVuqrq7O4OIXNh7k\nSBceS8mb9Ox5a2ur3nnnHUUikcRKPXjwoFauXKmGhgbduXNHJSUlOnnyZGK3/ejRozp27Jhmzpyp\npqYmrVq1avwd8sdJK86oIx3YLl820bY1aTQzgT9O+hFOpIrt8mXTesoRAGA8oukDzBKA7CGaPkE4\ngewgmgDggGj6yFQvNACQOj4jyIeeDydn1oH0Yqbpc8w8gfQimgDggGgCgAOiWQDYRQfSh2gCgAOi\nCQAOiGaB4DmcQHoQzQJDPIHUEE0AcEA0AcAB0QQAB7z2vEAFAgFel15AOI6dPsw0Cxgbkv9x4i/9\niCYAOCCaBY5ZCOCGaAKAA6IJAA6IJgA4IJoA4IBogpNBgAOiCUmEE0gW0UQC4QSmxssoMQ4vr8wf\nk/0T42+UO8w0gTw01ayfvYLcYaYJ5Jlkg/j87Zh5Zg/RxEvYRfceZp7Zw+45ADhgpolXKuTZZi5P\nwDBjzH9EExPKVjhfDEWuYk2wkAyiiZyZKFLZnuUSS7jgmCZyIpmn1GQjZvkUzHxaFkyMaCKv5VtI\nMrU8+TZOTIzdc+Q9no+IfMJME57ixxmZH8fkZ0QTnpPryKTz/nM9Frgjmsi6dIQi17HJ9f0jd4gm\nPCvX4Ur1/nO9/JgeTgQhKzJ51jmXJ4em++ohguldk840h4aGtHz5ckWjUdXU1Ojw4cOSpIGBAcVi\nMUUiEdXV1WlwcDDxM01NTYpEIqqqqlJra2tmlx5Q/gYoX5cLKbIpPH782MzMhoaGrLS01G7evGl7\n9+61Q4cOmZlZY2Oj7du3z8zMbty4YRUVFTY8PGwdHR1WUlJiIyMj436fJC4euqTKC8uai+XK9d+V\ny/QfT1Me03zttdckSYODgxoZGdH//vc/tbS0KB6PS5Li8bjOnDkjSTp79qzq6+s1a9YshcNhLVq0\nSG1tbVPdBXxk7JU82XpFTzpYDnbvc3GfSI8pozk6OqqKigoFg0Ht3r1bCxYsUF9fn4LBoCQpGAyq\nr69PknTv3j2FQqHEz4ZCIXV3d2do0YHxUok04USypjwRNGPGDF27dk13795VbW2tVq5cOe77U80o\nvDLbgD/k+sTQq4xtAy8uF9uGNyX9lKNwOKza2lpdunRJwWBQvb29kqSenh4VFRVJkoqLi9XZ2Zn4\nma6uLhUXF6d5kYHJTTdGmY6tFw9d4GWTRvPBgwf6+++/JUkPHz7U+fPnVV5erk2bNqm5uVmS1Nzc\nrFgsJknatGmTTp06peHhYXV0dOjWrVuqrq7O8BCQKS4RybcQ5NvywD8m3T3v6elRPB7XyMiI5s2b\np48++kjr1q1TdXW1GhoaFIlEVFJSopMnT0qSli5dqp07d2rZsmWaOXOmTpw4wQPXo/JtFxfIFwHL\n8tZBRL3BdZaZz1wf4vk+HmTHRI8bXkaJl/gpmEC68TJKjOPH3XLXzyAyM/4ZYELMNJHgx2AC6UY0\nAcAB0YSkwpplsuuNVBBN4BUK6Z8I3BBNFGQgkpltmlniAowhmihYLrvphBNjiCaQJMIJiWgWPEIA\nuCGaBYxgAu54RVABIpbPsB4wHUTTo9jgp491h1QQTY9hg08N6w+pIpoeka8be67e3CIX64NXEkEi\nmvCYfP3ngcLB2XN4BsFEPiCa8IRcB5Ndc4xh99wjMvHRtLyMEHBHND3E9R3IXX5XsrfPRTxTvc+p\nxso/BLhg99zDpvMxtal+tO2LP5vvu63JLN9U6yTfx4jsYqbpA8nMAtO54edDRDKxDPkwLuQ/oukj\nft3o/ToueBO75wDggGgCgAOiCQAOiCYAOCCaAOCAaAKAA6IJAA6IJgA4IJoA4IBoAoADogkADogm\nADggmgDggGgCgAOiCQAOiCYAOCCaAOCAaAKAA6IJAA6IJgA4IJoA4IBoAoCDpKI5MjKiyspKbdy4\nUZI0MDCgWCymSCSiuro6DQ4OJm7b1NSkSCSiqqoqtba2ZmapASBHkorm0aNHtXTp0sTnT+/fv18r\nVqzQ9evXVVNTowMHDkiS2tvbdfz4cV29elWnT5/Wjh07NDo6mrmlB4AsmzKaXV1dOnfunD744AOZ\nmSSppaVF8XhckhSPx3XmzBlJ0tmzZ1VfX69Zs2YpHA5r0aJFamtry+DiA0B2TRnNPXv26LPPPtOM\nGf/dtK+vT8FgUJIUDAbV19cnSbp3755CoVDidqFQSN3d3eleZgDImUmj+c0336ioqEiVlZWJWeaL\nAoFAYrd9ou8DgF/MnOybV65cUUtLi86dO6ehoSH19/eroaFBwWBQvb29mjdvnnp6elRUVCRJKi4u\nVmdnZ+Lnu7q6VFxcnNkRAEA2WZIuXrxoGzZsMDOzvXv3WmNjo5mZHTx40Pbt22dmZjdu3LCKigp7\n8uSJ3blzxxYuXGijo6Pjfo8kLly4cMn7y0QmnWm+aGxX+5NPPlFDQ4MikYhKSkp08uRJSdLSpUu1\nc+dOLVu2TDNnztSJEyfYPQfgKwGb6GBlpu6QiALwgInSyCuCAMAB0QQAB0QTABwQTQBwQDQBwIHT\nU47SIcsn6wEgrZhpAoADogkADogmADjIajQvX76sqqoqRSIRffHFF9m865Ts2rVLwWBQ5eXlieu8\n/u71nZ2dWrNmjUpLS7V69WqdOHFCkvfHNTQ0pOXLlysajaqmpkaHDx+W5P1xSf77BIVwOKxIJKLK\nykpVV1dL8siYkn3DjlT9888/VlJSYh0dHTY8PGwVFRXW3t6erbtPyeXLl+23336zsrKyxHV79+61\nQ4cOmZlZY2PjS29aMjw8bB0dHVZSUmIjIyM5We7J9PT02O+//25mZvfv37dgMGjt7e2eH5eZ2ePH\nj83MbGhoyEpLS+3mzZu+GNfnn39u27Zts40bN5qZ9x+D4XDYHj58OO46L4wpa9G8cuWKrV+/PvH1\nwYMH7eDBg9m6+5R1dHSMi+bixYutt7fXzJ4FaPHixWZm9umnnybeAcrMbP369fbLL79kd2GnYcOG\nDfb999/7alwPHjywJUuW2J9//un5cXV2dtq6devswoULiXcb8/qYwuGwPXjwYNx1XhhT1nbPu7u7\n9cYbbyS+9vq7uvvp3etv376tGzduqKamxhfjGh0dVUVFhYLBoHbv3q0FCxZ4flx+/ASFQCCgtWvX\nqrKyUl999ZUkb4wpa8/T9PO7G3n53esHBwe1detWHT58WHPmzBn3Pa+Oa8aMGbp27Zru3r2r2tpa\nrVy5ctz3vTau5z9B4eLFi6+8jdfGJEk///yz5s+frz/++EO1tbVasmTJuO/n65iyNtN88V3dOzs7\nx/3n8Jqxd6+X5Nl3r3/69Km2bNmi7du3a/PmzZL8Ma4x4XBYtbW1unTpkqfHNfYJCm+++abq6+t1\n4cKFcZ+gIHlvTJI0f/58SdJbb72luro6tbW1eWNM2ToO8PTpU1u4cKF1dHTYkydPPHUiyOzlY5qp\nvHt9PhgdHbWGhgbbs2fPuOu9Pq779+/bo0ePzOzZMc2lS5faDz/84PlxjUnXJyjk2uPHj62/v9/M\nzP766y9bvHixfffdd54YU9aiafbsDx6NRq2srMyOHj2azbtOydatW23+/Pk2e/ZsC4VCdvz4cevv\n77fNmzdbeXm5xWIxGxgYSNz+yJEjVlZWZtFo1C5fvpzDJZ/YTz/9ZIFAwCoqKiwajVo0GrXz5897\nflzXr1+3yspKi0Qi9t5779mxY8fMzDw/rjEXL15MnD338pju3LljFRUVVlFRYWvXrrUvv/zSzLwx\npqy/czsAeBmvCAIAB0QTABwQTQBwQDQBwAHRBAAHRBMAHPwf20WQlYlWB54AAAAASUVORK5CYII=\n" }, { "output_type": "display_data", "png": "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\nAAAAAElFTkSuQmCC\n" }, { "output_type": "display_data", "png": "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\n" }, { "output_type": "display_data", "png": "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\nJ01RUZG5e/duWozr008/Nfv37zd79+41xjh/HfT5fObx48ezrnPCmBIWzevXr5vdu3dH/93Y2Gga\nGxsT9fDL1t/fPyua69evN8PDw8aYvwO0fv16Y4wxH3/8cfQMUMYYs3v3bvPTTz8ldmGXYM+ePebb\nb79Nq3GNjo6aDRs2mN9++83x4wqHw2bnzp3mypUr0bONOX1MPp/PjI6OzrrOCWNK2O55JBLR66+/\nHv2308/qnk5nr79//77u3LmjysrKtBjXzMyMSktL5Xa7deTIEa1du9bx40rHb1BwuVzasWOHysrK\ndPbsWUnOGFPC3qeZzmc3cvLZ6ycmJlRXV6fm5matWrVq1m1OHVdWVpZu3bqlhw8fqqqqSlu2bJl1\nu9PG9fI3KFy9evWV93HamCTpxx9/VF5enn799VdVVVVpw4YNs25P1TElbKb577O6h8PhWX85nObF\n2eslOfbs9c+fP9e+fft04MAB1dTUSEqPcb3g8/lUVVWla9euOXpcL75B4Y033lB9fb2uXLky6xsU\nJOeNSZLy8vIkSW+++aZqa2vV29vrjDEl6jjA8+fPzbp160x/f7959uyZo14IMua/xzSXc/b6VDAz\nM2MaGhrM0aNHZ13v9HE9evTIPHnyxBjz9zHNwsJC89133zl+XC/E6hsUku3p06dmbGzMGGPM77//\nbtavX2+++eYbR4wpYdE05u8nPBAImOLiYnPmzJlEPvSy1NXVmby8PLNixQrj9XpNa2urGRsbMzU1\nNaakpMQEg0EzPj4evf/p06dNcXGxCQQCpru7O4lLPrcffvjBuFwuU1paagKBgAkEAuby5cuOH9ft\n27dNWVmZ8fv95p133jHnzp0zxhjHj+uFq1evRl89d/KYHjx4YEpLS01paanZsWOH+fzzz40xzhhT\nws/cDgBOxieCAMAC0QQAC0QTACwQTQCwQDQBwALRBAAL/weVtuUxA34wzwAAAABJRU5ErkJggg==\n" } ], "prompt_number": 99 }, { "cell_type": "markdown", "metadata": {}, "source": "**Comments** : \n\nAs the figure illustrates, convex_hull_image() gives the smallestpolygon which covers the white or True completely in the image." } ], "metadata": {} } ] }