🎞️

Python で 10bit, 12bit, 14bit 画像を扱うメモ

2023/02/22に公開

Camera RAW などの 10bit, 12bit, 14bit 画像を Python で 扱いたいときがあります.

C++ であれば,

https://github.com/syoyo/tinydng/blob/38d3a8ba987f2993428649ad4dfa0a4bfb2deffe/examples/viewer/main.cc#L349

にあるように bit shift とかでいけますが, Python だと numpy, rawpy やら OpenCV でぺろっと変換できる... と思いましたが調べたところなんか対応していないようでした...

方法

C++ のように bit shift & mask でやります.

https://stackoverflow.com/questions/70515648/reading-and-saving-12bit-raw-bayer-image-using-opencv-python

numpy だと a[start:stop:step] という書き方(読解がややこしいが..)で配列アクセスできて便利です.

https://note.nkmk.me/python-numpy-ndarray-slice/

a[0::2] だと, 配列の最初から, 最後まで, 2 要素づつ飛ばして, となります.

stackoverflow のは 12bit の例です. 10bit, 14bit も同様な感じでいけます. 皆さん考えてみてくださいネ.

Discussion