Available in LEADTOOLS Imaging Pro, Vector, Document, and Medical Imaging toolkits. |
LBitmap::IntensityDetect
#include "ltwrappr.h"
virtual L_INT LBitmap::IntensityDetect(uLow, uHigh, crInColor, crOutColor, uChannel, uFlags = 0)
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). This function is also useful for pre-processing images for the purpose of improving barcode recognition results.
Parameter |
Description |
|
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 |
[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. |
Returns
SUCCESS |
The function was successful. |
< 1 |
An error occurred. Refer to Return Codes. |
Comments
The image is divided into two parts, inner and outer, according to the values of uLow and uHigh.
The function can process 2 or more channels at a time by OR-ing two or more flags.
The function can obtain the same result as that of the LBitmap::IntensityDetect (uLow, uHigh) function (version 13 and before) by passing the following parameters:
LBitmap::IntensityDetect(uLow, uHigh, RGB(0, 0, 0), RGB(255, 255, 255), CHANNEL_RED | CHANNEL_GREEN | CHANNEL_BLUE);
To update a status bar or detect a user interrupt during execution of this function, refer to LBase::EnableStatusCallback.
This function 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 only in the Document/Medical 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.
Required DLLs and Libraries
LTDIS For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application. |
See Also
Example
L_INT LBitmap__IntensityDetectExample() { L_INT nRet; LBitmap LeadBitmap; nRet =LeadBitmap.Load(TEXT("%UserProfile%\\My Documents\\LEADTOOLS Images\\image1.cmp"), 0,ORDER_BGR); if(nRet !=SUCCESS) return nRet; nRet =LeadBitmap.IntensityDetect(128, 255, RGB(0, 0, 0), RGB(255, 255, 255), IDB_CHANNEL_MASTER); if(nRet !=SUCCESS) return nRet; return SUCCESS; }