2013-11-03 3 views
0

매트릭스에서 이미지 파일로 데이터를 올바르게 저장하고 있는지 확인하고 싶습니다. 이렇게하려면 다음과 같이하고있다.행렬과 해당 이미지 비교

  1. 나는 tif 이미지로 매트릭스를 저장한다.
  2. 이미지를 읽었습니다.
  3. 이미지 요소와 행렬 요소를 비교합니다.

이미지 요소와 행렬 요소는 모두 다릅니다. 어떤 전환 사유 때문입니까? 행렬을 저장하는 방법과 이미지를로드하는 방법을 변경해야합니까? 당신이 압축으로 인해 서로 다른 값을 예상 할 수 있도록 당신은 당신의 코드에서 JPG로 저장하고

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] 
+0

크기를 재조정 한 이미지 또는 원본 이미지와 비교하고 있습니까? –

+0

리사이클을하기 전에 이미지를 이미지와 비교하는 것이 계획입니다 (코드의 "matrix"). –

+0

그래서'매트릭스 '를'rescaled'와 효과적으로 비교하고 같은 값을 기대합니까? –

답변

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 값은 모두 0이다.

0

:

여기 내 코드입니다. filename = 'image_%03i_%03i.jpeg' % (index, peak)filename = 'image_%03i_%03i.png' % (index, peak)으로 변경하고 문제가 해결되는지 확인해보십시오.

덧글에 언급 된 바와 같이 im_1_check을 원래 행렬과 비교하면 rescaled이 아닙니다.

+0

감사합니다. 압축 문제를 피하기 위해 제안 할 형식이 있습니까? –

+0

PNG는 무손실입니다 – YXD

+0

완료되었습니다. 나는 여전히 값의 일부가 일치하지 않는다. –