.

Webová kamera v Šošůvce

Novinky

24. 11. 2024Jak se momentálně meří sníh?

Přečteno 44x, dnes 1x
Původní článek publikován v neupraveném znění na mém osobním blogu: https://blog.zatnaktel.cz/2024/11/20/jak-nemerit-snih-strojove-bez-nutne-korekce-clovekem/

Měřit sníh je přece jednoduché, třeba jednou řeknete si. Vždyť stačí zapíchnout do sněhu pravítko na 3 místech a podívat se z boku, kolik to tam ukazuje. 3 hodnoty zprůměrujeme a máme hotovo. Nebo tyčku s čísly zapíchneme rovnou do země a můžeme odečítat dálkově třeba dalekohledem. Nojo, ale jak to udělat tak, aby to za nás dělal sám počítač? Nebo nějaká automatická meteostanice?

Jak to dělají profesionálové?


Český hydrometeorologický ústav to dělá poněkud jinak. Na rámu asi 2 metry vysokém má umístěné poměrně dost drahé ultrazvukové, řekneme dělo. Je to technicky vzato membrána produkující ultrazvuk, která ho zároveň přijímá. Ze specifického útlumu a s pomocí korekcí dle teploty a vlhkosti dokáže poměrně přesně vypočítat výšku sněhu. Je to ale strašně komplexní, protože sníh sám o sobě v závislosti (nejen) na teplotě, při které padá a dále při které leží na zemi, mění svoje vlastnosti. Například ledová krusta na sněhu při ledovce odráží větší množství zvuku než jemný prašan, či velké vlhké vločky s výraznou porézností. Je to prostě věda, kterou lze bez výzkumu a velkého množství financí jen těžko replikovat.


Ultrasonic Snow Depth Sensor (USH-9) provozovaný ČHMÚ;
Zdroj: CHMI.CZ


Jak jsem postupoval já?


První pokus byl samozřejmě ultrazvuk. Nejběžnější ultrazvukový senzor na trhu je HC-SR04 se schopností detekce vzdálenosti mezi 2 cm až 4 metry. Je parádní, až na to, že jeho ultrazvuková vlna je natolik slabá, že ji sníh jednoduše pohltí nebo rozptýlí. Nelze s tím detekovat nic.


HC-SR04

Druhý pokus byl laser. Vl53L0X je perfektní čidlo pro obdobnou aplikaci, jako to ultrazvukové. S jediným rozdílem. Vzdálenost měří pomocí zpoždění odrazu světla. Světlo se stejně jako zvuk šíří vzduchem specifickou rychlostí, dá se proto spočítat jednoduše vzdálenost. Sníh je přece bílý, bude to fungovat...
Jediným nepřítelem venku je vám vzdušná vlhkost a nedejbože mlha. Paprsek je tak drobný, že lze jednoduše roztříštit nebo se umí lehce vrátit zpět klidně 2 cm od čidla, protože aerosol. Tento pokus byl tedy také fiasko.

Třetí pokus byly kapacitní senzory. Ani já jsem tomu však nevěřil právě kvůli již dříve zmíněným různorodým vlastnostem sněhu při různých atmosférických a tepelných podmínkách. Měření proto nemohlo být konzistentní. Existuje samozřejmě *jedna školní zahraniční práce*, která pojednává o měření s větším množstvím kapacitních čidel. I když to třeba funguje, rozlišení nikdy nebude uspokojivé.

Sníh zároveň nelze měřit stejně jako hladinu vody právě kvůli poréznosti a různorodé vodivosti.

Tak jak to tedy udělat?


Pokud neřešíme typ sněhu, stačí nám především výška sněhu. Množství srážek navíc měřím vyhřívaným srážkoměrem, dá se tedy spočítat spousta dalších zajímavých údajů.

Zbývá nám tedy vizuální pozorování. V dnešní době je naprosto běžné a velmi populární využití automatické detekce různými nástroji pomocí kamer. Rozhodl jsem se proto pro jednoduchou strojovou detekci bílé vrstvy sněhu přes černé sněhoměrné tyče. Má to ale několik specifických problémů...


