For example, suppose HistogramCommandFlags.LowHighBits is set in the Channel property and you have a 16-bit grayscale image with LowBit = 2 and HighBit = 7. There are 2^(7-2+1) = 64 possible grayscale intensities. The table must therefore hold at least 64 entries. The number of grayscale values with bits 2 - 7 set to 0 can be found in Histogram [0]. The number of grayscale values with bit 2 set to 1 and bits 3 - 7 set to 0 can be found in Histogram [1], and so on up to Histogram [63]. Since the low bit is 2 and the high bit is 7, bits 0, 1, and bits 8 - 15 must all be 0. Therefore the values set in bits 2 - 7 determine the intensities present in the image. In the table below, the gray columns represent those bits that are always 0 for the image. The columns bit 7 through bit 2 represent possible settings for those bits. The last column gives the location within the Histogram array of the number of grayscale values having the corresponding settings. For example, Histogram [0] contains the number of grayscale values of intensity 0 (all bits set to 0). Histogram [1] contains all the grayscale values with intensity 4 (the 2 bit position set to 1). Histogram [2] contains all the grayscale values with intensity 8 (the 3 bit set to 1 and the remaining bits set to 0) and so on.
bits 8 - 15 | bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 | count location in Histogram |
---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
As another example, suppose you have a 16-bit grayscale image with LowBit = 0 and HighBit = 15. The table must hold 2^16 = 65,536 integer values.
For more information, refer to Changing Brightness and Contrast. For more information, refer to Grayscale Images.
Run the HistogramCommand on an image to get the red-channel histogram.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing.Color;
public void HistogramCommandExample()
{
// Load an image
RasterCodecs codecs = new RasterCodecs();
codecs.ThrowExceptionsOnInvalidImages = true;
RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Master.jpg"));
// Prepare the command
HistogramCommand command = new HistogramCommand();
long[] histogramValues;
//Create the red-channel histogram.
command.Channel = HistogramCommandFlags.Red | HistogramCommandFlags.AllBits;
command.Run(image);
codecs.Save(image, Path.Combine(LEAD_VARS.ImagesDir, "Result.jpg"), RasterImageFormat.Jpeg, 24);
histogramValues = command.Histogram;
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}
Leadtools.ImageProcessing.Color Namespace
Changing Brightness and Contrast
Color Halftone and Halftone Images
HistogramContrastCommand Class
HistogramEqualizeCommand Class
Leadtools.ImageProcessing.FillCommand
Leadtools.ImageProcessing.Core.WindowLevelCommand
Leadtools.ImageProcessing.Effects.DeinterlaceCommand
Leadtools.ImageProcessing.Effects.EdgeDetectStatisticalCommand
Leadtools.ImageProcessing.Effects.SmoothEdgesCommand
LocalHistogramEqualizeCommand Class
Leadtools.ImageProcessing.Core.CorrelationListCommand
GrayScaleToDuotoneCommand Class
GrayScaleToMultitoneCommand Class
Leadtools.ImageProcessing.Core.HolePunchRemoveCommand
Leadtools.ImageProcessing.Effects.SkeletonCommand
ChangeHueSaturationIntensityCommand Class
MathematicalFunctionCommand Class
ApplyMathematicalLogicCommand Class
ColorIntensityBalanceCommand Class
Leadtools.ImageProcessing.Core.ColorizeGrayCommand
ContrastBrightnessIntensityCommand Class
Leadtools.ImageProcessing.Core.DigitalSubtractCommand
Leadtools.ImageProcessing.Effects.EdgeDetectEffectCommand
Leadtools.ImageProcessing.SpecialEffects.FunctionalLightCommand
Leadtools.ImageProcessing.Core.MultiscaleEnhancementCommand