matlab中二值图像像素的重新排列

matlab中二值图像像素的重新排列,matlab,image-processing,Matlab,Image Processing,目前我参与了一个项目,我有一个二进制(半色调)lena图像,我在下面应用了“randperm”函数来排列图像 wm_image = reshape(halftoned(randperm(numel(halftoned))),size(halftoned)); 现在,我想恢复原始的半色调图像。 如果有人可以帮助您使用matlab代码?您需要保存随机排列以“反转”它。 这样就完成了排列: rp = randperm(numel(halftoned)); %// save the permutat

目前我参与了一个项目,我有一个二进制(半色调)lena图像,我在下面应用了“randperm”函数来排列图像

 wm_image = reshape(halftoned(randperm(numel(halftoned))),size(halftoned));
现在,我想恢复原始的半色调图像。
如果有人可以帮助您使用matlab代码?

您需要保存随机排列以“反转”它。
这样就完成了排列:

rp = randperm(numel(halftoned)); %// save the permutation
wm_image = reshape( hlaftoned( rp ), size(halftoned) );
以及重建

img(rp) = wm_image;
img = reshape( img, size(halftoned) );

解释
img(rp)=wm_图像

假设你有一个1乘2的向量。命令

a = [4,5];
基本上,将4分配给
a(1)
,将5分配给
a(2)
,也就是说,它是

a([1,2]) = [4,5];
现在,您可以看到一个映射,它告诉Matlab在左侧矩阵中将右侧元素放在何处。
您可以更改此映射:

a([2,1]) = [5,4];
将产生相同的
a
,但执行方式不同


希望这能澄清问题。

关于如何恢复图像,有什么算法上的想法吗?你有没有以前的知识(编码排列)或没有?谢谢它现在的工作。在重建部分,我有一个疑问,为什么它是
img(rp)=wm_图像。它的作用是什么?