TRAGEDIA W LONDYŃSKIEJ GRENFELL TOWER. Dlaczego zawiodły drzwi przeciwpożarowe? SPECYFIKACJA TECHNICZNA PKN-CEN/TS 54-14 – instrukcja projektowania i montażu systemów sygnalizacji pożarowej ZARZĄDZANIE BEZPIECZEŃSTWEM POŻAROWYM OBIEKTÓW BUDOWLANYCH. MONITOROWANIE SYSTEMÓW POŻAROWYCH

Kamera termowizyjna. Część I

Autor: Jakub Sobek

Domowa, hobbystyczna elektronika nie jest niczym nowym. W czasach, kiedy dostęp do gotowych produktów był bardzo ograniczony, to własne konstrukcje były jedynym sposobem na uzyskanie urządzenia. Wiele osób w młodym wieku przeżywa fascynację możliwością zbudowania czegoś z paru na pozór prostych elementów elektronicznych. U niektórych ta pasja znika po kilku nieudanych próbach, a u innych pozostaje na całe życie, nierzadko prowadząc dalszą karierę zawodową w tym kierunku. Obecnie dostęp do wielu zaawansowanych komponentów elektronicznych daje olbrzymie możliwości, jednak teraz budowanie nie polega już jedynie na lutowaniu elementów ze sobą. Dużo więcej czasu młodzi konstruktorzy poświęcają na programowanie stworzonych urządzeń.

Obserwując dynamiczny rozwój zainteresowania takim hobby, cieszy mnie bardzo, że każdy może poczuć się konstruktorem, od dorosłego po dziecko. Dla tych najmłodszych dostępne są np. zestawy LEGO, pozwalające na budowanie, a później programowanie stworzonych robotów czy pojazdów w prostym, intuicyjnym języku. Efektem takich dziecięcych prób mogą być całkiem sprawnie poruszające się konstrukcje, skutecznie omijające przeszkody lub reagujące na zauważone konkretne przedmioty.

 A dlaczego nie zbudować własnej kamery termowizyjnej? Czy to w ogóle możliwe? Sprawdźmy!

Termowizja

Za ojca termowizji możemy z pewnością uznać Friedricha Wilhelma Herschela. Ten niemiecki astronom, kompozytor i konstruktor teleskopów w czasie jednego ze swoich eksperymentów w 1800 r. zaobserwował promieniowanie podczerwone. Odkrycie to opisał w jednym ze swoich dzieł – Experiments on the refrangibility of the invisible rays of the Sun. Podczerwień jest niewidoczna dla ludzkiego oka, stąd w przeszłości często była nazywana niewidzialnym światłem. Promieniowanie podczerwone to fragment promieniowania elektromagnetycznego w zakresie od 780 nm do 1 mm, które dodatkowo możemy podzielić na LWIR (ang. Long Wavelength Infrared): 8–14 μm, MWIR (ang. Medium Wavelength Infrared): 3–5 μm oraz SWIR (ang. Short Wave Infrared): 1–3 μm. W zależności od zastosowania tworzy się detektory pozwalające na pracę w konkretnych pasmach. Podczerwień od światła widzialnego czy fal radiowych różni się jedynie długością fali. Poza tym wszystkie zjawiska fizyczne w odniesieniu do podczerwieni są takie same, jak dla pozostałych fragmentów promieniowania elektromagnetycznego.

Wszystkie ciała, których temperatura jest wyższa od -273,15°C, emitują podczerwień. Zatem nawet najzimniejsze obiekty mogą być obrazowane za pomocą odpowiednich sensorów podczerwieni. Termowizja jest obrazowaniem z wykorzystaniem IR (ang. Infrared Radiation – promieniowanie podczerwone) i nie ma to nic wspólnego z popularnymi kamerami z oświetlaczami IR. Pasmo wykorzystywane przez takie iluminatory jest inne niż to wykorzystywane w termowizji. Aby uzyskać obraz w kamerach termowizyjnych, nie jest potrzebne żadne aktywne źródło światła widzialnego, IR czy oświetlacze laserowe. Obraz z kamery termowizyjnej można uzyskać w całkowitej ciemności, co stanowi ich oczywistą zaletę. Z tego powodu kamery takie chętnie wykorzystywane są w systemach dozoru wizyjnego, ze względu na ich dużą skuteczność i dyskrecję działania. Kolejną zaletą takich rozwiązań jest możliwość pracy w trudnych warunkach atmosferycznych, jak padający deszcz, śnieg, kurz czy lekka mgła, ale również w pełnym słońcu.

Zaczynamy

