L_IntensityDetectBitmap
#include "l_bitmap.h"
L_INT EXT_FUNCTION L_IntensityDetectBitmap(pBitmap, uLow, uHigh, crInColor, crOutColor, uChannel)
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 */ |
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 |
[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 of the old L_IntensityDetectBitmap(pBitmap, uLow, uHigh) of 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);
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 only in the Document/Medical toolkits.
To update a status bar or detect a user interrupt during execution of this function, refer to L_SetStatusCallback.
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
LTIMG For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application. |
Platforms
Windows 95 / 98 / Me, Windows 2000 / XP, Windows CE.
See Also
Example
/* This example loads a bitmap and applies the filter on it. */
BITMAPHANDLE LeadBitmap; /* Bitmap handle to hold the loaded image. */
/* Load the bitmap, keeping the bits per pixel of the file */
L_LoadBitmap (TEXT("IMAGE1.CMP"), &LeadBitmap, sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL);
/* Apply the filter*/
L_IntensityDetectBitmap(&LeadBitmap, 128, 255, RGB(0, 0, 0), RGB(255, 255, 255), IDB_CHANNEL_MASTER);