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 and LBitmapBase::ConvertToGrayScale functions. 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.
The LBitmapBase::ConvertToGrayScale function converts an image to a grayscale image, but allows the user to control the LOW and HIGH bit of the result image.
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.
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::GetAutoHilightPen, LAnnAutomation::SetAutoHilightPen and the LAnnAutomation::SetAutoCursor functions. These LAnnAutomation::SetAutoHilightPen and LAnnAutomation::SetAutoCursor 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 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. Four functions are provided for window leveling. LBitmap::WindowLevel or LBitmap::WindowLevelExt provides "on demand" window leveling for the paint functions and does not alter the image, and LBItmap::WindowLevelBitmap or LBItmap::WindowLevelBitmapExt 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 or LBitmap::WindowLevelFillLUTExt 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.
LEADTOOLS supports two types of LUTs for 10-16-bit grayscale images (8-bit LUT and 16-bit LUT). Typical grayscale image display and processing is done using an 8-bit LUT. But, you can also use a 16-bit LUT, which offers more precision. Some special video cards and monitors also support display of grayscale images using a 16-bit LUT.
Window leveling applied with the LBitmap::WindowLevel or LBitmap::WindowLevelExt function can be saved to TIF or DICOM formats without changing the bitmap data. For more information, refer to Saving Window-Leveled Bitmaps.