Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

コントラスト調整範囲の指定

関数 imadjust を使用して入力および出力イメージの範囲を必要に応じて指定できます。範囲は 2 つのベクトルを引数として関数 imadjust に渡すことによって指定します。最初のベクトルは、マッピングする強度値の上限と下限です。2 番目のベクトルは、マッピングするときに適用するスケールです。

メモ:

強度は、I のクラスに関係なく、0 と 1 の間の値として指定します。Iuint8 の場合、指定した値に 255 を掛けた値が実際に使用される値になります。Iuint16 の場合は、値に 65535 を掛けます。これらの範囲を自動的に設定する代替方法の詳細については、強度調整範囲の自動設定を参照してください。

コントラストの調整範囲の指定

この例では、関数 imadjust を使用してコントラストの調整範囲を指定する方法を説明します。この例では、データの範囲を狭くすることによってイメージのコントラストを低くします。

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

I = imread('cameraman.tif');

イメージのコントラストを調整するために、出力イメージに使用する値の範囲を指定します。下の例では、男性のコートが暗すぎて詳細が見えません。imadjustuint8 の入力イメージの範囲 [0,51] を、出力イメージの範囲 [128,255] にマッピングします。これはイメージをかなり明るくします。元のイメージの暗い部分のダイナミック レンジも広くなって、コートの詳細が見やすくなっています。しかし、元のイメージの中の 51 以上の値はすべて調整後のイメージの中で 255 (白色) にマッピングされているため、調整後のイメージは、白っぽくなりすぎています。

J = imadjust(I,[0 0.2],[0.5 1]);

元のイメージと、コントラストが調整されたイメージを表示します。

imshowpair(I,J,'montage')

Figure contains an axes. The axes contains an object of type image.

強度調整範囲の自動設定

関数 stretchlim を使用すると、範囲の指定が簡単になります。(関数 imadjust は、最も単純な構文 imadjust(I) で、stretchlim を使います)。

この関数は、イメージのヒストグラムを計算し、自動的に調整範囲を決定します。関数 stretchlim は、1 つのベクトルに小数値としてこれらの値を返すので、それを imadjust への引数 [low_in high_in] として渡すことができます。たとえば、次のようにします。

I = imread('rice.png');
J = imadjust(I,stretchlim(I),[0 1]);

既定の設定では、関数 stretchlim は、調整範囲として、全範囲の低い方から 1% (0.01) と高い方から 1% (0.99) を表す強度値を使います。強度域の両端で、極値を取り去ることにより、stretchlim は、調整後のダイナミック レンジで残りの強度が広がることのできる範囲を大きくします。関数 stretchlim へ渡す引数として別の範囲を指定することもできます。詳細については、stretchlim のリファレンス ページを参照してください。