]> granicus.if.org Git - imagemagick/blob - www/api/enhance.html
(no commit message)
[imagemagick] / www / api / enhance.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" \r
2   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
3 <html version="-//W3C//DTD XHTML 1.1//EN"\r
4       xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"\r
5       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
6       xsi:schemaLocation="http://www.w3.org/1999/xhtml\r
7                           http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd">\r
8 <head>\r
9   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>\r
10   <meta name="verify-v1" content="g222frIIxcQTrvDR3NBRUSKP3AnMNoqxOkIniCEkV7U="/>\r
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."/>
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, ImageMagic, MagickCore, MagickWand, PerlMagick, Magick++, RMagick, PythonMagick, JMagick, TclMagick, Image, Magick, Magic, Wand, ImageMagickObject, Swiss, Army, Knife, Image, Processing"/>
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-2011 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="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf"/>\r
31   <link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" />\r
32   <style type="text/css" media="all">\r
33     @import url("../../www/magick.css");\r
34   </style>\r
35   <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>\r
36   <script type="text/javascript" src="../fancybox/jquery.fancybox-1.3.4.pack.js"></script>\r
37   <link rel="stylesheet" type="text/css" href="../fancybox/jquery.fancybox-1.3.4.css" media="screen" />\r
38   <script type="text/javascript">\r
39     $(document).ready(function() {\r
40       $("a[href$=.jpg],a[href$=.png],a[href$=.gif]").fancybox({\r
41         'transitionIn'  : 'elastic',\r
42         'transitionOut' : 'elastic',\r
43         'overlayShow'   : false,\r
44         'opacity'       : true\r
45       });\r
46     });\r
47   </script>\r
48 </head>\r
49 \r
50 <body id="www-imagemagick-org">\r
51 <div class="titlebar">\r
52 <div style="margin: 17px auto; float: left;">\r
53   <script type="text/javascript">\r
54   <!--\r
55     google_ad_client = "pub-3129977114552745";\r
56     google_ad_slot = "5439289906";\r
57     google_ad_width = 728;\r
58     google_ad_height = 90;\r
59   //-->\r
60   </script>\r
61   <script type="text/javascript"\r
62     src="http://pagead2.googlesyndication.com/pagead/show_ads.js">\r
63   </script>\r
64 </div>\r
65 <a href="http://www.imagemagick.org/discourse-server/">\r
66   <img src="../../images/logo.jpg"\r
67   alt="ImageMagick Logo"\r
68   style="width: 123px; height: 118px; border: 0px; float: right;" /></a>\r
69 <a href="../../index.html">\r
70   <img src="../../images/sprite.jpg"\r
71   alt="ImageMagick Sprite"\r
72   style="width: 114px; height: 118px; border: 0px; float: right;" /></a>\r
73 </div>\r
74 \r
75 <div class="westbar">\r
76 \r
77 <div class="menu">
78   <a title="About ImageMagick" href="../../index.html">About ImageMagick</a>
79 </div>
80 <div class="sep"></div>\r
81 <div class="menu">
82   <a title="Binary Releases" href="../../www/binary-releases.html">Binary Releases</a>
83 </div>
84 <div class="sub">
85     <a title="Binary Release: Unix" href="../../www/binary-releases.html#unix">Unix</a>
86 </div>
87 <div class="sub">
88     <a title="Binary Release: MacOS X" href="../../www/binary-releases.html#macosx">Mac OS X</a>
89 </div>
90 <div class="sub">
91     <a title="Binary Release: iPhone" href="../../www/binary-releases.html#iPhone">iPhone</a>
92 </div>
93 <div class="sub">
94     <a title="Binary Release: Windows" href="../../www/binary-releases.html#windows">Windows</a>
95 </div>
96 <div class="sep"></div>\r
97 <div class="menu">
98   <a title="Command-line Tools" href="../../www/command-line-tools.html">Command-line Tools</a>
99 </div>
100 <div class="sub">
101     <a title="Command-line Tools: Processing" href="../../www/command-line-processing.html">Processing</a>
102 </div>
103 <div class="sub">
104     <a title="Command-line Tools: Options" href="../../www/command-line-options.html">Options</a>
105 </div>
106 <div class="sub">
107     <a title="Command-line Tools: Usage" href="http://www.imagemagick.org/Usage/">Usage</a>
108 </div>
109 <div class="menu">
110   <a title="Program Interfaces" href="../../www/api.html">Program Interfaces</a>
111 </div>
112 <div class="sub">
113     <a title="Program Interface: MagickWand" href="../../www/magick-wand.html">MagickWand</a>
114 </div>
115 <div class="sub">
116     <a title="Program Interface: MagickCore" href="../../www/magick-core.html">MagickCore</a>
117 </div>
118 <div class="sub">
119     <a title="Program Interface: PerlMagick" href="../../www/perl-magick.html">PerlMagick</a>
120 </div>
121 <div class="sub">
122     <a title="Program Interface: Magick++" href="../../www/magick++.html">Magick++</a>
123 </div>
124 <div class="sep"></div>\r
125 <div  class="menu">
126    <a title="Install from Source" href="../../www/install-source.html">Install from Source</a>
127 </div>
128 <div class="sub">
129     <a title="Install from Source: Unix" href="../../www/install-source.html#unix">Unix</a>
130 </div>
131 <div class="sub">
132     <a title="Install from Source: Windows" href="../../www/install-source.html#windows">Windows</a>
133  </div>
134 <div class="menu">
135   <a title="Resources" href="../../www/resources.html">Resources</a>
136 </div>
137 <div class="menu">
138   <a title="Architecture" href="../../www/architecture.html">Architecture</a>
139 </div>
140 <div class="menu">
141   <a title="Download" href="../../www/download.html">Download</a>
142 </div>
143 <div class="sep"></div>\r
144 <div class="menu">
145   <a title="Search" href="../../www/search.html">Search</a>
146 </div>
147 <div class="sep"></div>\r
148 <div class="menu">
149   <a title="Site Map" href="../../www/sitemap.html">Site Map</a>
150 </div>
151 <div  class="sub">
152   <a title="Site Map: Links" href="../../www/links.html">Links</a>
153 </div>
154 <div class="sep"></div>\r
155 <div  class="menu">
156   <a rel="follow" title="Sponsors" href="../../www/sponsors.html">Sponsors:</a>
157
158 <a href="http://www.networkredux.com">
159   <img src="../../images/networkredux.png" alt="[sponsor]"
160   style="margin-top: 4px; margin-left: 4px; border: 0px; float: left;" /></a>
161 <div class="sponsbox">
162 <div  class="sponsor">
163   <a rel="follow" title="Sponsor: Web Hosting Break" href="http://www.webhostingbreak.com">Web Hosting Break</a><!-- 201109010090 ian@ian-m... -->
164 </div>
165 <div  class="sponsor">
166   <a rel="follow" title="Sponsor: Druckerei" href="http://www.allesdruck.de">Druckerei</a><!-- 201303011500 r.leo -->
167 </div>
168 <div  class="sponsor">
169   <a rel="follow" title="Sponsor: Website Hosting" href="http://www.hostreviewgeeks.com">Website Hosting</a><!-- 201110010090 alexanian media -->
170 </div>
171 <div  class="sponsor">
172   <a rel="follow" title="Sponsor: Hotel München" href="http://www.messehotel-erb-muenchen.de">Hotel München</a><!-- 201111010450 cerb -->
173 </div>
174 <div  class="sponsor">
175   <a rel="follow" title="Sponsor: Best Web Hosting" href="http://webhostinggeeks.com">Best Web Hosting</a><!-- 201110010720 -->
176 </div>
177 <div  class="sponsor">
178   <a rel="follow" title="Sponsor: Flyer drucken" href="http://www.online-druck.biz">Flyer drucken</a><!-- 201109010900 Floeter-->
179 </div>
180 <div  class="sponsor">
181   <a rel="follow" title="Sponsor: Web Hosting Reviews" href="http://www.webhostingmasters.com">Web Hosting Reviews</a><!-- 201107011500 affliatelabel -->
182 </div>
183 <div  class="sponsor">
184   <a rel="follow" title="Sponsor: Druckerei" href="http://print24.com/de/">Druckerei</a><!-- 201110010720 -->
185 </div>
186 <div  class="sponsor">
187   <a rel="follow" title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
188 </div>
189 <div  class="sponsor">
190    <a rel="follow" title="Sponsor: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011080100030 autoteile-Carparts-->
191 </div>
192 </div>
193 </div>
194 </div>\r
195 \r
196 <div class="eastbar">\r
197 \r
198 </div>\r
199 \r
200 <div class="main">\r
201 \r
202 <h1>Module enhance Methods</h1>
203 <p class="navigation-index">[<a href="#AutoGammaImage">AutoGammaImage</a> &bull; <a href="#AutoLevelImage">AutoLevelImage</a> &bull; <a href="#Use BrightnessContrastImage">Use BrightnessContrastImage</a> &bull; <a href="#ColorDecisionListImage">ColorDecisionListImage</a> &bull; <a href="#ClutImage">ClutImage</a> &bull; <a href="#ContrastImage">ContrastImage</a> &bull; <a href="#The ContrastStretchImage">The ContrastStretchImage</a> &bull; <a href="#EnhanceImage">EnhanceImage</a> &bull; <a href="#EqualizeImage">EqualizeImage</a> &bull; <a href="#GammaImage">GammaImage</a> &bull; <a href="#HaldClutImage">HaldClutImage</a> &bull; <a href="#LevelImage">LevelImage</a> &bull; <a href="#LevelizeImage">LevelizeImage</a> &bull; <a href="#LevelizeImageChannel">LevelizeImageChannel</a> &bull; <a href="#LevelImageColor">LevelImageColor</a> &bull; <a href="#The LinearStretchImage">The LinearStretchImage</a> &bull; <a href="#ModulateImage">ModulateImage</a> &bull; <a href="#NegateImage">NegateImage</a> &bull; <a href="#The NormalizeImage">The NormalizeImage</a> &bull; <a href="#SigmoidalContrastImage">SigmoidalContrastImage</a>]</p>
204
205 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="AutoGammaImage">AutoGammaImage</a></h2>
206 <div class="doc-section">
207
208 <p>AutoGammaImage() extract the 'mean' from the image and adjust the image to try make set its gamma appropriatally.</p>
209
210 <p>The format of the AutoGammaImage method is:</p>
211
212 <pre class="code">
213   MagickBooleanType AutoGammaImage(Image *image)
214   MagickBooleanType AutoGammaImageChannel(Image *image,
215     const ChannelType channel)
216 </pre>
217
218 <p>A description of each parameter follows:</p>
219
220 <h5>image</h5>
221 <p>The image to auto-level</p>
222
223 <h5>channel</h5>
224 <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>
225
226  </div>
227 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="AutoLevelImage">AutoLevelImage</a></h2>
228 <div class="doc-section">
229
230 <p>AutoLevelImage() adjusts the levels of a particular image channel by scaling the minimum and maximum values to the full quantum range.</p>
231
232 <p>The format of the LevelImage method is:</p>
233
234 <pre class="code">
235   MagickBooleanType AutoLevelImage(Image *image)
236   MagickBooleanType AutoLevelImageChannel(Image *image,
237     const ChannelType channel)
238 </pre>
239
240 <p>A description of each parameter follows:</p>
241
242 <h5>image</h5>
243 <p>The image to auto-level</p>
244
245 <h5>channel</h5>
246 <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>
247
248  </div>
249 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="Use_BrightnessContrastImage">Use BrightnessContrastImage</a></h2>
250 <div class="doc-section">
251
252 <p>Use BrightnessContrastImage() to change 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>
253
254 <p>The format of the BrightnessContrastImage method is:</p>
255
256 <pre class="code">
257   MagickBooleanType BrightnessContrastImage(Image *image,
258     const double brightness,const double contrast)
259   MagickBooleanType BrightnessContrastImageChannel(Image *image,
260     const ChannelType channel,const double brightness,
261     const double contrast)
262 </pre>
263
264 <p>A description of each parameter follows:</p>
265
266 <h5>image</h5>
267 <p>the image.</p>
268
269 <h5>channel</h5>
270 <p>the channel.</p>
271
272 <h5>brightness</h5>
273 <p>the brightness percent (-100 .. 100).</p>
274
275 <h5>contrast</h5>
276 <p>the contrast percent (-100 .. 100).</p>
277
278  </div>
279 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="ColorDecisionListImage">ColorDecisionListImage</a></h2>
280 <div class="doc-section">
281
282 <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>
283
284 <pre class="text">
285       <ColorCorrectionCollection xmlns="urn:ASC:CDL:v1.2">
286       <ColorCorrection id="cc03345">
287             <SOPNode>
288                  <Slope> 0.9 1.2 0.5 </Slope>
289                  <Offset> 0.4 -0.5 0.6 </Offset>
290                  <Power> 1.0 0.8 1.5 </Power>
291             </SOPNode>
292             <SATNode>
293                  <Saturation> 0.85 </Saturation>
294             </SATNode>
295       </ColorCorrection>
296       </ColorCorrectionCollection>
297 </pre>
298
299 <p>which includes the slop, offset, and power for each of the RGB channels as well as the saturation.</p>
300
301 <p>The format of the ColorDecisionListImage method is:</p>
302
303 <pre class="code">
304   MagickBooleanType ColorDecisionListImage(Image *image,
305     const char *color_correction_collection)
306 </pre>
307
308 <p>A description of each parameter follows:</p>
309
310 <h5>image</h5>
311 <p>the image.</p>
312
313 <h5>color_correction_collection</h5>
314 <p>the color correction collection in XML.</p>
315
316  </div>
317 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="ClutImage">ClutImage</a></h2>
318 <div class="doc-section">
319
320 <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>
321
322 <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>
323
324 <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>
325
326 <p>The format of the ClutImage method is:</p>
327
328 <pre class="code">
329   MagickBooleanType ClutImage(Image *image,Image *clut_image)
330   MagickBooleanType ClutImageChannel(Image *image,
331     const ChannelType channel,Image *clut_image)
332 </pre>
333
334 <p>A description of each parameter follows:</p>
335
336 <h5>image</h5>
337 <p>the image, which is replaced by indexed CLUT values</p>
338
339 <h5>clut_image</h5>
340 <p>the color lookup table image for replacement color values.</p>
341
342 <h5>channel</h5>
343 <p>the channel.</p>
344
345  </div>
346 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="ContrastImage">ContrastImage</a></h2>
347 <div class="doc-section">
348
349 <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>
350
351 <p>The format of the ContrastImage method is:</p>
352
353 <pre class="code">
354   MagickBooleanType ContrastImage(Image *image,
355     const MagickBooleanType sharpen)
356 </pre>
357
358 <p>A description of each parameter follows:</p>
359
360 <h5>image</h5>
361 <p>the image.</p>
362
363 <h5>sharpen</h5>
364 <p>Increase or decrease image contrast.</p>
365
366  </div>
367 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="The_ContrastStretchImage">The ContrastStretchImage</a></h2>
368 <div class="doc-section">
369
370 <p>The 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>
371
372 <p>The format of the ContrastStretchImage method is:</p>
373
374 <pre class="code">
375   MagickBooleanType ContrastStretchImage(Image *image,
376     const char *levels)
377   MagickBooleanType ContrastStretchImageChannel(Image *image,
378     const size_t channel,const double black_point,
379     const double white_point)
380 </pre>
381
382 <p>A description of each parameter follows:</p>
383
384 <h5>image</h5>
385 <p>the image.</p>
386
387 <h5>channel</h5>
388 <p>the channel.</p>
389
390 <h5>black_point</h5>
391 <p>the black point.</p>
392
393 <h5>white_point</h5>
394 <p>the white point.</p>
395
396 <h5>levels</h5>
397 <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>
398
399  </div>
400 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="EnhanceImage">EnhanceImage</a></h2>
401 <div class="doc-section">
402
403 <p>EnhanceImage() applies a digital filter that improves the quality of a noisy image.</p>
404
405 <p>The format of the EnhanceImage method is:</p>
406
407 <pre class="code">
408   Image *EnhanceImage(const Image *image,ExceptionInfo *exception)
409 </pre>
410
411 <p>A description of each parameter follows:</p>
412
413 <h5>image</h5>
414 <p>the image.</p>
415
416 <h5>exception</h5>
417 <p>return any errors or warnings in this structure.</p>
418
419  </div>
420 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="EqualizeImage">EqualizeImage</a></h2>
421 <div class="doc-section">
422
423 <p>EqualizeImage() applies a histogram equalization to the image.</p>
424
425 <p>The format of the EqualizeImage method is:</p>
426
427 <pre class="code">
428   MagickBooleanType EqualizeImage(Image *image)
429   MagickBooleanType EqualizeImageChannel(Image *image,
430     const ChannelType channel)
431 </pre>
432
433 <p>A description of each parameter follows:</p>
434
435 <h5>image</h5>
436 <p>the image.</p>
437
438 <h5>channel</h5>
439 <p>the channel.</p>
440
441  </div>
442 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="GammaImage">GammaImage</a></h2>
443 <div class="doc-section">
444
445 <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>
446
447 <p>You can also reduce the influence of a particular channel with a gamma value of 0.</p>
448
449 <p>The format of the GammaImage method is:</p>
450
451 <pre class="code">
452   MagickBooleanType GammaImage(Image *image,const char *level)
453   MagickBooleanType GammaImageChannel(Image *image,
454     const ChannelType channel,const double gamma)
455 </pre>
456
457 <p>A description of each parameter follows:</p>
458
459 <h5>image</h5>
460 <p>the image.</p>
461
462 <h5>channel</h5>
463 <p>the channel.</p>
464
465 <h5>level</h5>
466 <p>the image gamma as a string (e.g. 1.6,1.2,1.0).</p>
467
468 <h5>gamma</h5>
469 <p>the image gamma.</p>
470
471  </div>
472 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="HaldClutImage">HaldClutImage</a></h2>
473 <div class="doc-section">
474
475 <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>
476
477 <p>The format of the HaldClutImage method is:</p>
478
479 <pre class="code">
480   MagickBooleanType HaldClutImage(Image *image,Image *hald_image)
481   MagickBooleanType HaldClutImageChannel(Image *image,
482     const ChannelType channel,Image *hald_image)
483 </pre>
484
485 <p>A description of each parameter follows:</p>
486
487 <h5>image</h5>
488 <p>the image, which is replaced by indexed CLUT values</p>
489
490 <h5>hald_image</h5>
491 <p>the color lookup table image for replacement color values.</p>
492
493 <h5>channel</h5>
494 <p>the channel.</p>
495
496  </div>
497 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="LevelImage">LevelImage</a></h2>
498 <div class="doc-section">
499
500 <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>
501
502 <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>
503
504 <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>
505
506 <p>Gamma specifies a gamma correction to apply to the image.</p>
507
508 <p>The format of the LevelImage method is:</p>
509
510 <pre class="code">
511   MagickBooleanType LevelImage(Image *image,const char *levels)
512 </pre>
513
514 <p>A description of each parameter follows:</p>
515
516 <h5>image</h5>
517 <p>the image.</p>
518
519 <h5>levels</h5>
520 <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>
521
522  </div>
523 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="LevelizeImage">LevelizeImage</a></h2>
524 <div class="doc-section">
525
526 <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>
527
528 <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>
529
530 <p>The format of the LevelizeImage method is:</p>
531
532 <pre class="code">
533   MagickBooleanType LevelizeImage(Image *image,const double black_point,
534     const double white_point,const double gamma)
535   MagickBooleanType LevelizeImageChannel(Image *image,
536     const ChannelType channel,const double black_point,
537     const double white_point,const double gamma)
538 </pre>
539
540 <p>A description of each parameter follows:</p>
541
542 <h5>image</h5>
543 <p>the image.</p>
544
545 <h5>channel</h5>
546 <p>the channel.</p>
547
548 <h5>black_point</h5>
549 <p>The level which is to be mapped to zero (black)</p>
550
551 <h5>white_point</h5>
552 <p>The level which is to be mapped to QuantiumRange (white)</p>
553
554 <h5>gamma</h5>
555 <p>adjust gamma by this factor before mapping values. use 1.0 for purely linear stretching of image color values</p>
556
557  </div>
558 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="LevelizeImageChannel">LevelizeImageChannel</a></h2>
559 <div class="doc-section">
560
561 <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>
562
563 <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>
564
565 <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>
566
567 <p>The format of the LevelizeImageChannel method is:</p>
568
569 <pre class="code">
570   MagickBooleanType LevelizeImageChannel(Image *image,
571     const ChannelType channel,const char *levels)
572 </pre>
573
574 <p>A description of each parameter follows:</p>
575
576 <h5>image</h5>
577 <p>the image.</p>
578
579 <h5>channel</h5>
580 <p>the channel.</p>
581
582 <h5>black_point</h5>
583 <p>The level to map zero (black) to.</p>
584
585 <h5>white_point</h5>
586 <p>The level to map QuantiumRange (white) to.</p>
587
588 <h5>gamma</h5>
589 <p>adjust gamma by this factor before mapping values.</p>
590
591  </div>
592 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="LevelImageColor">LevelImageColor</a></h2>
593 <div class="doc-section">
594
595 <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>
596
597 <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>
598
599 <p>The format of the LevelColorsImageChannel method is:</p>
600
601 <pre class="code">
602       MagickBooleanType LevelColorsImage(Image *image,
603   const MagickPixelPacket *black_color,
604   const MagickPixelPacket *white_color,const MagickBooleanType invert)
605       MagickBooleanType LevelColorsImageChannel(Image *image,
606   const ChannelType channel,const MagickPixelPacket *black_color,
607   const MagickPixelPacket *white_color,const MagickBooleanType invert)
608 </pre>
609
610 <p>A description of each parameter follows:</p>
611
612 <h5>image</h5>
613 <p>the image.</p>
614
615 <h5>channel</h5>
616 <p>the channel.</p>
617
618 <h5>black_color</h5>
619 <p>The color to map black to/from</p>
620
621 <h5>white_point</h5>
622 <p>The color to map white to/from</p>
623
624 <h5>invert</h5>
625 <p>if true map the colors (levelize), rather than from (level)</p>
626
627  </div>
628 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="The_LinearStretchImage">The LinearStretchImage</a></h2>
629 <div class="doc-section">
630
631 <p>The LinearStretchImage() discards any pixels below the black point and above the white point and levels the remaining pixels.</p>
632
633 <p>The format of the LinearStretchImage method is:</p>
634
635 <pre class="code">
636   MagickBooleanType LinearStretchImage(Image *image,
637     const double black_point,const double white_point)
638 </pre>
639
640 <p>A description of each parameter follows:</p>
641
642 <h5>image</h5>
643 <p>the image.</p>
644
645 <h5>black_point</h5>
646 <p>the black point.</p>
647
648 <h5>white_point</h5>
649 <p>the white point.</p>
650
651  </div>
652 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="ModulateImage">ModulateImage</a></h2>
653 <div class="doc-section">
654
655 <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>
656
657 <p>The format of the ModulateImage method is:</p>
658
659 <pre class="code">
660   MagickBooleanType ModulateImage(Image *image,const char *modulate)
661 </pre>
662
663 <p>A description of each parameter follows:</p>
664
665 <h5>image</h5>
666 <p>the image.</p>
667
668 <h5>modulate</h5>
669 <p>Define the percent change in brightness, saturation, and hue.</p>
670
671  </div>
672 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="NegateImage">NegateImage</a></h2>
673 <div class="doc-section">
674
675 <p>NegateImage() negates the colors in the reference image.  The grayscale option means that only grayscale values within the image are negated.</p>
676
677 <p>The format of the NegateImageChannel method is:</p>
678
679 <pre class="code">
680   MagickBooleanType NegateImage(Image *image,
681     const MagickBooleanType grayscale)
682   MagickBooleanType NegateImageChannel(Image *image,
683     const ChannelType channel,const MagickBooleanType grayscale)
684 </pre>
685
686 <p>A description of each parameter follows:</p>
687
688 <h5>image</h5>
689 <p>the image.</p>
690
691 <h5>channel</h5>
692 <p>the channel.</p>
693
694 <h5>grayscale</h5>
695 <p>If MagickTrue, only negate grayscale pixels within the image.</p>
696
697  </div>
698 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="The_NormalizeImage">The NormalizeImage</a></h2>
699 <div class="doc-section">
700
701 <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>
702
703 <p>The format of the NormalizeImage method is:</p>
704
705 <pre class="code">
706   MagickBooleanType NormalizeImage(Image *image)
707   MagickBooleanType NormalizeImageChannel(Image *image,
708     const ChannelType channel)
709 </pre>
710
711 <p>A description of each parameter follows:</p>
712
713 <h5>image</h5>
714 <p>the image.</p>
715
716 <h5>channel</h5>
717 <p>the channel.</p>
718
719  </div>
720 <h2><a href="http://www.imagemagick.org/api/MagickCore/enhance_8c.html" id="SigmoidalContrastImage">SigmoidalContrastImage</a></h2>
721 <div class="doc-section">
722
723 <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>
724
725 <p>The format of the SigmoidalContrastImage method is:</p>
726
727 <pre class="code">
728   MagickBooleanType SigmoidalContrastImage(Image *image,
729     const MagickBooleanType sharpen,const char *levels)
730   MagickBooleanType SigmoidalContrastImageChannel(Image *image,
731     const ChannelType channel,const MagickBooleanType sharpen,
732     const double contrast,const double midpoint)
733 </pre>
734
735 <p>A description of each parameter follows:</p>
736
737 <h5>image</h5>
738 <p>the image.</p>
739
740 <h5>channel</h5>
741 <p>the channel.</p>
742
743 <h5>sharpen</h5>
744 <p>Increase or decrease image contrast.</p>
745
746 <h5>alpha</h5>
747 <p>strength of the contrast, the larger the number the more 'threshold-like' it becomes.</p>
748
749 <h5>beta</h5>
750 <p>midpoint of the function as a color value 0 to QuantumRange.</p>
751
752  </div>
753 \r
754 </div>\r
755 \r
756 <div id="linkbar">\r
757     <span id="linkbar-west">&nbsp;</span>\r
758     <span id="linkbar-center">\r
759       <a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> &bull;\r
760       <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
761     </span>\r
762     <span id="linkbar-east">&nbsp;</span>\r
763   </div>\r
764   <div class="footer">\r
765     <span id="footer-west">&copy; 1999-2011 ImageMagick Studio LLC</span>\r
766     <span id="footer-east"> <a href="../http://www.imagemagick.org/script/contact.php">Contact the Wizards</a></span>\r
767   </div>\r
768   <div style="clear: both; margin: 0; width: 100%; "></div>\r
769   <script type="text/javascript">\r
770     var _gaq = _gaq || [];\r
771     _gaq.push(['_setAccount', 'UA-17690367-1']);\r
772     _gaq.push(['_trackPageview']);\r
773 \r
774     (function() {\r
775       var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\r
776       ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\r
777       var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\r
778     })();\r
779   </script>\r
780 </body>\r
781 </html>\r