【Python】一眼、スマホで取得したRaw画像を汎用Rawに変換する方法

ImageSensor

 イメージセンサを扱う皆さんは、開発用のカメラなどでは汎用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画像の解析方法を解説しいますので、確認してみてください。

コメント

タイトルとURLをコピーしました