0

我想检查我是否正确地将数据从矩阵保存到图像文件。为此,我正在执行以下操作:

  1. 我将矩阵保存为 tif 图像;
  2. 我读了图像;
  3. 我将图像元素与矩阵元素进行比较。

图像元素和矩阵元素都是不同的;是因为某些转换原因吗?我应该更改保存矩阵的方式以及加载图像的方式吗?

这是我的代码:

filename = 'image_%03i_%03i.jpeg' % (index, peak)
rescaled = (255.0 / matrix.max() * (matrix - matrix.min())).astype(np.uint8)
im = Image.fromarray(rescaled)
im.save(filename)
#Now I read the image I just saved, and check if the values are effectively those of the matrix
im_1 = Image.open(filename)
im_1_check = im_1.load()
for i in range(0, ran_x, 1):
    for j in range(0, ran_y, 1):
        print rescaled[i,j], im_1_check[i,j] 
4

2 回答 2

0

您在代码中保存为 jpg,因此由于压缩,您可以预期不同的值。尝试更改filename = 'image_%03i_%03i.jpeg' % (index, peak)filename = 'image_%03i_%03i.png' % (index, peak),看看是否可以解决问题。

同样如评论中所述,您将im_1_check与原始矩阵进行比较,而不是rescaled.

于 2013-11-03T16:10:27.853 回答
0

要将rescaled矩阵与保存的图像进行比较,您需要更改索引并与 进行rescaled[i,j]比较im_1_check[j,i]。定义diff = ndarray((ran_x,ran_y),int),上面代码的最后部分变成

for i in range(0, ran_x, 1):
    for j in range(0, ran_y, 1):
        diff[i,j] = rescaled[i,j] - im_1_check[j,i]
        print rescaled[i,j], im_1_check[j,i], diff[i,j] 

并且diff值都为零。

于 2013-11-03T16:58:52.963 回答