1
2
3
4
5<!doctype html>
6<html lang="en">
7<head>
8  <meta charset="utf-8"  />
9  <meta name="viewport" content="width=device-width, initial-scale=1"  />
10  <title>ImageMagick - MagickCore, C API: Image Features</title>
11  <meta name="application-name" content="ImageMagick" />
12  <meta name="description" content="Use ImageMagick® to create, edit, compose, and convert digital images. Resize an image, crop it, change its shades and colors, add captions, and more." />
13  <meta name="application-url" content="https://imagemagick.org" />
14  <meta name="generator" content="PHP" />
15  <meta name="keywords" content="magickcore, c, api:, image, features, image processing software" />
16  <meta name="rating" content="GENERAL" />
17  <meta name="robots" content="INDEX, FOLLOW" />
18  <meta name="generator" content="ImageMagick Studio LLC" />
19  <meta name="author" content="ImageMagick Studio LLC" />
20  <meta name="revisit-after" content="2 DAYS" />
21  <meta name="resource-type" content="document" />
22  <meta name="copyright" content="Copyright (c) 1999-2020 ImageMagick Studio LLC" />
23  <meta name="distribution" content="Global" />
24  <meta name="magick-serial" content="P131-S030410-R485315270133-P82224-A6668-G1245-1" />
25  <meta property='og:url' content='../../' />
26  <meta property='og:title' content='ImageMagick' />
27  <meta property='og:image' content='../../../images/logo.png' />
28  <meta property='og:type' content='website' />
29  <meta property='og:site_name' content='ImageMagick' />
30  <meta property='og:description' content="Create, Edit, Compose, or Convert Digital Images" />
31  <meta name="google-site-verification" content="_bMOCDpkx9ZAzBwb2kF3PRHbfUUdFj2uO8Jd1AXArz4" />
32  <link href="feature.html" rel="canonical" />
33  <link href="../../../images/wand.png" rel="icon" />
34  <link href="../../../images/wand.ico" rel="shortcut icon" />
35  <link href="../../assets/magick.css" rel="stylesheet" />
36</head>
37<body>
38  <nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
39  <div class="container-fluid">
40    <a class="navbar-brand" href="../../"><img class="d-block" id="icon" alt="ImageMagick" width="32" height="32" src="../../../images/wand.ico"/></a>
41    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#magick-navbars" aria-controls="magick-navbars" aria-expanded="false" aria-label="Toggle navigation">
42      <span class="navbar-toggler-icon"></span>
43    </button>
44
45    <div class="collapse navbar-collapse" id="magick-navbars">
46      <ul class="navbar-nav me-auto mb-2 mb-md-0">
47        <li class="nav-item">
48          <a class="nav-link " href="../../www/index.html">Home</a>
49        </li>
50        <li class="nav-item">
51          <a class="nav-link " href="../../www/download.html">Download</a>
52        </li>
53        <li class="nav-item">
54          <a class="nav-link " href="../../www/command-line-tools.html">Tools</a>
55        </li>
56        <li class="nav-item">
57          <a class="nav-link " href="../../www/command-line-processing.html">CLI</a>
58        </li>
59        <li class="nav-item">
60          <a class="nav-link " href="../../www/develop.html">Develop</a>
61        </li>
62        <li class="nav-item">
63          <a class="nav-link" target="_blank" href="https://github.com/ImageMagick/ImageMagick/discussions">Community</a>
64        </li>
65        <li class="nav-item">
66          <iframe src="https://github.com/sponsors/ImageMagick/button" title="Sponsor ImageMagick" height="35" width="107" style="border: 0;"></iframe>
67        </li>
68      </ul>
69      <form class="d-flex form-inline" action="https://imagemagick.org/script/search.php">
70        <input class="form-control me-2" type="text" name="q" placeholder="Search" aria-label="Search">
71        <button class="btn btn-outline-success" type="submit" name="sa">Search</button>
72      </form>
73    </div>
74  </div>
75  </nav>
76
77  <div class="container">
78    <script async="async" src="https://localhost/pagead/js/adsbygoogle.js"></script>
79    <ins class="adsbygoogle"
80      style="display:block"
81      data-ad-client="ca-pub-3129977114552745"
82      data-ad-slot="6345125851"
83      data-full-width-responsive="true"
84      data-ad-format="horizontal"></ins>
85    <script>
86      (adsbygoogle = window.adsbygoogle || []).push({});
87    </script>
88
89  </div>
90
91  <main class="container">
92  <div class="magick-template">
93<div class="magick-header">
94<p class="text-center"><a href="feature.html#CannyEdgeImage">CannyEdgeImage</a> &#8226; <a href="feature.html#GetImageFeatures">GetImageFeatures</a> &#8226; <a href="feature.html#Use HoughLineImage">Use HoughLineImage</a> &#8226; <a href="feature.html#MeanShiftImage">MeanShiftImage</a></p>
95
96<h2><a href="../../api/MagickCore/feature_8c.html" id="CannyEdgeImage">CannyEdgeImage</a></h2>
97
98<p>CannyEdgeImage() uses a multi-stage algorithm to detect a wide range of edges in images.</p>
99
100<p>The format of the CannyEdgeImage method is:</p>
101
102<pre class="text">
103Image *CannyEdgeImage(const Image *image,const double radius,
104  const double sigma,const double lower_percent,
105  const double upper_percent,ExceptionInfo *exception)
106</pre>
107
108<p>A description of each parameter follows:</p>
109
110<dd>
111</dd>
112
113<dd> </dd>
114<dl class="dl-horizontal">
115<dt>image</dt>
116<dd>the image. </dd>
117
118<dd> </dd>
119<dt>radius</dt>
120<dd>the radius of the gaussian smoothing filter. </dd>
121
122<dd> </dd>
123<dt>sigma</dt>
124<dd>the sigma of the gaussian smoothing filter. </dd>
125
126<dd> </dd>
127<dt>lower_percent</dt>
128<dd>percentage of edge pixels in the lower threshold. </dd>
129
130<dd> </dd>
131<dt>upper_percent</dt>
132<dd>percentage of edge pixels in the upper threshold. </dd>
133
134<dd> </dd>
135<dt>exception</dt>
136<dd>return any errors or warnings in this structure. </dd>
137
138<dd>  </dd>
139</dl>
140<h2><a href="../../api/MagickCore/feature_8c.html" id="GetImageFeatures">GetImageFeatures</a></h2>
141
142<p>GetImageFeatures() returns features for each channel in the image in each of four directions (horizontal, vertical, left and right diagonals) for the specified distance.  The features include the angular second moment, contrast, correlation, sum of squares: variance, inverse difference moment, sum average, sum varience, sum entropy, entropy, difference variance, difference entropy, information measures of correlation 1, information measures of correlation 2, and maximum correlation coefficient.  You can access the red channel contrast, for example, like this:</p>
143
144<pre class="text">
145channel_features=GetImageFeatures(image,1,exception);
146contrast=channel_features[RedPixelChannel].contrast[0];
147</pre>
148
149<p>Use MagickRelinquishMemory() to free the features buffer.</p>
150
151<p>The format of the GetImageFeatures method is:</p>
152
153<pre class="text">
154ChannelFeatures *GetImageFeatures(const Image *image,
155  const size_t distance,ExceptionInfo *exception)
156</pre>
157
158<p>A description of each parameter follows:</p>
159
160<dd>
161</dd>
162
163<dd> </dd>
164<dl class="dl-horizontal">
165<dt>image</dt>
166<dd>the image. </dd>
167
168<dd> </dd>
169<dt>distance</dt>
170<dd>the distance. </dd>
171
172<dd> </dd>
173<dt>exception</dt>
174<dd>return any errors or warnings in this structure. </dd>
175
176<dd>  </dd>
177</dl>
178<h2><a href="../../api/MagickCore/feature_8c.html" id="Use_HoughLineImage">Use HoughLineImage</a></h2>
179
180<p>Use HoughLineImage() in conjunction with any binary edge extracted image (we recommand Canny) to identify lines in the image.  The algorithm accumulates counts for every white pixel for every possible orientation (for angles from 0 to 179 in 1 degree increments) and distance from the center of the image to the corner (in 1 px increments) and stores the counts in an accumulator matrix of angle vs distance. The size of the accumulator is 180x(diagonal/2). Next it searches this space for peaks in counts and converts the locations of the peaks to slope and intercept in the normal x,y input image space. Use the slope/intercepts to find the endpoints clipped to the bounds of the image. The lines are then drawn. The counts are a measure of the length of the lines.</p>
181
182<p>The format of the HoughLineImage method is:</p>
183
184<pre class="text">
185Image *HoughLineImage(const Image *image,const size_t width,
186  const size_t height,const size_t threshold,ExceptionInfo *exception)
187</pre>
188
189<p>A description of each parameter follows:</p>
190
191<dd>
192</dd>
193
194<dd> </dd>
195<dl class="dl-horizontal">
196<dt>image</dt>
197<dd>the image. </dd>
198
199<dd> </dd>
200<dt>width, height</dt>
201<dd>find line pairs as local maxima in this neighborhood. </dd>
202
203<dd> </dd>
204<dt>threshold</dt>
205<dd>the line count threshold. </dd>
206
207<dd> </dd>
208<dt>exception</dt>
209<dd>return any errors or warnings in this structure. </dd>
210
211<dd>  </dd>
212</dl>
213<h2><a href="../../api/MagickCore/feature_8c.html" id="MeanShiftImage">MeanShiftImage</a></h2>
214
215<p>MeanShiftImage() delineate arbitrarily shaped clusters in the image. For each pixel, it visits all the pixels in the neighborhood specified by the window centered at the pixel and excludes those that are outside the radius=(window-1)/2 surrounding the pixel. From those pixels, it finds those that are within the specified color distance from the current mean, and computes a new x,y centroid from those coordinates and a new mean. This new x,y centroid is used as the center for a new window. This process iterates until it converges and the final mean is replaces the (original window center) pixel value. It repeats this process for the next pixel, etc., until it processes all pixels in the image. Results are typically better with colorspaces other than sRGB. We recommend YIQ, YUV or YCbCr.</p>
216
217<p>The format of the MeanShiftImage method is:</p>
218
219<pre class="text">
220Image *MeanShiftImage(const Image *image,const size_t width,
221  const size_t height,const double color_distance,
222  ExceptionInfo *exception)
223</pre>
224
225<p>A description of each parameter follows:</p>
226
227<dd>
228</dd>
229
230<dd> </dd>
231<dl class="dl-horizontal">
232<dt>image</dt>
233<dd>the image. </dd>
234
235<dd> </dd>
236<dt>width, height</dt>
237<dd>find pixels in this neighborhood. </dd>
238
239<dd> </dd>
240<dt>color_distance</dt>
241<dd>the color distance. </dd>
242
243<dd> </dd>
244<dt>exception</dt>
245<dd>return any errors or warnings in this structure. </dd>
246
247<dd>  </dd>
248</dl>
249</div>
250  </div>
251  </main><!-- /.container -->
252  <footer class="magick-footer">
253    <div class="container-fluid">
254      <a href="../../www/security-policy.html">Security</a> •
255      <a href="../../www/news.html">News</a>
256
257      <a href="feature.html#"><img class="d-inline" id="wand" alt="And Now a Touch of Magick" width="16" height="16" src="../../../images/wand.ico"/></a>
258
259      <a href="../../www/links.html">Related</a> •
260      <a href="../../www/sitemap.html">Sitemap</a>
261   <br/>
262     <a href="../../www/support.html">Sponsor</a> •
263     <a href="../../www/cite.html">Cite</a> •
264     <a href="http://pgp.mit.edu/pks/lookup?op=get&amp;search=0x89AB63D48277377A">Public Key</a> •
265     <a href="../../www/contact.html">Contact Us</a>
266   <br/>
267     <a href="https://github.com/imagemagick/imagemagick" target="_blank" rel="noopener" aria-label="GitHub"><svg xmlns="http://www.w3.org/2000/svg" class="navbar-nav-svg" viewBox="0 0 512 499.36" width="2%" height="2%" role="img" focusable="false"><title>GitHub</title><path fill="currentColor" fill-rule="evenodd" d="M256 0C114.64 0 0 114.61 0 256c0 113.09 73.34 209 175.08 242.9 12.8 2.35 17.47-5.56 17.47-12.34 0-6.08-.22-22.18-.35-43.54-71.2 15.49-86.2-34.34-86.2-34.34-11.64-29.57-28.42-37.45-28.42-37.45-23.27-15.84 1.73-15.55 1.73-15.55 25.69 1.81 39.21 26.38 39.21 26.38 22.84 39.12 59.92 27.82 74.5 21.27 2.33-16.54 8.94-27.82 16.25-34.22-56.84-6.43-116.6-28.43-116.6-126.49 0-27.95 10-50.8 26.35-68.69-2.63-6.48-11.42-32.5 2.51-67.75 0 0 21.49-6.88 70.4 26.24a242.65 242.65 0 0 1 128.18 0c48.87-33.13 70.33-26.24 70.33-26.24 14 35.25 5.18 61.27 2.55 67.75 16.41 17.9 26.31 40.75 26.31 68.69 0 98.35-59.85 120-116.88 126.32 9.19 7.9 17.38 23.53 17.38 47.41 0 34.22-.31 61.83-.31 70.23 0 6.85 4.61 14.81 17.6 12.31C438.72 464.97 512 369.08 512 256.02 512 114.62 397.37 0 256 0z"/></svg></a> •
268     <a href="https://twitter.com/imagemagick" target="_blank" rel="noopener" aria-label="Twitter"><svg xmlns="http://www.w3.org/2000/svg" class="navbar-nav-svg" viewBox="0 0 512 416.32" width="2%" height="2%" role="img" focusable="false"><title>Twitter</title><path fill="currentColor" d="M160.83 416.32c193.2 0 298.92-160.22 298.92-298.92 0-4.51 0-9-.2-13.52A214 214 0 0 0 512 49.38a212.93 212.93 0 0 1-60.44 16.6 105.7 105.7 0 0 0 46.3-58.19 209 209 0 0 1-66.79 25.37 105.09 105.09 0 0 0-181.73 71.91 116.12 116.12 0 0 0 2.66 24c-87.28-4.3-164.73-46.3-216.56-109.82A105.48 105.48 0 0 0 68 159.6a106.27 106.27 0 0 1-47.53-13.11v1.43a105.28 105.28 0 0 0 84.21 103.06 105.67 105.67 0 0 1-47.33 1.84 105.06 105.06 0 0 0 98.14 72.94A210.72 210.72 0 0 1 25 370.84a202.17 202.17 0 0 1-25-1.43 298.85 298.85 0 0 0 160.83 46.92"/></svg></a>
269    <br/>
270    <small>© 1999-2021 ImageMagick Studio LLC</small>
271    </div>
272  </footer>
273
274  <!-- Javascript assets -->
275  <script src="../../assets/magick.js" ></script>
276  </body>
277</html>
278