{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Harris Detector: Algorithm\n", "\n", "1. Compute Gaussian derivatives at each pixel\n", "2. Compute second moment matrix M in a Gaussian window around each pixel\n", "3. Compute corner response function R\n", "4. Threshold R\n", "5. Find local maxima of response function (non maximum suppression)\n", "\n", "Psedo Code Reference -- GaTech Udacity Course\n", "\n", "## NOTE -- There are some issues with this code. Need to sort it out." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "# Import the OpenCV bindings\n", "import cv2\n", "# To Increase the image size\n", "pylab.rcParams['figure.figsize'] = (8.0, 8.0)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(-0.5, 479.5, 479.5, -0.5)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Load the Image\n", "im = cv2.imread('../data/features/checkerboard.png')\n", "# Convert the image to grayscale\n", "im_gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)\n", "imshow(im)\n", "title('Input Image')\n", "axis('off')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(-0.5, 479.5, 479.5, -0.5)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nIG2QClItAIBwCW0QB2kWGqRaAADhEtogDtIsNEi1AADCJbRBDADAWUAQAwBgEEEMAIBBoQ3iIG2Q\nClItAIBwCW0QB2mDVJBqAQCES2iDOEiz0CDVAgAIl9AGcZBmoUGqBQAQLqENYgAAzgKCGAAAgwhi\nAAAMCm0QB2mDVJBqAQCES2iDOEgbpIJUCwAgXEIbxEGahQapFgBAuAQyiH3f72qWadu2IpGI8SD0\nPE+u68rzPKN1WJZFT94hEokEoie+78t13UCsoARlnPi+L8dx6Mkh7XESlHMnGo2aLiNQPWmPkzf9\nlBrNd/gNruuq0Wh0/DDRaFTZbFbxeFyJROI9VfdulUpFa2tr2tvbM1qHbdvKZDLyPE+pVMpoLeVy\nWWtrayoWi0YvsrZtK5vNKhaLBWKcrK+va29vz+gFxbIsTU5OqlarKRaLGatDao2T9fV1FYtF4xfZ\nXC6nRCKheDxutI5qtar19XUVCgXjPZmcnNTg4OA7g+d9qlarWltbU6FQMH7Tlsvl3hnG9Xpdu7u7\nGhwc1PDw8Ine00h3v/rqq6+P+t7U1JRGR0d1//79jsEWj8eVyWQ0Pj7el5MnGo3KsqyOv3jP81Qq\nlbS5ualKpdLzOtqzS8uyjr1btyzrRz3pR/CcpCfFYlGbm5uqVqs9P3naPZGOfzRgWZZisZiy2ezB\njVsvWZalSCQi27a7HidbW1uqVCpGexKNRpXL5Q5uUnrptD0xOU6k1tiemJjQxMRE33rSzbnj+77K\n5bK2trZULpeN9iQWi2lyclK5XK7nYXySnniep3K5fHCNNT1OcrncWz3Z29vTDz/8oFgsprGxsSNf\n/8033/zqrfc8beH9UigUtLq6qlqtduxxsVhMU1NT8n2/b0sn09PTcl1Xa2trxx5XLpe1v7/fl2XH\ndqCVy2VlMhml0+kjj41EIsrlcvI8ry89iUQimpqakuM4evny5bHHFgoFVSoVOY7T87t63/dVKpVU\nKpU0OjqqwcHBI4+1bVvT09PyPK8vs79YLKaJiQk1m01tbm4ee2ypVFK1WpXrugcnfa+0A61cLmtk\nZOTYnliWpbm5Ofm+37eeZLNZeZ6nzc3NY8+JYrHY154UCgVVq1WNjo5qYGDg2ONnZ2f71pN4PK6x\nsTE5jqPd3d1jz4lyuaxarSbP8/p27pTLZQ0PD2toaOjY4xcWFvp2PUkmkxoZGVGj0VChUDj2918u\nl/X06dO+LE/7vn+icTI3N/fO64nruqrX63Ic58Q1BC6INzc31Ww2VS6Xjz2uPdPppy+//FK1Wq1j\nEPfjItLTfcz7AAAZGUlEQVTmeZ5WV1f19OlTLS0tHRvE/e5JPB7XtWvXVKlUOgZxP3viuq5evnyp\nBw8e6PLlyx1Dp589SafTunr16sHs/zj97sn6+rqePHmiS5cuHdsTSX1dfk2lUvrss89Ur9e1tbV1\nbBD3syeO4+jFixd68eKFLl682PEC28+eDA0N6bPPPlOpVOq45Nzv60l7nFy4cKFjEPezJyMjI7p8\n+bLy+bxu37597Gf2PE/1er0vdfi+r9XVVa2srOizzz479TgZGBjQhx9+eOxs+CiB26xVKBS0srKi\narVquhR98sknOnfunNEaPM/T9va2Hj16pFKpZLSWaDSqjz76SIuLi0br8H1fu7u7evjwoQqFgtFa\nksmkzp8/r/n5eaN1uK6rnZ0dPX782PhehUQioXPnzml+ft7oxqf2ufP48WMVi0VjdUitG7bFxUXN\nzMwYfd7qeZ52dnb06NEj4+NkcHBQi4uLmpqaMv4MenNzU48fP/5J15N0Oq2FhQWNjo6e+LWBmxE7\njnOqqX0/pFIpNZtNozX4vq9ms3mw9G2SZVlKpVJ9uzM9CcdxVKvVjI8V27aVTCaNbwSTFJhxYtu2\nEolEYM6der1uvCeRSETJZNL4RjCpde7s7+8H5tyJx+NGb9h6dY1tj/tTvfbUPxUwxPSuSQDoJYIY\nAACDCGIAAAwiiAEAMIggRuiY/p8gBIBeIogROmzWAnCWEMQIHWbEAM4Sghihw4wYwFlCEAMAYBBB\nDACAQQQxAAAGEcQIHTZrAThLCGKEDpu1AJwlBDFChxkxgLOEIEboMCMGcJYQxAAAGEQQAwBgEEEM\nAIBBBDFCh81aAM4Sghihw2YtAGcJQYzQYUYM4CwhiBE6zIgBnCUEMQAABhHEAAAYRBADAGAQQYzQ\nYbMWgLOEIEbosFkLwFlCECN0mBEDOEsCF8SxWEzpdFqRSMR0KSqVSqpUKkZrsCxLiURCAwMDikaj\nRmvxPE/lctl4TyQpHo9rcHBQsVjMaB3tnlSrVaN1SDoYJ0HoSaVSMd6TIJ07juOoUqmoVqsZX9FJ\nJBKBOHeC0hPLspRMJn/yudP+PI1G48SvNTs63yGbzWp8fFzPnz9XsVg0WsvNmzdVr9eN1mDbtqam\npuQ4jkZHR43W4jiObt26pVqtZrQO27Y1MTGhy5cvK5vNGq2lWq3q7t27KpfLRuuIRCLK5XK6dOmS\nMpmM0VpqtZru3bunRqNh9AIbiUQ0NTUlSRobGzNWhyRVKhXdv39flUpFnucZq6N97ly8eNH4uVMs\nFnX//n0VCgU5jmOsDsuyND09LemnjZNKpaLnz59rYmLiYNx1K3BBPDExoU8++UT5fP7YIPZ9X41G\nQ57nKR6P92UG/f3333d10kSjUcViMTmOo2az2dMaIpGIZmdnlc1mNTg4eOyx/e5Jo9HQ9evXT9ST\nZrPZ85OsfXMyPDxsvCfValXLy8tyXbfjsZFIRPF4vC89aYfO6Oio0ul0x+P39/fl+74SiYRsu7cL\nY7VaTbdv35bv+x2D+PC54zhOT4M7Go1qZmZG2WxWAwMDHY/f39+X53lKJBI9HyfFYlF37tyR67od\nf/ftcdKPnrTPnW7HSXu2mkqlev5IqFgs6u7duwef8ziHe9Lra6xlWZqdndX4+HjX48R1XaVSqR+d\nO7VaTc+fP1csFgt/EA8NDWl6elrJZPLY4xqNhlZXV1Wv1zU3N6fh4eGe17Kzs9PVcSMjI5qbm9PO\nzo5evHjR0xPHsiyl02ml0+mOJ4LjOFpbW1OlUtHc3FzPZ9Ce52l3d7erYzOZjKamprS1taWNjY2e\nzgIsy1IqlVIqlep4rOu6WllZ0f7+vhYWFno+ThzHUT6f7+rY0dFRzczMaHd3Vy9fvuwqvLtl2/bB\nOOnE8zw9efJEjuPo/PnzXb3mJBzH0d7enqTOG+vGxsY0PT2tra0tbW5u9rQnlmVpYGCgq4urJD19\n+lT7+/v6+OOPu35Nt07Sk5GREc3Oziqfz+vly5c9vWk7fD3pxqNHj9RoNHT58mUlEome1SG1ruHt\nUO2mJwsLC9ra2tL6+nrPVxVOMk6ePHmiSqWizz///Ec9icViGhsb6+q69KbAPSNOJpMaHh7u+Eyn\nXq/r4cOHunXrlgqFQl9q6eaOXpLGx8d17do1ffDBB33ZSGRZVlfv22w29fjxYy0vL3cdDifVbU8m\nJyd17do1zczM9HzGJb3uSae+uK6r+/fva3l5WaVSqed1SN33ZGJiQktLS5qfn+/LM8tue+L7vu7c\nuaPr16/37TnuSXryxRdfaHZ21mhPJOnu3bv67rvv+vaYodueZLNZLS0taWFhwXhPbty4oW+//fZU\nzz270W1PMpmMvvzyS83Pz/dl9fMkPbl9+7Z+53d+563HlkNDQ7p48aJyudyJf37ggti2bcVisY4X\nb9d1VSwWlc/ne75UcVLJZLKrpeN+8zzvoCf9OnG6lUqlDpYETe5y9jxPhUJBu7u7xnvSHieme+L7\nvvb29rS7u2v83EmlUhofH+9qxaff9vb2tL29bfR5pdTaTNUeJ/24iT2JfD6vra0to8+1peCcO9Lr\ncfJmT+LxuDKZzNmYEXfL9C/jsCDVAgAIl9AGsel/AnBYkGoBAIRLaIMYAICzgCAGAMAgghgAAINC\nG8RB2iAVpFoAAOES2iAO0gapINUCAAiX0AZxkGahQaoFABAuoQ3iIM1Cg1QLACBcQhvEAACcBQQx\nAAAGEcQAABgU2iAO0gapINUCAAiX0AZxkDZIBakWAEC4hDaIgzQLDVItAIBwCW0QB2kWGqRaAADh\nEtogBgDgLCCIAQAwiCAGAMCg0AZxkDZIBakWAEC4hDaIg7RBKki1AADCJbRBHKRZaJBqAQCES2iD\nOEiz0CDVAgAIl9AGMQAAZwFBDACAQQQxAAAGhTaIg7RBKki1AADCJbRBHKQNUkGqBQAQLqENYsuy\nZFmWbDsYH8HzPOOB3O5J+49Jvu8HoieSZNt2IMZJkHrSPncYJ68F5Xri+/7BH9OCdO4EpSdHXV9/\nyliO9qKwXnJdV41GQ57nHXtcJBJRJpNRNBpVIpF4T9W9W7Va1cuXL1UoFIzWYdu2xsbG5DiOksmk\n0VoqlYo2NjZUKpWMnjy2bSuTySgSiQRinGxsbKhYLHYc3/1kWZYmJiY0MDCgWCxmrA7p9blTKpWM\n9kSSJiYmFI1GFY/HjdZRq9X08uVL4+NEavUknU4rEokYraNWq2l9fV3FYtF4GI+Pj0vSWz1pNBra\n29vTwMCABgcHT/SeRrr71VdffX3U92ZmZpTNZnX//n3l8/kj38OyLMViMWWzWY2Pj3c8eVzXle/7\nfbm78zxP5XJZGxsbKpfLxx7bzzvMdk8ymYwmJiY6Bk+/e1IqlbS5ualKpXLsyWNZVt9OdMuyFI1G\nD8aJyZ74vq9yuazNzU2Vy2WjPYlEIsrlcpqYmOgYxu/j3DE9TiQd9CSXyx3bk8Mzn36Nk0qlcjBO\njgvjfvckGo1qcnJSk5OTx/6c99GTw9dYk+MkGo0ql8tpamrqRz8nn8/rzp07ikajGhsbO/L133zz\nza/ees/+lHp6nucdnPjHicVimp6elu/7ikaP/xi+72tra0uWZWl8fLznv6RSqaRardbVssTg4KAG\nBwe1u7ur/f39ntYRiUQ0OTkpz/O6mum8fPlSkUhEU1NTPa1Dkvb29lQul+U4Tse7+oGBAQ0PD2tv\nb0/VarWnddi2rZmZGfm+31VPNjY2JLVuCHutWCyqWq3KdV25rnvkcZZlHdxVt1/TS5ZlaX5+Xr7v\nd3UD2z53Jicne1qHJBUKBVUqFbmu2zFwUqmURkZGVCqVOt7wnsbc3FxXPWk2m9rd3VUkEtH4+HjP\nl/fb15Nuxkk6ndbQ0JDK5XJferK4uNjV9cRxnIOJ0/j4eM/DuFQq6dGjR12Nk4GBAQ0MDKhcLqtS\nqfS0Dkman59/Z08qlYoeP36swcFBnTt37kTvaX7x/w3xeLyrpRDLshSPx5VIJDoe63mebt68qTt3\n7qjZbPayXEmti1W9Xu/qvWdnZ3Xt2jWNjo72vI52T5LJZFc3G999951u3rzZ8zqk1z057kLSNjk5\nqWvXrh0s+fTS4XHSzcXh+++/1/Xr13teh/S6J47jHHucbduamprS0tKSJiYm+lJLIpFQMpns2JNG\no6Hl5eW+jxPHcTrOciYmJnT16tW+3DhK3fekVqvp9u3bunfvXl+WSbvtiW3bmpyc1JUrV5TL5Xpe\nh9TqSSqV6nizUavVdPfuXd27d6/j+D6Nk5w709PTunLlSl/PnXf1pNFoaHd391Q3zoEL4lgs1vNn\nEr7v6+HDh3r8+HFfBslJ5HI5Xbp0SUNDQ0brkKS7d+/q4cOHpstQNpvVpUuX+nJzclL37t3TvXv3\njNZg27ay2aw++eQT4z1xHEcPHjwwPk7a+x8uXLigbDZrtJb9/X09evRIz549C8T+h48//th4T+r1\nup48eaKnT592dfPdL7Zta3x8XB9//PGxy8P94LquqtXqqSZ7gVua7tduzvZSj+kH/e0bjU7L6e9D\ntVoNRB1B6kmtVjNdgqTg9MT3fdVqNeObdaTWs7kg9MTzvED0pL3/IZ1OG990d3icBOEam0qljIyT\n0+6aDtyMGACAnxOCGAAAgwhiAAAMIogBADCIIAYAwCCCGAAAgwhiAAAMIogBADCIIAYAwCCCGAAA\ngwhiAAAMIogBADCIIAYAwCCCGAAAgwhiAAAMIogBADCIIAYAwCCCGAAAgwhiAAAMIogBADCIIAYA\nwCCCGAAAgwhiAAAMIogBADCIIAYAwCCCGAAAgwhiAAAMIogBADAoarqAN/m+L8/z5Pt+T983nU4r\nHo/Lsqyevu9JNRoNVSoVOY5jtA5JGhgYUDqdNl2Gms2mKpWKms2m6VI0MDBgugRJr8eJ6Z5YlqV0\nOq1IJGK0Dik448S2baXTaaVSKaN1+L5/0JNGo2G0lnZPIpHIz/oaa9v2qT5/4IK4PbBc1+3Ze1qW\npU8++UTRaFTRqNmPvLGxodu3b6tYLBqtQ5IuX76sZDJpugxtb2/r9u3byufzpkvRpUuXTJcgz/O0\nvb2tH374wXhPYrGYLly4INs2u3jmeZ7y+bzu3r2r7e1to7WkUil9/PHHSiQSRkPH8zzt7Ozo3r17\n2tnZMVaHJCUSCZ0/f16WZRm9afM8T1tbW7p//752d3ff68+ORqMaGBhQLBY7+Wv7UM9P0mg0VK1W\nO97N+L6vRqMh3/cVi8WO/eXbtq3PP/9clmWdqkmdRCIRxWIxua7b8W59bW1Ne3t72tvb63kd7Ttk\nz/M69kSSrl271rcLbPump9lsdryp2tjYUKVS6cvNyUnGiSQtLS31vIa29jhxHOfY8e15njY2NlQu\nl1UqlfpSy/7+viQpHo8fOwZisdjBudMP7XHiOI5c1z1yJcz3fW1tbWl/f1+VSqUvtezv78v3fSUS\niWN7kkqldPny5VPPfjo5fD1xHOfInniep83NTVUqFVWr1Z7XIb3uSTKZPPazJpNJXbx4UZZl9WWy\n0+011vM8ra+vq1gs9m2c1Ot1ua6rVCr1o57E43FlMplTrTIGLojbDe8UEM1mU2tra2o0GpqZmdHQ\n0NCRx1qWpWw2K0l9CZ7h4WHNzs5qd3dX6+vrxy6rl8tlVSqVni+9S5LrulpfX1e1WtXMzIxGRkaO\nPT6Xy/W8hrbR0VFNTk5qe3tbW1tb8jzvyGOr1apqtVpfeuJ5nl68eKH9/X3Nz88fO04kaWJiouc1\ntI2MjGhqakr5fF6bm5tH3qD4vt/Xnvi+r+fPn8txHC0uLh574YhEIhofH+95DW3tnuzs7Ghra+vY\nnuzv76ter/elJ5K0srKi/f19nTt37thHFNFo9OB60o8gHh4e1vT0tPb29rS5uXnkTZvv+6rVagdh\n2Q9PnjxRo9HQpUuXFI/HjzwuFospk8lI6t81dm5uTtvb29rY2DjyevI+evLs2TNVKhV9+umnSiQS\n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\nLGAfU30AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Calculate the gradient in X direction\n", "# I skipped Gaussian Smoothening after the derivative\n", "i_x = cv2.Sobel(im_gray, cv2.CV_64F, 1, 0)\n", "imshow(i_x, cmap=gray())\n", "title('Gradient in X direction')\n", "axis('off')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(-0.5, 479.5, 479.5, -0.5)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeIAAAHpCAYAAABeLj9gAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtsZH2e3/XPOafuF5ft8qXtdne7r0/Pc5mZ3ZUmBJBA\nXJJIXAICBEIELRdFCQEkQEogCNKsFG5JyMAfBBRQVgFWIlIEQtyR2NGymZ2Z3X12nn3meWa22223\n23e3XXa5XHXqds7hj3JV232psvup6m892fdLau3T7VNVX3/9Pb/P+Z0qz0oAAAAAAAAAAAAAAAAA\nAAAAAAAAAOBr4Jmkv+/sv/+spL/6nl7333mPr3XesqRQknv29/9d0h97T69dOXt9AMDXxD8j6YeS\nTiXtSfqBpD855NdY08sgHpZlXQy7YfqXJX0pKXHu34qS9iX9oUs8flmjq+2870n6l0b8GoCJUZ88\nwLj4tyR9V9J/Imn+7M+fkPR36WIInTdu54czguf8byRtSfr3z/3bdyX9r5L+7yG/lvcVHhsNrQoA\nwHtXUGcX/I8POO6XJf0VdW6vnqqzs/2HJP2OpLKk55L+3CuP+WOS1iUdqHMr+vyO+JGk/+7csX+H\npO9LOpL0Y0l/z7mvfU/SL0n6dUknkv4vdXamOnvdUJ1bsRVJf+ANtZ9/reWz4//5s9penNX2Nrck\nlSR9S9IfVieYC2851pX0F8+e86mkP6WLO+Lv6eXO9Rcl/S1J/5k6/fkldS56/uJZXbvq9Dt17vn/\nqDq9KUtaOavnz0tqS/LPvv//4uzYUNKds/8uSPrr6uzkn0n6d/XywuUX1enrXzj7Plcl/ZE+/QAA\nDNkfkdTS4B3uL0s6lvQHz/6eVCcsPzr7+yfqhMcfPfv7h+oEw9+tTsD8pbPX6Qbxn9PLcLyuThh1\nA+AfOPt7N2y/J+mJpHvqBNOvSvqPzr52S4Nv/55/reWz4//rs+/hm5Lqkh72efy/KulTdULqH+1z\n3J+Q9NOz72fqrM7gXG2/KulfPPvvX1SnH3/q7OspSX9Z0v8saVJSTtL/Iuk/PDv+O+r0/+8/+/ui\npA/e8Lxd54P4r0v6nyRl1enX771SR1OdCwTn7HvY6vM9AgCG7J+TtPPKv3V3pjV1glTqBPEvD3iu\n76qzw5M6t3N/5dzXMpIaevOO+M+oExbn/Z/q7FqlTtCc37X+SUn/x9l/L2twEJ9/re7xi+e+/kNJ\n/3Sfx0ud98z/5oBj/l9Jf/zc3//BV2p7NYjXzx3rqHOn4c65f/uD6oS/1Llw+Etved1f1evvEXeD\n2FOn7+cvNP742WO6dTw597XM2WPn3vJawHsVsy4AeA8OJc2oExbh2b/9nWf/d0MvQySStPnKY/+A\npP9YnV1xQp0d5t84+9riK8fXzl7rTW5J+qck/SPn/i2mTrB17Z77b1+dHeNXcf75aursFvv5qTr9\n6GfhlWOeDzj+/LGz6oTgb5/7N0cv+78k6X/r81xve594RlJcF0P/uTq79q5XeyF1+rvf5/WA92Lc\nPowCjMJvqLNj+sfe4bG/os6t1CV1bqf+V3r53uO2pBvnjs3o5a3mVz1XZ8c6de5PXtJ/eokaLvNB\npWF9mGnQB8J2JN089/ebbzvwzPm6DtS5wPhQL3swKWni7Osb6tyaH/Q8rzpQ5xb48it1vXpRBYwl\nghi/HxxL+g8k/ZeS/gl1AtCV9G1d3CW+KYRy6tzCbqrzHuY/e+5rf1PSP6yXn7z+Jb39nPrv1dkN\n/yF1bqWmJP29urhre1sIvlBnJ3/3LV/v99irHHOZ5/gbkv51vXyP+N++xGO6QnV+1/m76uyOdfY8\n3V+T+m8l/Qvq3Np3z77WfY94T2///oOzuv68Oj+vW5L+DXV6Dow9ghi/X/wFSf+mpD+tzm3KXXV2\nt39anR2z1Nl1vbrz+lfUCdgTSf+epP/x3Ne+UOeDSL+izu64pIu3Ys8/36Y6H/L6s+rcDn2uzq9U\nOa8c/6bH1tQJmb+lzkXBd97w/b1a+5t2kIN2zW/6/l/1V9X5RPdnkn5LnYuRtz3mTc/3Z9T5NPQP\n1Plk9P8j6cHZ135TnSD+y+pcPH1PL3fc/7mkf1KdHn/3Da/1r0mqqvN+8/8n6X+Q9Nf61MGvQwEA\nAAAAAAAAAAAAgPduFP/btQM9evSID0oAAH7fefTo0Wu5y6emAQAwRBADAGCIIAYAwBBBDACAIYIY\nAABDY/f/fSmdTuvGjRu6du2a4vG4dTkAAAzUarW0u7urjY0N+b5/pceOXRCnUindvn1b3/zmN5XJ\nZKzLAQBgoFqtpt/93d/Vixcvvv5BXK1W9eMf/1hra2vyPM+6HAAABgqCQOVyWdVq9cqPHbsgbjab\n2tvb097ennUpAACMHB/WAgDAEEEMAIAhghgAAEMEMQAAhghiAAAMEcQAABgiiAEAMEQQAwBgiCAG\n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\nuSnf983qkKSJiQnduXNHCwsLpnVUKhV9/vnn2tzcVLVaNa0lm8325sRKFEUql8v64osvtLW1ZdoT\nz/NUKBTGoieVSkVffvmltra2VKlUzGqJx+Oanp7W7du3tbi4aFZHd06+/PJLbW9vm/fk/JxYrbFR\nFOno6EhffPGFtre3dXp6+t5e23VdZTIZeZ739Q9iz/OUzWaVTqf77oijKJLv+zo5OVGtVlMQBG89\ntnt1FovF9OzZs6FfrcViMeVyOU1MTCiRSPQ9thu+k5OTQ7+ajqJI9XpdJycnqlarfXsidQbn008/\nVaFQGGodUqcn+Xxe+Xx+YE/q9brCMNTk5KTS6fRQ6+j2pFwuD5yTrk8//VRra2tDrUO6/Jx0ZzuK\nopH0ROrM4fHxsarVat/zrLugxGKxkfXkqnNSKBSUTCaHXku9XtfR0dHATYDneb3/Xl1dHXodnucp\nn89rYmJC8Xj8revV+TkZZU9KpZJ83x/YkzAM5TjOSNbY8z0ZdO7UajVJUqFQUCqVGmod0su7EK/O\nSSwWk+M4ymQyV35Ok/sHjx49euuZfz6I+11VBEGgnZ0dff7551pbW1Oj0ej7mq7rKhaLXTiJhiWT\nyeiDDz7QJ598omKx2PfYKIrUbrcVBMFQb71LnbsJe3t7+vzzz/X06VPV6/W+x7uu+063US4jl8vp\n4cOH+vjjjzU5Odn3xBx1T3Z3d/XZZ59dek5G1ZNsNqsHDx7o448/1vT0dN/XGGVPoijS9va2Pv30\nU62vrw+8fTfqnpyfk0E9CYJg6G9bde3t7em3fuu3tLa2NrAnnucpFouNpCeZTKY3J8Vi0bQnu7u7\n+uEPf6j19fVLXdiPeo395je/qampKbP1RJL29/f1ox/9SKurqxd6kkwmtby8rPv37yuXy7318Y8e\nPXqt+LHbEXeb2G63+zY7DMML79U0m833WOVFqVRKruv2duhWuj3J5XKam5sbGDqj1L2Q8n1/JCfm\nZUVRNJZzUqlUTN9H675dMzc3Z/pZhVQqJcdxVKvV5HmeaU8kjUVPksmkXNdVvV43nxPXdVUoFDQ/\nP3+pu0mj0j13xmFOuufOqz2Jx+PK5XLvtN6N3Y646zKNjqKo98ea4zi9P5boyevoyevoyevoyevo\nyev69eQy9X0tdsRdl/3Bj8MP5rxxGthxQU9eR09eR09eR09e97djT/g9YgAADBHEAAAYIogBADBE\nEAMAYIggBgDAEEEMAIAhghgAAEMEMQAAhghiAAAMEcQAABgiiAEAMEQQAwBgiCAGAMAQQQwAgCGC\nGAAAQwQxAACGCGIAAAwRxAAAGCKIAQAwRBADAGCIIAYAwBBBDACAIYIYAABDBDEAAIYIYgAADBHE\nAAAYIogBADAUsy7gbaIoGniM4zi9P9aiKOr9sURPXkdPXkdPXkdPXkdPXtevJ+9a39gFcRAE8n1f\n9Xq97zfkuq6mp6d1+/ZtLSwsKJFIvMcqL6rX63r+/LnW1tZ0cnJiVofrupqcnNSdO3e0uLioZDJp\nVkutVtPz58/17NkznZ6emp08juNoenpa9+7d0/z8vGlPfN/X5uZmb04sF5SZmRndv39f8/PzisXs\nlgHf93tzUqlUTHsyNTWlDz74QNeuXVM8Hjero16va3NzU6urq+ZzMjU1pQ8//FDz8/PyPM+sju4a\nu7q6arqeSNLk5KS+8Y1vaGFh4UJPWq2Wdnd3tb29Ld/3r/ScYxfEURQpCAK1222FYfjW4zzPk+d5\nmpiY0NzcnFKp1Hus8qJqtapSqaQoitRqtczqcF1Xrusqn89rbm5O6XTarJZKpaLDw8NeT6xOnPM9\nmZ+fN5+To6MjSTLtidS5QOmeO5YXsaenp2MxJ9LLnszPz5v2pFar6ejoSI7jDFwHR811XRUKBfML\ntmq1qsPDQ0njc+682pN6va5qtfpOFyxjF8TxeFzFYlGe5/W9HeI4jlKplI6Pj/V7v/d7pldr7XZb\ntVpNc3NzmpycNKtDklKplE5OTvT48WPzntTrdc3OzmpqasqsDkljNyfFYlETExNmdUidnhweHsr3\nfbmu3UdF2u22fN8fi3MnmUyqVCqp0WiY9iQIgt6c5PN5szqkTk8ODg5UrVbNe+L7vmZnZ83nJJFI\nqFQqqV6vX+hJu93W8fGxms3mlZ9z7ILYdV1ls1llMplL/eDb7bbp7eDzrE+ariAIxqYnhULBugRJ\n4zUn1iHc1Wq1VC6XrcuQND7nTrvdpievaDab7xQuozDO504YhqrVagqC4MrPN3ZBHIahfN9Xu90e\niw8IAAAwSPftlXd5K2HsgjiKorG6AgMAYJT4PWIAAAwRxAAAGCKIAQAwRBADAGCIIAYAwBBBDACA\nIYIYAABDBDEAAIYIYgAADBHEAAAYIogBADBEEAMAYIggBgDAEEEMAIAhghgAAEMEMQAAhghiAAAM\nEcQAABgiiAEAMEQQAwBgiCAGAMAQQQwAgCGCGAAAQwQxAACGCGIAAAwRxAAAGCKIAQAwRBADAGCI\nIAYAwBBBDACAIYIYAABDBDEAAIYIYgAADBHEAAAYIogBADBEEAMAYIggBgDAEEEMAIAhghgAAEME\nMQAAhghiAAAMEcQAABgiiAEAMEQQAwBgiCAGAMAQQQwAgCGCGAAAQwQxAACGCGIAAAwRxAAAGCKI\nAQAwRBADAGCIIAYAwBBBDACAIYIYAABDBDEAAIYIYgAADBHEAAAYIogBADBEEAMAYIggBgDAEEEM\nAIAhghgAAEMEMQAAhghiAAAMEcQAABgiiAEAMEQQAwBgiCAGAMAQQQwAgCGCGAAAQwQxAACGCGIA\nAAwRxAAAGCKIAQAwRBADAGCIIAYAwBBBDACAIYIYAABDBDEAAIYIYgAADMWsC3hVq9XS0dGRyuWy\ngiCwLgcAgIE8z1OhUNDU1JTi8fiVHjt2QXx6eqrf+Z3f0WeffaZarWZdDgAAA2UyGX3rW9/Sd77z\nHU1NTV3psWMXxKlUSrdv31YqlVKz2bQuBwCAgRKJhBYWFpRKpa782LEL4nQ6rQcPHujBgwfWpQAA\nMHJ8WAsAAEMEMQAAhghiAAAMEcQAABgiiAEAMEQQAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALD1/wPPtdmIjxL1IAAAAABJRU5ErkJg\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Calculate the gradient in Y direction\n", "# I skipped Gaussian Smoothening after the derivative\n", "i_y = cv2.Sobel(im_gray, cv2.CV_64F, 0, 1)\n", "imshow(i_y, cmap=gray())\n", "title('Gradient in Y direction')\n", "axis('off')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Calculate the product of derivates in each direction\n", "i_xx = multiply(i_x, i_x)\n", "i_xy = multiply(i_x, i_y)\n", "i_yy = multiply(i_y, i_y)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Calculate the sum of product of derivates\n", "s_xx = cv2.GaussianBlur(i_xx, (5,5), 0)\n", "s_xy = cv2.GaussianBlur(i_xy, (5,5), 0)\n", "s_yy = cv2.GaussianBlur(i_yy, (5,5), 0)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(-0.5, 479.5, 479.5, -0.5)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nABiiiAEAMEQRAwBgiCIGAMAQRQwAgCGKGAAAQxQxAACGKGIAAAxRxAAAGKKIAQAwRBEDAGCIIgYA\nwBBFDACAIYoYAABDFDEAAIYoYgAADFHEAAAYoogBADBEEQMAYIgiBgDAEEUMAIChmCziKVOmqKqq\nSgMGDLCOAgDAJQ0cOFBVVVUqKSm5ouNjsoh9Pp/8fttoa9as0erVq00zeH33u99VXl6edQytWbPG\nOsKnCgsLNWnSJOsYMSUvL09TpkyxjgF87fj9fvl8PusYl8XF+jQ3N7szZ86Y54jM+vXr3XPPPefG\njBljmuHs2bPmexGZFStWuJdeeskVFBSYZVi1apWrrq52oVDIfD8kublz57r6+npXUlJiluGuu+5y\n1dXVrkePHub7IcmNHTvWzZ492zTD/PnzXVZWlvleRCY7O9vNnz/fNMPs2bNNH8+iJzMz0y1durQz\n1moncKEvdoIfGa3bYX/84x/1xBNP6NChQ9ZRJEknTpzQ4cOH9corr+j06dMmGeLi4vTP//zPOnjw\noMn60U6ePKnDhw/r0KFDev/9900yhEIhHTt2TAcPHpRzF/w71qnee+89vfbaazp06JDeeecdkwzB\nYFBvvvmmXnnlFX3yyScmGbz8fr+am5vV1NRkliEYDOrYsWNqbm42y+Dl9/vV0tKixsZGswzBYFAn\nTpwwezyL5vP5dO7cOb3++utf9lL3tFv7y17xIuwfsQAA6Hztejcm3yMGAODrgiIGAMAQRQwAgCGK\nGAAAQxQxAACGKGIAAAxRxAAAGKKIAQAwRBEDAGCIIgYAwBBFDACAIYoYAABDFDEAAIYoYgAADFHE\nAAAYoogBADBEEQMAYIgiBgDAEEUMAIAhihgAAEMUMQAAhihiAAAMUcQAABiiiAEAMEQRAwBgiCIG\nAMAQRQwAgCGKGAAAQxTxRezZs0cvvfSSdYxPLV68WPX19Zo8ebJZht27d6u+vt5s/WgVFRWqr69X\naWmpWYaamhrV19crPj7eLINXWVmZ6uvrNWfOHLMMDz/8sOrr69WnTx+zDF7FxcVatWqVaYaNGzdq\n3Lhxphm88vLy9MADD5hmuPvuu00fz6INHTpU27Zts47RqVysT3Nzszt37pyrq6szzyLJrV+/3i1f\nvtwlJiaaZWhsbHTOOfO9iMyKFSvcfffd55KTk80y9O3b1zU1NZn+XLwzd+5ct2XLFtetWzezDGlp\nae7gwYOuf//+5vshySUmJrqePXuaZujVq5eLj48334vIxMfHu169eplm6NmzZ8z8vZHkQqGQS0tL\n64y1YsYlg27ZssWdOXPGFRQUmP1QkpKSXFJSUsz8ooRCIRcMBk0zJCYmuqSkJPO98O5JKBQyzxEr\nvyOSXDAYjIk9SUhIcD6fzzwHw3TWTJ061W3evLkjt40ZV+2bDwQC5gUVFxcXUw86gUDA/ME4FAo5\nv99vvheR8fv9MbEngUDAfC8kuczMTPfyyy+7uLg4swzBYNA98MADrrKy0nw/pPCT78bGRtNXroFA\nwP3t3/6tq6qqMt+PyDjnXENDg+meLFiwwK1bt858LyLT3Nzszpw5c6XHt9Pl3yOeMWOGVqxYYZph\nx44dys7ONs3gVVJSovvvv980w4MPPqj8/HzTDF7jx4/X1q1bTTOsXbtW119/vWmGiNbWVqWmpuoX\nv/iFWYY777xTM2fO1JkzZ8wyeDnn5PP59Mwzz5hlmDFjhhYuXKgPP/zQLEO048eP68SJE2brl5SU\n6O/+7u90+vRpswzRmpqa1NTUdNXuz3fV7unyXPBZAQAAX3HterfLvyIGAKAro4gBADBEEQMAYIgi\nBgDAEEUMAIAhihgAAEMUMQAAhihiAAAMUcQAABiiiAEAMEQRAwBgiCIGAMAQRQwAgCGKGAAAQxQx\nAACGKGIAAAxRxAAAGKKIAQAwRBEDAGCIIgYAwBBFDACAIYoYAABDFDEAAIYoYgAADFHEAAAYoogB\nADBEEQMAYIgiBgDAUJcv4vT0dA0ZMsQ0Q25urpKTk00zePXu3VtZWVmmGUaMGKHu3bubZvDq0aOH\nhg8fbpohKytLvXv3Ns0QER8fr8LCQuXm5pplGDBggAoLC5Wenm6Wwcvv96uwsFDjxo0zy5Cenq7C\nwkINGDDALEO0wsJCjR8/3mz93r17q7Cw0Pxx3mvixIkqKCi4avfX5Yt45MiR+ta3vmWa4ZZbbomZ\nB1hJGjp0qIqLi00zrF69WqNHjzbN4JWZmambbrrJNMPy5cs1adIk0wwRKSkpWrRokaZPn26W4a/+\n6q+0bds23XjjjWYZvEKhkBYtWqRbb73VLMPIkSO1ZcsWlZeXm2WI9q//+q/6/ve/b7b+0KFDtWnT\nJs2bN88sQ7Rnn31WP/jBD6xjfGGO+WrPwoULXVZWlnmOWJrbb7/djR071jxHLM0tt9ziJk6caJ4j\nlmbKlCluypQp5jkis2XLFvMMEydOdNOnTzfPEZmtW7eedzk9Pd1VVla6goKCjhwfMzp947p16+aq\nqqrczJkzzX541113nauqqnKjRo0y/0WS5KqqqlxVVZWbM2eOWYZRo0a5qqoql5+fb74fktySJUtc\nVVWVW7BggWmOUaNGucLCQvP98O6LdYasrCxXUlJiniMyCxYscMFg0DxHLE1FRYVLSUkxz9HZc+21\n17r169d39MlCzOj0jcrMzHTOOVdbW2v2w1qxYoVzzrnKykrzXxxJ7oc//KFzzrn9+/ebZZg7d65z\nzrmqqirz/ZDkli1b5pxzrqGhwSzDyJEj3c6dO926devM9yMyzc3NbvXq1WbrDxkyxD355JPuoYce\nMt+LyDQ2Nrof//jHZuv369fPrV271t16663mexGZAwcOuM2bN7tQKGSyfvfu3d2iRYvM9+Fzpp3A\nhb7YCX7U2Qu2trbq9ddf1+7du/Xqq6929vKSpA8//FD79u3T888/r7ffftskg9cLL7ygY8eOadeu\nXTp48KBJhubmZr388st67rnndOLECZMMXi+++KKampr0q1/9Si+//LJJhuTkZLW0tOg3v/mNjh07\nZpIhWlNTk95//33t27fPZP3ExET5/X7V1tbq9ddfN8kQ7cSJEzp9+rR+//vfm6wfFxenjIwMNTY2\n6ujRoyYZop08eVIffPCB9u3bp3PnznX6+sFgUH369DF7POuge6K/4LNIoYs8KwAA4CuuXe92+U9N\nAwDQlVHEAAAYoogBADBEEQMAYIgiBgDAEEUMAIAhihgAAEMUMQAAhihiAAAMUcQAABiiiAEAMEQR\nAwBgiCIGAMAQRQwAgCGKGAAAQxQxAACGKGIAAAxRxAAAGKKIAQAwRBEDAGCIIgYAwBBFDACAIYoY\nAABDFDEAAIYoYgAADFHEAAAYoogBADBEEQMAYOhrU8RpaWmqra3Vxo0bzTLMnDlTtbW1uuGGG8wy\neMXHx6u2tlY/+9nPzDLceOONqq2t1cyZM80yRKutrdVjjz1mtv6kSZNUW1urefPmmWWItmvXLu3c\nudNs/dGjR6u2tlbLli0zyxDt8ccfV21trdn6Q4YMUW1tre655x6zDNEefvhh1dbWKj4+3mT9tLQ0\n08ezKxW0DtBZ4uPjVVRUZJph0KBBKioq0vbt201zROzdu1c5OTnq1auXWYaMjAwVFRVp165dZhm8\n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\ncWVlZeY5YmnuuOMOV1FRYZ4jMnV1deYZpk+f7hYvXmyeIzJ79+4973JycrLLyclx/fv378jx7Vid\nT71gGAAAupoxY8Zo06ZNevrpp/XjH//4827erncpYgAAOk+73u3y7xEDANCVUcQAABiiiAEAMEQR\nAwBgiCIGAMAQRQwAgCGKGAAAQxQxAACGKGIAAAxRxAAAGKKIAQAwRBEDAGCIIgYAwBBFDACAIYoY\nAABDFDEAAIYoYgAADFHEAAAYoogBADBEEQMAYIgiBgDAEEUMAIAhihgAAEMUMQAAhihiAAAMUcQA\nABiiiAEAMEQRAwBgiCIGAMAQRQwAgCGKGAAAQxQxAACGKGIAAAxRxAAAGKKIAQAwRBEDAGCIIgYA\nwBBFDACAIYoYAABDFDEAAIYoYgAADFHEAAAYoogBADBEEQMAYIgiBgDAEEUMAIAhihgAAEMUMQAA\nhihiAAAMUcQAABiiiAEAMEQRAwBgiCIGAMAQRQwAgCGKGAAAQxQxAACGKGIAAAxRxAAAGKKIAQAw\nRBEDAGCIIgYAwBBFDACAIYoYAABDFDEAAIYoYgAADFHEAAAYoogBADBEEQMAYIgiBgDAEEUMAIAh\nihgAAEMUMQAAhihiAAAMUcQAABiiiAEAMEQRAwBgiCIGAMAQRQwAgCGKGAAAQxQxAACGKGIAAAxR\nxAAAGApaB4g2ZMgQDRgwQJJUX1+vU6dOGScCAODievToodzcXElSQ0ODjh49apyoY9zFZv369S6i\nsLDwordjGIZhmFiYoqKiT3tr3bp1n3f7dmLu1PTevXt16NAh6xgAAFyWQ4cOae/evZd9XMydmq6p\nqZEk5eXlqaGhwTgNAACX9sYbb2jDhg2qq6vTE088cdnH+76ETB1xwZfnAAB8xbXr3Zg7NQ0AwNcJ\nRQwAgCGKGAAAQxQxAACGKGIAAAxRxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABs/X8rqVDxG0WJ5gAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Compute the response of the detector at each point\n", "k = .04 # Recommended value between .04 and .06\n", "det_h = multiply(s_xx, s_yy) - multiply(s_xy, s_xy)\n", "trace_h = s_xx + s_yy\n", "R = det_h - k*multiply(trace_h, trace_h)\n", "\n", "# Threshold the image\n", "ratio = .2 # Number to tweak\n", "thresh = abs(R) > ratio * abs(R).max()\n", "imshow(thresh, cmap=gray())\n", "title('Thresholded Image')\n", "axis('off')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of points detected before NMS = 547 \n", "Number of points detected after NMS = 209 \n" ] } ], "source": [ "# Compute non-maximal supression\n", "\n", "# Get the indexes of the non zero values\n", "non_zero_cords = np.nonzero(thresh)\n", "\n", "# Tupled Co-ordinates\n", "tuple_cords = [(i, j) for i,j in zip(non_zero_cords[0], non_zero_cords[1])] \n", "# Values at the these co-ordinates\n", "values = [abs(R)[i, j] for i, j in tuple_cords]\n", "# Sort the co-ordinates based on the R values\n", "sorted_cords = [tuple_cords[i] for i in argsort(values)[::-1]]\n", "# Set Distance to perform NMS\n", "# Any point with this distance of an \n", "# already selected point will be suppressed\n", "distance = 10 # Number to tweak \n", "# List to hold the cords after NMS\n", "nms_cords = []\n", "nms_cords.append(sorted_cords[0])\n", "for cord in sorted_cords:\n", " for nms_cord in nms_cords:\n", " if abs(cord[0]-nms_cord[0]) < distance and abs(cord[1]-nms_cord[1]) < distance:\n", " break\n", " else:\n", " nms_cords.append(cord)\n", "print \"Number of points detected before NMS = {} \".format(sum(thresh))\n", "print \"Number of points detected after NMS = {} \".format(len(nms_cords))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(-0.5, 479.5, 479.5, -0.5)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nN1FVz2fDAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Draw the image with the detected corners\n", "for nms_cord in nms_cords:\n", " cv2.circle(im, (nms_cord[1], nms_cord[0]), 4, (0, 0, 255), -1)\n", "imshow(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))\n", "title('Input Image with detected features')\n", "axis('off')" ] } ], "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.6" } }, "nbformat": 4, "nbformat_minor": 0 }