adapthisteq
コントラストに制限を付けた適応ヒストグラム均等化を実行 (CLAHE)
説明
例
コントラストに制限を付けた適応ヒストグラム均等化 (CLAHE) を適用
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)')
CLAHE をインデックス付きカラー イメージに適用
インデックス付きカラー イメージをワークスペースに読み取ります。
[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')
強調されたイメージの影がより暗く見え、ハイライトがより明るく見えます。全体のコントラストが改善されます。
入力引数
I
— グレースケール イメージ
2 次元数値行列
グレースケール イメージ。2 次元数値行列として指定します。
データ型: single
| double
| int16
| uint8
| uint16
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name
を引用符で囲みます。
例: "NumTiles",[8 16]
は、イメージを 8 行 16 列のタイルに分割します。
NumTiles
— タイル数
[8,8]
(既定値) | 正の整数の 2 要素ベクトル
adapthisteq
がイメージを分割する四角形のコンテキスト付き領域 (タイル) の数。正の整数が格納されている 2 要素のベクトルとして指定します。元のイメージを M
行 N
列のタイルに分割する場合、NumTiles
の値を [M N]
にします。M
および N
は、2
以上でなければなりません。合計タイル数は、M*N
に等しくなります。必要なタイル数は、入力イメージのタイプによって異なります。実際に試してから決定するのが一番良いでしょう。
データ型: double
ClipLimit
— コントラスト強調の制限
0.01
(既定値) | 範囲 [0, 1] の数値
コントラスト強調の制限。[0, 1] の範囲の数値として指定します。制限を大きくすると、コントラストが高くなります。
ClipLimit
は、特に均等領域でイメージが飽和され過ぎるのを防ぐコントラストの係数です。これらの面積は、多くのピクセルが同じグレー レベルの範囲内にあるため、特定のイメージ タイルのヒストグラムで高ピークであることが特徴です。制限がないと、場合によっては、適応ヒストグラム均等化の技術を使用しても元のイメージより劣ることになります。
データ型: double
NBins
— コントラストを強調する変換を作成するのに使用されるヒストグラムのビン数
256
(既定値) | 正の整数
コントラストを強調する変換を作成するのに使用されるヒストグラムのビン数。正の整数として指定します。値が大きいと、処理速度は低下しますが、ダイナミック レンジが広くなります。
データ型: double
Range
— 出力データの範囲
"full"
(既定値) | "original"
出力イメージ データの範囲。次のいずれかの値に指定します。
値 | 説明 |
---|---|
"full" | 出力クラスの全範囲を使用します (たとえば、uint8 の場合は [0 255])。 |
"original" | 範囲を [min(I(:)) max(I(:))] に制限します。 |
データ型: char
| string
Distribution
— 最適なヒストグラムの形状
"uniform"
(既定値) | "rayleigh"
| "exponential"
最適なヒストグラムの形状。次のいずれかの値に指定します。
値 | 説明 |
---|---|
"uniform" | 一様なヒストグラムを作成します。 |
"rayleigh" | ベル型ヒストグラムを作成します。 |
"exponential" | 曲線ヒストグラムを作成します。 |
Distribution
は、コントラスト変換関数を作成するベースとして adapthisteq
が使用する分布です。選択した分布は、入力イメージのタイプによって異なります。たとえば、レイリー分布を使用すれば、水中のイメージがより自然に見えます。
データ型: char
| string
Alpha
— 分布パラメーター
0.4
(既定値) | 非負の数値
分布パラメーター。非負の数値として指定します。Alpha
は、Distribution
が "rayleigh"
または "exponential"
に設定される場合にのみ使用します。
データ型: double
アルゴリズム
CLAHE は、イメージ全体ではなく "タイル" と呼ばれるイメージ内の小さい領域を処理します。adapthisteq
は、それぞれのタイルについて、個別にコントラスト変換関数を計算します。各タイルのコントラストが強調されるため、出力領域のヒストグラムは Distribution
値により指定されたヒストグラムにほぼ一致します。次に、人工的に作成した境界を削除するため、双一次内挿を使用してその近傍のタイルを組み合わせます。コントラストは、特に均等な領域では、イメージ内に存在するノイズの増幅を避けるために制限されます。
参照
[1] Zuiderveld, Karel. "Contrast Limited Adaptive Histograph Equalization." Graphic Gems IV. San Diego: Academic Press Professional, 1994. 474–485.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
adapthisteq
では C コードの生成がサポートされています (MATLAB® Coder™ が必要)。詳細については、イメージ処理のコード生成を参照してください。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数は、スレッドベースの環境を完全にサポートします。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2006a より前に導入R2022b: スレッドベース環境のサポート
adapthisteq
は、スレッドベースの環境をサポートするようになりました。
R2022a: GPU Coder を使用した CUDA コードの生成
adapthisteq
は、最適化された CUDA® コードの生成をサポートするようになりました (GPU Coder™ が必要)。
R2021a: MATLAB Coder を使用した C コードの生成
adapthisteq
は、C コードの生成をサポートするようになりました (MATLAB Coder が必要)。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)