summaryrefslogtreecommitdiff
path: root/www/connected-components.html
blob: 768875535a9ffe99d41f59e884c81ac8e7088d58 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143




<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" >
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" >
  <title>Connected Components Labeling @ ImageMagick</title>
  <meta name="application-name" content="ImageMagick">
  <meta name="description" content="ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, JPEG-2000, GIF, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.">
  <meta name="application-url" content="https://www.imagemagick.org">
  <meta name="generator" content="PHP">
  <meta name="keywords" content="connected, components, labeling, ImageMagick, PerlMagick, image processing, image, photo, software, Magick++, OpenMP, convert">
  <meta name="rating" content="GENERAL">
  <meta name="robots" content="INDEX, FOLLOW">
  <meta name="generator" content="ImageMagick Studio LLC">
  <meta name="author" content="ImageMagick Studio LLC">
  <meta name="revisit-after" content="2 DAYS">
  <meta name="resource-type" content="document">
  <meta name="copyright" content="Copyright (c) 1999-2017 ImageMagick Studio LLC">
  <meta name="distribution" content="Global">
  <meta name="magick-serial" content="P131-S030410-R485315270133-P82224-A6668-G1245-1">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta name="google-site-verification" content="_bMOCDpkx9ZAzBwb2kF3PRHbfUUdFj2uO8Jd1AXArz4">
  <link href="../www/connected-components.html" rel="canonical">
  <link href="../images/wand.png" rel="icon">
  <link href="../images/wand.ico" rel="shortcut icon">
  <link href="assets/magick.css" rel="stylesheet">
</head>
<body>
  <header>
  <nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
    <a class="navbar-brand" href="connected-components.html#">ImageMagick</a>
    <button class="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
    </button>

    <div class="navbar-collapse collapse" id="navbarsExampleDefault" style="">
    <ul class="navbar-nav mr-auto">
      <li class="nav-item ">
        <a class="nav-link" href="../index.html">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item ">
        <a class="nav-link" href="download.html">Download</a>
      </li>
      <li class="nav-item ">
        <a class="nav-link" href="command-line-tools.html">Tools</a>
      </li>
      <li class="nav-item ">
        <a class="nav-link" href="command-line-processing.html">Command-line</a>
      </li>
      <li class="nav-item ">
        <a class="nav-link" href="resources.html">Resources</a>
      </li>
      <li class="nav-item ">
        <a class="nav-link" href="develop.html">Develop</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="https://www.imagemagick.org/discourse-server/">Community</a>
      </li>
    </ul>
    <form class="form-inline my-2 my-lg-0" action="https://www.imagemagick.org/script/search.php">
      <!-- <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search"> -->
      <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
    </form>
    </div>
  </nav>
  <div class="container">
   <script async="async" src="http://localhost/pagead/js/adsbygoogle.js"></script>    <ins class="adsbygoogle"
         style="display:block"
         data-ad-client="ca-pub-3129977114552745"
         data-ad-slot="6345125851"
         data-ad-format="auto"></ins>
    <script>
      (adsbygoogle = window.adsbygoogle || []).push({});
    </script>
  </div>
  </header>
  <main role="main" class="container">
    <div class="magick-template">
<div class="magick-header">
<p class="lead magick-description">Connected-component labeling (alternatively connected-component analysis, blob extraction, region labeling, blob discovery, or region extraction) uniquely labels connected components in an image.  The labeling process scans the image, pixel-by-pixel from top-left to bottom-right, in order to identify connected pixel regions, i.e. regions of adjacent pixels which share the same set of intensity values.  For example, let's find the objects in this image:</p>
<ul>
  <a href="../images/objects.gif"><img src="../images/objects.gif" width="256" height="171" class="image-slices" alt="purse" /></a>
</ul>
<p>To identify the objects in this image, use this command:</p>
<pre class="highlight"><code>magick objects.gif -connected-components 4 -auto-level -depth 8 objects.png</code></pre>
<p>The detected objects are uniquely labeled.  Use auto leveling to visualize the detected objects:</p>
<ul>
  <a href="../images/objects.png"><img src="../images/objects.png" width="256" height="171" class="image-slices" alt="Objects" /></a>