Jeszcze kilka lat temu termowizja była zarezerwowana tylko dla wybranych. Bardzo wysoka cena tych urządzeń skutecznie blokowała ich rozpowszechnienie. Wiele osób nie zdawało sobie także sprawy, w jaki sposób można wykorzystywać taką kamerę. Większości kojarzyła się jedynie z pomiarami energetycznymi budynków. Zastosowań jest jednak znacznie więcej i regularnie dowiadujemy się o nowych pomysłach wykorzystywania tej technologii.


Oczywiście na rynku możemy znaleźć gotowe kamery termowizyjne, zarówno pomiarowe, jak i kamery do stosowania w systemach dozoru wizyjnego. Od jakiegoś czasu na rynku dostępne są także kamery, które możemy podłączyć bezpośrednio do telefonu komórkowego lub są już fabrycznie wbudowane w smartfonie. Każde gotowe rozwiązanie posiada jednak ograniczone możliwości jego konfiguracji. Najczęściej możemy zmieniać jedynie wybrane parametry, udostępnione nam przez producenta danego urządzenia. Stworzenie własnej kamery termowizyjnej pozwoli nam na nieograniczone możliwości programowania takiego rozwiązania. Moim zdaniem to wystarczająco kuszący powód, aby samemu tego spróbować. Najistotniejsze jest to, że na zbudowanie samej kamery nie potrzeba dużo czasu, wystarczy jedno popołudnie. Więcej czasu zabierze zaprogramowanie stworzonego urządzenia, jednak potrzebny czas będzie zależał od tego, jak wiele będziemy chcieli osiągnąć.

Co będzie potrzebne?

Aby zbudować własną kamerę termowizyjną, będziemy potrzebować:

■ przetwornik termowizyjny,

■ płytkę połączeniową,

■ miniplatformę komputerową.

Istotna jest także podstawowa znajomość języka C++. Ja skorzystałem dodatkowo ze środowiska Qt oraz biblioteki OpenCV. Oczywiście można posiłkować się gotowymi implementacjami, jednak brak podstawowych umiejętności programistycznych nie pozwoli nam na stworzenie czegoś naprawdę własnego. To właśnie zabawa z kodem będzie tutaj najprzyjemniejsza. Przetwornik termowizyjny jest wyśmienitym rozwiązaniem, aby wykorzystywać go w wielu różnych algorytmach analizy obrazu.

Wybór sprzętu

Do zbudowania swojej pierwszej kamery termowizyjnej wykorzystam niewielki przetwornik termowizyjny – FLiR Lepton w wersji 3[1]. Obecnie to koszt ok. 200 USD. W tej cenie otrzymujemy mały, niechłodzony przetwornik termowizyjny LWIR. Moduł kamery został stworzony właśnie z myślą o budowie własnych niewielkich konstrukcji lub do implementacji w takich urządzeniach, jak wspomniane wcześniej telefony komórkowe. W tym niewielkim przetworniku, o wymiarach zaledwie 11,5x12,7x6,9 mm i masie 0,9 g, udało się upakować matrycę o rozdzielczości 160x120 pikseli. W porównaniu z przetwornikiem w wersji 2, który oferował 80x60 pikseli, widać znaczącą poprawę jakości obrazu. Obecna rozdzielczość, choć nadal nie jest bardzo wysoka, jest w zupełności wystarczająca do wielu podstawowych zastosowań.

Czułość termowizyjna wykorzystywanego przeze mnie przetwornika to <50 mK, co daje wysoką rozróżnialność temperaturową. Dzięki temu nawet obiekty o zbliżonej do siebie temperaturze są wyraźnie widoczne. Przetwornik dostarczany jest z miniaturowym obiektywem o poziomym kącie widzenia 56°, co przy takiej rozdzielczości jest kompromisem pomiędzy dystansem działania kamery a maksymalnie szerokim kątem widzenia.

Ten miniaturowy przetwornik posiada zintegrowane funkcje przetwarzania obrazu, takie jak: filtrowanie szumów, NUC (ang. Non-Uniformity Correction) – korektę nierównomierności (w przypadku detektorów FPA[2] występuje niejednorodność fotorezystorów) oraz automatyczną kontrolę wzmocnienia[3]. Dzięki zintegrowanej z przetwornikiem Lepton mechanicznej migawce kalibracja NUC wykonywana jest w oparciu o metodę kalibracji temperaturowej. Pozwala to na uzyskanie czystego obrazu, który nie traci na jakości wraz z upływem czasu pracy kamery. Po uruchomieniu przetwornika jest on gotowy do pracy po 1, 2 sek.

Integracja z przetwornikiem jest łatwa dzięki dwóm dostępnym interfejsom: VoSPI (ang. Video over SPI[4]), pełniącego rolę interfejsu wizji, oraz CCI[5] (wykorzystujący protokół podobny do I2C), który pozwala na komunikację z przetwornikiem.

