Grayscale Images
LEADTOOLS provides a number of functions for working with grayscale images. Many of these functions work on either grayscale images or color images. Some of the LEADTOOLS functions however, are designed specifically for use with grayscale images, either creating a grayscale image, getting information about a grayscale image, or window leveling.
Creating and working with grayscale images
A color image can be converted to a grayscale image using the LBitmapBase::GrayScale function. The LBitmap::GrayScaleExt function converts an image to a grayscale image, but provides the user the ability to control the calculation of the grayscale pixel value by giving the R, G and B components different "weights" when calculating the grayscale value.
LEADTOOLS also provides the LBitmap::ConvertToColoredGray function which converts a bitmap into a grayscale bitmap, while allowing the user to add color effects. This creates an image with an "old-fashioned" look. An 8, 12 or 16-bit grayscale can also be colorized using LBitmap::ColorizeGray.
The LBitmap::GrayScaleToDuotone function converts a grayscale bitmap into a colored one by mixing or replacing the original values of the pixels with new colors.
The LBitmap::GrayScaleToMultitone converts a grayscale bitmap into a colored one by mixing or replacing the original values of the pixels with one or more new colors.
The LBitmapBase::CreateAlphaBitmap function creates a grayscale image from the alpha channel information of an image.
The LBitmap::Desaturate function converts the image to a grayscale level by reducing the saturation of each color to zero. The conversion will not change the color resolution.
(Medical only) The LBitmap::ShiftData function selects a specified number of bits from an 8, 12 or 16-bit grayscale bitmap into a mask and places the mask in a new 8, 12 or 16-bit grayscale bitmap. The LBitmap::SelectData function selects a specified number of bits of an 8, 12 or 16-bit grayscale bitmap and puts them into a mask, then colors the bitmap depending on the mask. This can show bitmap variances depending on user-defined conditions.
Getting information about grayscale images
LEADTOOLS also provides functions for getting information about grayscale images. The LBitmap::GetMinMaxBits provides information on the minimum and maximum bit set in a 12 or 16 - bit grayscale image. The LBitmap::GetMinMaxVal function gets the minimum and maximum intensity values present in a 12 or 16-bit grayscale image. Please note that support for 12 and 16-bit grayscale images is only available in Document/Medical toolkits. To get a full histogram of a 12 or 16-bit grayscale image, call LBitmap::GetHistogramGray.
To determine the kind of grayscale palette associated with a bitmap, if any, call LBitmapBase::IsGrayScale.
Changing the Highlight pen and Cursor Style (Document/Medical only)
When working with grayscale images containing many midrange grays, both the highlight pen and the cursor may be difficult to see properly. When working with the automated annotations in such cases, use the LAnnAutomation::SetAutoHilightPen and the LAnnAutomation::SetAutoCursor functions. These two functions are used to set the default highlight pen color, used in drawing and selecting, and the cursor, respectively. By changing the default highlight pen color and the cursor style, highlight and cursor visibility can be greatly improved.
Window leveling (Document/Medical Imaging only)
Window leveling is only valid for 12 and 16-bit grayscale images, and is used to map grayscale intensities by specifying the bit range and/or a user defined color map. Two functions are provided for window leveling. LBitmap::WindowLevel provides "on demand" window leveling for the paint functions and does not alter the image, and LBItmap::WindowLevelBitmap converts the image to a window leveled 8 or 24 bit RGB bitmap. The bit range is passed to the functions through nLowBit and nHighBit parameters and the user defined color map is passed through the pLUT parameter. To help set up a bit range and a color map, use LBitmap::GetMinMaxBits and LBitmap::GetMinMaxVal. LBitmap::GetMinMaxBits gets the minimum and maximum bits of the values present in a 12 or 16-bit grayscale image. LBitmap::GetMinMaxVal gets the minimum and maximum intensity values of the image. LBitmap::WindowLevelFillLUT fills the user-allocated LUT with a color gradient based on the specified values. For more information, refer to the individual entries for the functions.
Window leveling applied with the LBitmap::WindowLevel function can be saved to TIF or DICOM formats without changing the bitmap data. For more information, refer to Saving Window-Leveled Bitmaps.