我有一系列黑白图像(不是灰度、黑白;Matlab中的2D矩阵),我需要随机置乱像素。我在Mathworks文件交换中找到此包(
https://it.mathworks.com/matlabcentral/fileexchange/66472-image-shuffle
);其中一个功能,
ImScramperrand公司
,完全符合我的需要,但它适用于RGB图像(3D矩阵)。有没有办法改变b&将图像转换为3D矩阵,以便我可以使用该功能?或者有人能推荐其他符合我需要的脚本吗?请记住,我不熟悉Matlab,但我会尽全力。
非常感谢。
编辑1:
当我导入BW图像时,我得到一个逻辑值的2D矩阵(0=黑色,1=白色)。我认为不同的数据格式(逻辑与整数)是使用RGB图像函数时产生错误的原因。
编辑2:
我改编了上述软件包中的演示代码,并使用了@Jonathan的建议,将2D矩阵转换为3D矩阵,并添加了一个循环,将逻辑值转换为RGB整数值,然后使用
ImScramperrand公司
作用这是可行的,但我得到的是下图:
SCRAMBLED IMAGE
.这是我开始的BW图片:
BW IMAGE
.所以我检查了加扰后的图像,FEX文件中的函数实际上是加扰的
在内部
RGB值,这意味着我发现,例如,一个像素
RGB 0,255,0
因此,我解决了一个问题,但实际上函数中存在一个问题:它不会对像素进行置乱,它会对生成原始图片中没有的颜色的值进行置乱。
编辑3:
我使用了@nhowe提供的代码,我得到了我所需要的,谢谢!
编辑4:
好吧,事实证明对像素进行置乱是不合适的,因为这会使图像过于分散,并且与起始图像不同(你不说吗?),但我得赶快
像素块
因此,您无法真正识别图像,但黑色像素不会太分散。有没有办法使用@nhowe提供的代码做到这一点?
编辑5:
使用此功能应该可以:
https://it.mathworks.com/matlabcentral/fileexchange/56160-hio-been-hb-imagescramble