【发布时间】:2018-10-18 12:18:16
【问题描述】:
我有一系列黑白图像(不是灰度,黑白;Matlab 中的二维矩阵),我需要随机打乱像素。我在 Mathworks File Exchange (https://it.mathworks.com/matlabcentral/fileexchange/66472-image-shuffle) 中找到了这个包;其中一个函数 imScrambleRand 完全符合我的需要,但它适用于 RGB 图像(3D 矩阵)。有没有办法将黑白图像转换为 3D 矩阵,以便我可以使用该功能?或者任何人都可以建议任何其他符合我需要的脚本吗?请记住,我不熟悉 Matlab,但我会尽力而为。
谢谢。
编辑 1: 当我导入 BW 图像时,我得到一个逻辑值的二维矩阵(0 = 黑色,1 = 白色)。我认为不同的数据格式(逻辑与整数)是在将函数用于 RGB 图像时产生错误的原因。
编辑 2: 我改编了上述软件包中的演示代码,并使用@Jonathan 的建议将 2D 矩阵转换为 3D 矩阵,并添加了一个循环将逻辑值转换为RGB 整数值,然后使用 imScrambleRand 函数。它有效,但我得到的是以下图像:SCRAMBLED IMAGE。这是我开始的 BW 图片:BW IMAGE。所以我检查了打乱的图像,FEX 文件中的函数实际上对 RGB 值within 进行了打乱,这意味着我发现了一个像素,例如RGB 0,255,0。所以我解决了一个问题,但实际上函数内部存在一个问题:它不会扰乱像素,它会扰乱生成原始图片中没有的颜色的值。
编辑 3:我使用了@nhowe 提供的代码,我得到了我所需要的,谢谢!
编辑 4: 好吧,事实证明,打乱像素是不行的,因为它会使图像过于分散并且与起始图像不同(你不会说?),但我需要打乱像素块,这样您就无法真正识别图像,但黑色像素不会太分散。有没有办法使用@nhowe 提供的代码来做到这一点?
编辑 5: 这个函数应该没问题:https://it.mathworks.com/matlabcentral/fileexchange/56160-hio-been-hb-imagescramble
【问题讨论】:
-
灰度是二维矩阵。 BW是指只有2个值的灰度图像。
-
@AnderBiguri 当我导入 BW 图像时,我获得了一个具有逻辑值(0 = 黑色,1 = 白色)的二维矩阵。
-
是的,没关系,只是添加信息,以防你不知道。
-
哦,好的,我知道了,但是谢谢! :)
标签: matlab image-processing pixels scramble