2017-12-27 33 views
0

내가 모든 픽셀 값의 정상화하고 misc.imread 및 misc.imsave 변경 픽셀 값

  • 는 이미지를 저장을 수행하는 그레이 스케일 이미지를 읽는

    • ,
    • .

    이미지를 다시 열면 다른 픽셀 값이 표시됩니다.

    내 코드 :

    왜 픽셀 값이 저장 한 후 변경합니까

    By executing np.max(img_scale), I get 127. 
    By executing np.max(img_reopen), I get 255 
    By executing img_scale[0][0], I get [82,82,82] 
    By executing img_reopen[0][0], I get [156][156][156] 
    

    질문 : img_scaleimg_reopen 비교하면

    image = misc.imread('lena.jpg') 
    maximum = np.max(image) # finds maximum pixel value of image 
    img = np.divide(image, maximum) # divide every pixel value by maximum 
    # scale every pixel value between 0 and 127 
    img_scale = np.round(img * (np.power(2,7)-1)).astype(int) 
    misc.imsave('lena_scaled.jpg', img_scale) 
    img_reopen = misc.imread('lena_scaled.jpg') 
    

    내가 다른 값을 얻을 이미지를 열고 다시여시겠습니까?

  • 답변

    1

    imsave 함수는 이미지를 디스크에 저장할 때 이미지의 크기를 조정합니다.

    misc.imsave 함수는 전체 범위 (0,255)로 이미지의 크기를 조정하기 위해 후드 아래에서 bytescale을 사용합니다.

    다시 열면 np.max 255가 붙은 이유입니다. 설명서 here을 참조하십시오.

    후속 : 은, 스케일링없이 값을 유지하려면 당신이 misc.toimage 기능을 사용하려고 다음과 같이 결과를 저장할 수

    im = misc.toimage(img_scale, high=np.max(img_scale), low=np.max(img_scale) 
    im.save('lena_scaled.jpg') 
    

    당신이 'lena_scaled.jpg' misc.imsave로 사용 시도 할 수 있습니다 읽기 다음

    misc.imread('lena_scaled.jpg', mode='I') 
    

    I - 'L'(흑백 8 비트 픽셀) 내가 믿는 가 작동합니다 그레이 스케일 이미지 용.

    희망이 도움이됩니다.