</ul>
<p>Object statistics is useful to review.  To display them, use this command:</p>
<pre class="highlight"><code>magick objects.gif -define connected-components:verbose=true -connected-components 4 objects.png</code></pre>
<p>Five objects were detected in the source image with these statistics:</p>
<pre class="highlight"><code>Objects (id: bounding-box centroid area mean-color):
  0: 256x171+0+0 119.2,80.8 33117 srgb(0,0,0)
  2: 120x135+104+18 159.5,106.5 8690 srgb(255,255,255)
  3: 50x36+129+44 154.2,63.4 1529 srgb(0,0,0)
  4: 21x23+0+45 8.8,55.9 409 srgb(255,255,255)
  1: 4x10+252+0 253.9,4.1 31 srgb(255,255,255)
</code></pre>
<p>Use <code>-connected-components 8</code> to visit 8 neighbors rather than 4.  By default, neighbor colors must be exact to be part of a unique object. Use the <a href="command-line-options.html#fuzz">-fuzz</a> option to include pixels as part of an object that are <var>close</var> in color.</p>
<p>You might want to eliminate small objects by merging them with their larger neighbors.  If so, use this command:</p>
<pre class="highlight"><code>magick objects.gif -define connected-components:area-threshold=410 -connected-components 4 \
  -auto-level objects.jpg</code></pre>
<p>Here are the expected results.  Notice, how the small objects are now merged with the background.</p>
<ul>
  <a href="../images/objects.jpg"><img src="../images/objects.jpg" width="256" height="171" class="image-slices" alt="Objects" /></a>
</ul>
<p>Notice how two of the objects were merged leaving three remaining objects:</p>
<pre class="highlight"><code>Objects (id: bounding-box centroid area mean-color):
  0: 256x171+0+0 118.0,80.4 33557 srgb(0,0,0)
  2: 120x135+104+18 159.5,106.5 8690 srgb(255,255,255)
  3: 50x36+129+44 154.2,63.4 1529 srgb(0,0,0)</code></pre>
<p>By default, the labeled image is grayscale.  You can instead replace the object color in the labeled image with the mean-color from the source image. Simply add this setting, <code>-define connected-components:mean-color=true</code>, to your command line.</p>
<p>You may want to remove certain objects by making them transparent.  Use <code>-define connected-components:remove=<em>list-of-ids</em></code> (e.g. -define connected-components:remove=2,4-5).  Or use <code>-define connected-components:keep=<em>list-of-ids</em></code> to keep these objects and make all others transparent.</p>
<p>Objects in your image may look homogeneous but have slightly different color values.  By default, only pixels that match exactly are considered as part of a particular object.  For slight variations of color in an object, use <code>-fuzz</code>.  For example,</p>
<pre class="highlight"><code>magick star-map.png -fuzz 5% -define connected-components:verbose=true \
  -define connected-components:mean-color=true -connected-components 4 stars.gif</code></pre>
</div>
    </div>
  </main><!-- /.container -->
  <footer class="magick-footer">
    <p><a href="security-policy.html">Security</a> •
    <a href="architecture.html">Architecture</a> •
    <a href="links.html">Related</a> •
     <a href="sitemap.html">Sitemap</a> •
    <a href="http://pgp.mit.edu/pks/lookup?op=get&amp;search=0x89AB63D48277377A">Public Key</a>
</p>
    <p><a href="support.html">Donate</a> •
    <a href="connected-components.html#">Back to top</a> •
    <a href="https://www.imagemagick.org/script/contact.php">Contact Us</a></p>
        <p><small>© 1999-2018 ImageMagick Studio LLC</small></p>
  </footer>

  <!-- Javascript assets -->
  <script src="assets/magick.js" crossorigin="anonymous"></script>
  <script>window.jQuery || document.write('<script src="assets/jquery.min.js"><\/script>')</script>
</body>
</html>
<!-- Magick Cache 9th December 2017 17:40 -->