Skip to content
Snippets Groups Projects
2D Skeleton.ipynb 2.73 MiB
Newer Older
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "using FileIO\n",
    "using Printf\n",
    "using ColorTypes\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "polylines_to_svg (generic function with 1 method)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "include(\"./julia/traceskeleton.jl\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<!--   0.130216 seconds (672 allocations: 35.791 MiB, 9.24% gc time)\n",
      "  0.003917 seconds (5.20 k allocations: 334.828 KiB)\n",
      " --><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"333\" height=\"335\" fill=\"none\" stroke=\"black\" stroke-width=\"1\"><path d=\"M164,2 L160,6 L159,7 L155,11 L154,12 L152,14 L151,15 L144,22 L143,23 L137,29 L136,29 L135,30 L134,31 L128,38 L127,39 L121,46 L120,47 L118,48 L117,49 L113,54 L112,55 L110,56 L109,57 L107,60 L106,61 L103,63 L102,64 L96,71 L95,72 L92,75 L91,76 L87,80 L86,81 L84,83 L83,84 L77,90 L76,91 L74,93 L73,94 L72,95 L70,96 L67,99 L66,100 L63,104 L62,105 L58,109 L56,110 L54,113 L53,114 L48,119 L47,120 L43,124 L42,125 L39,127 L38,128 L35,132 L34,133 L32,135 L31,135 L29,137 L28,138 L22,144 L21,145 L15,151 L14,152 L12,154 L11,155 L7,159 L6,160 L2,164 \"/><path d=\"M174,334 L157,327 L156,326 L151,321 L150,320 L144,314 L143,313 L139,309 L138,308 L134,305 L134,304 L129,299 L128,298 L122,291 L121,290 L115,285 L114,284 L113,282 L112,281 L109,278 L108,278 L103,273 L102,272 L96,265 L95,264 L92,261 L91,260 L86,255 L85,254 L83,252 L82,251 L77,246 L76,245 L73,242 L72,241 L65,235 L64,234 L63,232 L62,231 L59,229 L58,227 L55,225 L55,224 L52,222 L51,221 L48,217 L47,217 L44,213 L43,212 L37,206 L36,205 L32,201 L31,201 L26,196 L25,195 L22,192 L21,191 L15,185 L14,184 L7,177 L6,176 L2,164 \"/><path d=\"M1,226 L2,164 \"/><path d=\"M168,1 L164,2 \"/><path d=\"M332,176 L325,154 L324,153 L319,148 L318,147 L314,143 L313,142 L311,140 L310,139 L306,135 L305,135 L302,133 L301,133 L298,129 L297,128 L294,125 L293,124 L288,119 L287,119 L282,113 L281,112 L279,110 L278,109 L277,108 L276,107 L271,102 L270,100 L268,99 L268,98 L267,97 L266,97 L263,94 L262,94 L256,87 L255,86 L252,84 L251,83 L246,77 L245,76 L241,72 L240,72 L234,65 L234,64 L233,63 L232,63 L228,58 L227,57 L222,53 L221,52 L218,49 L217,48 L211,41 L210,41 L206,37 L205,36 L204,35 L203,35 L201,31 L201,30 L196,26 L195,25 L192,22 L191,21 L185,15 L184,14 L177,7 L176,6 L164,2 \"/><path d=\"M332,176 L325,182 L324,183 L319,188 L318,189 L316,191 L315,192 L311,196 L310,197 L306,201 L305,201 L302,203 L301,204 L298,207 L297,208 L293,212 L292,213 L288,217 L287,218 L286,219 L286,220 L282,223 L281,224 L279,227 L278,228 L275,230 L274,231 L267,238 L266,239 L261,243 L260,244 L259,246 L258,247 L256,249 L255,250 L249,256 L248,257 L245,260 L244,261 L239,266 L238,267 L231,274 L230,275 L229,276 L228,277 L224,281 L223,282 L218,287 L217,288 L215,290 L214,291 L208,298 L207,299 L204,301 L203,302 L201,304 L201,305 L199,308 L198,309 L194,313 L193,314 L191,316 L190,317 L187,320 L186,321 L181,326 L180,327 L174,334 \"/><path d=\"M168,335 L174,334 \"/><path d=\"M333,168 L332,176 \"/></svg>"
     ]
    }
   ],
   "source": [
    "img = load(\"./julia/4.png\")\n",
    "bim = convert(Array{UInt8}, reshape([round(img[i,j].r) for j=1:size(img)[2] for i=1:size(img)[1]], size(img)))\n",
    "\n",
    "print(\"<!-- \")\n",
    "@time bim = thinning_zs(bim)\n",
    "H,W = size(bim)\n",
    "@time q = trace_skeleton(bim,10,999)\n",
    "print(\" -->\")\n",
    "print(polylines_to_svg(q,W,H));\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"\n",
       "     width=\"149.1mm\" height=\"150mm\"\n",
       "     viewBox=\"0 -1.5 333 335\" stroke-width=\"3\"\n",
       "     stroke-linecap=\"butt\" shape-rendering=\"crispEdges\">\n",
       "<path d=\"M0,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M3,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M6,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M9,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M12,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M15,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M18,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M21,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M24,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M27,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M30,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M33,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M36,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M39,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M42,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M45,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M48,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M51,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M54,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M57,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M60,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M63,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M66,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M69,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M72,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M75,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M78,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M81,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M84,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M87,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M90,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M93,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M96,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M99,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M102,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M105,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M108,0h3\" stroke=\"#1C1C1C\" />\n",
       "<path d=\"M111,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M114,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M117,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M120,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M123,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M126,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M129,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M132,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M135,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M138,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M141,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M144,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M147,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M150,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M153,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M156,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M159,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M162,0h3\" stroke=\"#AAAAAA\" />\n",
       "<path d=\"M165,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M168,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M171,0h3\" stroke=\"#8E8E8E\" />\n",
       "<path d=\"M174,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M177,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M180,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M183,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M186,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M189,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M192,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M195,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M198,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M201,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M204,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M207,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M210,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M213,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M216,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M219,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M222,0h3\" stroke=\"#555555\" />\n",
       "<path d=\"M225,0h3\" stroke=\"#1C1C1C\" />\n",
       "<path d=\"M228,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M231,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M234,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M237,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M240,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M243,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M246,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M249,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M252,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M255,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M258,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M261,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M264,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M267,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M270,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M273,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M276,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M279,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M282,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M285,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M288,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M291,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M294,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M297,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M300,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M303,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M306,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M309,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M312,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M315,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M318,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M321,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M324,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M327,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M330,0h3\" stroke=\"#000000\" />\n",
       "<path d=\"M0,3h3\" stroke=\"#000000\" />\n",
       "<path d=\"M3,3h3\" stroke=\"#000000\" />\n",
       "<path d=\"M6,3h3\" stroke=\"#000000\" />\n",
       "<path d=\"M9,3h3\" stroke=\"#000000\" />\n",
       "<path d=\"M12,3h3\" stroke=\"#000000\" />\n",
       "<path d=\"M15,3h3\" stroke=\"#000000\" />\n",
       "<path d=\"M18,3h3\" stroke=\"#000000\" />\n",
       "<path d=\"M21,3h3\" stroke=\"#000000\" />\n",
       "<path d=\"M24,3h3\" stroke=\"#000000\" />\n",
       "<path d=\"M27,3h3\" stroke=\"#000000\" />\n",
       "<path d=\"M30,3h3\" stroke=\"#000000\" />\n",
       "<path d=\"M33,3h3\" stroke=\"#000000\" />\n",
Loading
Loading full blame...