イメージセンサを扱う皆さんは、開発用のカメラなどでは汎用Rawを扱うことが多いと思います。そのRaw画像から画像の評価や画像処理を行うと思います。しかし、世の中に市販されているカメラで取得できるRawというのは、各カメラ会社が定義した特殊な方式で圧縮されたRawになっています。なのでいわゆるバイナリが並んでいるだけの汎用Rawとは使い勝手が違います。
このサイトを見ている人の中には、iPhoneや一眼で取得したRaw画像(DNG、CR2、CR3など)を汎用のRaw形式に変換して扱いたい!という人がいると思います。今回は、Pythonを使って各社のRaw形式から汎用Rawに変換する方法を伝授します。(超簡単)
まずは、各社のRawを扱うことができるrawpyをインストールします。
pip install rawpy
これでrawpyは、インストールできると思います。
次に変換したいRaw画像を準備します。まずは、Raw画像の画像サイズを確認します。
import rawpy
#変換したいraw画像のpath
rawpath = "*****.CR2"
raw = rawpy.imread(rawpath)
print(raw.sizes)
このコードを実行すると、以下の情報が取得できます。
ImageSizes(raw_height=3024, raw_width=4032, height=3024, width=4032, top_margin=0, left_margin=0, iheight=3024, iwidth=4032, pixel_aspect=1.0, flip=0)
この情報のraw_heightがRaw画像のy方向の大きさ、raw_widthがx軸方向の大きさになります。
この情報をもとに画像を変換しましょう。
import numpy as np
import matplotlib.pyplot as plt
import math
from PIL import Image
import rawpy
#***********************************
#画像設定
#***********************************
rawname = '********' #Raw画像の名前
raw_kaku = '.CR2' #拡張子
rawpath = rawname + raw_kaku
width=4032
height=3024
#***********************************
#変換
#***********************************
raw = rawpy.imread(rawpath)
array = raw.raw_image
plt.imshow(array,cmap = "gray")
plt.show()
array.tofile(rawname+'.raw')
このコードを実行すると読み込まれたRaw画像が表示され、拡張子が「.raw」に変更された汎用Raw画像が同じフォルダに生成されます。
iPhoneのRaw画像の解析方法を解説しいますので、確認してみてください。
コメント