-1

libjpegを使用して、いくつかのテキスト ファイルを読み取り、それを JPEG ファイルに書き込むプログラムを作成しています。品質を 100 に設定すると ( でjpeg_set_quality)、実際にはグレースケールの品質低下はありません。ただし、RGB に移行すると、100 の品質でも圧縮されているようです。

グレースケール JPEG 画像に変換するために次の入力を行うと、うまく機能し、きれいな JPEG 画像が得られます。

0  0  0 0 0
0  0  0 0 0
0  0  0 0 0
0 255 0 0 0
255 0 0 0 0

(水平に反転した)出力は次のとおりです。

グレースケール

ここで、配列が赤であると仮定すると、次の 2 つの配列をそれぞれ緑と青の色に使用します。

0 0  0  0 0
0 0  0  0 0
0 0 255 0 0
0 0  0  0 0
0 0  0  0 0


0 0 0  0 255
0 0 0 255 0
0 0 0  0  0
0 0 0  0  0
0 0 0  0  0

これは私が得るカラー出力です:

RGB

色の値を持つ入力ピクセルは 5 つだけですが、周囲のピクセルも色に変換されたときに値を取得しています。グレースケール画像と RGB 画像の両方で、品質は 100 に設定されました。

これの原因と、実際に入力値を持つピクセルにのみ色が使用されるように修正する方法を知りたいですか?

4

2 に答える 2

1

RGB->YCbCr 変換でエラーが発生しています。2 つのカラー スペース間に 1:1 のマッピングがないため、これを回避することは不可能です。

于 2015-02-13T15:43:12.327 に答える