LBitmap::ColorizeGray

#include "ltwrappr.h"

virtual L_INT LBitmap::ColorizeGray (pSrcBitmap, pGrayColors, uCount, uFlags = 0)

virtual L_INT LBitmap::ColorizeGray (plSrcBitmap, pGrayColors, uCount, uFlags = 0)

Colors an 8, 12 or 16-bit grayscale bitmap. The function changes the color bits/pixel of the bitmap from the specified formats into 24-bit RGB format.

Parameters

pBITMAPHANDLE pSrcBitmap

Pointer to the source bitmap that will contain the result of the function. The user should free the bitmap before passing it to the function.

pLTGRAYCOLOR pGrayColors

Pointer to an array of LTLTGRAYCOLOR structures. The user specifies number of entries of the array. You can automatically color the bitmap by passing NULL value in this variable (in this case uCount will be ignored).

L_UINT uCount

Number of entries in pLTGRAYCOLORs array. It can be any number as long as it represents pLTGRAYCOLORs correctly. 1 means there is one entry, 2 means there is two entries. If you set it as 0 then the function will return an error code.

LBitmapBase * plSrcBitmap

Pointer to the source bitmap object that will contain the result of the function. The user should free the bitmap before passing it to the function.

L_UINT32 uFlags

Reserved for future use. Must be 0.

Returns

Value Meaning
SUCCESS The function was successful.
< 1 An error occurred. Refer to Return Codes.

Comments

The function can be used as a visualization aid. More precisely, this function can be used to show variations in a bitmaps intensity values.

This function colors the grayscale bitmap by converting specified ranges of grayscale intensities into corresponding RGB values. Use the pLTGRAYCOLORs variable to set the intensity ranges and the RGB values.

Using this function you can show details that were never seen in the original bitmap. In 12 and 16-bit grayscale bitmaps, only the 8 most significant bits are displayed, whereas the rest are discarded. So by coloring these discarded bits you can make them visible instead.

The pDstBitmap is assumed to be uninitialized. If pDstBitmap contains a bitmap, you should free it prior to calling this function. The function will allocate and store a 24-bit bitmap in pDstBitmap.

If you pass NULL in the pLTGRAYCOLORs variable then the function colors the bitmap automatically using an algorithm that generates unique output colors. The output bitmap will contain:

The uCount variable will be ignored if pLTGRAYCOLORs is NULL.

You do not have to fill uStructSize for all the elements of the pLTGRAYCOLORs array. You only need to fill uStructSize for the first element in the pLTGRAYCOLORs array.

The sample below shows you how to color a 16-bit grayscale bitmap using pLTGRAYCOLORs.

In a 16-bit grayscale bitmap, the lowest pixel value is 0 and the highest pixel value is 65535.

The colors from the input images will be colored as follows:

For more information on filling the pLTGRAYCOLORs array to obtain this result, refer to the example.

To update a status bar or detect a user interrupt during execution of this function, refer to LBase::EnableStatusCallback.

This function supports 8, 12 and 16-bit grayscale bitmaps only. Support for 12 and 16-bit grayscale images are available only in the Document/Medical toolkits. It also can process the whole image or a region of the image. If a bitmap has a region, the effect is applied only to the region.

This function does not support 32-bit grayscale images. It returns the error code ERROR_GRAY32_UNSUPPORTED if a 32-bit grayscale image is passed to this function.

Required DLLs and Libraries

Platforms

Win32, x64.

See Also

Functions

Topics

Example

L_INT LBitmap__ColorizeGrayExample(LBitmap *pGrayBitmap, LBitmap *pColorBitmap)  
{ 
 
 
   /* This example loads a 16-bit grayscale bitmap and then colors it. */ 
   L_INT nRet; 
   pLTGRAYCOLOR pGrayColors;  
 
   pGrayColors = (pLTGRAYCOLOR) malloc (sizeof(LTGRAYCOLOR) * 6);  
 
   pGrayColors[0].uStructSize = sizeof(LTGRAYCOLOR);  
   pGrayColors[0].uThreshold = 9999;  
   pGrayColors[0].crColor.rgbRed = 255;  
   pGrayColors[0].crColor.rgbGreen = 0;  
   pGrayColors[0].crColor.rgbBlue = 0;  
 
   pGrayColors[1].uThreshold = 19999;  
   pGrayColors[1].crColor.rgbRed = 0;  
   pGrayColors[1].crColor.rgbGreen = 255;  
   pGrayColors[1].crColor.rgbBlue = 0;  
 
   pGrayColors[2].uThreshold = 29999;  
   pGrayColors[2].crColor.rgbRed = 0;  
   pGrayColors[2].crColor.rgbGreen = 0;  
   pGrayColors[2].crColor.rgbBlue = 255;  
 
   pGrayColors[3].uThreshold = 39999;  
   pGrayColors[3].crColor.rgbRed = 0;  
   pGrayColors[3].crColor.rgbGreen = 255;  
   pGrayColors[3].crColor.rgbBlue = 255;  
 
   pGrayColors[4].uThreshold = 49999;  
   pGrayColors[4].crColor.rgbRed = 255;  
   pGrayColors[4].crColor.rgbGreen = 0;  
   pGrayColors[4].crColor.rgbBlue = 255;  
 
   pGrayColors[5].uThreshold = 59999; // This value will be ignored 
   pGrayColors[5].crColor.rgbRed = 255;  
   pGrayColors[5].crColor.rgbGreen = 255;  
   pGrayColors[5].crColor.rgbBlue = 0;  
 
   // Call the function 
   nRet =pColorBitmap->ColorizeGray (pGrayBitmap, pGrayColors, 6); 
   if(nRet !=SUCCESS) 
      return nRet; 
 
   free (pGrayColors);  
   pGrayBitmap->Free(); 
 
   // Now we have the resulting image in pColorBitmap 
 
   return SUCCESS; 
} 
Help Version 21.0.2021.7.2
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Raster Imaging C++ Class Library Help