{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Digital Image and Processing Example\n", "\n", "This notebook provides a simple example of digital image representation and simple processing using Open CV." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Import necessary libraries\n", "import cv2\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Step 1: Load an image from a file" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "image_path = 'images/chess_board.bmp'\n", "# Source: https://commons.wikimedia.org/wiki/File:Affine_Transformation_Original_Checkerboard.jpg\n", "\n", "# image_path = 'images/Lena.png'\n", "# Image of Lena Forsén used in many image processing experiments\n", "# Source: https://en.wikipedia.org/wiki/Lenna\n", "\n", "original_image = cv2.imread(image_path)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Step 2: Display the loaded image in its original format" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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q0AgoIceekg7d+486h2dt2v+/PmqqKg47HWOJtxAJ4ICRyZPnqynnnpKH3zwQddvan3Vpk2bVF1drZtuusnR1x8yZIgsy1JVVZVGjhzZdXllZaXjzYezZs0aTZo0SU8//XS3yw8ePHjImYNb1qxZo+HDh2vt2rXdfhNu8eLF3a43ZMgQbdiwQYlEottZytfvs85f487Ly9Mll1xyHJfj+4b3UODIggULFA6HddNNNx3y8kwsFtPNN9+swsJCLViwwNHX73zmvHz58m6XP/bYY84Gf4NAINDtbECSVq9efUK9h9B5FvPVnf/85z/10UcfdbteRUWF0um0nnrqqa7LLMvS448/3u16ffv21cUXX6wVK1Zo//79h3y/hoYGk/PxPcIZChwZOXKkVq5cqenTp2vMmDGaM2eOhg0bpurqaj399NOKRqN68cUXdeqppzr6+uPGjdMvfvELLVu2TI2NjTr33HP1/vvva8eOHZLk+O/9+rrJkyfrgQce0OzZs3X++efrs88+0/PPP/+t/zHmd23y5Mlau3atpk6dqssvv1xVVVV64oknNHr0aLW2tnZdb8qUKTrnnHN05513qrKyUqeddppee+01xWIxSd3vs8cff1wXXHCBxowZo7lz52r48OGqq6vTRx99pL179xr973Dw/UFQ4NjVV1+t0047TQ899FBXRHr37q1Jkybp7rvv1o9+9KNj+vrPPfec+vfvrxdffFGvvPKKLrnkEr300ksaNWqUQqGQkdtw9913q62tTS+88IJeeukllZeXa926dbrrrruMfH0TZs2apQMHDmjFihX629/+ptGjR2vVqlVavXq13nvvva7rBQIBrVu3TvPmzdPKlSvl9/s1depULV68WBMmTOh2n40ePVqbN2/W/fffr2effVaNjY3q27evxo4dq0WLFrlwK3Ey8NlfP98HTmBbt27V2LFjtWrVKk2fPt3tOZ7w6quvaurUqfrggw80YcIEt+fgJMZ7KDhhHe4vi1y2bJn8fr8uvPBCFxad+L5+n2WzWT322GOKRCIqLy93aRW+L3jJCyesRx99VFu2bNGkSZMUDAb15ptv6s0339SNN96oH/zgB27POyHddtttSiaTOu+889Te3q61a9fqww8/1IMPPvid/bo2vr94yQsnrLffflv333+/vvjiC7W2tuqUU07RjBkzdM899zj+m4lP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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(5, 5))\n", "plt.imshow(cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB))\n", "plt.title('Original Image')\n", "plt.axis('off')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A digital image is represented as a matrix that contains the intensity values of its corresponding pixels. In our case, the image is stored as a NumPy array. Color images have 3 channels (Red, Green and Blue), so the array has dimensions (image_height, image_width, 3):" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Image dimensions = (159, 159, 3)\n" ] } ], "source": [ "image_shape = original_image.shape # Get the image size\n", "print(f\"Image dimensions = {image_shape}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Step 3: Display the Red, Green, and Blue channels as 3 independent images\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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XrZkyZLYf//9Y+rUqXHeeedFYWFh/PCHP4xjjz02fvzjH8dxxx0XEREvvfRSHHLIIdHa2tp53M033xwjRozI+30bGxvjN7/5Tbzvfe+L7bffvtd577zzzqivr48FCxZEQUFBXHHFFXH88cfH0qVLY7vttouIiF//+texdOnSOO2002LSpEmdT2ldsmRJ/PGPf+xWMHPmzIkdd9wxLr300njiiSfilltuiQkTJsTll1/e5bhHHnkk7rnnnvjMZz4TxcXF8Z//+Z/xkY98JJYvXx4lJSUREbF69ep4z3ve0zlUlZaWxgMPPBDz58+Purq6OOuss3p9XQH6g5/97Gcxc+bM2Hfffbfo81pbW+OII46IAw44IK666qoYOXJkREQsWLAgFi1aFKeddlp84QtfiMrKyrj++uvjySefjD/84Q+dt+W33357nHrqqXHEEUfE5ZdfHo2NjXHjjTfGAQccEE8++WSXOxFtbW1xxBFHxL777htXXXVVPPjgg3H11VfHjBkz4tOf/vRrZnzkkUdi/fr1cdZZZ8XgwYN7fd0+//nPx9ixY+P888+PqqqquOaaa+Jzn/tc/M///E/nMYsWLYqioqL40pe+FEVFRfHQQw/Ft771rairq4srr7yyy9fbsGFDHHnkkXH88cfHnDlz4kc/+lGce+65seeee8ZRRx3V5djLLrssBg0aFF/5yleitrY2rrjiijjppJPiT3/6U+cxDz30UBx11FExe/bsOP/882PQoEGxcOHCOPTQQ+P3v/99tyENYCCora2NdevWRS6XizVr1sR1110XDQ0NcfLJJ/fZ97jkkkvim9/8ZsyZMyc++clPxtq1a+O6666L973vffHkk0/GmDFjXvNz77///thpp5226KXZvbl/8ec//zkeffTRmDt3bkybNi2qqqrixhtvjIMPPjieeeaZzn7t0JuOioioqKiIE044IebPnx+nnnpq3HrrrTFv3ryYPXt27L777hHxr/tsBx10UKxcuTIWLFgQ22+/fTz66KPx1a9+NVatWhXXXHNNr68r27gc5HK5hQsX5iIi9+CDD+bWrl2bW7FiRe5HP/pRrrS0NDds2LDcihUrOo897LDDcnvuuWdu8+bNnZe1t7fn9ttvv9zOO+/cedlZZ52Vi4jcn/70p87L1qxZkxs9enQuInKVlZWvmedvf/tbLiJyX/ziF3uVv7KyMhcRuZKSktz69es7L//pT3+ai4jc/fff33lZY2Njt8+/6667chGR+93vftd52fnnn5+LiNzpp5/e5djjjjsuV1JS0uWyiMgNHTo0V1FR0e06XHfddZ2XzZ8/Pzd58uTcunXrunz+3Llzc6NHj+7M1nF9Fi5c2KvrD5CF2traXETkjj322G4f27BhQ27t2rWdf15523vqqafmIiJ33nnndfmc3//+97mIyN1xxx1dLv/lL3/Z5fL6+vrcmDFjcmeccUaX41566aXc6NGju1ze8b0uuuiiLse+853vzM2ePft1r9+1116bi4jcvffe+7rHdejo0sMPPzzX3t7eefn/+3//Lzd48OBcTU1N52U9ddGCBQtyI0eO7NKvBx10UC4icrfddlvnZU1NTblJkyblPvKRj3Re9vDDD+ciIve2t70t19TU1O06LF68OJfL/auvd95559wRRxzRJWNjY2Nuxx13zL3//e/vdn1er68BstZxW/XqP8OGDcstWrSo2/ERkTv//PM7//vUU0/NTZ8+vdtxHfcFOlRVVeUGDx6cu+SSS7oct3jx4tyQIUO6Xf5KHX354Q9/uNfXq7f3L3rqk8cee6xbd2xJR02fPr3bfaM1a9bkhg0blvvyl7/cednFF1+cKywszD333HNdvv95552XGzx4cG758uVdrs8rzztvLV5qRxeHH354lJaWRllZWZxwwglRWFgY9913X0ybNi0iItavXx8PPfRQzJkzJ+rr62PdunWxbt26qK6ujiOOOCLKy8s7fwveL37xi3jPe97T5ZHT0tLSzpdTvJ66urqIiB5fYvd6TjzxxC7Pzup4qeDSpUs7L3vlM642b94c69ati/e85z0REfHEE090+5pnnnlml/8+8MADo7q6ujNjh8MPPzxmzJjR+d9vf/vbY9SoUZ3fO5fLxY9//OP4t3/7t8jlcp3nbt26dXHEEUdEbW1tj98foL/quB0sKirq9rGDDz44SktLO//ccMMN3Y559bON7r777hg9enS8//3v73IbOXv27CgqKoqHH344Iv71zNWampr42Mc+1uW4wYMHx7777tt53Cv1dFv+ym54veu3pV30qU99qsuzZw888MBoa2uLZcuWdV72yi7q6NMDDzwwGhsb4x//+EeXr1dUVNTlEfuhQ4fGPvvs02P+0047LYYOHdrle0e83INPPfVUlJeXx8c//vGorq7uPHcbN26Mww47LH73u995eQQwIN1www3x61//On7961/H97///TjkkEPik5/8ZNxzzz198vXvueeeaG9vjzlz5nTpnkmTJsXOO+/cY/d0eKN9ku/+RUTXPmlpaYnq6uqYOXNmjBkzpsf7Fr3pqIiI3XbbrbNDIv51P26XXXbp8r3vvvvuOPDAA2Ps2LFdzsnhhx8ebW1t8bvf/W6Lri/bLi+1o4sbbrghZs2aFbW1tXHrrbfG7373uxg2bFjnxysqKiKXy8U3v/nN+OY3v9nj11izZk1MnTo1li1b1uNLL3bZZZe8OUaNGhUR//phfEu8+mV5HSPUK98bZP369XHhhRfGD37wg1izZk2X42tra7foa3bk7Om4jmM7vvfatWujpqYmbr755tf8bRWvzgPQn3X8AN3Q0NDtYzfddFPU19fH6tWre3yZw5AhQzof1OhQXl4etbW1MWHChB6/X8dtZHl5eUREHHrooT0e98rb5oiI4cOHR2lpaZfLXnn7/FpSdtGSJUviG9/4Rjz00EPdHsh4dRdNmzat28vAx44dG08//fQWf++Oc3fqqae+Zv7a2touD+IADAT77LNPlzcX/9jHPhbvfOc743Of+1wcc8wxXUb5N6K8vDxyuVzsvPPOPX6846XgPemrPono3l8d70e4cOHCWLlyZeRyuc6Pbel9my393uXl5fH0009369gO7tvQwfBEF6+8wT722GPjgAMOiI9//OPxz3/+M4qKijofBf3KV74SRxxxRI9fY+bMmW86x8yZM2PIkCGxePHiLfq813oPjlfeAM+ZMyceffTROPvss+Md73hH5/U68sgje3yUtzdfszfHdXztk08++TV/4H/729/e4+UA/dHo0aNj8uTJPf6G0Y4HHl795qYdhg0b1u033bW3t8eECRPijjvu6PFzOn6w7bg9vf3222PSpEndjnv1G8luyfszvdKuu+4aERGLFy+OY489ttefl68Pampq4qCDDopRo0bFRRddFDNmzIjhw4fHE088Eeeee263LuptD/Xm2I6vfeWVV8Y73vGOHo/t6RlsAAPNoEGD4pBDDolrr702ysvLO9+X6NV6egPxiOj2yx7a29ujoKAgHnjggR5va1/vtnPUqFExZcqULf6N3L25/f/85z8fCxcujLPOOive+973xujRo6OgoCDmzp2b9L5NxL/Oyfvf//4455xzejx21qxZPV7OW4/hidc0ePDguPTSS+OQQw6J66+/Ps4777zYaaedIuJfi/7hhx/+up8/ffr0zkdWX+mf//xn3u89cuTIOPTQQ+Ohhx6KFStWdPltSG/Ghg0b4je/+U1ceOGF8a1vfavz8p5y9rXS0tIoLi6Otra2vOcOYKA4+uij45ZbbonHH3/8Tb8p9YwZM+LBBx+M/fff/3V/EUXHyw4mTJiQ9Pb0gAMOiLFjx8Zdd90VX/va197wgPVqv/3tb6O6ujruueeeeN/73td5eWVlZZ98/dfTce5GjRqli4BtXmtra0T0/MzcDmPHjo2amppul7/6pWczZsyIXC4XO+644xsaVI455pi4+eab47HHHov3vve9W/z5r+VHP/pRnHrqqXH11Vd3XrZ58+Yer1NfmzFjRjQ0NOgT8vIeT7yugw8+OPbZZ5+45pprYvPmzTFhwoQ4+OCD46abbopVq1Z1O/6Vv4rzgx/8YPzxj3+Mxx9/vMvHX+uR7Fc7//zzI5fLxSmnnNJjWfz1r3+N//7v/96i69Nxp+HVi/7W+I0LgwcPjo985CPx4x//uMdHO179a0wBBoJzzjknRo4cGaeffnqsXr2628d7elbOa5kzZ060tbXFxRdf3O1jra2tnT9EH3HEETFq1Kj4zne+Ey0tLd2O7avb05EjR8a5554bzz77bJx77rk9Xpfvf//7XXquN3rqoubm5vjud7/75gL3wuzZs2PGjBlx1VVX9ditugjYVrS0tMSvfvWrGDp0aLztbW97zeNmzJgRtbW1XV6+vGrVqrj33nu7HHf88cfH4MGD48ILL+zWB7lcLqqrq183zznnnBOFhYXxyU9+sse+fP755+Paa6/tzVXrYvDgwd3yXHfddd2esZXCnDlz4rHHHov//d//7faxmpqazuEPPOOJvM4+++z46Ec/GosWLYozzzwzbrjhhjjggANizz33jDPOOCN22mmnWL16dTz22GPxwgsvxN/+9reI+NeN6+233x5HHnlkfPGLX4zCwsK4+eabY/r06T2+L8Wr7bfffnHDDTfEZz7zmdh1113jlFNOiZ133jnq6+vjt7/9bdx3333x7W9/e4uuy6hRo+J973tfXHHFFdHS0hJTp06NX/3qV1vlUeaIf/2a64cffjj23XffOOOMM2K33XaL9evXxxNPPBEPPvhgrF+/fqvkAOgrO++8c9x5553xsY99LHbZZZc46aSTYq+99opcLheVlZVx5513xqBBg7q9n1NPDjrooFiwYEFceuml8dRTT8UHPvCB2G677aK8vDzuvvvuuPbaa+OEE06IUaNGxY033hinnHJK7L333jF37twoLS2N5cuXx89//vPYf//94/rrr++T63f22WfHkiVL4uqrr46HH344TjjhhJg0aVK89NJL8ZOf/CQef/zxePTRR7foa+63334xduzYOPXUU+MLX/hCFBQUxO23375FI90bNWjQoLjlllviqKOOit133z1OO+20mDp1aqxcuTIefvjhGDVqVNx///3JcwD0tQceeKDzlzOsWbMm7rzzzigvL4/zzjuv23v/vdLcuXPj3HPPjeOOOy6+8IUvRGNjY9x4440xa9asLm/OPWPGjPj2t78dX/3qV6OqqiqOPfbYKC4ujsrKyrj33nvjU5/6VHzlK195ze8zY8aMuPPOO+PEE0+Mt73tbfGJT3wi9thjj2hubo5HH3007r777pg3b94WX+9jjjkmbr/99hg9enTstttu8dhjj8WDDz4YJSUlW/y1ttTZZ58d9913XxxzzDExb968mD17dmzcuDEWL14cP/rRj6KqqirGjx+fPAf9n+GJvI4//vjOR0c7xpK//OUvceGFF8aiRYuiuro6JkyYEO985zu7vHxt8uTJ8fDDD8fnP//5uOyyy6KkpCTOPPPMmDJlSsyfP79X33vBggXx7ne/O66++uq47bbbYu3atVFUVBR77713LFy4sMc3rM3nzjvvjM9//vNxww03RC6Xiw984APxwAMPxJQpU7b4a22piRMnxuOPPx4XXXRR3HPPPfHd7343SkpKYvfdd4/LL788+fcHSOHDH/5wLF68OK6++ur41a9+FbfeemsUFBTE9OnT4+ijj44zzzwz9tprr159re9973sxe/bsuOmmm+JrX/taDBkyJHbYYYc4+eSTY//99+887uMf/3hMmTIlLrvssrjyyiujqakppk6dGgceeGCcdtppfXbdBg0aFLfddlt8+MMfjptvvjmuuuqqqKuri9LS0s4HMrb0JRMlJSXxs5/9LL785S/HN77xjRg7dmycfPLJcdhhh73m+yf2pYMPPjgee+yxuPjii+P666+PhoaGmDRpUuy7776xYMGC5N8fIIVX3g8Z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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "r_channel, g_channel, b_channel = cv2.split(original_image)\n", "\n", "plt.figure(figsize=(15, 5))\n", "\n", "plt.subplot(1, 3, 1)\n", "plt.imshow(r_channel, cmap='gray')\n", "# plt.imshow(r_channel, cmap='Reds_r')\n", "plt.title('Red Channel')\n", "plt.axis('off')\n", "\n", "plt.subplot(1, 3, 2)\n", "plt.imshow(g_channel, cmap='gray')\n", "# plt.imshow(g_channel, cmap='Greens_r')\n", "plt.title('Green Channel')\n", "plt.axis('off')\n", "\n", "plt.subplot(1, 3, 3)\n", "plt.imshow(b_channel, cmap='gray')\n", "# plt.imshow(b_channel, cmap='Blues_r')\n", "plt.title('Blue Channel')\n", "plt.axis('off')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Step 4: Convert the original image to grayscale and display it\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAAGrCAYAAADn6WHYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAi+ElEQVR4nO3df3DU9Z3H8dduks1ukk0gQAg/FGyoUKq2wAyePxDqFTJz9Ie94jXWCuiMtZ7FWuvQHypt1SvT9rDttQe19YotxM4V67SnHVtBPIextmqBWst4BskPSMzP3SSb7G72x/dzfzjZISTKsnzoly99PmaYId/9bvL+7neT536/3yX4jDFGAACcJr/bAwAAzg0EBQBgBUEBAFhBUAAAVhAUAIAVBAUAYAVBAQBYQVAAAFYQFACAFQQFyMP69es1d+5ct8cAzmoEBe+oublZn/3sZ3XhhReqrKxMZWVlWrhwoW677Ta98sorbo/nWV/72tfk8/nU29vr9iiANcVuD4Cz15NPPqlPfOITKi4u1vXXX6/3ve998vv9eu211/T4449r27Ztam5u1pw5c9weFcBZgKBgQm+88YYaGho0Z84cPfPMM5oxY8aY27/5zW9q69at8vvf+SB3eHhY5eXlZ3JUAGcJTnlhQt/61rc0PDys7du3j4uJJBUXF+v222/Xeeedl1u2fv16VVRU6I033tA//dM/KRwO6/rrr5ck7du3T9dee63OP/98lZaW6rzzztPnP/95JRKJ3P23b98un8+nAwcOjPt63/jGN1RUVKT29nZJUlNTkz7+8Y+rtrZWwWBQs2fPVkNDgwYGBsbcb+fOnVq6dKnKyso0efJkXXXVVXr66adzt//617/W6tWrNXPmTJWWlqqurk7333+/stnsSR8jx3H03e9+V+9973sVDAY1ffp03XLLLYpGoye970RWrFihiy66SK+88oqWL1+usrIyzZs3T4899pgk6bnnntOll16qUCik+fPna8+ePWPu39raqn/913/V/PnzFQqFNGXKFF177bVqaWkZ97VGv0YoFNLs2bP1wAMP5B7/E9d/6qmntGzZMpWXlyscDmv16tX661//WtA24tzGEQom9OSTT2revHm69NJLT+l+mUxG9fX1uvLKK/Xv//7vKisrkyTt2rVL8Xhct956q6ZMmaIXX3xR3//+93Xs2DHt2rVL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hRcqk8lox44dKioqyl24nzdvnu6++27df//9WrZsmf75n/9ZpaWleumllzRz5kxt3rxZl19+uSZPnqx169bp9ttvl8/n044dO/KK5fLly3XLLbdo8+bNOnjwoFatWqWSkhI1NTVp165d+t73vqc1a9ac9PPY9KEPfUg7duxQVVWVFi5cqBdeeEF79uzRlClTxqy3ceNG7dy5UytXrtSGDRtybxs+//zzFYlEctdwKisrtW3bNt1www1avHixGhoaNG3aNLW1tek3v/mNrrjiCv3gBz/4m24jznIuvbsMHnH48GFz6623mnnz5plgMGhCoZBZsGCB+cxnPmMOHjw4Zt1169aZ8vLyCT/PoUOHzAc/+EFTUVFhpk6dam6++Wbz5z//edxbX0e9+eabpqioyFx44YXjbjty5Ii56aabTF1dnQkGg6a6utp84AMfMHv27Bm37k9+8hOzaNEiU1paaiZPnmyWL19udu/enbv9+eefN//wD/9gQqGQmTlzptm4cWPuLbnPPvvsmG07/m3Do370ox+ZJUuWmFAoZMLhsLn44ovNxo0bTUdHx9s8om95u7cNv/e97x237pw5c8zq1avHLZdkbrvtttzH0WjU3HjjjWbq1KmmoqLC1NfXm9dee83MmTPHrFu3bsx9Dxw4YJYtW2ZKS0vN7NmzzebNm81//Md/GEmms7NzzLrPPvusqa+vN1VVVSYYDJq6ujqzfv168/LLL7/jNuLvj8+YUzh3AfyN9Pb2asaMGdq0aZPuvfdet8f5u3DHHXfooYce0tDQ0Nu+CQB4J1xDwVnpkUceUTab1Q033OD2KOek43/ljST19fVpx44duvLKK4kJCsY1FJxV9u7dq0OHDunf/u3fdM011/CrPc6Qyy67TCtWrNB73vMedXV16b/+6780ODjI0SBOC6e8cFZZsWJF7i3AO3fu1KxZs9we6Zz0la98RY899piOHTsmn8+nxYsX66tf/SpvD8ZpISgAACu4hgIAsIKgAACsICgAACvyfpfXib8B1QuWLFmiH//4x+P+syavSCQSuvfee/Xggw+e0q86OZvU19frhz/8oWffrdXX16cNGzbo5z//udujFGzVqlXasGFD7rc1e01HR4e2bNmiP/3pT26PUpDRX9B54403KhAIuD1OwZYvX37SdThCAQBYQVAAAFYQFACAFQQFAGAFQQEA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oAAArCAoAAArCAoAwAqCAgCwgqAAAKwgKAAAKwgKAMAKggIAsIKgAACsICgAACsICgDACoICALCCoAAArCAoAAArCAoAwAqCAgCwgqAAAKwgKAAAKwgKAMAKggIAsIKgAACsICgAACsICgDACoICALCCoAAArCAoAAArCAoAwAqCAgCwgqAAAKwgKAAAKwgKAMAKggIAsIKgAACsICgAACsICgDACoICALCCoAAArCAoAAArCAoAwAqCAgCwotjtAQDYZ4zR4OCgksmkBgcHZYxxe6SCZbNZRaNRdXV1qaysTOFw2O2R8pLNZnP7YGhoyNP7IF8EBTgHZbNZdXV1qaenR11dXcpms26PVLB0Oq2Ojg6VlZVp1qxZqqiokM/nc3uskxqdOxKJqLe3l6Ac78iRI2dyjjOip6dHNTU1ete73uX2KAUJBALKZrM6cuSIJ76BJjIwMKDa2lr5/d48u1pWVpb7weAlmUxGXV1d6u3tVTqdVk1NjVKplNtjFaS8vFyJRELd3d0qLi5WSUmJJ74fRkZG1NXVpf7+fklSbW2tp8OeD5/JM5urVq0607NYN336dNXX12v69Oluj1KQTCajffv26eWXX3Z7lIJdcMEFWrVqlSorK90epSDxeFxPPPGEDh486PYop8QYo3g8rlQqpfnz5+vKK69UaWmp22MVZHBwUM8995yOHj2qYDCoUCjk9kh5yWazSiQSymQyev/736+lS5eqqKjI7bEK9oUvfOGk6+R9hLJ79+7TGsYNS5Ys0Z133qlFixa5PUpBEomEnnnmGe3Zs8ezh8v19fVasmSJ5s6d6/YoBenr69N///d/609/+pPboxRs3rx5uuSSSzxz7eFEHR0d+s1vfuPJsySS5PP5tHTpUi1atEiBQMDtcc4ob56HAACcdQgKAMAKggIAsIKgAACsICgAACsICgDACoICALCCoAAArCAoAAArCAoAwAqCAgCwgqAAAKwgKAAAKwgKAMAKggIAsIKgAACsICgAACsICgDACoICALCCoAAArCAoAAArCAoAwAqCAgCwgqAAAKwgKAAAKwgKAMAKggIAsIKgAACsICgAACsICgDACoICALCCoAAArCAoAAArCAoAwAqCAgCwgqAAAKwgKAAAKwgKAMAKggIAsIKgAACsICgAACsICgDACoICALCi2O0BAJxZ2WxWyWRSgUBAJSUl8vu98Toym80qk8loZGRE2WzW7XFOSyaTUTKZlCSVlJTI5/O5PFF+MpmMMplM3ut745kFoGADAwM6fPiwmpubNTw87PY4eRscHMzNnUgk3B7ntEQiETU1Nam1tVUjIyNuj5O3aDSqpqYmvf7663mtn/cRilde1RzP5/PJGCPHcdwepSCjr8qKioo8uw1e3weO48jv93vmFeVE0um0otGofD6fampqPLMvksmkIpGI+vv7lclkPLsP/H5/bluMMZo+fboCgYDbY+UlHo8rEonk/ZzxGWNMPitu3LjxtAZzQ3FxscLhsIqLvXtmb2hoyNOvzgKBgMLhsCdfkEhvRb2trU3RaNTtUQo2MjKieDwuv9+vmpoahUIht0fKSywWU19fnySpvLxcJSUlLk9UGGOMksmkEomEAoGApk2bptLSUrfHykt/f38uhE8//fRJ1887KKPn/7zk4MGD+tznPqdXXnnF7VEKEgwGdffdd+u2227z7KuzPXv26Atf+ILa2trcHqUg4XBYn/70p7V8+XK3RynYM888ox/96EeKxWLy+XyeeS4ZY2SMUW1trTZs2KBFixa5PVJBHMfR448/rh07diidTntyH0hvHemeTN4v3YPBYOFTuaSkpESpVMqTMZSUe+IFg0HPPAFP5PV9EAgE5PP5PHOKYiJ+v/+UL66eTbLZrIqKijy7DxzHkc/ny73J4FzmzfMQAICzDkEBAFhBUAAAVhAUAIAVBAUAYAVBAQBYQVAAAFYQFACAFQQFAGAFQQEAWEFQAABWEBQAgBUEBQBgBUEBAFhBUAAAVhAUAIAVBAUAYAVBAQBYQVAAAFYQFACAFQQFAGAFQQEAWEFQAABWEBQAgBUEBQBgBUEBAFhBUAAAVhAUAIAVBAUAYAVBAQBYQVAAAFYQFACAFQQFAGAFQQEAWEFQAABWEBQAgBUEBQBgBUEBAFhBUAAAVhAUAIAVBAUAYAVBAQBYQVAAAFYUuz0AcDZzHEd9fX06evSoysvLNWnSJPn9Z//rMMdxFI1GFY/HFYlE5DiO2yMVLJPJqKenR0ePHlU4HFZVVZV8Pp/bY51UJpPJ7YP+/n4ZY9we6YwjKMA7cBxHPT09am5u1vTp01VZWemZoPT29qqrq0vd3d2eD0pnZ6cqKio0e/ZsVVZWeiYonZ2dikQiikajfxdBOfu/MwAXGWOUzWblOI6nfiAYY+Q4jqdDcrzRbfHSPpDOvf1wMj7jtT0EADgrcYQCALCCoAAArCAoAAArCAoAwAqCAgCwgqAAAKwgKAAAKwgKAMAKggIAsOL/AaKLJ9WuWwhsAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "gray_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2GRAY)\n", "\n", "plt.figure(figsize=(5, 5))\n", "plt.imshow(gray_image, cmap='gray')\n", "plt.title('Grayscale Image')\n", "plt.axis('off')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The gray scale image is also an array, but it only has one chanel (gray). Therefore, the dimensions of the array are now (image_height, image_width):" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(159, 159)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gray_image.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our image array is composed by 8-bit integer numbers: \n", "- 0 = lowest intensity (black)\n", "- 255 = highest intensity (white - for a gray scale image)\n", "\n", "Check the content around the center of the array:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Pixels: (74:84, 74:84)\n", "[[ 0 0 0 0 0 192 192 192 192 192]\n", " [ 0 0 0 0 0 192 192 192 192 192]\n", " [ 0 0 0 0 0 192 192 192 192 192]\n", " [ 0 0 0 0 0 192 192 192 192 192]\n", " [ 0 0 0 0 0 192 192 192 192 192]\n", " [255 255 255 255 255 0 0 0 0 0]\n", " [255 255 255 255 255 0 0 0 0 0]\n", " [255 255 255 255 255 0 0 0 0 0]\n", " [255 255 255 255 255 0 0 0 0 0]\n", " [255 255 255 255 255 0 0 0 0 0]]\n" ] } ], "source": [ "y1 = int(image_shape[0]/2 - 5)\n", "y2 = int(image_shape[0]/2 + 5)\n", "x1 = int(image_shape[1]/2 - 5)\n", "x2 = int(image_shape[1]/2 + 5)\n", "\n", "print(f'Pixels: ({y1}:{y2}, {x1}:{x2})')\n", "print(gray_image[y1:y2,x1:x2])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Step 5: Apply a smoothing filter (convolution with a mask) to the grayscale image\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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u9e99rWvxZ133on/9J/+EwDgj/7oj/DJT34S3/u934tz5865191zzz149atfjV/+5V9euW/f9E3fhNtvv73yHvv7+65NZVniIx/5CF73utehLEt86Utfco/77rsPly5dwu/8zu8AAH75l38ZN998M17/+te79xsOh/irf/WvrtyeZXz/93+/+/7s2bN4yUtegp2dHXznd36ne/4lL3kJzp4969oOAGmaott9ZlnP53N8+ctfxu7uLl7ykpe4dgPARz/6UVy4cAH333+/e67f7+PNb35zpR2f/OQn8Qd/8Af4y3/5L+PLX/6yG4vRaIRXvepV+K//9b9isVhcc3+N6wPblDdqecUrXoF/+2//LbIswyOPPIJ/9+/+Hd7znvfg9a9/PT75yU/irrvucq99wQteUPndM2fOAABuueWW2uefeuopAM/U8IFnHKPPnXfeif/23/7bia/7U3/qT+FjH/sYRqMRdnZ2TuyX31YAuOGGG1yb/uRP/gRPP/00PvjBD+KDH/xg7XvwYMLFixdxxx13oNPpVH5e187T0O/38ZznPKfy3JkzZ/D85z//yN86c+aMazsALBYLvPe978U//sf/GJ/73Ocwn8/dz77iK77CfX/x4kXcfvvtR97vjjvuqPz7D/7gDwAAb3zjG5e299KlS7jhhhtW7J1xPWOCYhxLkiR4xStegVe84hV48YtfjAceeAAPPfQQfuzHfsy9Joqi2t9d9nwZ8H+dPqlNjLa/+7u/e6kTveeee9bTuP/PtYznT/zET+Dv//2/jze96U14xzvegXPnzqHb7eJv/a2/dVWZBH/nXe96F1760pfWvmZ3d/fU72tcn5igGCvz8pe/HMAzJagmuPXWWwEAv//7v49v/MZvrPzs93//993P9XU+n/nMZ3DjjTe67MSPuE/Lc57zHOzt7WE+n+ObvumbTmz/pz/9aZRlWfm7de1si1/8xV/EN3zDN+Cf//N/Xnn+6aefxo033uj+feutt+J3f/d3j7T9s5/9bOX3WB7c398/cTwMw/ZQjCM8/PDDtVkE9yqutaRDXv7yl+P8+fP4p//0n1aO2v7Kr/wKfu/3fg+vfe1rAQA333wzXvrSl+Jf/at/Vbmw+OlPfxq/+qu/im/+5m92z1FYrvZiYxRF+I7v+A585CMfwac//ekjP/+TP/kT9/03f/M34//+3/+LX/zFX3TPjcfjpaWyNoii6IjtHnrooSPHsO+77z48/vjjlT2x6XSKf/bP/lnldS972ctw++2346d+6qdweHh45O/peBiGZSjGEX7wB38Q4/EYf/Ev/kXceeedyLIMH//4x/HzP//zuO222/DAAw808nfiOMY/+kf/CA888ADuvfdevOENb8AXv/hFvPe978Vtt92Gt7zlLe6173rXu/Ca17wGr3zlK/F93/d9mEwmeN/73oczZ87gbW97m3vdy172MgDA3/27fxff9V3fhTiO8brXvW6l/RXyzne+Ew8//DC+9mu/Fm9+85tx11134cknn8Tv/M7v4Nd+7dfw5JNPAoD7FIHv+Z7vwf/8n/8TN998Mz70oQ9hOBw2Mj5Xw7d8y7fg7W9/Ox544AF83dd9HT71qU/hwx/+MF70ohdVXvfX/tpfw/vf/3684Q1vwA/90A/h5ptvxoc//GF3OIJZS7fbxc/8zM/gNa95De6++2488MADuHDhAh5//HE8/PDD2N/fx3/4D/+h9X4aG0qw82XGxvIrv/Ir5Zve9KbyzjvvLHd3d8skSco77rij/MEf/MHyi1/8YuW1AMof+IEfqDz3uc99rgRQvutd76o8//DDD5cAyoceeqjy/M///M+XX/M1X1OmaVqeO3eu/Ct/5a+Ujz322JF2/dqv/Vr59V//9eVgMCj39/fL173udeXv/u7vHnndO97xjvLChQtlt9utHCGua2tZluWtt95avvGNb6w898UvfrH8gR/4gfKWW24p4zgun/vc55avetWryg9+8IOV1128eLG8//77y+FwWN54443lD/3QD5Uf/ehHr+nY8M7OzpHX3nvvveXdd99d2/bXvva17t/T6bT84R/+4fLmm28uB4NB+fVf//Xlb/7mb5b33ntvee+991Z+99FHHy1f+9rXloPBoHzOc55T/vAP/3D5kY98pARQ/o//8T8qr/1f/+t/ld/+7d9efsVXfEWZpml56623lt/5nd9Z/vqv//qxfTSeXXTKMuAOqWEYG8WDDz6It7zlLXjsscdw4cKF0M0xtgwTFMN4ljKZTDAYDNy/p9MpvuZrvgbz+Rz/+3//74AtM7YV20MxjGcp3/7t344XvOAFeOlLX4pLly7hX//rf43PfOYz+PCHPxy6acaWYoJiGM9S7rvvPvzMz/wMPvzhD2M+n+Ouu+7Cz/3cz+Ev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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "kernel_size = 9\n", "smoothed_image = cv2.GaussianBlur(gray_image, (kernel_size, kernel_size), 0)\n", "\n", "plt.figure(figsize=(5, 5))\n", "plt.imshow(smoothed_image, cmap='gray')\n", "plt.title('Smoothed Image')\n", "plt.axis('off')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Check the values of the same pixels around the center of the image:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 0 3 13 35 74 119 157 179 189 192]\n", " [ 4 7 16 38 75 118 155 177 186 189]\n", " [ 17 19 28 47 79 117 149 168 177 179]\n", " [ 47 49 54 67 89 115 137 149 155 157]\n", " [ 98 98 99 101 106 111 115 117 118 119]\n", " [157 156 152 142 125 106 89 79 75 74]\n", " [208 205 197 176 142 101 67 47 38 35]\n", " [238 235 223 197 152 99 54 28 16 13]\n", " [251 247 235 205 156 98 49 19 7 3]\n", " [255 251 238 208 157 98 47 17 4 0]]\n" ] } ], "source": [ "print(smoothed_image[y1:y2,x1:x2])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Step 6: Apply Sobel filter to get the contours" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAAGrCAYAAADn6WHYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABf00lEQVR4nO3deZRcZ3kn/u/dl7q1dPUutZa2ZEmWvC+BxIdxwHGMY8eTMIQQJoPZyZnAQCDDGZKZwyRkMpNlAllmTsaTwUkYMwRDIJ5DwAnBYTMwjhfZli1ZWC1Z6lVdXXvd/d7fH/17X93qblndUkn1tng+5+jY6irJz6333vd5l+ctS2mapiCEEEIukNzvAAghhFweKKEQQgjpCUoohBBCeoISCiGEkJ6ghEIIIaQnKKEQQgjpCUoohBBCeoISCiGEkJ6ghEIIIaQnKKGQDdm5cyfuueeenv6dkiThP/7H/3jBf8/OnTvxtre9jf/+H//xHyFJEv7xH//xgv/uS2GzxUvISpRQLnPPPvss3vjGN2LHjh0wTRNbt27FHXfcgT/+4z/ud2gbcvz4cUiStOavV7/61ev+ez7zmc/gk5/85MUL9BL48z//c0iShH/6p3/qdyiEdFH7HQC5eB577DG89rWvxfbt2/Hud78bY2NjOHnyJL73ve/hD//wD/H+97+/3yFu2C/8wi/gp37qp7p+Njw8DAA4cuQIZPmVx0if+cxn8Nxzz+GDH/zgxQqRkB9alFAuY//pP/0nFItFPP744yiVSl2vLSws9CeoC3TjjTfiF3/xF9d8zTCMSxzNsiRJEAQBTNPsy3+fEFHQktdl7KWXXsKBAwdWJRMAGBkZ6fp9FEX4+Mc/jl27dsEwDOzcuRO/9mu/Bt/31/y7/+7v/g7XX389TNPE/v378dd//der3lOr1fDBD34Q27Ztg2EY2L17N37nd34HSZL05PpWWrmHstKP//iP48tf/jJOnDjBl8t27tzJX/d9Hx/72Mewe/duGIaBbdu24SMf+ciqz0CSJLzvfe/Dgw8+iAMHDsAwDHz1q18FAExPT+Md73gHRkdHYRgGDhw4gE996lOrYjl16hR+5md+BrlcDiMjI/iVX/mVs37W6/G2t70NjuPg5Zdfxj333APHcbB161b8t//23wAsL32+7nWvQy6Xw44dO/CZz3ym688vLS3hV3/1V3HNNdfAcRwUCgXcddddOHjw4Kr/1okTJ3Dvvfd2xf7II4+suf/z/e9/H69//etRLBZh2zZuu+02fOc73znv6yRioxnKZWzHjh347ne/i+eeew5XX331K773Xe96F/7iL/4Cb3zjG/HhD38Y3//+9/Gf//N/xgsvvIAvfvGLXe89evQofv7nfx6/9Eu/hPvuuw8PPPAAfu7nfg5f/epXcccddwAAOp0ObrvtNkxPT+O9730vtm/fjsceewwf/ehHMTs7e977GJ1OB4uLi10/KxaL0DTtnH/213/911Gv13Hq1Cl84hOfAAA4jgNgeZZx77334tvf/jbe85734KqrrsKzzz6LT3ziE3jxxRfxpS99qevv+vrXv47Pfe5zeN/73oehoSHs3LkT8/PzePWrX80TzvDwML7yla/gne98JxqNBl9mc10Xt99+O15++WX8m3/zb7BlyxZ8+tOfxte//vXz+kyYOI5x11134Z/9s3+G3/3d38WDDz6I973vfcjlcvj1X/91/Mt/+S/xhje8AX/6p3+Kt771rfjRH/1RTE5OAgCOHTuGL33pS/i5n/s5TE5OYn5+Hv/jf/wP3HbbbXj++eexZcsWAEC73cbrXvc6zM7O4gMf+ADGxsbwmc98Bo8++uiqeL7+9a/jrrvuwk033YSPfexjkGUZDzzwAF73utfhW9/6Fn7kR37kgq6XCCgll62/+7u/SxVFSRVFSX/0R380/chHPpI+8sgjaRAEXe97+umnUwDpu971rq6f/+qv/moKIP3617/Of7Zjx44UQPqFL3yB/6xer6fj4+PpDTfcwH/28Y9/PM3lcumLL77Y9Xf+u3/371JFUdKXX36Z/wxA+rGPfewVr2VqaioFsOavRx99lMd233338T/z6KOPdr2epml69913pzt27Fj193/6059OZVlOv/Wtb3X9/E//9E9TAOl3vvOdrnhlWU4PHTrU9d53vvOd6fj4eLq4uNj18ze/+c1psVhMO51OmqZp+slPfjIFkH7uc5/j72m32+nu3btXxbuWBx54IAWQPv744/xn9913Xwog/e3f/m3+s2q1mlqWlUqSlH72s5/lPz98+PCqz9zzvDSO467/ztTUVGoYRvqbv/mb/Gf/9b/+1xRA+qUvfYn/zHXddN++fV2xJ0mSXnnllemdd96ZJknC39vpdNLJycn0jjvueMVrJJsTLXldxu644w5897vfxb333ouDBw/id3/3d3HnnXdi69atePjhh/n7/vZv/xYA8KEPfajrz3/4wx8GAHz5y1/u+vmWLVvwsz/7s/z3hUIBb33rW/HUU09hbm4OAPDQQw/hNa95DQYGBrC4uMh//cRP/ATiOMY3v/nN87qm97znPfj7v//7rl/XXXfdef1dWQ899BCuuuoq7Nu3ryve173udQCwagR+2223Yf/+/fz3aZriC1/4An76p38aaZp2/R133nkn6vU6nnzySQDLn/f4+Dje+MY38j9v2zbe8573XPB1vOtd7+L/XiqVsHfvXuRyObzpTW/iP9+7dy9KpRKOHTvGf2YYBi9oiOMYlUoFjuNg7969PG4A+OpXv4qtW7fi3nvv5T8zTRPvfve7u+J4+umncfToUbzlLW9BpVLhn0W73cbtt9+Ob37zmxdt6ZP0Dy15XeZuueUW/PVf/zWCIMDBgwfxxS9+EZ/4xCfwxje+EU8//TT279+PEydOQJZl7N69u+vPjo2NoVQq4cSJE10/3717NyRJ6vrZnj17ACyX946NjeHo0aN45plneAXWSudbFHDllVfiJ37iJ87rz76So0eP4oUXXlh3vGypiDl9+jRqtRruv/9+3H///a/4d5w4cWLNz3Dv3r3nGz6A5Y59ZfzFYhETExOr/lvFYhHVapX/PkkS/OEf/iH++3//75iamkIcx/y1wcFB/u8nTpzArl27Vv19K++do0ePAgDuu+++s8Zbr9cxMDCwzqsjmwEllB8Suq7jlltuwS233II9e/bg7W9/Ox566CF87GMf4+9Z2UlciCRJcMcdd+AjH/nImq+zBCSKJElwzTXX4A/+4A/WfH3btm1dv7csa9WfB4Bf/MVfPGsneu211/Yg0rNTFGVDP08z//fv3/7t38Z/+A//Ae94xzvw8Y9/HOVyGbIs44Mf/OB5zSTYn/m93/s9XH/99Wu+h+1fkcsHJZQfQjfffDMAYHZ2FsDy5n2SJDh69Ciuuuoq/r75+XnUajXs2LGj68//4Ac/QJqmXQnoxRdfBABeNbVr1y60Wq2LMpu4EGdLmrt27cLBgwdx++23n1diHR4eRj6fRxzH57zmHTt24Lnnnlv1GR45cmTD/91e+fznP4/Xvva1+F//6391/bxWq2FoaIj/fseOHXj++edXxf6DH/yg68/t2rULwPJyqGj3ALl4aA/lMvboo492jUIZtmfClljYQcGVlVdstH733Xd3/XxmZqar8qvRaOAv//Ivcf3112NsbAwA8KY3vQnf/e538cgjj6z679dqNURRdJ5XdWFyuRzq9fqqn7/pTW/C9PQ0/uf//J+rXnNdF+12+xX/XkVR8C/+xb/AF77wBTz33HOrXj99+jT/95/6qZ/CzMwMPv/5z/OfdTqdsy6VXQqKoqy6Vx566CFMT093/ezOO+/E9PR01x6c53mrPrebbroJu3btwu///u+j1Wqt+u9lPw9y+aAZymXs/e9/PzqdDn72Z38W+/btQxAEeOyxx/BXf/VX2LlzJ97+9rcDAK677jrcd999uP/++1Gr1XDbbbfh//2//4e/+Iu/wM/8zM/gta99bdffu2fPHrzzne/E448/jtHRUXzqU5/C/Pw8HnjgAf6ef/tv/y0efvhh3HPPPXjb296Gm266Ce12G88++yw+//nP4/jx410j30vlpptuwl/91V/hQx/6EG655RY4joOf/umfxr/6V/8Kn/vc5/BLv/RLePTRR3HrrbcijmMcPnwYn/vc5/DII4/wmd3Z/Jf/8l/w6KOP4lWvehXe/e53Y//+/VhaWsKTTz6Jr33ta1haWgIAvPvd78af/Mmf4K1vfSueeOIJjI+P49Of/jRs274UH8Ga7rnnHvzmb/4m3v72t+PHfuzH8Oyzz+LBBx/EFVdc0fW+9773vfiTP/kT/MIv/AI+8IEPYHx8HA8++CA/1MlmLbIs48/+7M9w11134cCBA3j729+OrVu3Ynp6Go8++igKhQL+7//9v5f8OslF1r8CM3KxfeUrX0nf8Y53pPv27Usdx0l1XU93796dvv/970/n5+e73huGYfobv/Eb6eTkZKppWrpt27b0ox/9aOp5Xtf7duzYkd59993pI488kl577bWpYRjpvn370oceemjVf7/ZbKYf/ehH0927d6e6rqdDQ0Ppj/3Yj6W///u/31W6jA2UDf/e7/3eWd+znrLhVquVvuUtb0lLpVIKoKuEOAiC9Hd+53fSAwcOpIZhpAMDA+lNN92U/sZv/EZar9e74v3lX/7lNWOYn59Pf/mXfzndtm1bqmlaOjY2lt5+++3p/fff3/W+EydOpPfee29q23Y6NDSUfuADH0i/+tWvXlDZcC6XW/Xe2267LT1w4MCan9Xdd9/N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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sobel_x = cv2.Sobel(gray_image, cv2.CV_64F, 1, 0, ksize=5)\n", "sobel_y = cv2.Sobel(gray_image, cv2.CV_64F, 0, 1, ksize=5)\n", "sobel_magnitude = np.sqrt(sobel_x**2 + sobel_y**2)\n", "\n", "plt.figure(figsize=(5, 5))\n", "plt.imshow(sobel_magnitude, cmap='gray')\n", "plt.title('Sobel Filtered Image')\n", "plt.axis('off')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Conclusion\n", "\n", "After completing this notebook, you should understand the basics of digital image representation, and how to use OpenCV functions to execute simple image processing." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.5" } }, "nbformat": 4, "nbformat_minor": 2 }