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