První koncept: vlevo nahoře IP kamera s přísvitem a 4 černé tyče

1. problém: detekce v noci


Poměrně jednoduché řešení je využití kamery s infračerveným přísvitem. Sníh je v noci tak proti černým tyčím velmi dobře kontrastní a přes den by neměl být problém.

2. problém: možný pohyb kamery a deformace obrazu


Tento problém je poměrně specifický. Konkrétní kamera je poměrně širokoúhlá, má pouze HD rozlišení a sem tam se může stát, že se trošku pohne vůči tyčím, nebo se hnou časem tyče samotné a může dojít chybné detekci. Určité zkreslení horní části obrazu navíc vzniká při přepínání IR filtru mezi dnem a nocí. Je to jen o kousek, ale úplně to stačí pro možnou chybu měření.
Jednoduchou detekcí specifických aruco* značek v obraze a jejich pozic, lze vypočítat tuto odchylku a vždy se trefit na správné měřené místo tak, aby byla přesnost pokud možno co nejvyšší. Značky ale nelze umístit z důvodu zasněžení na spodek tyčí. Budou tedy pouze na vršku každé z tyčí. Sněhoměrné tyče budou muset být proto k zemi připevněny nehybně a pevně, aby nedošlo k nechtěnému pohybu a dolní bod bude muset být také softwarově fixní.

3. problém: výpočetní výkon


Protože vše poběží na starém Raspberry Pi 2, na kterém běží navíc všechno ostatní, nechceme zbytečně bez sněhové nadílky zatěžovat počítač. Mohla by tomu pomoci detekce 3 černých ploch umístěných na zemi mezi tyčemi, které dokud se nezasněží (tedy nebudou všechna 3 místa bílá), celý proces se jednoduše přeskočí a změřeno bude 0 cm.

Další možností může být strojové učení, které sice nemusí nutně zefektivnit celý proces detekce, ale může zvýšit přesnost a náchylnost systému v případě vyššího šumu a různých jevů jako je ledovka, silný déšť, sněžení a nebo třeba v protisvětle. To momentálně neřeším a budu řešit třeba později.

Další jednoduchou kontrolou velikosti měřeného obrázku můžeme eliminovat problematický snímek (nekompletní nebo příliš tmavý) a při teplotách nad 5 stupňů jednoduše nemá smysl měření provádět. Tím se omezí zbytečná analýza.

4. problém: rozlišení detekce


Kamera má, jak jsem již výše zmínil, pouze HD rozlišení. Na tyče pohlíží přibližně z metrové vzdálenosti a jejich výška je 50 cm. Nepředpokládám, že by v nejbližší době v měřené lokalitě mohlo nasněžit více sněhu.
Podle posledních měření je rozlišení tedy něco přes 13 pixelů na 1 cm. Kvůli přeexponovaným hranám lze tedy bezpečně počítat s rozlišením 1 cm. Uvidíme časem, zda to bude udržitelné třeba po 0,5 cm.

5. problém: neočekávané chyby měření


Představte si, že měření probíhá během sněžení. V infračerveném přísvitu je vysoce pravděpodobné, že bude docházet k odchytu vloček před sněhoměrnými tyčemi. Algoritmus je může detekovat jako ležící sníh poměrně vysoko nad reálnou "hladinou". Pomocí nastavení prahu se tak dá problém jednoduše vyřešit. Stačí nastavit správnou hodnotu a vločky výše již nebudou započítávány.

6. problém: validace


Protože se může stát, že před jednu z tyčí spadne list, který v infračerveném světle bude bílý, bude se měřit na 4 tyčích nezávisle. S pomocí normalizace lze podobné výkyvy oproti normálu ignorovat.


Prahování váhy hodnot na tyči a normalizace s validací hodnot vizualizovaná v excelovské tabulce

Praxe


