#include "l_bitmap.h"
L_LTIMGCOR_API L_INT EXT_FUNCTION L_AnisotropicDiffusionBitmap(pBitmap、uIterations、uSmoothing、fTimeStep、fMinVariation、fMaxVariation、fEdgeHeight、uUpdate、uFlags)
pBITMAPHANDLE pBitmap; |
/* ビットマップへのポインター*/ |
L_UINT uIterations; |
/* 多くの繰返し*/ |
L_UINT uSmoothing; |
/* 平滑化カーネルサイズ*/ |
L_FLOAT fTimeStep; |
/* ベクトル場距離にかかっている時間制御方式*/ |
L_FLOAT fMinVariation; |
/* 平行した拡散の量*/ |
L_FLOAT fMaxVariation; |
/* 1面の拡散の減少*/ |
L_FLOAT fEdgeHeight; |
/* 計算される最大刃の高さ*/ |
L_UINT uUpdate; |
/* 各々のimage最新版の前の多くの繰返し*/ |
L_UINT32 uFlags; |
/* フラグ*/ |
多様にパターン化されたノイズおよびパターン化されていないノイズを減らすために画像に二次元の異方性拡散フィルタを実行します。
パラメーター |
説明 |
pBitmap |
ビットマップハンドルへのポインター。 |
uIterations |
フィルタが実行する繰返しの数錐体のサイズは、この変数と等しいでしょう。 |
uSmoothing |
imageの上で実行される平滑化カーネルのサイズ。 |
fTimeStep |
ベクトル場のlengthを定義します。 |
fMinVariation |
この変数を増やすことは、平行した拡散を増やします。 |
fMaxVariation |
この変数を増やすと、片方拡散が減少します。 |
fEdgeHeight |
以下のすべてのエッジ値がフィルタ操作に含まれる最大エッジサイズ。 |
uUpdate |
imageの各々の連続的な最新版の前の繰返しの数。 |
uFlags |
今後使うため確保されます。0でなければなりません。 |
戻り値
SUCCESS |
関数は成功しました。 |
<1 |
エラーが発生しました。リターンコードを参照してください |
コメント
この関数は、イメージ(より特に医学イメージ)で、ノイズの縮小を主な活動とします。大きい量の周期的なノイズによるイメージは、このフィルタを用いてはっきりするために、よりよく適しています。
繰返しの数は、フィルタがimageの上で実行される回数を制御します。下の値は、より速くフィルタを実行します。より高い繰返しは通常よりはっきりした結果を意味します、それでも、それは最善結果を得るためにimageから計算されることができるベクトルの最大長に依存します。
時間ステップ変数はより高いです、様々なベクトルでより大きなものが次の繰返しのために使われます、それでも、それが若干の点で最大のベクトルを上回って、あまりに高い値は届かない範囲結果を与えます。
特に結果がわかっていないとき、可変的なuUpdateは大きなimageの上で多数の繰返しを使うとき、非常に役に立ちます。この変数はimage毎号最新版繰返しを更新します、このように、ノイズ除去の進捗は目撃されることができます。
imageがリージョンを持っているならば、関数はリージョンの上でだけ実行されます。
この関数は、12と16ビットグレースケールと48と64ビットカラーイメージをサポートします。12と16ビットグレースケールと48と64ビットカラーイメージのサポートは、DocumentとMedical画像化ツールキットで利用できます。
この関数は、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 AnisotropicDiffusionFilterExample(L_VOID) { L_INT nRet; BITMAPHANDLE LeadBitmap; /*Bitmap handle to hold the loaded image*/ /* Load the bitmap, keeping the bits per pixel of the file */ nRet = L_LoadBitmap (MAKE_IMAGE_PATH(TEXT("ImageProcessingDemo\\NaturalFruits.jpg")), &LeadBitmap, sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL); if(nRet != SUCCESS) return nRet; //Apply Anisotropic Diffusion filter nRet = L_AnisotropicDiffusionBitmap(&LeadBitmap, 20, 1, 100.0f, 0.5f, 0.8f, 4.0f, 10, 0); if(nRet != SUCCESS) return nRet; //free bitmap if(LeadBitmap.Flags.Allocated) L_FreeBitmap(&LeadBitmap); return SUCCESS; }