我有一个这样的索引向量来映射单元格。例如(1 -> 310),(2 -> 910),....(1024 -> 67)
它将8*8 cell
图像的(例如:第一个单元格)映射到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] 块进入第一个块,(只是一个简单的映射)。在实施我的更改后,我想将这些块恢复到原来的状态!