#include "l_bitmap.h"
L_LTIMGCLR_API L_INT L_ColorThresholdBitmap(pBitmap、uColorSpace、pCompData、uFlags)
pBITMAPHANDLE pBitmap; |
/* ビットマップハンドルへのポインター*/ |
L_UINT uColorSpace; |
/* カラースペース*/ |
pCOMPDATA pCompData; |
/* 構造の配列へのポインター*/ |
L_UINT32 uFlags; |
/* フラグ*/ |
8種類のカラースペースのいずれかを使用して、指定した範囲内または範囲外にあるピクセル成分値を再設定します。
パラメーター |
説明 |
|
pBitmap |
エフェクトを適用するビットマップを参照文に引用するビットマップハンドルへのポインター。 |
|
uColorSpace |
しきい値が基づくカラースペース。設定可能な値は、以下の通りです。 |
|
|
値 |
意味 |
|
CLTH_RGB_SPACE |
[0x00000000]RGB色空間 |
|
CLTH_HSV_SPACE |
[0x00000001]HSVカラースペース |
|
CLTH_HLS_SPACE |
[0x00000002]HLSカラースペース |
|
CLTH_XYZ_SPACE |
[0x00000003]XYZカラースペース |
|
CLTH_YCrCb_SPACE |
[0x00000004]YCrCbカラースペース |
|
CLTH_YUV_SPACE |
[0x00000005]YUVカラースペース |
|
CLTH_LAB_SPACE |
[0x00000006]LABカラースペース |
|
CLTH_CMY_SPACE |
[0x00000007]CMYカラースペース |
pCompData |
パラメータを格納する3つのCOMPDATA構造体の配列へのポインターは、各々のコンポーネントを比較して、修正しました。 |
|
uFlags |
今後使うため確保されます。0でなければなりません。 |
戻り値
SUCCESS |
関数は成功しました。 |
<1 |
エラーが発生しました。リターンコードを参照してください |
コメント
この関数は、符合付きデータイメージをサポートしません。符合付きデータイメージがこの関数に渡されるならば、それはエラーコードERROR_SIGNED_DATA_NOT_SUPPORTEDを返します。
この関数はL_ConvertColorSpace関数と類似しているが、範囲の外に落ちるそれらの値を処理するために範囲と様々なオプションの仕様を許可することによって、より大きい柔軟性を提供します。あらゆるカラースペースコンポーネントが様々なレンジを備えているかもしれない点に注意してください。
カラーコンポーネント |
8ビットコンポーネントのための範囲 |
16ビットコンポーネントのための範囲 |
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 |
HL |
|
|
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 |
この関数は、以下のように機能します:
1。 |
ビットマップは、必須のカラースペースに変換されます。 |
|
2。 |
ピクセルごとに、以下の操作は実行されます:各々のコンポーネントは、nMinRangeと適切なCOMPDATA構造体のnMaxRange範囲と比較されます。 |
|
|
a。 |
範囲内にあれば、そのコンポーネントはテストを「合格した」とみなされます。 |
|
b。 |
範囲外にあれば、そのコンポーネントは「拒否されました」。CLTH_TYP_BANDREJECTフラグは、「渡される」「拒絶された」コンポーネントとviceversaを作ることによって、これを反転します。 |
3。 |
CLTH_MOD_CHANNELが設定されるならば、コンポーネントは独立して修正されます。CLTH_MOD_ALLが渡されたならば、任意のコンポーネントが拒絶されるならば、ピクセルはテストによって拒絶されます。その後、ピクセル/コンポーネントが拒絶されるならば: |
|
|
a。 |
CLTH_VALUE_MINが渡されるならば、拒絶されたピクセル/コンポーネントは0に設定されます。 |
|
b。 |
CLTH_VALUE_MAXが渡されるならば、拒絶されたピクセル/コンポーネントは255に設定されます。 |
|
c。 |
CLTH_VALUE_CLAMPが渡されるならば、そのnMinを差し引いたコンポーネントは0へ行きます、そして、nMaxより大きいコンポーネントは255へ行きます。これはCLTH_MOD_CHANNELだけで機能します、そして、CLTH_TYP_BANDPASSはフラグを立てます。 |
この関数は1、2、3、8,16、24、32、48と64ビットカラービットマップのために機能して、24と48ビットビットマップのために、リージョンをサポートすることができます。24または48ビットビットマップがリージョンを持っているならば、エフェクトはリージョンの上でだけ適用されます。
1つの構造体が、カラーコンポーネントごとに使われます。命令は、CLTH_xxx_SPACE名で同じであると考えられます。たとえば、CLTH_RGB_SPACEのために:
pCompData [0]構造体が、青成分。のために使われます
pCompData [1]構造体が、緑成分。のために使われます
RedコンポーネントのためのpCompData [2]構造体が、使われます
pCompData [0].uStructSizeは、この関数を呼び出す前に、sizeof(COMPDATA)に設定されなければなりません。構造の配列のために、配列の最初の構造体だけは、uStructSizeメンバを設定しておく必要があります。
状況表示バーを更新するか、この関数の実行の間、ユーザー割り込みを検出するために、L_SetStatusCallbackを参照します。
この関数は、32ビットグレースケールイメージをサポートしません。32ビットグレースケールimageがこの関数に渡されるならば、それはエラーコードERROR_GRAY32_UNSUPPORTEDを返します。
必須のDLLとライブラリ
ツールキットバージョンに基づいた正確なDLLとライブラリのリストについては、「アプリケーションとともに配布するファイル」を参照してください。 |
Win32、x64、Linux。
参照
サンプル
#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName L_LTIMGTEX_API 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("ImageProcessingDemo\\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; }