{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import cv2\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "img = cv2.imread('/home/user/toys/gerbimg/foo_coarse.png')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "SCALE_FACTOR = 4\n", "\n", "img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)\n", "w, h = img_gray.shape\n", "img_big = cv2.resize(img_gray, (w*SCALE_FACTOR, h*SCALE_FACTOR), cv2.INTER_CUBIC)\n", "ret, img_thr = cv2.threshold(img_big, 127, 255, 0)\n", "img_cont_out, contours, hierarchy = cv2.findContours(img_thr, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_TC89_KCOS)\n", "img_cont = cv2.cvtColor(img_big, cv2.COLOR_GRAY2RGB)\n", "conts = cv2.drawContours(img_cont, contours, -1, (0, 0, 255))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow(img_cont, aspect='auto')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cv2.imwrite('/tmp/img_cont.png', img_cont)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot contour length histogram\n", "--------------\n", "\n", "Use log-log for easier viewing as we're observing some sort of power law here as is common with random graphs. A funny fact about this distribution is that we can actually see the spot size having an effect on this. There are discrete peaks every 25 or 30 contour points that are caused by a single contour most commonly containing a discrete number of spots and every spot being in the same order of magnitude in size having roughly the same number of contour vertices." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nBWqbRTIovufUH9ILdeec9uljBYxmzrQ2qroa9t/fpgztt5+1qdXVdgPb7zUNqufUP2e8lSvtGKl8\ndpg921YraKESqdIMQbbNqSSnlcDWMd/3Ab6O3cHzvNhFNJ4E7kl2sNgGUKS50l1O5ptv4M9/tkSy\nZQP/+xvqOf3+e/joIzjwwOi2bbaBL7+0dThbtLCGap99rLLfDjskPk5sz6lv0CB48UUYNcq+/+or\nq1L82GOpXmE0xt12syJLW2wR3f7++9ZbPHt2dNv69dZQ7ryzxRQ//zZs/nDjHj0sQZ0xI7rkT7FY\ntsw+PEyZAnvsEXY04YpPnG677bbwggmX2maRDIqfc/rxx7beOkR7TleuhN694a234Mgj7XPA5s1w\nxhkwYoQtGXP66db23nKL3bTu0iW45HTffe3zTNeudbf/+c8Wy0MPNX6Mk06Cv/61/s1skXQE2Tan\ncp9kCjDAOdfPOdcKOA27G/sD51yPmG+PB2YjkgXp9py++SYccQR06tTwfg0lpxMnwu6710362ra1\nBufryEfD8eOtcamsTH6ORMkpWAXgl1+2r4cfhsmTG441kcWLLaFbvLju9kWL6sfkx7HVVrlZFMm/\nM+xctOe02CyKDN687jrNuZUfqG0WyaD4ntMlS6I9kfE9p0uWWCJbXW2J65572meNtWttfz/h9KfP\nBJWcVlXB8uX1t69fn/oKAKtWNRyPSLY1mpx6nrcZuBz4NzALq/w3xzl3m3PumMhuVzrnZjrnpkX2\nPTdTAYvESrfn9I03onc+G9JQcho/39QXu9bpG29ASUny5HTzZjt+/N3OeEOH2jDc779vPOZY/nnj\nz19ZaQ2W32BCNDnt3j03k9MZM6LDloo1Oa2stA86ixfDv/4VdjSSC9Q2i2RWouR0q63scatWdZNT\nsOk4VVX2HECHDtEEcdOm6PPff9/wnNN0qvXW1MCKFfW3b9qU+lqpa9aEt1KASCKpDOvF87y3gB3i\ntt0a8/gmIKQ6o1LM0uk53bTJejSffLLxfRtLThMNlfGLIh1wAIwda9WAkyWnK1fauqqlpQ3H0bq1\nDbWZOhUOOqjxuH0NJaf+v/6801xPTmfOjA5l3XlnG5LsD58uFpWVNnT84ovh+uttWHNJSdhRSdjU\nNotkTnxBpKVL7YY41C+IBPYZo7o62q63bx+9EVxVZcmi50Wn0iSTas9pba19JUtOU7mpXVVlybCS\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import collections\n", "import math\n", "cnt = collections.Counter(len(c) for c in contours)\n", "cnt_sorted = sorted(cnt.items())\n", "n = 100\n", "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 3))\n", "ax1.plot([k for k, _ in cnt_sorted[:n]], [math.log10(k) for _, k in cnt_sorted[:n]])\n", "ax2.plot([math.log10(k) for k, _ in cnt_sorted], [math.log10(k) for _, k in cnt_sorted])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Count interior and exterior contours, respectively\n", "-------------------------\n", "\n", "The fourth element of the hierarchy tuples is the countour's parent. As we've told ```findContours``` to use the ```CCOMP``` retrieval node, we'll get $-1$ for all white contours and some positive index for all internal, black contours." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "(7989, 1219)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.sum(hierarchy[:,:,3] == -1), np.sum(hierarchy[:,:,3] != -1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Build a dict to resolve parents to their children\n", "-----\n", "\n", "Structure: \n", "```python\n", "{\n", " int(parent_index):\n", " (parent_contour_ndarray, [child_contour_ndarrays...])\n", "}\n", "```" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "parents_and_children = {}\n", "\n", "for i, (_1, _2, _3, parent) in enumerate(hierarchy[0]):\n", " if parent == -1:\n", " parents_and_children[i] = (contours[i], [])\n", "\n", "for i, (_1, _2, _3, parent) in enumerate(hierarchy[0]):\n", " if parent != -1:\n", " parent_cont, child_set = parents_and_children[parent]\n", " child_set.append(contours[i])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "How many children (holes) does a contour usually have?\n", "---" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import collections\n", "import math\n", "chld = collections.Counter(len(children) for parent, children in parents_and_children.values())\n", "chld_sorted = sorted(chld.items())[:20]\n", "plt.plot([k for k, _ in chld_sorted[:n]], [math.log10(k) for _, k in chld_sorted[:n]])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def write_csv(scale, filename):\n", " with open(filename, 'w') as f:\n", " print('\"Index\",\"X (mm)\",\"Y (mm)\",\"Arc Angle (Neg = CW)\"', file=f)\n", " for parent, _children in parents_and_children.values():\n", " for x, y in parent[:,0]:\n", " print('\"{}\",\"{}\",\"{}\",\"\"'.format(i, scale*float(x), scale*float(y)), file=f)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def svg_format_curve(scale, curve):\n", " mid = ('L{} {} '.format(x, y) for x, y in curve)\n", " return ' '.join(['M{} {}'.format(*curve[0]), *mid, 'Z'])\n", "\n", "def write_svg(scale, filename):\n", " with open(filename, 'w') as f:\n", " f.write('')\n", " for parent, children in parents_and_children.values():\n", " f.write(''.format(' '.join(\n", " svg_format_curve(scale, c[:,0]) for c in [parent, *children]\n", " )))\n", " f.write('')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [], "source": [ "write_svg(1, '/tmp/test.svg')" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[[3556, 7996]],\n", "\n", " [[3555, 7996]],\n", "\n", " [[3554, 7998]],\n", "\n", " [[3559, 7998]],\n", "\n", " [[3558, 7995]]], dtype=int32)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "contours[0]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[((3556, 7996), (3555, 7996)), ((3555, 7996), (3554, 7998)), ((3554, 7998), (3559, 7998)), ((3559, 7998), (3558, 7995)), ((3558, 7995), (3556, 7996))]\n", "[((3540, 7966), (3537, 7967)), ((3537, 7967), (3535, 7968)), ((3535, 7968), (3533, 7973)), ((3533, 7973), (3532, 7979)), ((3532, 7979), (3532, 7985)), ((3532, 7985), (3533, 7992)), ((3533, 7992), (3534, 7994)), ((3534, 7994), (3536, 7996)), ((3536, 7996), (3536, 7998)), ((3536, 7998), (3543, 7998)), ((3543, 7998), (3544, 7996)), ((3544, 7996), (3546, 7992)), ((3546, 7992), (3547, 7989)), ((3547, 7989), (3547, 7985)), ((3547, 7985), (3549, 7981)), ((3549, 7981), (3549, 7975)), ((3549, 7975), (3548, 7972)), ((3548, 7972), (3547, 7969)), ((3547, 7969), (3546, 7967)), ((3546, 7967), (3544, 7967)), ((3544, 7967), (3543, 7966)), ((3543, 7966), (3540, 7966))]\n", "[((3459, 7966), (3458, 7971)), ((3458, 7971), (3460, 7971)), ((3460, 7971), (3462, 7969)), ((3462, 7969), (3459, 7966))]\n", "[((3493, 7963), (3490, 7968)), ((3490, 7968), (3489, 7972)), ((3489, 7972), (3489, 7985)), ((3489, 7985), (3490, 7988)), ((3490, 7988), (3491, 7990)), ((3491, 7990), (3493, 7993)), ((3493, 7993), (3498, 7993)), ((3498, 7993), (3500, 7991)), ((3500, 7991), (3502, 7988)), ((3502, 7988), (3503, 7986)), ((3503, 7986), (3503, 7970)), ((3503, 7970), (3502, 7968)), ((3502, 7968), (3500, 7965)), ((3500, 7965), (3497, 7962)), ((3497, 7962), (3493, 7963))]\n", "[((3474, 7928), (3471, 7931)), ((3471, 7931), (3470, 7933)), ((3470, 7933), (3469, 7936)), ((3469, 7936), (3469, 7944)), ((3469, 7944), (3470, 7948)), ((3470, 7948), (3476, 7953)), ((3476, 7953), (3479, 7950)), ((3479, 7950), (3480, 7948)), ((3480, 7948), (3481, 7943)), ((3481, 7943), (3481, 7936)), ((3481, 7936), (3480, 7932)), ((3480, 7932), (3479, 7930)), ((3479, 7930), (3477, 7928)), ((3477, 7928), (3474, 7928))]\n", "[((3436, 7928), (3435, 7932)), ((3435, 7932), (3437, 7934)), ((3437, 7934), (3438, 7938)), ((3438, 7938), (3439, 7931)), ((3439, 7931), (3436, 7928))]\n", "[((3514, 7923), (3512, 7925)), ((3512, 7925), (3511, 7927)), ((3511, 7927), (3510, 7929)), ((3510, 7929), (3509, 7934)), ((3509, 7934), (3509, 7943)), ((3509, 7943), (3510, 7948)), ((3510, 7948), (3511, 7950)), ((3511, 7950), (3513, 7952)), ((3513, 7952), (3513, 7953)), ((3513, 7953), (3516, 7954)), ((3516, 7954), (3518, 7953)), ((3518, 7953), (3521, 7950)), ((3521, 7950), (3523, 7947)), ((3523, 7947), (3524, 7940)), ((3524, 7940), (3524, 7931)), ((3524, 7931), (3523, 7928)), ((3523, 7928), (3522, 7926)), ((3522, 7926), (3521, 7924)), ((3521, 7924), (3514, 7923))]\n", "[((3563, 7922), (3557, 7924)), ((3557, 7924), (3556, 7927)), ((3556, 7927), (3554, 7929)), ((3554, 7929), (3551, 7935)), ((3551, 7935), (3551, 7956)), ((3551, 7956), (3553, 7960)), ((3553, 7960), (3555, 7961)), ((3555, 7961), (3560, 7961)), ((3560, 7961), (3561, 7960)), ((3561, 7960), (3563, 7960)), ((3563, 7960), (3564, 7957)), ((3564, 7957), (3567, 7954)), ((3567, 7954), (3570, 7947)), ((3570, 7947), (3570, 7931)), ((3570, 7931), (3567, 7926)), ((3567, 7926), (3566, 7923)), ((3566, 7923), (3563, 7922))]\n", "[((3493, 7890), (3492, 7892)), ((3492, 7892), (3491, 7895)), ((3491, 7895), (3491, 7904)), ((3491, 7904), (3492, 7907)), ((3492, 7907), (3493, 7909)), ((3493, 7909), (3494, 7910)), ((3494, 7910), (3496, 7911)), ((3496, 7911), (3500, 7910)), ((3500, 7910), (3501, 7908)), ((3501, 7908), (3503, 7903)), ((3503, 7903), (3502, 7896)), ((3502, 7896), (3500, 7892)), ((3500, 7892), (3498, 7890)), ((3498, 7890), (3493, 7890))]\n", "[((3536, 7889), (3534, 7890)), ((3534, 7890), (3532, 7892)), ((3532, 7892), (3531, 7894)), ((3531, 7894), (3530, 7897)), ((3530, 7897), (3530, 7905)), ((3530, 7905), (3532, 7910)), ((3532, 7910), (3534, 7911)), ((3534, 7911), (3538, 7911)), ((3538, 7911), (3540, 7909)), ((3540, 7909), (3543, 7903)), ((3543, 7903), (3543, 7897)), ((3543, 7897), (3542, 7894)), ((3542, 7894), (3540, 7890)), ((3540, 7890), (3538, 7889)), ((3538, 7889), (3536, 7889))]\n" ] } ], "source": [ "for contour, _children in list(parents_and_children.values())[:10]:\n", " print([((a,b), (c,d)) for (a,b),(c,d) in zip(contour[:,0], np.vstack((contour[1:,0], contour[:1,0])))])" ] } ], "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.5.4" } }, "nbformat": 4, "nbformat_minor": 0 }