質問

私ための基本的な問題MPEG-1の圧縮。いを演出していmacroblocks内のイメージです。A macroblock成16×16ピクセルで4×8×8では輝度、1×8×8はCb-1×8×8である。MATLABを作っていきたい細胞のマトリクスを含む。ご意見募集

役に立ちましたか?

解決

いるように聞こえるように最善の方法を収集するための様々な 8-by-8 行列を単一の変数となります。ができる方法な(最初のオプションのように選択の場合):

  • 列のデータを3-D matrix:

    で利用できます 機能をスタック行列と同じサイズに沿って定の寸法となります。例えば、お4 8-by-8 輝度行列を変数 L1, L2, L3, は、 L4, は、下記まで連結し 8-by-8-by-4 マトリックス:

    luminance = cat(3,L1,L2,L3,L4);
    

    このままに、追加の CbCr 行列を作る 8-by-8-by-6 マトリックス:

    macroBlock = cat(3,L1,L2,L3,L4,Cb,Cr);
    %# OR...
    macroBlock = cat(3,luminance,Cb,Cr);  %# Using luminance variable from above
    

    そのindex macroBlock 次のようになっていますへのアクセスな 8-by-8 行列必要なもの:

    L2 = macroBlock(:,:,2);  %# Get the second luminance matrix
    Cb = macroBlock(:,:,5);  %# Get the Cb matrix
    
  • データの保管細胞配列:

    すべての行列と同じサイズ、上記の連結したオプションであろう。しかし、別のオプションを中心としなければならないときに便利でしたいデータを格納する小規模なものも含めると、タイプ、寸法)を利用 細胞配列.以下の作成 1-by-6 細胞配列の行列:

    macroBlock = {L1 L2 L3 L4 Cb Cr};
    

    そのindex macroBlock 次のようになっていますへのアクセスな 8-by-8 行列必要なもの:

    L2 = macroBlock{2};  %# Get the second luminance matrix
    Cb = macroBlock{5};  %# Get the Cb matrix
    
  • 保存データ構造

    別のオプションを使用 構造 お客様の 8-by-8 行列.構造のできるデータにアクセス フィールド名 とを覚えている指数値です。こちらの方が初期化構造:

    macroBlock = struct('L1',L1,'L2',L2,'L3',L3,'L4',L4,'Cb',Cb,'Cr',Cr);
    %# OR...
    macroBlock = struct();
    macroBlock.L1 = L1;
    macroBlock.L2 = L2;
    macroBlock.L3 = L3;
    macroBlock.L4 = L4;
    macroBlock.Cb = Cb;
    macroBlock.Cr = Cr;
    

    のいずれかの構文上記の体制を構築したフィールド名 'L1', 'L2', 'L3', 'L4', 'Cb', は、 'Cr'.そのindex macroBlock 次のようになっていますへのアクセスな 8-by-8 行列必要なもの:

    L2 = macroBlock.L2;  %# Get the second luminance matrix
    Cb = macroBlock.Cb;  %# Get the Cb matrix
    

他のヒント

私はあなたが必要なものを取得できませんでした。 これらのブロックにどのパーティション画像コード

何を作成する必要はM、Nの画像とIのn番目及びm番目8×8ブロックを表し、jは内の特定のピクセルを指す行列I(I、J、M、N)でありますブロックます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top