LoginSignup
1
3

More than 3 years have passed since last update.

raw現像をjpgに転換、meta-data解析

Posted at

初めに

rawpyとはカメラの現像を解析するpythonのパッケージです。そもそもc++のlibrawと同じものです。画像処理にはpythonでよく使うので、librawをpythonで利用できるため、rawpyを使うのはlibrawと同じ効果を貰える。

以下はraw現像の解析、やmeta-dataを獲得の方法少し紹介したいと思います。

rawからjpgに転換

  • python環境にインストール 
$ pip install rawpy
  • コードに使用
import rawpy # インポート
import cv2
import os

path="X:\\photo_test" # 現像のディレクトリとファイル名
raw_name_sony = "sony.ARW"  
output_name= "output.JPG"  
raw = rawpy.imread(os.path.join(path,raw_name_sony)) #現像入力
decoded = raw.postprocess()[:, :, [2, 1, 0]]
cv2.imwrite(os.path.join(path,output_name),decoded) # opencvでjpgを出力

rawpyで画像転換機能は使いやすいですが、postprocessには沢山のパラメータを提供されて、実際使用した時、自分の需要によって、パラメータを入力します。

以下はキャンプ工学さんからのパラメータ説明です:
こちら

注意点
  1. rawのサイズは出力のjpgサイズと不一致の場合はあるかもしれません。その原因はカメラの設定された比率はcmosのサイズと違い場合、カメラやパソコンの写真ビューワは一部のピクセル自動的にマスクされました。でも、rawに隠されたピクセルは保存しているので、postprocessで全部出力されることです。

  2. rawpyで出力されたjpgとカメラ出力のjpgは不一致あるかもしれません。その原因の一つはカメラに設定したwhitebalanceやgammaなどpostprocessとの設定異なることです。デフォルトでrawを出力したら、正常に見た写真より暗いです。whitebalanceをfalseと設定すると、出力の写真は暗いです。

写真meta-dataの出力

写真にカメラ設定パラメータなどいろんな情報がありますので、pillowでmeta-data出力が出来ます。pillowはrawを入力できなので、カメラ出力のjpgでmeta-dataあるいはexifを獲得出来ます。

  • pillow をインストール
pip install pillow
  • pillowの導入
from PIL import Image
from PIL.ExifTags import TAGS
  • exifを抽出、dictに記録
im = Image.open("X:\\photo_test\\DSC00406.JPG")
exif = im._getexif()

exif_table = {}
for tag_id, value in exif.items():
    tag = TAGS.get(tag_id, tag_id)
    exif_table[tag] = value

for i in exif_table:
    print(i,"----->",exif_table[i])
注意点

画像のexifは失った場合もあります。トリミングやフォーマット転換してから再保存する時はexifの情報はピクセルと共に保存されていないことです。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3