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

How to rearrange the binary image pixel in matlab

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

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

现在,我想恢复原始半色调图像。 如果有人可以帮助编写 matlab 代码?

您需要保存随机排列才能"invert"它。
这样排列就完成了:

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 但处理方式不同。

希望这能解决问题。