【问题标题】:How to perform reverse permute to an already permuted matrix?如何对已经置换的矩阵执行反向置换?
【发布时间】:2015-04-21 04:12:14
【问题描述】:

我之前发布了一个关于如何在这里交错 R、G 和 B 向量的问题( How to form a vector from RGB matrices)。我想反转对矩阵执行的操作。我尝试了以下代码,但我无法取回输入。因为 ipermute 与 permute 完全相反,所以我尝试使用它。

C  = ipermute(H, [3 1 2])

我需要分离置换后的向量并将其重新转换为单独的平面,然后最后重新组合平面以获得 3 维图像。以下是我用来置换三个平面的代码。

 A=imread('C:\Users\Desktop\lena.jpg');

 R = A(:, :, 1);
 G = A(:, :, 2);
 B = A(:, :, 3);

 R1 = reshape(R.',1,[]);
 G1 = reshape(G.',1,[]);
 B1 = reshape(B.',1,[]);

 H = permute(A, [3 1 2]);

 N = numel(A)/3;
 V = H(1 : N);
 W = H(N + 1 : 2*N);
 X = H(2*N + 1 : end);

我需要完全反转此操作以获取我已置换的原始图像。请帮助提前谢谢。

【问题讨论】:

  • 您从A 获得Dimg 的过程是什么?我在代码中没有看到Dimg。只有当你的DimgH 相同时,你才能得到原图。
  • 试试C = permute(Dimg, [2 3 1]);
  • 我已经改变了问题,先生。 Dimg 和 H 是一样的。但是 ipermut 不起作用。

标签: matlab image-processing matrix permutation


【解决方案1】:

H2=ipermut([V,W,X],[3,1,2]);

H3=reshape(H2,3,256,256);

H4=ipermut(H3,[3,1,2]);

H4是原始A

【讨论】: