将矩阵与相应的图像进行比较

时间:2013-11-03 16:03:51

标签: python image-processing

我想检查一下我是否正确地将数据从矩阵保存到图像文件。为此,我做如下:

  1. 我将矩阵保存为tif图像;
  2. 我看了图像;
  3. 我将图像元素与矩阵元素进行比较。
  4. 图像元素和矩阵元素都是不同的;是因为一些转换原因?我应该更改保存矩阵的方式,以及如何加载图像吗?

    这是我的代码:

    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] 
    

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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值均为零。