如何在matlab中重新排列二进制图像像素

时间:2015-03-16 09:44:47

标签: matlab image-processing

目前我参与了一个项目,我有一个二进制(半色调)lena图像,我在下面应用" randperm"用于置换图像的功能。

 wm_image = reshape(halftoned(randperm(numel(halftoned))),size(halftoned));

现在,我想要恢复原始的半色调图像。 如果有人可以帮助使用matlab代码吗?

1 个答案:

答案 0 :(得分:0)

您需要保存随机排列以“反转”它 所以排列完成了:

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_image
假设你有a 1乘2的向量。命令

a = [4,5];

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

的简写
a([1,2]) = [4,5];

现在,您可以看到有一个映射告诉Matlab将右侧元素放在左侧矩阵中的哪个位置。
您可以更改此映射:

a([2,1]) = [5,4];

结果与a相同,但结论不同。

希望这可以解决问题。