Main Content

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

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: "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.

拡張機能

GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。

バージョン履歴

R2006a より前に導入

すべて展開する