blob: e01582bf38bab132cd41d44add298f348a72adf4 [file] [log] [blame]
cristydcca3fa2010-12-29 21:50:07 +00001<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr">
cristy3eaa0ef2010-03-06 20:35:26 +00004<head>
cristy3c98a4f2010-08-13 20:09:41 +00005 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
6 <meta name="verify-v1" content="g222frIIxcQTrvDR3NBRUSKP3AnMNoqxOkIniCEkV7U="/>
cristyffb69ed2010-12-25 00:06:48 +00007 <title>ImageMagick: MagickCore, C API for ImageMagick: Enhance an Image</title>
cristy3ed852e2009-09-05 21:47:34 +00008 <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"/>
cristy3c98a4f2010-08-13 20:09:41 +000011 <meta name="Application-name" content="ImageMagick"/>
cristydcca3fa2010-12-29 21:50:07 +000012 <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."/>
cristy3c98a4f2010-08-13 20:09:41 +000013 <meta name="Application-url" content="http://www.imagemagick.org"/>
cristy3ed852e2009-09-05 21:47:34 +000014 <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"/>
cristy3ed852e2009-09-05 21:47:34 +000016 <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"/>
cristy4103d562010-12-10 01:38:54 +000022 <meta name="Copyright" content="Copyright (c) 1999-2011 ImageMagick Studio LLC"/>
cristy3ed852e2009-09-05 21:47:34 +000023 <meta name="Distribution" content="Global"/>
cristydcca3fa2010-12-29 21:50:07 +000024 <link rel="icon" href="../../images/wand.png"/>
cristy3c98a4f2010-08-13 20:09:41 +000025 <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"/>
cristy7a40ba82011-01-08 20:31:18 +000027 <link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" />
cristy3c98a4f2010-08-13 20:09:41 +000028 <style type="text/css" media="all">
29 @import url("../../www/magick.css");
30 </style>
cristydcca3fa2010-12-29 21:50:07 +000031 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
cristy361f4662010-12-31 23:02:52 +000032 <script type="text/javascript" src="../fancybox/jquery.fancybox-1.3.4.pack.js"></script>
33 <link rel="stylesheet" type="text/css" href="../fancybox/jquery.fancybox-1.3.4.css" media="screen" />
34 <script type="text/javascript">
35 $(document).ready(function() {
36 $("a[href$=.jpg],a[href$=.png],a[href$=.gif]").fancybox({
37 'transitionIn' : 'elastic',
38 'transitionOut' : 'elastic',
39 'overlayShow' : false,
40 'opacity' : true
41 });
42 });
43 </script>
cristy3eaa0ef2010-03-06 20:35:26 +000044</head>
45
46<body id="www-imagemagick-org">
47<div class="titlebar">
48<a href="../../index.html">
49 <img src="../../images/script.png" alt="[ImageMagick]"
50 style="width: 350px; height: 60px; margin: 28px auto; float: left;" /></a>
51<a href="http://www.networkredux.com">
52 <img src="../../images/networkredux.png" alt="[sponsor]"
cristy52923442011-01-15 22:54:31 +000053 style="margin-top: 42px; border: 0px; float: left;" /></a>
cristy3eaa0ef2010-03-06 20:35:26 +000054<a href="http://www.imagemagick.org/discourse-server/">
55 <img src="../../images/logo.jpg" alt=""
56 style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
57<a href="../../index.html">
58 <img src="../../images/sprite.jpg" alt=""
59 style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
60</div>
61
cristyce69bb02010-07-27 19:49:46 +000062<div class="westbar">
cristy3eaa0ef2010-03-06 20:35:26 +000063
cristy3ed852e2009-09-05 21:47:34 +000064<div class="menu">
cristy83a272e2010-05-07 20:40:35 +000065 <a title="About ImageMagick" href="../../index.html">About ImageMagick</a>
cristy3ed852e2009-09-05 21:47:34 +000066</div>
cristy3eaa0ef2010-03-06 20:35:26 +000067<div class="sep"></div>
cristy3ed852e2009-09-05 21:47:34 +000068<div class="menu">
cristybb503372010-05-27 20:51:26 +000069 <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>
81<div class="menu">
cristy83a272e2010-05-07 20:40:35 +000082 <a title="Command-line Tools" href="../../www/command-line-tools.html">Command-line Tools</a>
cristy3ed852e2009-09-05 21:47:34 +000083</div>
84<div class="sub">
cristy83a272e2010-05-07 20:40:35 +000085 <a title="Command-line Tools: Processing" href="../../www/command-line-processing.html">Processing</a>
cristy3ed852e2009-09-05 21:47:34 +000086</div>
87<div class="sub">
cristy83a272e2010-05-07 20:40:35 +000088 <a title="Command-line Tools: Options" href="../../www/command-line-options.html">Options</a>
cristy3ed852e2009-09-05 21:47:34 +000089</div>
90<div class="sub">
cristy83a272e2010-05-07 20:40:35 +000091 <a title="Command-line Tools: Usage" href="http://www.imagemagick.org/Usage/">Usage</a>
cristy3ed852e2009-09-05 21:47:34 +000092</div>
93<div class="menu">
cristy83a272e2010-05-07 20:40:35 +000094 <a title="Program Interfaces" href="../../www/api.html">Program Interfaces</a>
cristy3ed852e2009-09-05 21:47:34 +000095</div>
96<div class="sub">
cristy83a272e2010-05-07 20:40:35 +000097 <a title="Program Interface: MagickWand" href="../../www/magick-wand.html">MagickWand</a>
cristy3ed852e2009-09-05 21:47:34 +000098</div>
99<div class="sub">
cristy83a272e2010-05-07 20:40:35 +0000100 <a title="Program Interface: MagickCore" href="../../www/magick-core.html">MagickCore</a>
cristy3ed852e2009-09-05 21:47:34 +0000101</div>
102<div class="sub">
cristy83a272e2010-05-07 20:40:35 +0000103 <a title="Program Interface: PerlMagick" href="../../www/perl-magick.html">PerlMagick</a>
cristy3ed852e2009-09-05 21:47:34 +0000104</div>
105<div class="sub">
cristydcca3fa2010-12-29 21:50:07 +0000106 <a title="Program Interface: Magick++" href="../../www/magick++.html">Magick++</a>
cristy3ed852e2009-09-05 21:47:34 +0000107</div>
cristy3eaa0ef2010-03-06 20:35:26 +0000108<div class="sep"></div>
cristy3ed852e2009-09-05 21:47:34 +0000109<div class="menu">
cristy83a272e2010-05-07 20:40:35 +0000110 <a title="Install from Source" href="../../www/install-source.html">Install from Source</a>
cristy3ed852e2009-09-05 21:47:34 +0000111</div>
112<div class="sub">
cristy83a272e2010-05-07 20:40:35 +0000113 <a title="Install from Source: Unix" href="../../www/install-source.html#unix">Unix</a>
cristy3ed852e2009-09-05 21:47:34 +0000114</div>
115<div class="sub">
cristy83a272e2010-05-07 20:40:35 +0000116 <a title="Install from Source: Windows" href="../../www/install-source.html#windows">Windows</a>
cristy3ed852e2009-09-05 21:47:34 +0000117 </div>
118<div class="menu">
cristy83a272e2010-05-07 20:40:35 +0000119 <a title="Resources" href="../../www/resources.html">Resources</a>
cristy3ed852e2009-09-05 21:47:34 +0000120</div>
cristybb503372010-05-27 20:51:26 +0000121<div class="menu">
122 <a title="Architecture" href="../../www/architecture.html">Architecture</a>
123</div>
cristy3ed852e2009-09-05 21:47:34 +0000124<div class="menu">
cristy83a272e2010-05-07 20:40:35 +0000125 <a title="Download" href="../../www/download.html">Download</a>
cristy3ed852e2009-09-05 21:47:34 +0000126</div>
cristy3eaa0ef2010-03-06 20:35:26 +0000127<div class="sep"></div>
cristy3ed852e2009-09-05 21:47:34 +0000128<div class="menu">
cristy52923442011-01-15 22:54:31 +0000129 <a title="Search" href="../../www/search.html">Search</a>
cristy3ed852e2009-09-05 21:47:34 +0000130</div>
cristy3eaa0ef2010-03-06 20:35:26 +0000131<div class="sep"></div>
cristy3ed852e2009-09-05 21:47:34 +0000132<div class="menu">
cristyffb69ed2010-12-25 00:06:48 +0000133 <a title="Site Map" href="../../www/sitemap.html">Site Map</a>
cristy3ed852e2009-09-05 21:47:34 +0000134</div>
135<div class="sub">
cristyffb69ed2010-12-25 00:06:48 +0000136 <a title="Site Map: Links" href="../../www/links.html">Links</a>
cristy3ed852e2009-09-05 21:47:34 +0000137</div>
cristy3eaa0ef2010-03-06 20:35:26 +0000138<div class="sep"></div>
cristy3ed852e2009-09-05 21:47:34 +0000139<div class="menu">
cristy83a272e2010-05-07 20:40:35 +0000140 <a title="Sponsors" href="../../www/sponsors.html">Sponsors:</a>
cristy3ed852e2009-09-05 21:47:34 +0000141
142<div class="sponsbox">
cristyec6b4752011-01-08 03:16:23 +0000143<div class="sponsor">
cristy52923442011-01-15 22:54:31 +0000144 <a title="Sponsor: Web Hosting" href="http://www.bodhost.com/hosting.shtml">Web Hosting</a><!-- 201104010090 -->
cristy7d52cd62010-10-01 17:26:59 +0000145</div>
146<div class="sponsor">
147 <a title="Sponsor: Druckerei" href="http://print24.com/de/">Druckerei</a><!-- 201110010720 -->
cristy73fd1cd2010-09-12 19:14:25 +0000148</div>
149<div class="sponsor">
cristyc5baf4f2010-08-31 15:05:33 +0000150 <a title="Sponsor: Image Converter" href="http://www.batchphoto.com">Image Converter</a><!-- 201103010900 Bits Coffee-->
151</div>
152<div class="sponsor">
cristy851dbce2010-08-06 21:40:00 +0000153 <a title="Sponsor: Flyer drucken" href="http://www.online-druck.biz">Flyer drucken</a><!-- 201109010900 Floeter-->
154</div>
cristyec6b4752011-01-08 03:16:23 +0000155<div class="sponsor">
cristy52923442011-01-15 22:54:31 +0000156 <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
cristyec6b4752011-01-08 03:16:23 +0000157</div>
cristy3ed852e2009-09-05 21:47:34 +0000158</div>
159</div>
cristyce69bb02010-07-27 19:49:46 +0000160</div>
cristy3eaa0ef2010-03-06 20:35:26 +0000161
cristyce69bb02010-07-27 19:49:46 +0000162<div class="eastbar">
163 <script type="text/javascript">
164 <!--
165 google_ad_client = "pub-3129977114552745";
cristyce69bb02010-07-27 19:49:46 +0000166 google_ad_slot = "0574824969";
167 google_ad_width = 160;
168 google_ad_height = 600;
169 //-->
170 </script>
171 <script type="text/javascript"
172 src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
173 </script>
cristy3eaa0ef2010-03-06 20:35:26 +0000174</div>
175
176<div class="main">
177
cristy307ba182010-12-25 01:00:34 +0000178<h1>Module enhance
179 Methods</h1>
cristy16ff93c2010-01-13 23:18:07 +0000180<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>
cristy3ed852e2009-09-05 21:47:34 +0000181
cristy7a40ba82011-01-08 20:31:18 +0000182<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
183_8c.html" id="AutoGammaImage">AutoGammaImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000184<div class="doc-section">
185
cristy7a40ba82011-01-08 20:31:18 +0000186<p>AutoGammaImage() extract the 'mean' from the image and adjust the image to try make set its gamma appropriatally.</p>
cristy3ed852e2009-09-05 21:47:34 +0000187
cristy5cadd612009-09-21 19:33:41 +0000188<p>The format of the AutoGammaImage method is:</p>
cristy3ed852e2009-09-05 21:47:34 +0000189
190<pre class="code">
191 MagickBooleanType AutoGammaImage(Image *image)
192 MagickBooleanType AutoGammaImageChannel(Image *image,
193 const ChannelType channel)
194</pre>
195
cristy7a40ba82011-01-08 20:31:18 +0000196<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000197
198<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000199<p>The image to auto-level</p>
cristy3ed852e2009-09-05 21:47:34 +0000200
201<h5>channel</h5>
cristy7a40ba82011-01-08 20:31:18 +0000202<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>
cristy3ed852e2009-09-05 21:47:34 +0000203
204 </div>
cristy7a40ba82011-01-08 20:31:18 +0000205<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
206_8c.html" id="AutoLevelImage">AutoLevelImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000207<div class="doc-section">
208
cristy7a40ba82011-01-08 20:31:18 +0000209<p>AutoLevelImage() adjusts the levels of a particular image channel by scaling the minimum and maximum values to the full quantum range.</p>
cristy3ed852e2009-09-05 21:47:34 +0000210
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
cristy7a40ba82011-01-08 20:31:18 +0000219<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000220
221<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000222<p>The image to auto-level</p>
cristy3ed852e2009-09-05 21:47:34 +0000223
224<h5>channel</h5>
cristy7a40ba82011-01-08 20:31:18 +0000225<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>
cristy3ed852e2009-09-05 21:47:34 +0000226
227 </div>
cristy7a40ba82011-01-08 20:31:18 +0000228<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
229_8c.html" id="Use_BrightnessContrastImage">Use BrightnessContrastImage</a></h2>
cristy16ff93c2010-01-13 23:18:07 +0000230<div class="doc-section">
231
cristy7a40ba82011-01-08 20:31:18 +0000232<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>
cristy16ff93c2010-01-13 23:18:07 +0000233
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
cristy7a40ba82011-01-08 20:31:18 +0000244<p>A description of each parameter follows:</p>
cristy16ff93c2010-01-13 23:18:07 +0000245
246<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000247<p>the image.</p>
cristy16ff93c2010-01-13 23:18:07 +0000248
249<h5>channel</h5>
cristy7a40ba82011-01-08 20:31:18 +0000250<p>the channel.</p>
cristy16ff93c2010-01-13 23:18:07 +0000251
252<h5>brightness</h5>
cristy7a40ba82011-01-08 20:31:18 +0000253<p>the brightness percent (-100 .. 100).</p>
cristy16ff93c2010-01-13 23:18:07 +0000254
255<h5>contrast</h5>
cristy7a40ba82011-01-08 20:31:18 +0000256<p>the contrast percent (-100 .. 100).</p>
cristy16ff93c2010-01-13 23:18:07 +0000257
258 </div>
cristy7a40ba82011-01-08 20:31:18 +0000259<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
260_8c.html" id="ColorDecisionListImage">ColorDecisionListImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000261<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
cristy7a40ba82011-01-08 20:31:18 +0000280<p>which includes the slop, offset, and power for each of the RGB channels as well as the saturation.</p>
cristy3ed852e2009-09-05 21:47:34 +0000281
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
cristy7a40ba82011-01-08 20:31:18 +0000289<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000290
291<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000292<p>the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000293
294<h5>color_correction_collection</h5>
cristy7a40ba82011-01-08 20:31:18 +0000295<p>the color correction collection in XML.</p>
cristy3ed852e2009-09-05 21:47:34 +0000296
297 </div>
cristy7a40ba82011-01-08 20:31:18 +0000298<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
299_8c.html" id="ClutImage">ClutImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000300<div class="doc-section">
301
cristy7a40ba82011-01-08 20:31:18 +0000302<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>
cristy3ed852e2009-09-05 21:47:34 +0000303
cristy7a40ba82011-01-08 20:31:18 +0000304<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>
cristy3ed852e2009-09-05 21:47:34 +0000305
cristy7a40ba82011-01-08 20:31:18 +0000306<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>
cristy3ed852e2009-09-05 21:47:34 +0000307
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
cristy7a40ba82011-01-08 20:31:18 +0000316<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000317
318<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000319<p>the image, which is replaced by indexed CLUT values</p>
cristy3ed852e2009-09-05 21:47:34 +0000320
321<h5>clut_image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000322<p>the color lookup table image for replacement color values.</p>
cristy3ed852e2009-09-05 21:47:34 +0000323
324<h5>channel</h5>
cristy7a40ba82011-01-08 20:31:18 +0000325<p>the channel.</p>
cristy3ed852e2009-09-05 21:47:34 +0000326
327 </div>
cristy7a40ba82011-01-08 20:31:18 +0000328<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
329_8c.html" id="ContrastImage">ContrastImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000330<div class="doc-section">
331
cristy7a40ba82011-01-08 20:31:18 +0000332<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>
cristy3ed852e2009-09-05 21:47:34 +0000333
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
cristy7a40ba82011-01-08 20:31:18 +0000341<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000342
343<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000344<p>the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000345
346<h5>sharpen</h5>
cristy7a40ba82011-01-08 20:31:18 +0000347<p>Increase or decrease image contrast.</p>
cristy3ed852e2009-09-05 21:47:34 +0000348
349 </div>
cristy7a40ba82011-01-08 20:31:18 +0000350<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
351_8c.html" id="The_ContrastStretchImage">The ContrastStretchImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000352<div class="doc-section">
353
cristy7a40ba82011-01-08 20:31:18 +0000354<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>
cristy3ed852e2009-09-05 21:47:34 +0000355
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,
cristybb503372010-05-27 20:51:26 +0000362 const size_t channel,const double black_point,
cristy3ed852e2009-09-05 21:47:34 +0000363 const double white_point)
364</pre>
365
cristy7a40ba82011-01-08 20:31:18 +0000366<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000367
368<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000369<p>the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000370
371<h5>channel</h5>
cristy7a40ba82011-01-08 20:31:18 +0000372<p>the channel.</p>
cristy3ed852e2009-09-05 21:47:34 +0000373
374<h5>black_point</h5>
cristy7a40ba82011-01-08 20:31:18 +0000375<p>the black point.</p>
cristy3ed852e2009-09-05 21:47:34 +0000376
377<h5>white_point</h5>
cristy7a40ba82011-01-08 20:31:18 +0000378<p>the white point.</p>
cristy3ed852e2009-09-05 21:47:34 +0000379
380<h5>levels</h5>
cristy7a40ba82011-01-08 20:31:18 +0000381<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>
cristy3ed852e2009-09-05 21:47:34 +0000382
383 </div>
cristy7a40ba82011-01-08 20:31:18 +0000384<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
385_8c.html" id="EnhanceImage">EnhanceImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000386<div class="doc-section">
387
cristy7a40ba82011-01-08 20:31:18 +0000388<p>EnhanceImage() applies a digital filter that improves the quality of a noisy image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000389
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
cristy7a40ba82011-01-08 20:31:18 +0000396<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000397
398<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000399<p>the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000400
401<h5>exception</h5>
cristy7a40ba82011-01-08 20:31:18 +0000402<p>return any errors or warnings in this structure.</p>
cristy3ed852e2009-09-05 21:47:34 +0000403
404 </div>
cristy7a40ba82011-01-08 20:31:18 +0000405<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
406_8c.html" id="EqualizeImage">EqualizeImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000407<div class="doc-section">
408
cristy7a40ba82011-01-08 20:31:18 +0000409<p>EqualizeImage() applies a histogram equalization to the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000410
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
cristy7a40ba82011-01-08 20:31:18 +0000419<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000420
421<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000422<p>the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000423
424<h5>channel</h5>
cristy7a40ba82011-01-08 20:31:18 +0000425<p>the channel.</p>
cristy3ed852e2009-09-05 21:47:34 +0000426
427 </div>
cristy7a40ba82011-01-08 20:31:18 +0000428<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
429_8c.html" id="GammaImage">GammaImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000430<div class="doc-section">
431
cristy7a40ba82011-01-08 20:31:18 +0000432<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>
cristy3ed852e2009-09-05 21:47:34 +0000433
cristy7a40ba82011-01-08 20:31:18 +0000434<p>You can also reduce the influence of a particular channel with a gamma value of 0.</p>
cristy3ed852e2009-09-05 21:47:34 +0000435
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
cristy7a40ba82011-01-08 20:31:18 +0000444<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000445
446<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000447<p>the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000448
449<h5>channel</h5>
cristy7a40ba82011-01-08 20:31:18 +0000450<p>the channel.</p>
cristy3ed852e2009-09-05 21:47:34 +0000451
452<h5>gamma</h5>
cristy7a40ba82011-01-08 20:31:18 +0000453<p>the image gamma.</p>
cristy3ed852e2009-09-05 21:47:34 +0000454
455 </div>
cristy7a40ba82011-01-08 20:31:18 +0000456<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
457_8c.html" id="HaldClutImage">HaldClutImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000458<div class="doc-section">
459
cristy7a40ba82011-01-08 20:31:18 +0000460<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>
cristy3ed852e2009-09-05 21:47:34 +0000461
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
cristy7a40ba82011-01-08 20:31:18 +0000470<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000471
472<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000473<p>the image, which is replaced by indexed CLUT values</p>
cristy3ed852e2009-09-05 21:47:34 +0000474
475<h5>hald_image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000476<p>the color lookup table image for replacement color values.</p>
cristy3ed852e2009-09-05 21:47:34 +0000477
478<h5>channel</h5>
cristy7a40ba82011-01-08 20:31:18 +0000479<p>the channel.</p>
cristy3ed852e2009-09-05 21:47:34 +0000480
481 </div>
cristy7a40ba82011-01-08 20:31:18 +0000482<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
483_8c.html" id="LevelImage">LevelImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000484<div class="doc-section">
485
cristy7a40ba82011-01-08 20:31:18 +0000486<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>
cristy3ed852e2009-09-05 21:47:34 +0000487
cristy7a40ba82011-01-08 20:31:18 +0000488<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>
cristy3ed852e2009-09-05 21:47:34 +0000489
cristy7a40ba82011-01-08 20:31:18 +0000490<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>
cristy3ed852e2009-09-05 21:47:34 +0000491
cristy7a40ba82011-01-08 20:31:18 +0000492<p>Gamma specifies a gamma correction to apply to the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000493
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
cristy7a40ba82011-01-08 20:31:18 +0000500<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000501
502<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000503<p>the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000504
505<h5>levels</h5>
cristy7a40ba82011-01-08 20:31:18 +0000506<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>
cristy3ed852e2009-09-05 21:47:34 +0000507
508 </div>
cristy7a40ba82011-01-08 20:31:18 +0000509<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
510_8c.html" id="LevelizeImage">LevelizeImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000511<div class="doc-section">
512
cristy7a40ba82011-01-08 20:31:18 +0000513<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>
cristy3ed852e2009-09-05 21:47:34 +0000514
cristy7a40ba82011-01-08 20:31:18 +0000515<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>
cristy3ed852e2009-09-05 21:47:34 +0000516
cristy5cadd612009-09-21 19:33:41 +0000517<p>The format of the LevelizeImage method is:</p>
cristy3ed852e2009-09-05 21:47:34 +0000518
519<pre class="code">
cristy5cadd612009-09-21 19:33:41 +0000520 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)
cristy3ed852e2009-09-05 21:47:34 +0000525</pre>
526
cristy7a40ba82011-01-08 20:31:18 +0000527<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000528
529<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000530<p>the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000531
532<h5>channel</h5>
cristy7a40ba82011-01-08 20:31:18 +0000533<p>the channel.</p>
cristy3ed852e2009-09-05 21:47:34 +0000534
535<h5>black_point</h5>
cristy7a40ba82011-01-08 20:31:18 +0000536<p>The level which is to be mapped to zero (black)</p>
cristy3ed852e2009-09-05 21:47:34 +0000537
538<h5>white_point</h5>
cristy7a40ba82011-01-08 20:31:18 +0000539<p>The level which is to be mapped to QuantiumRange (white)</p>
cristy3ed852e2009-09-05 21:47:34 +0000540
541<h5>gamma</h5>
cristy7a40ba82011-01-08 20:31:18 +0000542<p>adjust gamma by this factor before mapping values. use 1.0 for purely linear stretching of image color values</p>
cristy3ed852e2009-09-05 21:47:34 +0000543
544 </div>
cristy7a40ba82011-01-08 20:31:18 +0000545<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
546_8c.html" id="LevelizeImageChannel">LevelizeImageChannel</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000547<div class="doc-section">
548
cristy7a40ba82011-01-08 20:31:18 +0000549<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>
cristy3ed852e2009-09-05 21:47:34 +0000550
cristy7a40ba82011-01-08 20:31:18 +0000551<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>
cristy3ed852e2009-09-05 21:47:34 +0000552
cristy7a40ba82011-01-08 20:31:18 +0000553<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>
cristy3ed852e2009-09-05 21:47:34 +0000554
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
cristy7a40ba82011-01-08 20:31:18 +0000562<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000563
564<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000565<p>the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000566
567<h5>channel</h5>
cristy7a40ba82011-01-08 20:31:18 +0000568<p>the channel.</p>
cristy3ed852e2009-09-05 21:47:34 +0000569
570<h5>black_point</h5>
cristy7a40ba82011-01-08 20:31:18 +0000571<p>The level to map zero (black) to.</p>
cristy3ed852e2009-09-05 21:47:34 +0000572
573<h5>white_point</h5>
cristy7a40ba82011-01-08 20:31:18 +0000574<p>The level to map QuantiumRange (white) to.</p>
cristy3ed852e2009-09-05 21:47:34 +0000575
576<h5>gamma</h5>
cristy7a40ba82011-01-08 20:31:18 +0000577<p>adjust gamma by this factor before mapping values.</p>
cristy3ed852e2009-09-05 21:47:34 +0000578
579 </div>
cristy7a40ba82011-01-08 20:31:18 +0000580<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
581_8c.html" id="LevelImageColor">LevelImageColor</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000582<div class="doc-section">
583
cristy7a40ba82011-01-08 20:31:18 +0000584<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>
cristy3ed852e2009-09-05 21:47:34 +0000585
cristy7a40ba82011-01-08 20:31:18 +0000586<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>
cristy3ed852e2009-09-05 21:47:34 +0000587
cristy5cadd612009-09-21 19:33:41 +0000588<p>The format of the LevelColorsImageChannel method is:</p>
cristy3ed852e2009-09-05 21:47:34 +0000589
590<pre class="code">
cristy5cadd612009-09-21 19:33:41 +0000591 MagickBooleanType LevelColorsImage(Image *image,
cristye7f8fdd2009-09-20 14:43:12 +0000592 const MagickPixelPacket *black_color,
593 const MagickPixelPacket *white_color,const MagickBooleanType invert)
cristy5cadd612009-09-21 19:33:41 +0000594 MagickBooleanType LevelColorsImageChannel(Image *image,
595 const ChannelType channel,const MagickPixelPacket *black_color,
596 const MagickPixelPacket *white_color,const MagickBooleanType invert)
cristy3ed852e2009-09-05 21:47:34 +0000597</pre>
598
cristy7a40ba82011-01-08 20:31:18 +0000599<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000600
601<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000602<p>the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000603
604<h5>channel</h5>
cristy7a40ba82011-01-08 20:31:18 +0000605<p>the channel.</p>
cristy3ed852e2009-09-05 21:47:34 +0000606
607<h5>black_color</h5>
cristy7a40ba82011-01-08 20:31:18 +0000608<p>The color to map black to/from</p>
cristy3ed852e2009-09-05 21:47:34 +0000609
610<h5>white_point</h5>
cristy7a40ba82011-01-08 20:31:18 +0000611<p>The color to map white to/from</p>
cristy3ed852e2009-09-05 21:47:34 +0000612
613<h5>invert</h5>
cristy7a40ba82011-01-08 20:31:18 +0000614<p>if true map the colors (levelize), rather than from (level)</p>
cristy3ed852e2009-09-05 21:47:34 +0000615
616 </div>
cristy7a40ba82011-01-08 20:31:18 +0000617<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
618_8c.html" id="The_LinearStretchImage">The LinearStretchImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000619<div class="doc-section">
620
cristy7a40ba82011-01-08 20:31:18 +0000621<p>The LinearStretchImage() discards any pixels below the black point and above the white point and levels the remaining pixels.</p>
cristy3ed852e2009-09-05 21:47:34 +0000622
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
cristy7a40ba82011-01-08 20:31:18 +0000630<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000631
632<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000633<p>the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000634
635<h5>black_point</h5>
cristy7a40ba82011-01-08 20:31:18 +0000636<p>the black point.</p>
cristy3ed852e2009-09-05 21:47:34 +0000637
638<h5>white_point</h5>
cristy7a40ba82011-01-08 20:31:18 +0000639<p>the white point.</p>
cristy3ed852e2009-09-05 21:47:34 +0000640
641 </div>
cristy7a40ba82011-01-08 20:31:18 +0000642<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
643_8c.html" id="ModulateImage">ModulateImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000644<div class="doc-section">
645
cristy7a40ba82011-01-08 20:31:18 +0000646<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>
cristy3ed852e2009-09-05 21:47:34 +0000647
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
cristy7a40ba82011-01-08 20:31:18 +0000654<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000655
656<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000657<p>the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000658
659<h5>modulate</h5>
cristy7a40ba82011-01-08 20:31:18 +0000660<p>Define the percent change in brightness, saturation, and hue.</p>
cristy3ed852e2009-09-05 21:47:34 +0000661
662 </div>
cristy7a40ba82011-01-08 20:31:18 +0000663<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
664_8c.html" id="NegateImage">NegateImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000665<div class="doc-section">
666
cristy7a40ba82011-01-08 20:31:18 +0000667<p>NegateImage() negates the colors in the reference image. The grayscale option means that only grayscale values within the image are negated.</p>
cristy3ed852e2009-09-05 21:47:34 +0000668
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
cristy7a40ba82011-01-08 20:31:18 +0000678<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000679
680<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000681<p>the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000682
683<h5>channel</h5>
cristy7a40ba82011-01-08 20:31:18 +0000684<p>the channel.</p>
cristy3ed852e2009-09-05 21:47:34 +0000685
686<h5>grayscale</h5>
cristy7a40ba82011-01-08 20:31:18 +0000687<p>If MagickTrue, only negate grayscale pixels within the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000688
689 </div>
cristy7a40ba82011-01-08 20:31:18 +0000690<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
691_8c.html" id="The_NormalizeImage">The NormalizeImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000692<div class="doc-section">
693
cristy7a40ba82011-01-08 20:31:18 +0000694<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>
cristy3ed852e2009-09-05 21:47:34 +0000695
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
cristy7a40ba82011-01-08 20:31:18 +0000704<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000705
706<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000707<p>the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000708
709<h5>channel</h5>
cristy7a40ba82011-01-08 20:31:18 +0000710<p>the channel.</p>
cristy3ed852e2009-09-05 21:47:34 +0000711
712 </div>
cristy7a40ba82011-01-08 20:31:18 +0000713<h2><a href="http://www.wizards-toolkit.org/api/MagickCore/enhance
714_8c.html" id="SigmoidalContrastImage">SigmoidalContrastImage</a></h2>
cristy3ed852e2009-09-05 21:47:34 +0000715<div class="doc-section">
716
cristy7a40ba82011-01-08 20:31:18 +0000717<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>
cristy3ed852e2009-09-05 21:47:34 +0000718
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
cristy7a40ba82011-01-08 20:31:18 +0000729<p>A description of each parameter follows:</p>
cristy3ed852e2009-09-05 21:47:34 +0000730
731<h5>image</h5>
cristy7a40ba82011-01-08 20:31:18 +0000732<p>the image.</p>
cristy3ed852e2009-09-05 21:47:34 +0000733
734<h5>channel</h5>
cristy7a40ba82011-01-08 20:31:18 +0000735<p>the channel.</p>
cristy3ed852e2009-09-05 21:47:34 +0000736
737<h5>sharpen</h5>
cristy7a40ba82011-01-08 20:31:18 +0000738<p>Increase or decrease image contrast.</p>
cristy3ed852e2009-09-05 21:47:34 +0000739
cristy7d52cd62010-10-01 17:26:59 +0000740<h5>alpha</h5>
cristy7a40ba82011-01-08 20:31:18 +0000741<p>strength of the contrast, the larger the number the more 'threshold-like' it becomes.</p>
cristy3ed852e2009-09-05 21:47:34 +0000742
cristy7d52cd62010-10-01 17:26:59 +0000743<h5>beta</h5>
cristy7a40ba82011-01-08 20:31:18 +0000744<p>midpoint of the function as a color value 0 to QuantumRange.</p>
cristy3ed852e2009-09-05 21:47:34 +0000745
746 </div>
cristy3eaa0ef2010-03-06 20:35:26 +0000747
748</div>
749
750<div id="linkbar">
cristyce69bb02010-07-27 19:49:46 +0000751 <span id="linkbar-west">&nbsp;</span>
cristy3eaa0ef2010-03-06 20:35:26 +0000752 <span id="linkbar-center">
753 <a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> &bull;
cristya8902942010-07-30 00:49:52 +0000754 <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>
cristy3eaa0ef2010-03-06 20:35:26 +0000755 </span>
756 <span id="linkbar-east">&nbsp;</span>
757 </div>
758 <div class="footer">
cristy4103d562010-12-10 01:38:54 +0000759 <span id="footer-west">&copy; 1999-2011 ImageMagick Studio LLC</span>
cristy3eaa0ef2010-03-06 20:35:26 +0000760 <span id="footer-east"> <a href="../http://www.imagemagick.org/script/contact.php">Contact the Wizards</a></span>
761 </div>
762 <div style="clear: both; margin: 0; width: 100%; "></div>
cristya8902942010-07-30 00:49:52 +0000763 <script type="text/javascript">
764 var _gaq = _gaq || [];
765 _gaq.push(['_setAccount', 'UA-17690367-1']);
766 _gaq.push(['_trackPageview']);
767
768 (function() {
769 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
770 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
771 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
772 })();
773 </script>
cristy3eaa0ef2010-03-06 20:35:26 +0000774</body>
775</html>