1

セルをマップするそのようなインデックス ベクトルがあります。例えば(1 -> 310),(2 -> 910),....(1024 -> 67)

8*8 cell画像の (例: 1 番目のセル) を8*8 cell(例: 310 番目のセル)にマップします。

私は1024 8*8 cellsこのプロセスを逆にして、最初のインデックスを取得したいと考えています。

つまり、このマッピングの後、基本的な順序に並べ替えます。(例: 310 番目のセルは 1 番目になり、910 番目のセルは 2 になります)。

誰でも助けることができますか?

ええ、私は自分のプログラムを書きます。たとえば、画像用のこれらの画像ブロックがあります。

             % dividing of main image to 8*8 blocks:
           U = floor(M1/8);    
           V = floor(M2/8);
          I_div = cell(U,V);
          K = 1; L = 1;
          for u = 1:U
          for v = 1:V
           I_div{u,v} = I2(K:K+7,L:L+7);
          I_div_DCT{u,v} = dct2(I_div{u,v});  %%%  the main blocks 
           L = L + 8;
         end
      K = K + 8;
        L = 1;
   end




       a=reshape(I_div_DCT',[],1)';
       b=cell(1,1024);
       for i=1:1024   
       b(i)=a(index(i));
       end

%%% インデックスは 1*1024 配列で、次のようになります。

        %%%  1     2     3       4       5       6       7       8   .... 
         %%% 367  910   274     308     275     429     403      276   ....

最初の画像ブロックが a(1,1)=[8*8 double] の場合。b(i)=a(index(i)) を実装した後、367 番目の [8*8] ブロックに移動し、たとえば、787 番目の [8*8] ブロックが最初のブロックに移動します (単なるマッピング)。変更を実装した後、このブロックを元のインデックスに戻したい!

4

1 に答える 1