2011-08-02 5 views
3

私は、1.000〜1.003の範囲のピクセル値を持つグレースケール画像を持っています。MATLABでの画像コントラストの向上

異なるピクセル間のコントラストを増やしたいと思います。私はimcontrastimtoolの下で試しましたが、視覚的には改善が見られません。

おそらく、ピクセル> 1.000の値を増やすことです。たとえば、1.001〜10、1.002〜20などをマッピングできれば素晴らしいでしょう。

+0

グレースケールイメージにdouble値を指定した場合、ほとんどの関数はそれらの値が '[0.0,1.0]'の範囲内にあることを期待しています。したがって、どのように強度を(線形または非線形に)変換しても、結果を '[0,1]'の範囲にマッピングすることを検討する必要があります。 – Amro

答えて

11

あなたは、静止画が(ゼロ除算の問題を引き起こすことになる)空白になる可能性があることを監視する必要があり、その後

newRange = 1.0; %// choose the new maximum. (new minimum always at 0.0) 
imgMin = double(min(image(:))); 
imgMax = double(max(image(:))); 
image = (image - imgMin)/(imgMax - imgMin) * newRange; 

を試してみてください。

増幅したい望ましい範囲が真の最小値または最大値でない場合は、imgMinimgMaxの値を手動で設定できます。

1

あなたがしたいすべては、あなたがちょうど現在のカラーマップの全領域にイメージデータをスケーリングして画像を表示するimagescを使用することができ、よりコントラストの画像を表示された場合。

実際に画像の範囲を調整したい場合は、最小値を減算して使用可能な範囲で除算することで、画像の範囲を正規化できます。

0

imshow(image, [lowerBound upperBound])を使用して画像を表示する場合は、lowerBoundと黒色の線形スケーリングが表示され、白く表示されるのはupperBoundです。したがって、あなたの例では、imshow(image, [1.000 1.003])のようなものを使ってイメージを表示します。

4

私はこれが正確にここで尋ねられるものではないことを認識しますが、質問のタイトルは、画像のコントラストを(非破壊的に)増やす方法を模索するために私のような他の人たちにここで来るかもしれません正規化された - 曲線はsigmoid形状に設定することにより、Photoshopで機能を使って1が何ができるかに似て:

sigmoid curve on photoshop

これを実行するための簡単な方法(私たちは[0,1]範囲内の正規化されたイメージを持っていると仮定すると、例えば、MATLABのmat2gray関数を通過させた後)は、cos機能しません。ここでは、コサインカーブを最初に反映して、その最も低い点がゼロになり、逆にではなく、π上で最も高くなるようにします。入力をπだけスケーリングすると、入力が最大値1を持つときに最高点が発生します。

img_contrast = (-cos(pi * mat2gray(img_original)) + 1)/2; 

希望に役立ちますし、最終的に我々は結果は以下の簡単な式である1を追加して2で割ることで(コサインのオリジナル[-1,1]から)出力範囲[0,1]に結果を正規化!

関連する問題