#include "l_bitmap.h"
L_LTIMGCLR_API L_INT L_IntensityDetectBitmap(pBitmap, uLow, uHigh, crInColor, crOutColor, uChannel, uFlags)
pBITMAPHANDLE pBitmap; |
pointer to the bitmap handle |
L_UINT uLow; |
lowest intensity to detect |
L_UINT uHigh; |
highest intensity to detect |
COLORREF crInColor; |
color used to fill the inner segment |
COLORREF crOutColor; |
color used to fill the outer segment |
L_UINT uChannel; |
channel to be processed |
L_UINT32 uFlags; |
flags |
Applies binary segmentation to a bitmap by filtering the specified bitmap to detect colors in a specified intensity range, in the specified color channel(s).
| Parameter | Description | |
| pBitmap | Pointer to the bitmap handle referencing the bitmap. | |
| uLow | Lowest intensity to detect. Possible values range from 0 - 65535 for 64-bit, 48-bit and 16-bit grayscale images and from 0 - 4095 for 12-bit grayscale images. Otherwise, it is from 0 to 255.. | |
| uHigh | Highest intensity to detect. Possible values range from 0 - 65535 for 64-bit, 48-bit and 16-bit grayscale images and from 0 - 4095 for 12-bit grayscale images. Otherwise, it is from 0 to 255. | |
| crInColor | The color used to fill those pixels having an intensity value between uLow and uHigh. This parameter has no effect if the uChannel parameter is set to IDB_CHANNEL_MASTER. If for example the uChannel parameter is set to IDB_CHANNEL_RED, then the red component of crInColor will be used to fill the pixels having a red component value between uLow and uHigh. | |
| crOutColor | The color used to fill those pixels having an intensity value less than uLow or greater than uHigh. This parameter has no effect if the uChannel parameter is IDB_CHANNEL_MASTER. If for example the uChannel parameter is set to IDB_CHANNEL_RED, then the red component of crOutColor will be used to fill the pixels having a red component value less than uLow or greater than uHigh. | |
| uChannel | A value that indicates the channel to process. Possible values are: | |
| Value | Meaning | |
| IDB_CHANNEL_MASTER</b>* | [0x0000] Grayscale Channel. | |
| IDB_CHANNEL_RED | [0x0001] Red Channel. | |
| IDB_CHANNEL_GREEN | [0x0010] Green Channel. | |
| IDB_CHANNEL_BLUE | [0x0100] Blue Channel. | |
| uFlags | Reserved for future use. Must be 0. | |
SUCCESS |
The function was successful. |
< 1 |
An error occurred. Refer to Return Codes. |
This function is useful for pre-processing images to improve barcode recognition results.
The image is divided into two parts: inner and outer, corresponding to the values of uLow and uHigh.
Process 2 or more channels at a time by OR-ing two or more flags.
To obtain the same result as the old L_IntensityDetectBitmap(pBitmap, uLow, uHigh) of version 13 and earlier, pass the following parameters:
L_IntensityDetectBitmap(pBitmap, uLow, uHigh, RGB(0, 0, 0), RGB(255, 255, 255), CHANNEL_RED | CHANNEL_GREEN | CHANNEL_BLUE);
This function also supports 12- and 16-bit grayscale and 48- and 64-bit color images. Support for 12- and 16-bit grayscale and 48- and 64-bit color images is available in the Document and Medical Imaging toolkits.
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.
To update a status bar or detect a user interrupt during execution of this function, refer to L_SetStatusCallback.
In order to speed up widely used image processing filters in LEADTOOLS, the grayscale value (master channel) of a colored image is calculated using the following formulas:
#define CalcGrayValue(r, g, b) ((L_UCHAR)(((L_UCHAR) (((2 * (L_UINT) (r)) + (5 * (L_UINT) (g)) + (L_UINT) (b) + 4) / 8))))#define CalcGrayValue16(r, g, b) ((L_UINT16) (((2 * (L_UINT32) (r)) + (5 * (L_UINT32) (g)) + (L_UINT32) (b) + 4) / 8))#define CalcGrayValue32(r, g, b) ((L_UINT32) (((2 * (L_UINT32) (r)) + (5 * (L_UINT32) (g)) + (L_UINT32) (b) + 4) / 8))
Required DLLs and Libraries
|
For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application. |
Win32, x64, Linux.
This example loads a bitmap and applies the filter on it.
#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileNameL_INT IntensityDetectBitmapExample(L_VOID){L_INT nRet;BITMAPHANDLE LeadBitmap; /* Bitmap handle to hold the loaded image. *//* Load the bitmap, keeping the bits per pixel of the file */nRet = L_LoadBitmap (MAKE_IMAGE_PATH(TEXT("dirty_barcode.jpg")), &LeadBitmap, sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL);if(nRet !=SUCCESS)return nRet;/* Apply the filter*/nRet = L_IntensityDetectBitmap(&LeadBitmap, 128, 255, RGB(0, 0, 0), RGB(255, 255, 255), IDB_CHANNEL_MASTER, 0);if(nRet !=SUCCESS)return nRet;nRet = L_SaveBitmap(MAKE_IMAGE_PATH(TEXT("Result.BMP")), &LeadBitmap, FILE_BMP, 24, 0, NULL);if(nRet !=SUCCESS)return nRet;//free bitmapif(LeadBitmap.Flags.Allocated)L_FreeBitmap(&LeadBitmap);return SUCCESS;}
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET
