3

8 ビットのグレースケール画像が与えられた画像処理を実行しようとしています。50 から 205 の間のピクセル値のコントラストを増加させるルックアップ テーブルを生成することによって、イメージのコントラストを変更することになっています。次の MATLAB コードを使用してルックアップ テーブルを生成しました。

a = 2;
x = 0:255;
lut = 255 ./ (1+exp(-a*(x-127)/32));

をプロットするとlut、以下のグラフが得られます。

ここに画像の説明を入力

ここまではうまくいきましたが、50 から 205 の間のピクセル値のコントラストを上げるにはどうすればよいでしょうか? 変換マッピングの最終的なプロットは次のようになります。

ここに画像の説明を入力

4

2 に答える 2

2

画像の各ピクセルを取得し、ルックアップ テーブルの対応する値に置き換える必要があります。これは、いくつかのネストされたforループで実行できますが、最も慣用的な方法ではありません。arrayfunピクセルを置き換える関数で使用することをお勧めします。

new_image = arrayfun(@(pixel) lut(pixel), image);

lut画像上で直接生成するコードを使用する方が効率的かもしれません。パフォーマンスが問題で、ルックアップ テーブルを使用する必要がない場合は、両方の方法を比較してみてください。

new_image = 255 ./ (1 + exp(-image * (x-127) / 32));

new_image変数の型が ではなくなることに注意してくださいuint8。再度表示する必要がある場合 (たとえば、 でimshow)、 を記述して元に戻す必要がありますuint8(new_image)

于 2014-08-07T20:12:36.383 に答える