このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
コントラスト調整範囲の指定
関数 imadjust
を使用して入力および出力イメージの範囲を必要に応じて指定できます。範囲は 2 つのベクトルを引数として関数 imadjust
に渡すことによって指定します。最初のベクトルは、マッピングする強度値の上限と下限です。2 番目のベクトルは、マッピングするときに適用するスケールです。
メモ
強度は、I
のクラスに関係なく、0 と 1 の間の値として指定します。I
が uint8
の場合、指定した値に 255 を掛けた値が実際に使用される値になります。I
が uint16
の場合は、値に 65535 を掛けます。これらの範囲を自動的に設定する代替方法の詳細については、強度調整範囲の自動設定を参照してください。
コントラストの調整範囲の指定
この例では、関数 imadjust
を使用してコントラストの調整範囲を指定する方法を説明します。この例では、データの範囲を狭くすることによってイメージのコントラストを低くします。
イメージをワークスペースに読み取ります。
I = imread('cameraman.tif');
イメージのコントラストを調整するために、出力イメージに使用する値の範囲を指定します。下の例では、男性のコートが暗すぎて詳細が見えません。imadjust
は uint8
の入力イメージの範囲 [0,51]
を、出力イメージの範囲 [128,255]
にマッピングします。これはイメージをかなり明るくします。元のイメージの暗い部分のダイナミック レンジも広くなって、コートの詳細が見やすくなっています。しかし、元のイメージの中の 51 以上の値はすべて調整後のイメージの中で 255 (白色) にマッピングされているため、調整後のイメージは、白っぽくなりすぎています。
J = imadjust(I,[0 0.2],[0.5 1]);
元のイメージと、コントラストが調整されたイメージを表示します。
imshowpair(I,J,'montage')
強度調整範囲の自動設定
関数 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
へ渡す引数として別の範囲を指定することもできます。