グレースケール12bit(4096階調)画像の画素値取得方法
解決したいこと
現在、産業用カメラ(東芝テリー:BU160MG)で撮影した画像を解析する手法を調べています。
グレースケール12bitで出力された画像の画素値を4096階調で取得する方法が知りたいです。
発生している問題
カメラの出力フォーマットがmono12bitのBMP画像なので、4096階調のグレースケールで出力されるはずなのですが、その画素値を読み取ることができません。
12bit画像の特定の場所における画素値を0〜4095の値で取得することが目的です。
自分で試したこと
まず、Pythonのpillowで処理を試しましたが、出力されるのは256階調のRGBデータでした。
次に、C言語で画像のバイナリデータを解析しようと試みたのですが、12bitのデータを読むのにどのようなコードが必要か見当がつかず、困っています。
12bitの型は存在しないので、ushort型の16bit中、下位12bitを使ってデータを格納しているようなのですが、それをプログラムで解析する手法がわかりません。
ちなみに以下のリンクのコードで画像のヘッダ情報を調べたところ、以下のように出力されました。
Format type: b'BM'
File size: 1944054 [byte]
Header size: 54 [byte]
Width: 900 [px]
Height: 540 [px]
Total pixels: 486000
Color: 32 [bit]
もし、解析手法について何かお分かりになる方がいましたら、ご教授してくださいますと幸いです。
環境
OS : macOS Catalina 10.15.7
Python : 3.6.8
エディタ : VSCode
Cコンパイラ : gcc