一开始得出图像是这样的,少量黑点,图像相关性也没有达到预期
于是换了一种简单的算法,结果是这样:全白
我能够非常肯定这次加密算法没有问题,于是我搜索了一下原因,发现是imshow的问题,这是原回答:imshow与显示图像时的全白问题。
imshow内部的参数类型可以分为两种。(1)当输入矩阵是uint8类型的时候,此时imshow显示图像的时候,会认为输入矩阵的值范围在0-255之间。(2)如果imshow的参数是double类型的时候,那么imshow会认为输入矩阵值的范围在0-1。
所以问题出在(2)中:因为当我们对图像矩阵进行操作时,倘若图像矩阵(double型)的矩阵元素不在0-1之间,那么imshow函数会自动把超过1的元素都看作1,因为在归一化到0-1数据范围内,1就等同于整型的255。这也就解释了为什么会将图像显示为全白。
于是加“R1 = mat2gray(R1);”,即可