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

histeq

ヒストグラム均等化を使用したコントラストの強調

説明

J = histeq(I,hgram) は、length(hgram) ビンを持つ出力グレースケール イメージ J のヒストグラムがターゲット ヒストグラム hgram にほぼ一致するように、グレースケール イメージ I を変換します。

J = histeq(I,n) は、n ビンを持つ出力グレースケール イメージ J のヒストグラムがほぼフラットになるように、グレースケール イメージ I を変換します。J のヒストグラムは nI の離散レベル数よりはるかに少ないときに、よりフラットになります。

J =histeq(I) は、64 ビンを持つ出力グレースケール イメージ J のヒストグラムがほぼフラットになるように、グレースケール イメージ I を変換します。

newmap = histeq(X,map) は、インデックス付きイメージ X のグレー成分のヒストグラムがほぼフラットになるように、カラーマップの値を変換します。変換されたカラーマップは newmap です。

newmap = histeq(X,map,hgram) は、インデックス付きイメージ (X,newmap) のグレー成分のヒストグラムがターゲット ヒストグラム hgram にほぼ一致するようにインデックス付きイメージ X に関連付けられたカラーマップを変換します。関数 histeq は変換されたカラーマップを newmap に返します。length(hgram)size(map,1) と同じでなければなりません。

[___,T]= histeq(___) は変換 T も返します。これは、入力グレースケール イメージまたはカラーマップのグレー成分を、出力グレースケール イメージまたはカラーマップのグレー成分にマッピングします。

すべて折りたたむ

イメージをワークスペースに読み取ります。

I = imread('tire.tif');

ヒストグラム均等化を使用して強度イメージのコントラストを強調します。

J = histeq(I);

元のイメージと調整されたイメージを表示します。

imshowpair(I,J,'montage')
axis off

元のイメージのヒストグラムを表示します。

figure
imhist(I,64)

処理されたイメージのヒストグラムを表示します。

figure
imhist(J,64)

3 次元データセットを読み込みます。

load mristack

ヒストグラム均等化を行います。

enhanced = histeq(mristack);

元のイメージとコントラストが強調されたイメージのデータの 1 番目のスライスを表示します。

figure
subplot(1,2,1)
imshow(mristack(:,:,1))
title('Slice of Original Image')
subplot(1,2,2)
imshow(enhanced(:,:,1))
title('Slice of Enhanced Image')

入力引数

すべて折りたたむ

入力グレースケール イメージ。任意の次元の数値配列として指定します。

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

ターゲット ヒストグラム。数値ベクトルとして指定します。hgram には適切な範囲の強度値のビンが等間隔に分布しています。

  • double クラスまたは single クラスのイメージでは [0, 1]

  • uint8 クラスのイメージでは [0, 255]

  • uint16 クラスのイメージでは [0, 65535]

  • int16 クラスのイメージでは [-32768, 32767]

histeqsum(hgram)=numel(I) となるように、hgram を自動的にスケーリングします。length(hgram)I の離散レベル数よりもはるかに小さいと、J のヒストグラムは hgram にさらに一致するようになります。

データ型: single | double

離散グレー レベルの数。正の整数として指定します。

データ型: single | double

インデックス付きイメージ。任意の次元の数値配列として指定します。X の値はカラーマップ map のインデックスです。

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

カラーマップ。範囲 [0, 1] の値を持つ c 行 3 列の数値行列として指定します。各行は、カラーマップの単一色を構成する赤、緑、青の成分を指定する 3 要素の RGB 3 成分です。

データ型: double

出力引数

すべて折りたたむ

変換されたグレースケール イメージ。サイズとクラスが入力イメージ I と同じ数値配列として返されます。

グレースケール変換。数値ベクトルとして返されます。変換 T はイメージ I のグレー レベルを J のグレー レベルにマッピングします。

データ型: double

変換されたカラーマップ。範囲 [0, 1] の値を持つ n 行 3 列の数値行列として指定します。各行は、カラーマップの単一色を構成する赤、緑、青の成分を指定する 3 要素の RGB 3 成分です。

データ型: double

アルゴリズム

目的のヒストグラム hgram を指定すると、histeq はグレースケール変換 T を選択して

|c1(T(k))c0(k)|,

を最小化します。c0 は入力イメージ I の累積ヒストグラム、c1 はすべての強度 khgram の累積和です。この最小化には、次の制約があります。

  • T は単調でなければなりません

  • c1(T(a))a でのヒストグラム カウント間の距離の 1/2 を超えて c0(a) をオーバーシュートできません

histeq は変換 b = T(a) を使用して X (またはカラーマップ) 内のグレー レベルをその新しい値にマッピングします。

hgram を指定しない場合、histeq はフラットな hgram を作成します。

hgram = ones(1,n)*prod(size(A))/n;

次に、前のアルゴリズムを適用します。

拡張機能

R2006a より前に導入