FLIR Lepton アダプタ

FLIR Lepton アダプタモジュールは、FLIR Lepton サーマルコア(別売)を OpenMV Cam に接続し、人体や物体の温度測定のための AGC モードと直接サーマルモードの両方を備えています。

FLIR Lepton アダプタ

完全なデータシート、写真、注文方法については、FLIR Lepton アダプタ製品ページ を参照してください。

ハイライト

  • FLIR Lepton 1.x / 2.x / 3.x コア(別売)に対応

  • 温度マッピングを伴う AGC モードと直接サーマルモードの両方に対応

  • 完全な暗闇でも見える

  • すべてのモジュラー OpenMV Cam ベースボードに対応

使い方

Lepton は cid= csi.LEPTON を指定して csi.CSI を通じて駆動します。ドライバは内部で Lepton のネイティブフレーム(1.x/2.x の 80x60、または 3.x の 160x120)を、設定した任意の framesize にアップスケールします:

import csi
import time

csi0 = csi.CSI(cid=csi.LEPTON)
csi0.reset()
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.QVGA)
clock = time.clock()

while True:
    clock.tick()
    img = csi0.snapshot()
    print(clock.fps())

センサーから直接カラー化されたフレームを取得するには、pixformat を csi.RGB565 に切り替え、csi.CSI.color_paletteimage.PALETTE_IRONBOW に設定します。ドライバはパレットを適用した RGB565 フレームを出力するため、snapshot() は直接アイアンボウ色のフレームを返します:

csi0.pixformat(csi.RGB565)
csi0.color_palette(image.PALETTE_IRONBOW)

温度測定

放射計測対応の Lepton(Lepton 2.5 / 3.5)は、校正済みのピクセルごとの温度データを報告します。csi.CSI.ioctlcsi.IOCTL_LEPTON_SET_MODE とともに使用して測定モードを有効にし、続いて csi.IOCTL_LEPTON_SET_RANGE (min_celsius, max_celsius) で温度ウィンドウを制限します。Lepton ドライバはグレースケールのピクセル値 0 を min_celsius に、255 を max_celsius に線形にマッピングするため、各ピクセルは設定したウィンドウ内での温度のルックアップになります。min_celsius より低温のピクセルは 0 で飽和し、max_celsius より高温のピクセルは 255 で飽和します。

csi.IOCTL_LEPTON_SET_MODE は 2 つのフラグを取ります。1 つ目は測定を有効にし、2 つ目はセンサーの温度レンジを選択します:

  • 低レンジ(True, False) — センサーの範囲は -10 °C から +140 °C(室内規模のシーン)。関心領域に合わせてウィンドウを制限します。たとえば体温追跡では (20.0, 40.0) を指定します:

    csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, False)
    csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 20.0, 40.0)
    
  • 高レンジ(True, True) — センサーの範囲は -10 °C から、高温の物体に対して一般的に約 ~+450 °C(室温では約 ~+400 °C)まで。たとえば炉や高温部品の追跡では (0.0, 400.0) に制限します:

    csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, True)
    csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 0.0, 400.0)
    

グレースケールのピクセルを摂氏に戻すには:

def p_to_temp(p, min_t, max_t):
    return (p * (max_t - min_t)) / 255.0 + min_t

これは、Image.find_blobs で高温/低温の領域を特定する際に、個々のピクセルに対しても、ROI 内の集計統計(たとえば Image.get_statisticsstats.mean())に対しても機能します。

注釈

温度測定では、Lepton をグレースケールモードかつカラーパレットを設定しない状態にする必要があります。ピクセルから温度への線形マッピングは、生のグレースケール出力でのみ成立するためです。表示用にカラー化するには、Image.draw_imagecolor_palette= image.PALETTE_IRONBOW を使用してグレースケールフレームを RGB 出力バッファに描画することで、別途行ってください:

out = image.Image(csi0.width(), csi0.height(), image.RGB565)
out.draw_image(img, 0, 0, color_palette=image.PALETTE_IRONBOW)