3

こんにちは、画像の品質を 8 ビットから 3 ビットに下げる簡単な方法を探しています。

これを達成する最も簡単な方法は何ですか?乾杯

4

3 に答える 3

4

線形にスケーリングする場合は、各ピクセル値を 255/7 で除算します (つまり、元の画像が行列 I に格納されている場合、低解像度画像を J = I/(255/7) とします)。

更新:スケーリング定数の誤りが原因です。

次に例を示します。

結果

于 2009-10-05T14:19:02.853 に答える
2

MATLAB にタイプとして保存されているイメージがある場合uint8、ピクセル値の範囲は 0 ~ 255 です。値を 3 ビットの精度のみに制限する (つまり、0 ~ 7 の数値のみを使用する) には、次のようにスケーリングできます。次の例のようなデータ:

>> data = uint8([0 23 128 200 255]);  % Create some data of type uint8
>> scaledData = data*(7/255)

scaledData =

    0    1    4    5    7

>> class(scaledData)

ans =

uint8

スケーリングされた値は 0 から 7 の範囲に制限されていますがuint8、これが MATLAB で使用される最小の値であるため、それらを格納する変数は依然としてデータ型であることに注意してください。未使用の上位ビットは単に 0 です。

スケーリングされた画像データをファイルに出力する方法によっては (そうしたい場合)、格納された値の精度を 8 ビット未満に減らすことができる場合があります (たとえば、PNG ファイルは 4 ビット タイプを格納できます)。 )。

于 2009-10-05T15:09:06.240 に答える
1

int8Matlab の最小の整数値です。画像内の任意のピクセルの任意の値を右にシフトすることにより、int8 で 8 ビットのうち 3 つしか使用できません。

代わりにFixed-Point Toolboxにアクセスできる場合は、次numerictypeの簡単な表記法でオブジェクトを使用できます。

T = numerictype(s,w)

引用。Matlabのマニュアルから:

T = numerictype(s,w) は、固定小数点: 未指定のスケーリング、Signed プロパティ値 s、および語長 w をもつ numerictype オブジェクトを作成します。

于 2009-10-05T09:32:52.427 に答える