2

まず、これが宿題の質問であることを認めます。しかし、私は立ち往生しているようです。Phil Sallee の JPEG ツールボックスを使用して jpeg 画像からすべての量子化された係数を取得する必要があります(表の下部にある「更新」見出しの下にリンクがリストされています) (ヒストグラムを作成しますが、その部分はできれば処理できます)必要なデータを取得します)。サイズが約 5 MB の JPEG 画像があり、Sallee のコードを実行すると、このデータが返されます。

  image_width: 3000
  image_height: 4000
  image_components: 3
  image_color_space: 2
  jpeg_components: 3
  jpeg_color_space: 3
  comments: {}
  coef_arrays: {[4000x3000 double]  [2000x3000 double]  [2000x3000 double]}
  quant_tables: {[8x8 double]  [8x8 double]}
  ac_huff_tables: [1x2 struct]
  dc_huff_tables: [1x2 struct]
  optimize_coding: 0
  comp_info: [1x3 struct]
  progressive_mode: 0

この画像から量子化された係数を取得するにはどうすればよいですか? 最初は、係数を吐き出すために次のようなことを試みたので、何を扱っているかを確認できました。

pic = jpeg_read(image)
img_coef = pic.quant_tables{pic.comp_info(1).quant_tbl_no}
img_coef = pic.quant_tables{pic.comp_info(2).quant_tbl_no}

img_coefquant_tables上記のデータ ポイントには 2 つの要素があるため、2 回実行されます。ただし、これは、このような大きな画像の係数の量が非常に少ないようです。この点で私よりも知識のある人が私を正しい方向に向けることができますか? jpeg画像から量子化された係数をどこ/どのように引き出すのですか?

4

2 に答える 2

0

必要な情報が得られたようです。あなたが提供したデータから、JPEG ツールキットが係数をデコードし、それらを「coef_arrays」にロードするように見えます。画像に水平サブサンプリングがあります。これは、輝度の半分の幅である色係数配列によって示されます。3 つの配列は (Y、Cr、Cb) を表します。1 つは Y 成分用で、もう 1 つは Cr および Cb 成分用であるため、2 つの量子化テーブルがあります。係数を逆量子化するには、quant_tables[] 配列の正しい要素に各係数を乗算する必要があります。たとえば、係数配列の要素 [8, 10] は、quant_table の要素 [0,2] で乗算する必要があります。8x8 量子化配列は、係数の 8x8 セットごとに再利用されます。通常はジグザグに並んでいますが、

于 2012-02-01T05:48:09.093 に答える
-1

これにより、ファイルが開き、輝度、Cr および Cb 配列、および 2 つの量子化配列が取り出されます。次に、輝度、Cr、および Cb を独自の変数に量子化します。

im = jpeg_read(image);
% Pull image information - Lum, Cb, Cr
lum = im.coef_arrays{im.comp_info(1).component_id};
cb = im.coef_arrays{im.comp_info(2).component_id};
cr = im.coef_arrays{im.comp_info(3).component_id};
% Pull quantization arrays
lqtable = im.quant_tables{im.comp_info(1).quant_tbl_no};
cqtable = im.quant_tables{im.comp_info(2).quant_tbl_no};
% Quantize above two sets of information
lqcof = quantize(lum,lum_qtable);
bqcof = quantize(cb,cho_qtable);
rqcof = quantize(cr,cho_qtable);
于 2012-02-02T03:43:30.740 に答える