Adaptér FLIR Lepton

Modul adaptéru FLIR Lepton připojuje termální jádra FLIR Lepton (prodávají se samostatně) k OpenMV Cam, a to v režimech AGC i přímo termálním pro měření teploty osob / objektů.

Adaptér FLIR Lepton

Úplný datasheet, fotografie a možnosti objednání najdete na produktové stránce adaptéru FLIR Lepton.

Hlavní vlastnosti

  • Kompatibilní s jádry FLIR Lepton 1.x / 2.x / 3.x (prodávají se samostatně)

  • Režimy AGC i přímo termální s mapováním teploty

  • Vidí v naprosté tmě

  • Kompatibilní se všemi modulárními základními deskami OpenMV Cam

Použití

Lepton ovládáte přes csi.CSI s cid= csi.LEPTON. Ovladač interně zvětšuje nativní snímek Leptonu 80x60 (1.x/2.x) nebo 160x120 (3.x) na jakýkoli framesize, který nastavíte:

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())

Chcete-li získat obarvené snímky přímo ze senzoru, přepněte pixformat na csi.RGB565 a nastavte csi.CSI.color_palette na image.PALETTE_IRONBOW — ovladač vydává snímky RGB565 s aplikovanou paletou, takže snapshot() vrací snímky obarvené paletou ironbow přímo:

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

Měření teploty

Radiometrické Leptony (Lepton 2.5 / 3.5) hlásí kalibrovaná data o teplotě pro jednotlivé pixely. Režim měření zapnete přes csi.CSI.ioctl pomocí csi.IOCTL_LEPTON_SET_MODE, poté omezíte teplotní okno pomocí csi.IOCTL_LEPTON_SET_RANGE (min_celsius, max_celsius). Ovladač Leptonu lineárně mapuje hodnotu pixelu ve stupních šedi 0 na min_celsius a 255 na max_celsius, takže každý pixel se stává vyhledáním teploty v rámci nakonfigurovaného okna. Pixely chladnější než min_celsius saturují na 0, pixely teplejší než max_celsius saturují na 255.

csi.IOCTL_LEPTON_SET_MODE přijímá dva příznaky. První zapíná měření; druhý vybírá teplotní rozsah senzoru:

  • Nízký rozsah(True, False) — rozpětí senzoru -10 °C+140 °C (scény v měřítku místnosti). Omezte okno na oblast zájmu, např. (20.0, 40.0) pro sledování tělesného tepla:

    csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, False)
    csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 20.0, 40.0)
    
  • Vysoký rozsah(True, True) — rozpětí senzoru typicky -10 °C~+450 °C (~+400 °C při pokojové teplotě) pro horké objekty. Omezte např. na (0.0, 400.0) pro sledování pece nebo horkého prvku:

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

Převod pixelu ve stupních šedi zpět na stupně Celsia:

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

Funguje to na jednotlivých pixelech nebo na agregovaných statistikách (např. stats.mean() z Image.get_statistics) uvnitř ROI při lokalizaci horkých/chladných oblastí pomocí Image.find_blobs.

Poznámka

Měření teploty vyžaduje Lepton v režimu stupňů šedi bez nastavené barevné palety — lineární mapování pixelu na teplotu platí pouze na surovém výstupu ve stupních šedi. Pro obarvení k zobrazení to proveďte samostatně vykreslením snímku ve stupních šedi do výstupního bufferu RGB pomocí Image.draw_image a color_palette= image.PALETTE_IRONBOW

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