Z modułu Lepton wychodzą bezpośrednio 32 piny. Aby połączyć przetwornik obrazu z wybraną platformą komputerową, potrzebna jest płytka połączeniowa. W tym przypadku istnieją dwie możliwości. Po pierwsze, można osadzić przetwornik w odpowiedniej wielkości gnieździe 32-pinowym i takie gniazdo umieścić na własnej, wcześniej zaprojektowanej płytce PCB[6]. Wybór tej drogi jest bardziej czasochłonny. Wiąże się to z zaprojektowaniem płytki drukowanej, jej wyprodukowaniem, a następnie przylutowaniem wszystkich elementów. Można oczywiście skorzystać także z uniwersalnych płytek połączeniowych, jednak wówczas efekt końcowy nie będzie już tak estetyczny, a o tym też nie możemy zapominać. Drugą, łatwiejszą możliwością jest skorzystanie z gotowej płytki połączeniowej, przystosowanej do wybranego przetwornika obrazu. Można powiedzieć, że to droga na skróty, jednak pozwala na zaoszczędzenie czasu. Dla wielu osób tworzenie własnej płytki połączeniowej nie będzie niczym interesującym, więc w taki sposób można ten etap ominąć. Gotową płytkę można kupić w wielu sklepach internetowych, zarówno w Polsce, jak i za granicą. Gotowa płytka połączeniowa posiada wyprowadzenia tych pinów, które są niezbędne do prawidłowego zasilenia kamery oraz do skorzystania z interfejsów VoSPI oraz CCI[7].

Ostatnia decyzja, przed jaką stajemy, to wybór platformy komputerowej, na której będzie pracował napisany przez nas kod. Obecnie na rynku możemy znaleźć wiele takich urządzeń, jednak na szczególną uwagę moim zdaniem zasługują: Raspberry Pi oraz BeagleBone Black. Cena każdego z tych rozwiązań to ok. 250–300 zł, w zależności od tego, czy kupujemy zestaw z zasilaczem, czy dodatkowo z obudową. Ja w swoich projektach wykorzystuję platformę Raspberry Pi (potocznie nazywaną „maliną”), daje ona bowiem bardzo duże możliwości. Znaczącą zaletą jest także olbrzymia społeczność programistów korzystających z tego rozwiązania. Dzięki temu na forach społecznościowych w większości przypadków z łatwością możemy znaleźć odpowiedzi na wiele pytań lub ewentualnych problemów. Takie wsparcie jest szczególnie ważne na początku przygody z programowaniem. W wielu sytuacjach pomoc innych jest nieoceniona. Trzeba przyznać, że fenomen platformy Raspberry Pi przerósł znacznie także oczekiwania samych jej twórców, jak przyznają w wielu wywiadach. Pod koniec 2016 r. liczba sprzedanych przez Raspberry Pi Foundation platform komputerowych przekroczyła liczbę 10 mln. To bardzo dobry wynik, biorąc pod uwagę, że premiera tego rozwiązania miała miejsce w 2012 r.

System operacyjny i co jeszcze?

Raspberry Pi posiada złącze GPIO (ang. General Purpose Input/Output), czyli zestaw pinów ogólnego przeznaczenia (wejścia/wyjścia), które w ogólności służą do komunikacji z otoczeniem. W modelu Raspberry PI 3 zastosowano złącze o 40 wejściach. Dla naszych zastosowań są one szczególnie istotne, ponieważ pozwolą na połączenie się w prosty i wygodny sposób z wcześniej zakupioną lub zrobioną płytką połączeniową.

Trzeba pamiętać, że platforma Raspberry Pi dostarczana jest bez systemu operacyjnego. To jednak nie stanowi większego problemu, ponieważ dla tego produktu istnieje wiele bezpłatnych systemów. Obraz systemu operacyjnego pobieramy z Internetu, zapisujemy go na karcie MicroSD, a następnie tak przygotowaną kartę umieszczamy w naszej platformie.

Jeśli chodzi o dostępne systemy operacyjne, to możemy podzielić je na dwa typy: bazujące na LINUX oraz oparte na innych jądrach systemowych. Przykładowo, istnieje bezpłatna dystrybucja systemu operacyjnego Windows 10, o nazwie Windows 10 IoT Core. Ten system to wyraźny sygnał zauważenia przez firmę Microsoft tak popularnego ostatniego trendu IoT, czyli Internetu Rzeczy. Natomiast najpopularniejszym systemem operacyjnym wybieranym przez użytkowników „maliny” jest Raspbian. To system bazujący na Debianie, który powstał właśnie na potrzeby platformy Raspberry Pi. Swoją popularność zapewne zawdzięcza temu, że jest to rozwiązanie oficjalnie promowane przez producenta tego minikomputera. Przetestowany i oficjalnie wspierany system operacyjny znajduje się na stronie: https://www.raspberrypi.org/downloads/.

