LBitmap::IntensityDetect
#include "ltwrappr.h"
virtual L_INT LBitmap::IntensityDetect(uLow, uHigh, crInColor, crOutColor, uChannel)
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 */ |
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 | |
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. |
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:
L_IntensityDetectBitmap(pBitmap, 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 signed data images. It returns the error code ERROR_SIGNED_DATA_NOT_SUPPORTED if a signed data 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
LBitmap LeadBitmap;
LeadBitmap.Load(TEXT("image1.cmp"), 0,ORDER_BGR);
LeadBitmap.IntensityDetect(128, 255, RGB(0, 0, 0), RGB(255, 255, 255), IDB_CHANNEL_MASTER);