1

次のピクセル値の変換に基づいて、画像のダイナミックレンジを均一に再量子化する必要があります。

Pixel Value: Quantized Value
0 - 64     : 31
65 - 128   : 95
129 - 192  : 159
193 - 255  : 223

上記の範囲のすべてのピクセル値を量子化された値に置き換えたいと思います。これをMATLABでコーディングするにはどうすればよいですか?

4

1 に答える 1

3

1 つの方法は、論理インデックスを使用することです。画像行列( 2 次元グレースケールまたは 3 次元 RGB のimg可能性があります) が与えられると、これはすべての値を置き換えます。

img(img >= 0 & img <= 64) = 31;
img(img >= 65 & img <= 128) = 95;
img(img >= 129 & img <= 192) = 159;
img(img >= 193 & img <= 255) = 223;

もう 1 つのオプションは、256 要素のルックアップ テーブルを作成し、画像内の値をこのテーブルのインデックスとして使用することです。

lookupTable = [31.*ones(1,65) 95.*ones(1,64) 159.*ones(1,64) 223.*ones(1,63)];
img = uint8(lookupTable(double(img)+1));

このソリューションでは、画像マトリックスのクラスに注意する必要があることに注意してください。多くの画像はuint80 ~ 255 の範囲の値のクラスです。これらの値をインデックスとして使用するにdoubleは、最大値 255 での飽和を避けるために、より大きな整数 ( など) を格納できるクラスに変換する必要があります。 1 から 256 までのインデックスが必要です。次に、結果の画像行列を class に変換する必要がありますuint8

于 2011-05-12T20:55:12.590 に答える