FLiR Dev Kit を試す その3
FLiR Dev Kit を試す その3
まず、メモを残します。
I2C でセンサーから温度を取得する。
LEP_GetSysFpaTemperatureKelvin の返り値が何なのかわからない・・・。
FPA Temp In Kelvin x 100
とあるので、カメラの温度(Kelvin)の100倍の値っぽいのだが、、、。
FFC
フラットフィールド補正モード とは、なんぞや・・・
lepton3 の 国内販売
Lepton, Lepton 3.0, FLIR | コーンズ テクノロジーオンラインショップ
FAQ も有って、全くの無知なので、読むだけで何かしら得られる。
データシートいわく
データシートいわく、4種の温度に関係した数字がありそうだ。
4.5.5 SYS AUX Temperature Kelvin This command returns the Lepton Camera’s AUX Temperature in Kelvin. This value is from a thermistor located on the Lepton housing. LEP_RESULT LEP_GetSysAuxTemperatureKelvin(LEP_CAMERA_PORT_DESC_T_PTR portDescPtr, LEP_SYS_AUX_TEMPERATURE_KELVIN_T_PTR auxTemperaturePtr); 4.5.6 SYS FPA Temperature Kelvin This command returns the Lepton Camera’s FPA Temperature in Kelvin. LEP_RESULT LEP_GetSysFpaTemperatureKelvin(LEP_CAMERA_PORT_DESC_T_PTR portDescPtr, LEP_SYS_FPA_TEMPERATURE_KELVIN_T_PTR fpaTemperaturePtr)
そもそも、FPA とは、なんだろうか?
フォーカルプレーンアレイ (Focal Plane Arrays; FPA)
SDK の DOC いわく
カメラ内部温度
internal temperature of the camera.
という表現が出て来る。
カメラ内部の温度かな?
そして、The output frame for the internal temperature is 8192
とある。
カメラの内部温度 = 8192 なので、2の13乗 ですね。
output frame 0 = 0 kelvin なら話は早いんだけど、どうやらそうではなさそう?原点は通らないのかな。
最高温度と最低温度
Lepton Thread.h
をよめば、取得方法がわかるよ! とか書いてある。
・・・単純に全てのフレームバッファの最小値・最大値を保存してた。それだけだった。
value = frameBuffer[i]; if(value > maxValue) { maxValue = value; } if(value < minValue) { minValue = value; }
そして、画像のために、最小値:0 ~ 最大値:255 で、正規化している。
RGG とかにしやすいからかな。
rawデータを取得すると、 pgm フォーマットで、数字がダイレクトに入っている。
MAX Output frame = 最高温度
MIN Output frame = 最低温度
温度の算出
1.センサー自体の温度が手に入り、その温度の Frame を 8192 とする。
2.Experimental な温度と、Frame を手に入れる。
3.その2点で、線形回帰する
のかな?
その、角度ですが、0.0217 だとか、0.026 だとか書いている人がいる。
大体そうだとしたら、
温度 = 0.026 * ( OutputFrame - 8192 ) + カメラの温度
になるのかな???
とあるピクセルの OutputFrame 20000 だとしたら、
0.026 * ( 20000 - 8192 ) + カメラの温度 = 307 度 + カメラの温度 かな。
画像のために正規化する前の 生の OutputFrame を見てみないとわからない。