Using any one of eight color spaces, resets those bitmaps pixel component values that fall inside or outside of a specified range.
#include "l_bitmap.h"
L_LTIMGCLR_API L_INT L_ColorThresholdBitmap (pBitmap, uColorSpace, pCompData, uFlags)
Pointer to the bitmap handle that references the bitmap on which to apply the effect.
Color space which the threshold is based on. Possible values are
Value | Meaning |
---|---|
CLTH_RGB_SPACE | [0x00000000] RGB color space |
CLTH_HSV_SPACE | [0x00000001] HSV color space |
CLTH_HLS_SPACE | [0x00000002] HLS color space |
CLTH_XYZ_SPACE | [0x00000003] XYZ color space |
CLTH_YCrCb_SPACE | [0x00000004] YCrCb color space |
CLTH_YUV_SPACE | [0x00000005] YUV color space |
CLTH_LAB_SPACE | [0x00000006] LAB color space |
CLTH_CMY_SPACE | [0x00000007] CMY color space |
Pointer to an array of 3 COMPDATA structures that contains the parameters used to compare and modify each component.
Reserved for future use. Must be 0.
Value | Meaning |
---|---|
SUCCESS | The function was successful. |
< 1 | An error occurred. Refer to Return Codes. |
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.
This function is similar to the L_ConvertColorSpace function but provides greater flexibility by allowing the specification of a range and different options for handling those values that fall outside of the range. Please note that every color space component may have a different range.
Color Component | Range for 8-bit components | Range for 16-bit components |
---|---|---|
RGB | ||
R | 0 - 255 | 0 - 65535 |
G | 0 - 255 | 0 - 65535 |
B | 0 - 255 | 0 - 65535 |
HSV | ||
H | 0 - 360 | 0 - 36000 |
S | 0 - 100 | 0 - 10000 |
V | 0 - 255 | 0 - 65535 |
HLS | ||
H | 0 - 360 | 0 - 36000 |
L | 0 - 255 | 0 - 65535 |
S | 0 - 100 | 0 - 10000 |
XYZ | ||
X | 0 - 255 | 0 - 65535 |
Y | 0 - 255 | 0 - 65535 |
Z | 0 - 255 | 0 - 65535 |
YCrCb | ||
Y | 0 - 255 | 0 - 65535 |
Cr | -128 - 127 | -32768 - 32767 |
Cb | -128 - 127 | -32768 - 32767 |
YUV | ||
Y | 0 - 255 | 0 - 65535 |
U | -112 - 111 | -28567 - 28566 |
V | -138 - 137 | -35337 - 35336 |
LAB | ||
L | 0 - 100 | 0 - 10000 |
A | -128 - 127 | -32768 - 32767 |
B | -128 - 127 | -32768 - 32767 |
CMY | ||
C | 0 - 255 | 0 - 65535 |
M | 0 - 255 | 0 - 65535 |
Y | 0 - 255 | 0 - 65535 |
This function works as follows:
b. If CLTH_VALUE_MAX is passed, the rejected pixel/component is set to 255.
c. If CLTH_VALUE_CLAMP is passed, components less that nMin go to 0 and components greater than nMax go to 255. This would work only with the CLTH_MOD_CHANNEL and CLTH_TYP_BANDPASS flag.
This function works for 1, 2, 3, 8,16, 24, 32, 48 and 64-bit color bitmaps and can support regions for 24 and 48-bit bitmaps. If a 24 or 48-bit bitmap has a region the effect will be applied on the region only.
One structure is used for each color component. The order is considered to be the same as in the CLTH_xxx_SPACE name. For example, for CLTH_RGB_SPACE:
The pCompData[0].uStructSize must be set to sizeof(COMPDATA) before calling this function. For an array of structures, only the first structure in the array needs to have uStructSize member set.
To update a status bar or detect a user interrupt during execution of this function, refer to L_SetStatusCallback.
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.
Color Threshold Function - Before
Color Threshold Function - After
View additional platform support for this Color Threshold function.
Win32, x64, Linux.
L_INT ColorThresholdBitmapExample(L_VOID)
{
L_INT nRet;
BITMAPHANDLE LeadBitmap; /* Bitmap handle for the image */
COMPDATA pCompData[3];
L_INT nI;
/* Load a bitmap at its own bits per pixel */
nRet = L_LoadBitmap(MAKE_IMAGE_PATH(TEXT("Image1.jpg")), &LeadBitmap, sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL);
if (nRet != SUCCESS)
return nRet;
pCompData[0].uStructSize = sizeof(COMPDATA);
for (nI = 0; nI < 3; nI++)
{
pCompData[nI].nMinRange = 128;
pCompData[nI].nMaxRange = 255;
pCompData[nI].uFlags = 0;
}
/* Apply color Threshold effect on the image*/
nRet = L_ColorThresholdBitmap(&LeadBitmap, CLTH_RGB_SPACE, pCompData, 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 bitmap
if (LeadBitmap.Flags.Allocated)
L_FreeBitmap(&LeadBitmap);
return SUCCESS;
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document