在 MATLAB 中使用 randint 函数进行图像加密



我正在研究一种图像加密技术。出于密钥生成目的,我使用了函数 randint

key1=randint(256,256,[0,255]);

现在我将 key1 保存为 png 图像以进行解密。但是当我在解密阶段阅读它时,key1 的内容发生了巨大变化,大多数值都是 255.为什么会发生这种情况,可能的解决方案是什么?

它还会生成警告"警告:这是一个过时的功能,将来可能会被删除。 请改用兰迪。 要禁用此警告,请键入 warning('off','comm:obsolete:randint')"

randi的输出是双倍的,我认为这是导致问题的原因。 来自 Matlab 帮助:

如果 A 是数据类型为双精度或单精度的灰度或 RGB 彩色图像,则 imwrite 假定动态范围为 [0,1],并在将数据作为 8 位值写入文件之前自动将数据缩放 255。

在这种情况下,最简单的解决方法是使用 key1 = uint8(key1); 将 key1 转换为 uint8

最新更新