我正在研究一种图像加密技术。出于密钥生成目的,我使用了函数 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