Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中黑白图像的像素置乱_Matlab_Image Processing_Pixels_Scramble - Fatal编程技术网

Matlab中黑白图像的像素置乱

Matlab中黑白图像的像素置乱,matlab,image-processing,pixels,scramble,Matlab,Image Processing,Pixels,Scramble,我有一系列黑白图像,不是灰度的,黑白的;Matlab中的2D矩阵,我需要随机置乱像素。我在Mathworks文件交换中找到了这个包;其中一个函数imscramperrand正是我所需要的,但它适用于RGB图像3D矩阵。有没有办法将黑白图像转换成3D矩阵,以便我可以使用该功能?或者有人能推荐其他符合我需要的脚本吗?请记住,我不熟悉Matlab,但我会尽全力 多谢各位 编辑1:当我导入BW图像时,我得到一个逻辑值0=黑色,1=白色的2D矩阵。我认为使用RGB图像函数时,不同的数据格式逻辑与整数会产生

我有一系列黑白图像,不是灰度的,黑白的;Matlab中的2D矩阵,我需要随机置乱像素。我在Mathworks文件交换中找到了这个包;其中一个函数imscramperrand正是我所需要的,但它适用于RGB图像3D矩阵。有没有办法将黑白图像转换成3D矩阵,以便我可以使用该功能?或者有人能推荐其他符合我需要的脚本吗?请记住,我不熟悉Matlab,但我会尽全力

多谢各位

编辑1:当我导入BW图像时,我得到一个逻辑值0=黑色,1=白色的2D矩阵。我认为使用RGB图像函数时,不同的数据格式逻辑与整数会产生错误

编辑2:我改编了上述软件包中的演示代码,并使用@Jonathan的建议将2D矩阵转换为3D矩阵,并添加了一个循环,将逻辑值转换为RGB整数值,然后使用imStramperRand函数。它可以工作,但我得到的是下图:。这是我开始的BW图片:。所以我检查了置乱后的图像,FEX文件中的函数实际上在RGB值内置乱,这意味着我发现,例如,一个像素。所以我解决了一个问题,但实际上函数中存在一个问题:它不会对像素进行置乱,而是对生成原始图片中没有的颜色的值进行置乱

编辑3:我使用了@nhowe提供的代码,我得到了我所需要的,谢谢

编辑4:好的,对像素进行置乱是不好的,因为这会使图像过于分散,并且与起始图像不同,但我需要对像素块进行置乱,以便您无法真正识别图像,但黑色像素不会过于分散。有没有办法使用@nhowe提供的代码来实现这一点


编辑5:使用此功能应该可以:

从灰度到RGB的最简单解决方案可能是:

rgbImage = cat(3, grayImage, grayImage, grayImage);

然后应用FEX函数并提取一个颜色通道,假设FEX函数将产生三个相同的颜色通道。

对矩阵M进行置乱的简单方法:

r = rand(size(M));
[~,ri] = sort(r(:));
M(ri) = M;

灰度是二维矩阵。BW是指只有2个值的灰度图像。@AnderBiguri当我导入BW图像时,我得到一个逻辑值为0=黑色,1=白色的2D矩阵。是的,可以,只是添加信息,以防你不知道。哦,好的,我已经知道了,但谢谢!:雷普马特会更简单。但这并没有像FEX function.Hi所期望的那样将逻辑数组转换为uint8。我使用了您的建议并对其进行了一些修改,请参阅OP中的“我的编辑2”以了解发生了什么。@CrisLuengo为了解决该问题,我使用了一个循环,将正确的RGB uint8值分配给逻辑值,但我发现用于加扰的函数存在问题。谢谢!我使用了这段代码,甚至不需要将其转换为3D RGB矩阵,并将其保存为图像,它完全符合我的需要。谢谢!我会更新你的回复,但我是一个新用户,它不允许我。好吧,结果我必须对像素块进行置乱,而不是像素块。请参见上面的编辑4。有没有一种方法可以使用您提供的代码实现这一点?非常感谢。我应该用这个函数来解决它: