]> granicus.if.org Git - imagemagick/blob - www/api/enhance.html
abf92666483c8725e539b0664617b016982f955d
[imagemagick] / www / api / enhance.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
2   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3 <html version="-//W3C//DTD XHTML 1.1//EN"
4       xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
5       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6       xsi:schemaLocation="http://www.w3.org/1999/xhtml
7                           http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd">
8 <head>
9   <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
10   <meta name="google-site-verification" content="MxsMq6bdLOx0KSuz1MY6yG9ZTIJ7_7DVRfl5NCAT5Yg"/>
11   <title>ImageMagick: MagickCore, C API for ImageMagick: Enhance an Image</title>
12   <meta http-equiv="content-language" content="en-US"/>
13   <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
14   <meta http-equiv="reply-to" content="magick-users@imagemagick.org"/>
15   <meta name="application-name" content="ImageMagick"/>
16   <meta name="description" content="Use ImageMagick to convert, edit, or compose bitmap images in a variety of formats.  In addition resize, rotate, shear, distort and transform images automagically."/>
17   <meta name="application-url" content="http://www.imagemagick.org"/>
18   <meta name="generator" content="PHP"/>
19   <meta name="keywords" content="magickcore, c, api, for, imagemagick:, enhance, an, image, ImageMagick, PerlMagick, image processing, OpenMP, software development library, image, photo, software, Magick++, MagickWand"/>
20   <meta name="rating" content="GENERAL"/>
21   <meta name="robots" content="INDEX, FOLLOW"/>
22   <meta name="generator" content="ImageMagick Studio LLC"/>
23   <meta name="author" content="ImageMagick Studio LLC"/>
24   <meta name="revisit-after" content="2 DAYS"/>
25   <meta name="resource-type" content="document"/>
26   <meta name="copyright" content="Copyright (c) 1999-2012 ImageMagick Studio LLC"/>
27   <meta name="distribution" content="Global"/>
28   <link rel="icon" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../images/wand.png"/>
29   <link rel="shortcut icon" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../images/wand.ico"  type="images/x-icon"/>
30   <link rel="canonical" href="http://www.imagemagick.org" />
31   <link rel="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf"/>
32   <!-- Add jQuery library -->
33   <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
34   
35   <!-- Optionaly include easing and/or mousewheel plugins -->
36   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/jquery.easing-1.3.pack.js"></script>
37   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/jquery.mousewheel-3.0.6.pack.js"></script>
38   
39   <!-- Add fancyBox -->
40   <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/jquery.fancybox.css?v=2.0.4" type="text/css" media="screen" />
41   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/jquery.fancybox.pack.js?v=2.0.4"></script>
42   
43   <!-- Optionaly include button and/or thumbnail helpers -->
44   <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-buttons.css?v=2.0.4" type="text/css" media="screen" />
45   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-buttons.js?v=2.0.4"></script>
46   
47   <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-thumbs.css?v=2.0.4" type="text/css" media="screen" />
48   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-thumbs.js?v=2.0.4"></script>
49   <script type="text/javascript">
50         $(document).ready(function() {
51                 $(".fancybox").fancybox();
52         });
53   </script>
54   <!-- ImageMagick style -->
55   <link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" />
56   <style type="text/css" media="all">
57     @import url("../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/magick.css");
58   </style>
59 </head>
60
61 <body id="www-imagemagick-org">
62 <div class="titlebar">
63 <div style="margin: 17px auto; float: left;">
64   <script type="text/javascript">
65   <!--
66     google_ad_client = "pub-3129977114552745";
67     google_ad_slot = "5439289906";
68     google_ad_width = 728;
69     google_ad_height = 90;
70   //-->
71   </script>
72   <script type="text/javascript"
73     src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
74   </script>
75 </div>
76 <a href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../discourse-server">
77   <img src="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../images/logo.jpg"
78   alt="ImageMagick Logo"
79   style="width: 123px; height: 118px; border: 0px; float: right;" /></a>
80 <a href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../index.html">
81   <img src="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../images/sprite.jpg"
82   alt="ImageMagick Sprite"
83   style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
84 </div>
85
86 <div class="westbar">
87
88 <div class="menu">
89   <a title="About ImageMagick" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../index.html">About ImageMagick</a>
90 </div>
91 <div class="menu">
92   <a title="Binary Releases" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/binary-releases.html">Binary Releases</a>
93 </div>
94 <div class="sub">
95     <a title="Binary Release: Unix" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/binary-releases.html#unix">Unix</a>
96 </div>
97 <div class="sub">
98     <a title="Binary Release: MacOS X" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/binary-releases.html#macosx">Mac OS X</a>
99 </div>
100 <div class="sub">
101     <a title="Binary Release: iOS" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/binary-releases.html#iOS">iOS</a>
102 </div>
103 <div class="sub">
104     <a title="Binary Release: Windows" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/binary-releases.html#windows">Windows</a>
105 </div>
106 <div class="sep"></div>
107 <div class="menu">
108   <a title="Command-line Tools" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/command-line-tools.html">Command-line Tools</a>
109 </div>
110 <div class="sub">
111     <a title="Command-line Tools: Processing" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/command-line-processing.html">Processing</a>
112 </div>
113 <div class="sub">
114     <a title="Command-line Tools: Options" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/command-line-options.html">Options</a>
115 </div>
116 <div class="sub">
117     <a title="Command-line Tools: Usage" href="http://www.imagemagick.org/Usage/">Usage</a>
118 </div>
119 <div class="menu">
120   <a title="Program Interfaces" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/api.html">Program Interfaces</a>
121 </div>
122 <div class="sub">
123     <a title="Program Interface: MagickWand" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/magick-wand.html">MagickWand</a>
124 </div>
125 <div class="sub">
126     <a title="Program Interface: MagickCore" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/magick-core.html">MagickCore</a>
127 </div>
128 <div class="sub">
129     <a title="Program Interface: PerlMagick" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/perl-magick.html">PerlMagick</a>
130 </div>
131 <div class="sub">
132     <a title="Program Interface: Magick++" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/magick++.html">Magick++</a>
133 </div>
134 <div class="sep"></div>
135 <div  class="menu">
136    <a title="Install from Source" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/install-source.html">Install from Source</a>
137 </div>
138 <div class="sub">
139     <a title="Install from Source: Unix" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/install-source.html#unix">Unix</a>
140 </div>
141 <div class="sub">
142     <a title="Install from Source: Windows" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/install-source.html#windows">Windows</a>
143  </div>
144 <div class="menu">
145   <a title="Resources" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/resources.html">Resources</a>
146 </div>
147 <div class="menu">
148   <a title="Architecture" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/architecture.html">Architecture</a>
149 </div>
150 <div class="menu">
151   <a title="Download" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/download.html">Download</a>
152 </div>
153 <div class="sep"></div>
154 <div class="menu">
155   <a title="Search" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/search.html">Search</a>
156 </div>
157 <div class="sep"></div>
158 <div class="menu">
159   <a title="Site Map" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/sitemap.html">Site Map</a>
160 </div>
161 <div  class="sub">
162   <a title="Site Map: Links" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/links.html">Links</a>
163 </div>
164 <div class="sep"></div>
165 <div class="menu">
166   <a rel="follow" title="Sponsors" href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../www/sponsors.html">Sponsors:</a>
167
168   <a href="http://www.networkredux.com"> <img src="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../images/networkredux.png" width="140" height="31" alt="[sponsor]" style="margin-top: 4px; margin-left: 4px; border: 0px; float: left;" /></a>
169   <a href="http://www.dinodirect.com/ipads-tablets/"> <img src="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../images/dino-direct.jpg" width="140" height="90" alt="[sponsor]" style="margin-top: 4px; margin-left: 4px; border: 0px; float: left;" /></a><!-- 201208010120 mickey@163... -->
170 <div class="sponsbox">
171 <div class="sponsor">
172   <a rel="follow" title="Sponsor: The Fastest &amp; Easiest Way to Find Images" href="http://www.graphicsfactory.com">The Fastest &amp; Easiest Way to Find Images</a><!-- 201210010270 graphicsfac... -->
173 </div>
174 <div class="sponsor">
175   <a rel="follow" title="Sponsor: VPS" href="http://www.interdominios.com/vps">VPS</a><!-- 201209010090 barsh@inter... -->
176 </div>
177 <div class="sponsor">
178   <a rel="follow" title="Werbebanner Werbeplane" href="http://www.allesbanner.de">Werbebanner Werbeplane</a><!-- 201212010450 info@druck... -->
179 </div>
180 <div class="sponsor">
181   <a rel="follow" title="Entertainment News &amp; Photos" href="http://www.zimbio.com">Entertainment News &amp; Photos</a><!-- 201211010540 bd@zimb... -->
182 </div>
183 <div class="sponsor">
184   <a rel="follow" title="Sponsor: LED24" href="http://led24.de/">LED24</a><!-- 201207010270 info@led24... -->
185 </div>
186 <div class="sponsor">
187   <a rel="follow" title="Sponsor: Best Website Hosting" href="http://www.top-cheap-web-hosting.com">Best Website Hosting</a><!-- 201304010090 eunge.liu-->
188 </div>
189 <div class="sponsor">
190   <a rel="follow" title="Android Tablet" href="http://www.dinodirect.com/ipads-tablets/">Android Tablet</a><!-- 201208010120 mickey@163... -->
191 </div>
192 <div class="sponsor">
193   <a rel="follow" title="Sponsor: Web Site Hosting" href="http://webhostinggeeks.com">Web Site Hosting</a><!-- 201302010900 funds@enmob... -->
194 </div>
195 <div class="sponsor">
196    <a rel="follow" title="Sponsor: Premium Quality Stock Photos" href="http://www.f1online.pro/en/">Premium Quality Stock Photos</a><!-- 2012080100540 ... -->
197 </div>
198 <div class="sponsor">
199    <a rel="follow" title="Sponsor: Druckerei" href="http://print24.com/de/">Druckerei</a><!-- 2012070100250 ... -->
200 </div>
201 <div class="sponsor">
202   <a rel="follow" title="Sponsor: Managed Server" href="http://www.robhost.de">Managed Server</a><!-- 201210010720 klikics... -->
203 </div>
204 <div class="sponsor">
205   <a rel="follow" title="Sponsor: Druckerei" href="http://www.allesdruck.de">Druckerei</a><!-- 201303011500 r.leo -->
206 </div>
207 <div class="sponsor">
208    <a rel="follow" title="Sponsor: Notebook Reparatur" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur</a><!-- 2012080100300 atlas-multimedia-->
209 </div>
210 <div class="sponsor">
211    <a rel="follow" title="Sponsor: Fototapete - Tapetendruck" href="http://www.druck-expert.com/Fototapete-Tapetendruck,category,8830.html">Fototapete - Tapetendruck</a><!-- 2012100100155 info@druck-->
212 </div>
213 </div>
214 </div>
215 </div>
216
217 <div class="eastbar">
218   <div class="g-plusone" id="gplusone"></div>
219   <script type="text/javascript">
220     window.___gcfg = {
221       lang: 'en-US'
222     };
223
224     (function() {
225       var po = document.createElement('script');
226       po.type = 'text/javascript'; po.async = true;
227       po.src = 'https://apis.google.com/js/plusone.js';
228       var script = document.getElementsByTagName('script')[0];
229       script.parentNode.insertBefore(po, script);
230     })();
231     var gplusone = document.getElementById("gplusone");
232     gplusone.setAttribute("data-size","medium");
233     gplusone.setAttribute("data-count","false");
234   </script>
235 </div>
236
237 <div class="main">
238
239 <h1>Module enhance Methods</h1>
240 <p class="navigation-index">[<a href="enhance.html#AutoGammaImage">AutoGammaImage</a> &bull; <a href="enhance.html#AutoLevelImage">AutoLevelImage</a> &bull; <a href="enhance.html#BrightnessContrastImage">BrightnessContrastImage</a> &bull; <a href="enhance.html#ColorDecisionListImage">ColorDecisionListImage</a> &bull; <a href="enhance.html#ClutImage">ClutImage</a> &bull; <a href="enhance.html#ContrastImage">ContrastImage</a> &bull; <a href="enhance.html#ContrastStretchImage">ContrastStretchImage</a> &bull; <a href="enhance.html#EnhanceImage">EnhanceImage</a> &bull; <a href="enhance.html#EqualizeImage">EqualizeImage</a> &bull; <a href="enhance.html#GammaImage">GammaImage</a> &bull; <a href="enhance.html#HaldClutImage">HaldClutImage</a> &bull; <a href="enhance.html#LevelImage">LevelImage</a> &bull; <a href="enhance.html#LevelizeImage">LevelizeImage</a> &bull; <a href="enhance.html#LevelizeImageChannel">LevelizeImageChannel</a> &bull; <a href="enhance.html#LevelImageColor">LevelImageColor</a> &bull; <a href="enhance.html#LinearStretchImage">LinearStretchImage</a> &bull; <a href="enhance.html#ModulateImage">ModulateImage</a> &bull; <a href="enhance.html#NegateImage">NegateImage</a> &bull; <a href="enhance.html#The NormalizeImage">The NormalizeImage</a> &bull; <a href="enhance.html#SigmoidalContrastImage">SigmoidalContrastImage</a>]</p>
241
242 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="AutoGammaImage">AutoGammaImage</a></h2>
243 <div class="doc-section">
244
245 <p>AutoGammaImage() extract the 'mean' from the image and adjust the image to try make set its gamma appropriatally.</p>
246
247 <p>The format of the AutoGammaImage method is:</p>
248
249 <pre class="code">
250   MagickBooleanType AutoGammaImage(Image *image)
251   MagickBooleanType AutoGammaImageChannel(Image *image,
252     const ChannelType channel)
253 </pre>
254
255 <p>A description of each parameter follows:</p>
256
257 <h5>image</h5>
258 <p>The image to auto-level</p>
259
260 <h5>channel</h5>
261 <p>The channels to auto-level.  If the special 'SyncChannels' flag is set all given channels is adjusted in the same way using the mean average of those channels.</p>
262
263  </div>
264 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="AutoLevelImage">AutoLevelImage</a></h2>
265 <div class="doc-section">
266
267 <p>AutoLevelImage() adjusts the levels of a particular image channel by scaling the minimum and maximum values to the full quantum range.</p>
268
269 <p>The format of the LevelImage method is:</p>
270
271 <pre class="code">
272   MagickBooleanType AutoLevelImage(Image *image)
273   MagickBooleanType AutoLevelImageChannel(Image *image,
274     const ChannelType channel)
275 </pre>
276
277 <p>A description of each parameter follows:</p>
278
279 <h5>image</h5>
280 <p>The image to auto-level</p>
281
282 <h5>channel</h5>
283 <p>The channels to auto-level.  If the special 'SyncChannels' flag is set the min/max/mean value of all given channels is used for all given channels, to all channels in the same way.</p>
284
285  </div>
286 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="BrightnessContrastImage">BrightnessContrastImage</a></h2>
287 <div class="doc-section">
288
289 <p>BrightnessContrastImage() changes the brightness and/or contrast of an image.  It converts the brightness and contrast parameters into slope and intercept and calls a polynomical function to apply to the image.</p>
290
291 <p>The format of the BrightnessContrastImage method is:</p>
292
293 <pre class="code">
294   MagickBooleanType BrightnessContrastImage(Image *image,
295     const double brightness,const double contrast)
296   MagickBooleanType BrightnessContrastImageChannel(Image *image,
297     const ChannelType channel,const double brightness,
298     const double contrast)
299 </pre>
300
301 <p>A description of each parameter follows:</p>
302
303 <h5>image</h5>
304 <p>the image.</p>
305
306 <h5>channel</h5>
307 <p>the channel.</p>
308
309 <h5>brightness</h5>
310 <p>the brightness percent (-100 .. 100).</p>
311
312 <h5>contrast</h5>
313 <p>the contrast percent (-100 .. 100).</p>
314
315  </div>
316 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="ColorDecisionListImage">ColorDecisionListImage</a></h2>
317 <div class="doc-section">
318
319 <p>ColorDecisionListImage() accepts a lightweight Color Correction Collection (CCC) file which solely contains one or more color corrections and applies the correction to the image.  Here is a sample CCC file:</p>
320
321 <pre class="text">
322       <ColorCorrectionCollection xmlns="urn:ASC:CDL:v1.2">
323       <ColorCorrection id="cc03345">
324             <SOPNode>
325                  <Slope> 0.9 1.2 0.5 </Slope>
326                  <Offset> 0.4 -0.5 0.6 </Offset>
327                  <Power> 1.0 0.8 1.5 </Power>
328             </SOPNode>
329             <SATNode>
330                  <Saturation> 0.85 </Saturation>
331             </SATNode>
332       </ColorCorrection>
333       </ColorCorrectionCollection>
334 </pre>
335
336 <p>which includes the slop, offset, and power for each of the RGB channels as well as the saturation.</p>
337
338 <p>The format of the ColorDecisionListImage method is:</p>
339
340 <pre class="code">
341   MagickBooleanType ColorDecisionListImage(Image *image,
342     const char *color_correction_collection)
343 </pre>
344
345 <p>A description of each parameter follows:</p>
346
347 <h5>image</h5>
348 <p>the image.</p>
349
350 <h5>color_correction_collection</h5>
351 <p>the color correction collection in XML.</p>
352
353  </div>
354 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="ClutImage">ClutImage</a></h2>
355 <div class="doc-section">
356
357 <p>ClutImage() replaces each color value in the given image, by using it as an index to lookup a replacement color value in a Color Look UP Table in the form of an image.  The values are extracted along a diagonal of the CLUT image so either a horizontal or vertial gradient image can be used.</p>
358
359 <p>Typically this is used to either re-color a gray-scale image according to a color gradient in the CLUT image, or to perform a freeform histogram (level) adjustment according to the (typically gray-scale) gradient in the CLUT image.</p>
360
361 <p>When the 'channel' mask includes the matte/alpha transparency channel but one image has no such channel it is assumed that that image is a simple gray-scale image that will effect the alpha channel values, either for gray-scale coloring (with transparent or semi-transparent colors), or a histogram adjustment of existing alpha channel values.   If both images have matte channels, direct and normal indexing is applied, which is rarely used.</p>
362
363 <p>The format of the ClutImage method is:</p>
364
365 <pre class="code">
366   MagickBooleanType ClutImage(Image *image,Image *clut_image)
367   MagickBooleanType ClutImageChannel(Image *image,
368     const ChannelType channel,Image *clut_image)
369 </pre>
370
371 <p>A description of each parameter follows:</p>
372
373 <h5>image</h5>
374 <p>the image, which is replaced by indexed CLUT values</p>
375
376 <h5>clut_image</h5>
377 <p>the color lookup table image for replacement color values.</p>
378
379 <h5>channel</h5>
380 <p>the channel.</p>
381
382  </div>
383 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="ContrastImage">ContrastImage</a></h2>
384 <div class="doc-section">
385
386 <p>ContrastImage() enhances the intensity differences between the lighter and darker elements of the image.  Set sharpen to a MagickTrue to increase the image contrast otherwise the contrast is reduced.</p>
387
388 <p>The format of the ContrastImage method is:</p>
389
390 <pre class="code">
391   MagickBooleanType ContrastImage(Image *image,
392     const MagickBooleanType sharpen)
393 </pre>
394
395 <p>A description of each parameter follows:</p>
396
397 <h5>image</h5>
398 <p>the image.</p>
399
400 <h5>sharpen</h5>
401 <p>Increase or decrease image contrast.</p>
402
403  </div>
404 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="ContrastStretchImage">ContrastStretchImage</a></h2>
405 <div class="doc-section">
406
407 <p>ContrastStretchImage() is a simple image enhancement technique that attempts to improve the contrast in an image by `stretching' the range of intensity values it contains to span a desired range of values. It differs from the more sophisticated histogram equalization in that it can only apply a linear scaling function to the image pixel values.  As a result the `enhancement' is less harsh.</p>
408
409 <p>The format of the ContrastStretchImage method is:</p>
410
411 <pre class="code">
412   MagickBooleanType ContrastStretchImage(Image *image,
413     const char *levels)
414   MagickBooleanType ContrastStretchImageChannel(Image *image,
415     const size_t channel,const double black_point,
416     const double white_point)
417 </pre>
418
419 <p>A description of each parameter follows:</p>
420
421 <h5>image</h5>
422 <p>the image.</p>
423
424 <h5>channel</h5>
425 <p>the channel.</p>
426
427 <h5>black_point</h5>
428 <p>the black point.</p>
429
430 <h5>white_point</h5>
431 <p>the white point.</p>
432
433 <h5>levels</h5>
434 <p>Specify the levels where the black and white points have the range of 0 to number-of-pixels (e.g. 1, 10x90, etc.).</p>
435
436  </div>
437 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="EnhanceImage">EnhanceImage</a></h2>
438 <div class="doc-section">
439
440 <p>EnhanceImage() applies a digital filter that improves the quality of a noisy image.</p>
441
442 <p>The format of the EnhanceImage method is:</p>
443
444 <pre class="code">
445   Image *EnhanceImage(const Image *image,ExceptionInfo *exception)
446 </pre>
447
448 <p>A description of each parameter follows:</p>
449
450 <h5>image</h5>
451 <p>the image.</p>
452
453 <h5>exception</h5>
454 <p>return any errors or warnings in this structure.</p>
455
456  </div>
457 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="EqualizeImage">EqualizeImage</a></h2>
458 <div class="doc-section">
459
460 <p>EqualizeImage() applies a histogram equalization to the image.</p>
461
462 <p>The format of the EqualizeImage method is:</p>
463
464 <pre class="code">
465   MagickBooleanType EqualizeImage(Image *image)
466   MagickBooleanType EqualizeImageChannel(Image *image,
467     const ChannelType channel)
468 </pre>
469
470 <p>A description of each parameter follows:</p>
471
472 <h5>image</h5>
473 <p>the image.</p>
474
475 <h5>channel</h5>
476 <p>the channel.</p>
477
478  </div>
479 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="GammaImage">GammaImage</a></h2>
480 <div class="doc-section">
481
482 <p>GammaImage() gamma-corrects a particular image channel.  The same image viewed on different devices will have perceptual differences in the way the image's intensities are represented on the screen.  Specify individual gamma levels for the red, green, and blue channels, or adjust all three with the gamma parameter.  Values typically range from 0.8 to 2.3.</p>
483
484 <p>You can also reduce the influence of a particular channel with a gamma value of 0.</p>
485
486 <p>The format of the GammaImage method is:</p>
487
488 <pre class="code">
489   MagickBooleanType GammaImage(Image *image,const char *level)
490   MagickBooleanType GammaImageChannel(Image *image,
491     const ChannelType channel,const double gamma)
492 </pre>
493
494 <p>A description of each parameter follows:</p>
495
496 <h5>image</h5>
497 <p>the image.</p>
498
499 <h5>channel</h5>
500 <p>the channel.</p>
501
502 <h5>level</h5>
503 <p>the image gamma as a string (e.g. 1.6,1.2,1.0).</p>
504
505 <h5>gamma</h5>
506 <p>the image gamma.</p>
507
508  </div>
509 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="HaldClutImage">HaldClutImage</a></h2>
510 <div class="doc-section">
511
512 <p>HaldClutImage() applies a Hald color lookup table to the image.  A Hald color lookup table is a 3-dimensional color cube mapped to 2 dimensions. Create it with the HALD coder.  You can apply any color transformation to the Hald image and then use this method to apply the transform to the image.</p>
513
514 <p>The format of the HaldClutImage method is:</p>
515
516 <pre class="code">
517   MagickBooleanType HaldClutImage(Image *image,Image *hald_image)
518   MagickBooleanType HaldClutImageChannel(Image *image,
519     const ChannelType channel,Image *hald_image)
520 </pre>
521
522 <p>A description of each parameter follows:</p>
523
524 <h5>image</h5>
525 <p>the image, which is replaced by indexed CLUT values</p>
526
527 <h5>hald_image</h5>
528 <p>the color lookup table image for replacement color values.</p>
529
530 <h5>channel</h5>
531 <p>the channel.</p>
532
533  </div>
534 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="LevelImage">LevelImage</a></h2>
535 <div class="doc-section">
536
537 <p>LevelImage() adjusts the levels of a particular image channel by scaling the colors falling between specified white and black points to the full available quantum range.</p>
538
539 <p>The parameters provided represent the black, and white points.  The black point specifies the darkest color in the image. Colors darker than the black point are set to zero.  White point specifies the lightest color in the image.  Colors brighter than the white point are set to the maximum quantum value.</p>
540
541 <p>If a '!' flag is given, map black and white colors to the given levels rather than mapping those levels to black and white.  See LevelizeImageChannel() and LevelizeImageChannel(), below.</p>
542
543 <p>Gamma specifies a gamma correction to apply to the image.</p>
544
545 <p>The format of the LevelImage method is:</p>
546
547 <pre class="code">
548   MagickBooleanType LevelImage(Image *image,const char *levels)
549 </pre>
550
551 <p>A description of each parameter follows:</p>
552
553 <h5>image</h5>
554 <p>the image.</p>
555
556 <h5>levels</h5>
557 <p>Specify the levels where the black and white points have the range of 0-QuantumRange, and gamma has the range 0-10 (e.g. 10x90+2). A '!' flag inverts the re-mapping.</p>
558
559  </div>
560 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="LevelizeImage">LevelizeImage</a></h2>
561 <div class="doc-section">
562
563 <p>LevelizeImage() applies the normal level operation to the image, spreading out the values between the black and white points over the entire range of values.  Gamma correction is also applied after the values has been mapped.</p>
564
565 <p>It is typically used to improve image contrast, or to provide a controlled linear threshold for the image. If the black and white points are set to the minimum and maximum values found in the image, the image can be normalized.  or by swapping black and white values, negate the image.</p>
566
567 <p>The format of the LevelizeImage method is:</p>
568
569 <pre class="code">
570   MagickBooleanType LevelizeImage(Image *image,const double black_point,
571     const double white_point,const double gamma)
572   MagickBooleanType LevelizeImageChannel(Image *image,
573     const ChannelType channel,const double black_point,
574     const double white_point,const double gamma)
575 </pre>
576
577 <p>A description of each parameter follows:</p>
578
579 <h5>image</h5>
580 <p>the image.</p>
581
582 <h5>channel</h5>
583 <p>the channel.</p>
584
585 <h5>black_point</h5>
586 <p>The level which is to be mapped to zero (black)</p>
587
588 <h5>white_point</h5>
589 <p>The level which is to be mapped to QuantiumRange (white)</p>
590
591 <h5>gamma</h5>
592 <p>adjust gamma by this factor before mapping values. use 1.0 for purely linear stretching of image color values</p>
593
594  </div>
595 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="LevelizeImageChannel">LevelizeImageChannel</a></h2>
596 <div class="doc-section">
597
598 <p>LevelizeImageChannel() applies the reversed LevelImage() operation to just the specific channels specified.  It compresses the full range of color values, so that they lie between the given black and white points. Gamma is applied before the values are mapped.</p>
599
600 <p>LevelizeImageChannel() can be called with by using a +level command line API option, or using a '!' on a -level or LevelImage() geometry string.</p>
601
602 <p>It can be used for example de-contrast a greyscale image to the exact levels specified.  Or by using specific levels for each channel of an image you can convert a gray-scale image to any linear color gradient, according to those levels.</p>
603
604 <p>The format of the LevelizeImageChannel method is:</p>
605
606 <pre class="code">
607   MagickBooleanType LevelizeImageChannel(Image *image,
608     const ChannelType channel,const char *levels)
609 </pre>
610
611 <p>A description of each parameter follows:</p>
612
613 <h5>image</h5>
614 <p>the image.</p>
615
616 <h5>channel</h5>
617 <p>the channel.</p>
618
619 <h5>black_point</h5>
620 <p>The level to map zero (black) to.</p>
621
622 <h5>white_point</h5>
623 <p>The level to map QuantiumRange (white) to.</p>
624
625 <h5>gamma</h5>
626 <p>adjust gamma by this factor before mapping values.</p>
627
628  </div>
629 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="LevelImageColor">LevelImageColor</a></h2>
630 <div class="doc-section">
631
632 <p>LevelImageColor() maps the given color to "black" and "white" values, linearly spreading out the colors, and level values on a channel by channel bases, as per LevelImage().  The given colors allows you to specify different level ranges for each of the color channels separately.</p>
633
634 <p>If the boolean 'invert' is set true the image values will modifyed in the reverse direction. That is any existing "black" and "white" colors in the image will become the color values given, with all other values compressed appropriatally.  This effectivally maps a greyscale gradient into the given color gradient.</p>
635
636 <p>The format of the LevelColorsImageChannel method is:</p>
637
638 <pre class="code">
639       MagickBooleanType LevelColorsImage(Image *image,
640   const MagickPixelPacket *black_color,
641   const MagickPixelPacket *white_color,const MagickBooleanType invert)
642       MagickBooleanType LevelColorsImageChannel(Image *image,
643   const ChannelType channel,const MagickPixelPacket *black_color,
644   const MagickPixelPacket *white_color,const MagickBooleanType invert)
645 </pre>
646
647 <p>A description of each parameter follows:</p>
648
649 <h5>image</h5>
650 <p>the image.</p>
651
652 <h5>channel</h5>
653 <p>the channel.</p>
654
655 <h5>black_color</h5>
656 <p>The color to map black to/from</p>
657
658 <h5>white_point</h5>
659 <p>The color to map white to/from</p>
660
661 <h5>invert</h5>
662 <p>if true map the colors (levelize), rather than from (level)</p>
663
664  </div>
665 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="LinearStretchImage">LinearStretchImage</a></h2>
666 <div class="doc-section">
667
668 <p>LinearStretchImage() discards any pixels below the black point and above the white point and levels the remaining pixels.</p>
669
670 <p>The format of the LinearStretchImage method is:</p>
671
672 <pre class="code">
673   MagickBooleanType LinearStretchImage(Image *image,
674     const double black_point,const double white_point)
675 </pre>
676
677 <p>A description of each parameter follows:</p>
678
679 <h5>image</h5>
680 <p>the image.</p>
681
682 <h5>black_point</h5>
683 <p>the black point.</p>
684
685 <h5>white_point</h5>
686 <p>the white point.</p>
687
688  </div>
689 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="ModulateImage">ModulateImage</a></h2>
690 <div class="doc-section">
691
692 <p>ModulateImage() lets you control the brightness, saturation, and hue of an image.  Modulate represents the brightness, saturation, and hue as one parameter (e.g. 90,150,100).  If the image colorspace is HSL, the modulation is lightness, saturation, and hue.  And if the colorspace is HWB, use blackness, whiteness, and hue.</p>
693
694 <p>The format of the ModulateImage method is:</p>
695
696 <pre class="code">
697   MagickBooleanType ModulateImage(Image *image,const char *modulate)
698 </pre>
699
700 <p>A description of each parameter follows:</p>
701
702 <h5>image</h5>
703 <p>the image.</p>
704
705 <h5>modulate</h5>
706 <p>Define the percent change in brightness, saturation, and hue.</p>
707
708  </div>
709 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="NegateImage">NegateImage</a></h2>
710 <div class="doc-section">
711
712 <p>NegateImage() negates the colors in the reference image.  The grayscale option means that only grayscale values within the image are negated.</p>
713
714 <p>The format of the NegateImageChannel method is:</p>
715
716 <pre class="code">
717   MagickBooleanType NegateImage(Image *image,
718     const MagickBooleanType grayscale)
719   MagickBooleanType NegateImageChannel(Image *image,
720     const ChannelType channel,const MagickBooleanType grayscale)
721 </pre>
722
723 <p>A description of each parameter follows:</p>
724
725 <h5>image</h5>
726 <p>the image.</p>
727
728 <h5>channel</h5>
729 <p>the channel.</p>
730
731 <h5>grayscale</h5>
732 <p>If MagickTrue, only negate grayscale pixels within the image.</p>
733
734  </div>
735 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="The_NormalizeImage">The NormalizeImage</a></h2>
736 <div class="doc-section">
737
738 <p>The NormalizeImage() method enhances the contrast of a color image by mapping the darkest 2 percent of all pixel to black and the brightest 1 percent to white.</p>
739
740 <p>The format of the NormalizeImage method is:</p>
741
742 <pre class="code">
743   MagickBooleanType NormalizeImage(Image *image)
744   MagickBooleanType NormalizeImageChannel(Image *image,
745     const ChannelType channel)
746 </pre>
747
748 <p>A description of each parameter follows:</p>
749
750 <h5>image</h5>
751 <p>the image.</p>
752
753 <h5>channel</h5>
754 <p>the channel.</p>
755
756  </div>
757 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="SigmoidalContrastImage">SigmoidalContrastImage</a></h2>
758 <div class="doc-section">
759
760 <p>SigmoidalContrastImage() adjusts the contrast of an image with a non-linear sigmoidal contrast algorithm.  Increase the contrast of the image using a sigmoidal transfer function without saturating highlights or shadows. Contrast indicates how much to increase the contrast (0 is none; 3 is typical; 20 is pushing it); mid-point indicates where midtones fall in the resultant image (0 is white; 50 is middle-gray; 100 is black).  Set sharpen to MagickTrue to increase the image contrast otherwise the contrast is reduced.</p>
761
762 <p>The format of the SigmoidalContrastImage method is:</p>
763
764 <pre class="code">
765   MagickBooleanType SigmoidalContrastImage(Image *image,
766     const MagickBooleanType sharpen,const char *levels)
767   MagickBooleanType SigmoidalContrastImageChannel(Image *image,
768     const ChannelType channel,const MagickBooleanType sharpen,
769     const double contrast,const double midpoint)
770 </pre>
771
772 <p>A description of each parameter follows:</p>
773
774 <h5>image</h5>
775 <p>the image.</p>
776
777 <h5>channel</h5>
778 <p>the channel.</p>
779
780 <h5>sharpen</h5>
781 <p>Increase or decrease image contrast.</p>
782
783 <h5>alpha</h5>
784 <p>strength of the contrast, the larger the number the more 'threshold-like' it becomes.</p>
785
786 <h5>beta</h5>
787 <p>midpoint of the function as a color value 0 to QuantumRange.</p>
788
789  </div>
790
791 </div>
792
793 <div id="linkbar">
794     <span id="linkbar-west">&nbsp;</span>
795     <span id="linkbar-center">
796       <a href="../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../discourse-server">Discourse Server</a> &bull;
797       <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>
798     </span>
799     <span id="linkbar-east">&nbsp;</span>
800   </div>
801   <div class="footer">
802     <span id="footer-west">&copy; 1999-2012 ImageMagick Studio LLC</span>
803     <span id="footer-east"> <a href="http://www.imagemagick.org/script/contact.php">Contact the Wizards</a></span>
804   </div>
805   <div style="clear: both; margin: 0; width: 100%; "></div>
806   <script type="text/javascript">
807     var _gaq = _gaq || [];
808     _gaq.push(['_setAccount', 'UA-17690367-1']);
809     _gaq.push(['_trackPageview']);
810
811     (function() {
812       var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
813       ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
814       var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
815     })();
816   </script>
817 </body>
818 </html>