Pro správné měření bylo nutné zafixovat spodní desku dostatečně tak, aby nedocházelo k pohybu dolních pozic tyčí. Bylo nutné zarazit do země 4 kolíky, na které je našroubována měřící deska. Dále je nutné zajistit, aby nedocházelo k nechtěnému pohybu kamery. Je nyní lépe krytá také proti sněhu, který kdyby se pod kamerou nahromadil, může nepříjemně odrážet IR světlo a tvořit tak světelný smog před optikou kamery.

Původní myšlenku, mít jeden aruco kód pro celé měření, jsem rychle opustil kvůli různým deformacím obrazu a možnému pohybu tyčí. Z každé dolní hrany kódu se spočítá délka tyče v pixelech na centimetr (cca 11-12 px/cm), z něhož se pak tvoří ... žebřík 50 políček podél tyče samotné.

Nojo, ale aby to nebylo tak jednoduché, musel jsem na 1. levou a úplně pravou tyč aplikovat kvadratickou funkci v ose x (tedy doprava-doleva) kvůli částečnému zkreslení širokoúhlým objektivem (rybí oko).  Vizualizovaná detekce proto nyní vypadá přibližně takhle:


Denní detekce


Noční detekce

Na obrázcích jsou dole vidět 3 tyrkysové čtverečky reagující na vrstvu sněhu. Dále růžové tečky na dolních a spodních hranách tyčí, samozřejmě aruco značky rámované zeleně a žluté obdélníky 5x4 px odpovídající horní polovině každého centimetru na tyči. Zaokrouhluje se tedy každý centimetr cca od 0,6 mm teprve nahoru. Vzhledem k možnému přeexponování hrany sněhu nebo možnému nafoukávání na tyč je to spíše žádoucí.

Zpětná validace měření bude pochopitelně časem důležitá pro přesnost výsledků.

A k čemu to všechno?


Detekce vzorců v obraze je v dnešní době velmi rozšířená v průmyslu a spoustě dalších odvětví. V hobby prostředí se jedná skutečně o asi nejlevnější a nejzajímavější řešení právě takových problémů - já jsem nemusel nic dokupovat kromě černého matného spreje. Stačí vám k tomu obyčejná kamera a dobré s světelné podmínky. Nemůžu samozřejmě nezmínit čas, který je tomu potřeba věnovat. Bez znalostí problematiky a programování by to samozřejmě také nešlo. Technicky vzato je to primitivní ale velmi dobrý nástroj, který lze upravit tak, aby měřil opravdu přesně.

V současné chvíli měření sněhu již probíhá v experimentálním režimu. Protože bohužel nejvíce za listopad sněžilo asi v pátek a sobotu 22. a 23., opravdových výsledků se dočkám až později. Softwarově ale vše funguje jak má, dokonce rychlost zpracování obrazu je i na stařičkém Raspberry Pi poměrně rychlé.


Více zajímavostí na hlavní straně.



Chcete-li podpořit projekt, můžete zaslat dobrovolný příspěvek pomocí QR kódu.
Výše příspěvku je zcela na Vás.

QR platba
Děkuji.
Příspěvek bude využit na platbu domény a webhostingových služeb, vylepšení, opravy, výměny čidel...

Přidat komentář



Komentáře k článku

Dosud nebyl přidán žádný komentář. Buďte první!

Novinky a zajímavosti kamery z Twitteru

Webová kamera v Šošůvce

© Zdeněk Strakerle 2013 - 2025

   Aktuální status kamery a meteostanice
   Diskuze (poznatky, připomínky)
    Hodnocení projektu

   Zajímavé odkazy
HkFree webkamery - inspirace využití fotoaparátu,
Webcams.cz - český seznam webkamer,
Windy kamery - mapa světa s webkamerami,
Sosuvka.com - stránky obce nové
Kamera je umístěna, nasměrována a nastavena tak, aby prokazatelně nesnímala soukromé pozemky, ani možný pohyb osob. Proto není porušeno ničí soukromí. Snímky z každé hodiny zůstávají veřejně přístupné ZDE na dobu neurčitou.

<