コントラスト調整範囲の指定
関数 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 へ渡す引数として別の範囲を指定することもできます。