matplotlib로 이미지를 볼 때 걱정되는 것

matplotlib로 이미지를 표시했을 때 조금 신경이 쓰인 점이 몇 가지 있었으므로, 그것을 정리해 두었습니다.
분명 신경이 쓰이는 사람도 있다고 생각하기 때문에(특히 사용 시작의 쪽), 조금이라도 검색의 수고가 없으면 좋겠다고 생각하고 있습니다.
나는 jupyter notebook를 자주 사용하기 때문에 거기에서 사용한다고 가정합니다.

1. 어라? 그레이 스케일이어야하지만 색이 붙어 있니?



백문은 언뜻 보지 않고. 우선 이미지를 표시하겠습니다.
# いつもの色々インポート
import cv2
import numpy as np
from matplotlib import pyplot as plt

im = np.array(cv2.imread('lena.png',0)) #画像を読み込んでnumpy形式にする
cv2.imread('lena.png',0)는 "lena.png"를 0 즉 그레이 스케일로 읽어들입니다.
이제 matplotlib로 이미지를 표시해 보겠습니다.
# matplotlibで表示させます
plt.imshow(im)
plt.show()

그러면 이런 식으로 표시됩니다.



왠지 색이 붙어 버리고 있습니다.
matplotlib는 디폴트로 컬러 맵이 설정되어 있기 때문에 이런 느낌이 되어 버립니다.
이것을 해제하기 위해서는 plt.gray()를 넣어주면됩니다.
plt.gray() # カラーマップを"gray"に設定
plt.imshow(im)
plt.show()


제대로 기대대로 되었습니다.
실은 여기까지는 여러 곳에 정보가 있습니다만, 나는 이렇게 생각해 버린 적이 있습니다.

하지만 뭔가 좋은 느낌이었기 때문에 원래의 컬러 맵으로 되돌리고 싶어?



의외로 발견되지 않아, 「원래로 되돌리고 싶은 사람 없을까…」라고 생각하고 있었습니다.
디폴트의 ​​컬러 맵이 무엇인지 모르기 때문에, 되돌릴 것을 포기하고 있었습니다만, 공식 에 제대로 써 있었습니다.



이 viridis는 기본 색상 맵처럼 보입니다.
조속히 설정합시다.
plt.viridis()
plt.imshow(im)
plt.show()


이것으로 돌아 왔습니다. 죄송합니다.

2. 어라? 대비가 이상해?



이것을 깨달은 것은 기적이라고 생각하고 있습니다만, 뭔가 조금 색이 이상해진다고 생각했습니다.
그래서 테스트에서 이런 이미지를 읽어 보았습니다.

괜찮습니다. …가 matplotlib로 표시하면


아무래도 색의 계조가 정규화되고 있는 것 같습니다. 이것을 해소하기 위해서는 아래와 같이 vmin과 vmax를 지정해 주지 않으면 안되는 것 같습니다.
plt.imshow(im, vmin = 0, vmax = 255) 


눈을 감으면 약간 보입니다.

분명히 그 밖에도 내가 알아차리지 않은 디폴트 설정이 있겠지요.
이상입니다. 실수 등이 있으면 알려주세요.

좋은 웹페이지 즐겨찾기