ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

adapthisteq

コントラストに制限を付けた適応ヒストグラム均等化を実行 (CLAHE)

説明

J = adapthisteq(I) は、コントラストに制限を付けた適応ヒストグラム均等化 (CLAHE) [1] を使用して値を変換することにより、グレースケール イメージ I のコントラストを強調します。

J = adapthisteq(I,Name,Value) では、オプション パラメーターの名前/値のペアを指定します。パラメーター名は省略形でも構いません。大文字と小文字は区別されません。

すべて折りたたむ

CLAHE をイメージに適用し、結果を表示します。

I = imread('tire.tif');
J = adapthisteq(I,'clipLimit',0.02,'Distribution','rayleigh');
imshowpair(I,J,'montage');
title('Original Image (left) and Contrast Enhanced Image (right)')

インデックス付きカラー イメージをワークスペースに読み取ります。

[X, MAP] = imread('shadow.tif');

インデックス付きイメージをトゥルーカラー (RGB) イメージに変換し、RGB イメージを L*a*b* 色空間に変換します。

RGB = ind2rgb(X,MAP);
LAB = rgb2lab(RGB);

関数 adapthisteq で必要とされる [0 1] の範囲に値をスケーリングします。

L = LAB(:,:,1)/100;

L チャネルで CLAHE を実行します。結果のスケーリングにより、L*a*b* 色空間で使用される範囲に戻します。

L = adapthisteq(L,'NumTiles',[8 8],'ClipLimit',0.005);
LAB(:,:,1) = L*100;

結果のイメージを RGB 色空間に再変換します。

J = lab2rgb(LAB);

元のイメージと処理後のイメージを表示します。

figure
imshowpair(RGB,J,'montage')
title('Original (left) and Contrast Enhanced (right) Image')

強調されたイメージの影がより暗く見え、ハイライトがより明るく見えます。全体のコントラストが改善されます。

入力引数

すべて折りたたむ

入力強度イメージ。数値の 2 次元配列として指定します。

データ型: single | double | int16 | uint8 | uint16

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: 'NumTiles',[8 16] は、イメージを 8 行 16 列のタイルに分割します。

adapthisteq がイメージを分割する四角形のコンテキスト付き領域 (タイル) の数。正の整数が格納されている 2 要素のベクトルとして指定します。元のイメージを MN 列のタイルに分割する場合、'NumTiles' の値を [M N] にします。M および N は、2 以上でなければなりません。合計タイル数は、M*N に等しくなります。必要なタイル数は、入力イメージのタイプによって異なります。実際に試してから決定するのが一番良いでしょう。

データ型: double

コントラスト強調の制限。[0 1] の範囲の実数スカラーとして指定します。制限を大きくすると、コントラストが高くなります。

'ClipLimit' は、特に均等領域でイメージが飽和され過ぎるのを防ぐコントラストの倍数です。これらの面積は、多くのピクセルが同じグレー レベルの範囲内にあるため、特定のイメージ タイルのヒストグラムで高ピークであることが特徴です。制限がないと、場合によっては、適応ヒストグラム均等化の技術を使用しても元のイメージより劣ることになります。

データ型: double

コントラストを強調する変換を作成するのに使用されるヒストグラムのビン数。正の整数スカラーとして指定します。値が大きいと、処理速度は低下しますが、ダイナミック レンジが広くなります。

データ型: double

出力イメージ データの範囲。次のいずれかの値に指定します。

説明
'full'出力クラスの全範囲を使用します (たとえば、uint8 の場合は [0 255])。
'original'範囲を [min(I(:)) max(I(:))] に制限します。

データ型: char | string

最適なヒストグラムの形状。次のいずれかの値に指定します。

説明
'uniform'一様なヒストグラムを作成します。
'rayleigh'ベル型ヒストグラムを作成します。
'exponential'曲線ヒストグラムを作成します。

'Distribution' は、コントラスト変換関数を作成するベースとして adapthisteq が使用する分布です。選択した分布は、入力イメージのタイプによって異なります。たとえば、レイリー分布を使用すれば、水中のイメージがより自然に見えます。

データ型: char | string

分布パラメーター。非負の実数スカラー値として指定します。'Alpha' は、'Distribution''rayleigh' または 'exponential' に設定される場合にのみ使用します。

データ型: double

出力引数

すべて折りたたむ

出力強度イメージ。入力イメージ I と同じクラスの 2 次元配列として返されます。

アルゴリズム

CLAHE は、イメージ全体ではなく "タイル" と呼ばれるイメージ内の小さい領域を処理します。adapthisteq は、それぞれのタイルについて、個別にコントラスト変換関数を計算します。各タイルのコントラストが強調されるため、出力領域のヒストグラムは 'Distribution' パラメーターにより指定されたヒストグラムにほぼ一致します。次に、人工的に作成した境界を削除するため、双一次内挿を使用してその近傍のタイルを組み合わせます。コントラストは、特に均等な領域では、イメージ内に存在するノイズの増幅を避けるために制限されます。

参照

[1] Zuiderveld, Karel. “Contrast Limited Adaptive Histograph Equalization.” Graphic Gems IV. San Diego: Academic Press Professional, 1994. 474–485.

参考

R2006a より前に導入