Po zainstalowaniu systemu operacyjnego Raspbian pobrałem jeszcze środowisko Qt oraz bibliotekę OpenCV, o których wspominałem wcześniej.

Qt jest wszechstronną platformą programistyczną wysokiej jakości, przeznaczoną do profesjonalnego tworzenia aplikacji. Głównym celem jej twórców było wykreowanie intuicyjnego, łatwego w użyciu interfejsu programistycznego aplikacji (API). Pokrywa ona większość funkcjonalności, których brakuje w bibliotece standardowej, takich jak: wątki, wsparcie standardu kodowania Unicode, przetwarzania XML[8], a także graficzny interfejs użytkownika (GUI). Niewątpliwą zaletą Qt jest ogromna dokumentacja techniczna, uzupełniona o liczne przykłady, a także wieloplatformowość.

OpenCV jest biblioteką przeznaczoną do przetwarzania obrazu. Ma charakter otwarty i obecnie jest dopracowywana przez szeroką społeczność. Została stworzona w 1999 r. przez Gary’ego Bradskiego, pracującego wówczas w firmie Intel. Głównym celem, jaki mu przyświecał, było przyspieszenie rozwoju technik przetwarzania obrazu oraz sztucznej inteligencji, poprzez zapewnienie każdemu projektantowi narzędzi do nawet najbardziej wyrafinowanych rozwiązań. Biblioteka została napisana w językach C oraz C++ i działa na systemach operacyjnych Windows, Linux, Mac OSX. Istnieje także możliwość interakcji z innymi językami, takimi jak: Python, Java, MATLAB, a także platformami mobilnymi Android i iOS. Biblioteka ta zawiera moduł uczenia maszynowego, który posiada przede wszystkim narzędzia do rozpoznawania wzorców oraz klasyfikacji obrazów[9]. Dla nas to szczególnie istotne, kiedy będziemy chcieli nie tylko stworzyć kamerę, ale także pisać swoje algorytmy, analizujące to, co kamera zobaczy.

Zaczynamy?

Kiedy już mamy wszystkie elementy sprzętowe na naszym stole, jesteśmy gotowi rozpocząć wyzwanie stworzenia naszej pierwszej kamery termowizyjnej. Zatem jak to wszystko ze sobą połączyć w jedną całość, uruchomić i zaprogramować? Na to pytanie odpowiem w kolejnej części mojego artykułu.

Przypisy: 

[1] Por. http://www.flir.com/uploadedFiles/OEM/Products/ LWIR-Cameras/Lepton/FLIR-Lepton-Datasheet.pdf.  

[2] FPA (ang. Focal Plane Array) – matryca tworzona przez pojedyncze detektory, znajdujące się w płaszczyźnie ogniskowej obiektywu.

[3] http://nuc.die.udec.cl/?page_id=18.

[4] SPI (ang. Serial Peripheral Interface) – szeregowy interfejs urządzeń peryferyjnych.

[5] CCI (ang. Camera Control Interface) – interfejs służący do

[6] PCB (ang. Printed Circuit Board) – płytka z obwodami drukowanymi do montażu podzespołów elektronicznych.

[7] Lepton 3 Engineering Datasheet: http://www.flir.com/ uploadedFiles/OEM/Products/LWIR-Cameras/Lepton/Lepton-3- -Engineering-Datasheet.pdf.

[8] XML (ang. Extensible Markup Language) – Rozszerzalny Język Znaczników.

[9] Ł. Waligóra: Rozpoznawanie gestów dłoni za pomocą przetwornika termowizyjnego FLIR Lepton i Platformy Raspberry Pi (niepublikowana praca inżynierska). Politechnika Poznańska, 2017.

Literatura:

1. http://nuc.die.udec.cl/?page_id=18.

2. Lepton 3 Engineering Datasheet: http://www.flir.com/uploadedFiles/ OEM/Products/LWIR-Cameras/Lepton/Lepton-3-Engineering- Datasheet.pdf.

3. Ł. Waligóra: Rozpoznawanie gestów dłoni za pomocą przetwornika termowizyjnego FLIR Lepton i Platformy Raspberry Pi (niepublikowana praca inżynierska). Politechnika Poznańska, 2017.

Źródło: SEC&AS, wydanie 5/2017, s.51

Powiązane

Nowy robot przeznaczony do pomagania ofiarom klęsk żywiołowych

09.10.2017

BLOG NIEINTERNETOWY. Wpis 4

01.03.2018

Popularne

Kamera termowizyjna. Część I
15.01.2018
Licencja na zakochanie.
02.09.2018
Porozmawiajmy o rugby
16.10.2017

Sec&As

COPYRIGHT © 2017 RIPOSTA. WSZELKIE PRAWA ZASTRZEŻONE. PROJEKT I REALIZACJA: RIPOSTA