セルをマップするそのようなインデックス ベクトルがあります。例えば(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] ブロックが最初のブロックに移動します (単なるマッピング)。変更を実装した後、このブロックを元のインデックスに戻したい!