Pocsolya detektálás teniszpályán OpenCV segítségével

 ( mapee | 2012. június 13., szerda - 13:43 )

Adott egy teniszpálya, aminek az állapota (szélerősség, levegő hőmérséklet és páratartalom, talaj nedvesség) nyomon követhető lesz netről. A mért értékek függvényében egy automatikus locsolórendszer gondoskodna a pályáról. Ezen felül be is lesz valószínűleg kamerázva.

OpenCV-vel (vagy esetleg mással) megvalósítható a pályán található esetleges pocsolyák detektálása? Ha valaki tudna ötleteket adni merre induljak, mit használjak, azt megköszönném ugyanis a témában teljesen kezdő vagyok.

Köszönöm.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Nem értek hozzá, de esetleg ha infravörös tartományú képet kapsz azon markánsabban megjelenthek a vizes foltok.

És ezt az infravörös tartományú képet a kamera képéből OpenCV segítségével elő tudom állítani vagy ahhoz direkt olyan kamera kell? Na ennyire nem értek sajnos a képfeldolgozás témaköréhez :(

Ha a kamera nem vesz az infravoros tartomanyt, akkor nem fogod tudni a hianyzo informaciot potolni.

Ha be lesz kamerázva a pálya, minek detektálni a pocsolyát?
Kamera a pocsolyát is veszi nem?

Egyáltalán ér annyit a pálya hogy ennyi elektronika figyelje?

Nem értek hozzá.

Én sem értek hozzá... A kamera nem csak a pocsolyák miatt lenne szerintem, hanem hogy megnézhessék, hogy a lefoglalt pályán tényleg játszanak-e mondjuk, stb. Maradjunk annyiban, hogy ez volt az óhaj, de mondhatjuk azt is, hogy kiadták nekem az ukázt. :) Hogy mi lesz mindebből megvalósítva, az függ majd a pontos költségvetéstől, mert az kérdéses még egyelőre. Ennyit tudok mondani. Egyelőre csak próbálok felkészülni a "legrosszabbra" :)

Elvileg nem megoldhatatlan a feladat, tekintve, hogy a teniszpálya eléggé homogén. De én is feltenném a kérdést, amit az előttem szóló.

------------------------
Everyone is a winner*

Lásd feljebb. Szerintem nem biztos, hogy mindenki ott akarja sasolni a kamera képét perceken át, mikor csak arra kíváncsi hirtelen, hogy mennyire van egy eső után elázva a pálya, lehet-e rajta játszani. A szenzorok meg nincsenek vészes árban, 2-3e Ft a talajnedvesség mérő és a hőmérséklet-páratartalom mérő darabja is. Ami kicsit húzósabb lehet az a szélerősség mérő és a kamera.

hja, lehet a tető olcsóbb lenne mint a pocsolyadetektor :)

en meg a teniszhez nem ertek, de nem tok sik az a palya? mert akkor hogy lesznek pocsolyak rajta? esteleg kore egy vizelvezeto arok ?

A'rpi

öntözni a salakpályát szokták a por ellen, viszont a salak kopik, használattól függően, így sosem teljesen sík, csak kb.
Ráadásul ha nem teljesen egyenletes az öntözés, akkor valahol előbb fog telítődni a salak és kialakul a pocsolya.

Szerintem 2 dologra alkalmas egy ilyen vizsgálat:
- alkalmas-e a pálya játékra (pl egy eső után) ->honlapon automatikus megjelenítés
- elég-e az öntözés? ->elvileg ez a használat egyik íratlan szabálya, elején locsolsz, a végén lehúzod+lepucolod a vonalakat. Ebből az öntözés részt megpróbálhatják automatizálni...

A fentiekből kiindulva én a pálya színét, esetleg homogenitását próbálnám vizsgálni. A színből ugye következtethető a nedvességtartalom, ámbár a különböző fények miatt elég nehéznek érzem a referencia meghatározását, a homogenitást pedig a víz tutira megtöri.

Infratartományban azt látom szívásnak, hogy pl a Nap járása simán bezavarhat...

--
"The only valid measurement of code quality: WTFs/min"

nem tökéletesen abszolút sík, félcentis süllyedésbe már simán beáll a víz.

Kameraképből pocsolya nem lesz egyszerű. Emberként is abból tippelsz, hogy azon a részen tükröződik vagy fodrosan torzít, stb. Viszont a fényvisszaverés kihasználható. Vetíts rá egy hálót v. pásztázd be lézerrel, és a vetítés irányából nézd meg kamerával mennyire hiányos a vetített kép. Ahol pocsolya van, ott nem, vagy torzan lesz kép, így eltér a referenciaképtől. Színszűrővel még durvább, csak a háló lesz a képen.

OpenCV-hez nemnagyon értek, próbálkoztam vele, nekem egy egyszínű blob-ot kellet volna vele megtalálni. (Magyarok a Marson versenyre.)

Szerintem első körbe azt kellene kitalálni, hogy hogyan néz ki egy pocsolya. A színe nem hiszem, hogy jó lenne, mert tükröződik. OpenCV-vel lehet kör vagy ovális alakzatot felismerni esetleg ezzel ki meg lehetne találni.

A másik ötletem: ha a pálya amúgy elég homogén, akkor ki lehet szűrni a pálya színét, és ahol kellene lennie, de nincs pálya ott valami más lesz (pocsolya vagy akármi tárgy).

Talán még azt lehet, hogy fogsz egy referencia képet (amin nincs egy pocsolya se) és az aktuális képből "kivonod" (persze elég rendesen el kell mosni mindkét képet) ilyenkor a különbség elég erősen látszani fog. Bár nem hiszem, hogy ez nagyon működne ha változik a megvilágítás.

Ha meg tudod világítani a pályát akkor persze még van sok lehetőség.

Szia!
Én sem értek hozzá. De úgy rémlik a madarak a fény polarizáltsága alapján találnak vizet. Vagyis a kamerára polárszűrőt helyezve, beállítva, talán kiszúrható egy vízfelület a képen.

Ha nincsenek árnyékok a pályán, akkor a pocsolya egy olyan terület, ami a pálya átlagszínénél valamennyivel sötétebb terület. Bár a tükröződés jó kérdés.
Ha így van, akkor kell egy átlagfilter meg egy threshold.
Én ez alapján indulnék el talán.

Nem az eszköz (OpenCV), hanem a módszer a kérdéses.

Alakfelismerés: szerintem nem megy. A kopások miatt előre nem látható, milyen alakúak lesznek a pocsolyák és nem is lesznek nagyjából sem szabályosak.

Polarizáció: Nem rossz ötlet, bár nem hinném, hogy valaki ezért polárszűrőket tesz a kamerára, ráadásul kétfélét is, hogy össze lehessen hasonlítani a vízszintes és függőleges komponenseket.

Tükröződő kép vizsgálata: esetleg. Akkor, ha a kamerák helyéről a pocsolyákban valami olyan tükröződik, ami gyökeresen eltér a salaktól. Ez a kerítéstől, látószögtől, stb. függ.

Egy tipp: (ha a kamerák rögzítettek)

Előkészítés
1a) referencia állókép készítése száraz időben
1b) referencia képen kiválasztani az érdekes területet (a pályát), a többi részt kifeketíteni. Ez lesz a viszonyítási alap.
1c) a viszonyítási alapot HSV-re transzformálni.

Használat
2a) a felvett képet HSV-re transzformálni
2b) az 1c)-ben képezett viszonyítási kép nem fekete területének H értékei és a felvett kép H-i közti különbséget vizsgálni: megszámolni, a pixelek hány százaléka tér el egy kikísérletezett mértéknél jobban a viszonyítási ponttól

Ha nincs senki a pályán, akkor a H-beli eltérés csak abból lehet, hogy valami van a pályán vagy valami tükröződik. S, de főleg V függhet a napszaktól, ezért nem jó. H csak akkor változik, ha a megvilágítás jellege más, ezért ha kell, nappali és lámpás referenciaképre is szükség lehet.

Persze ez csak egy íróasztal melletti ötlet. Minden az adott körülményeken múlik, mennyire más az, ami a pocsolyában tükröződik, mint a salak.

Szerintem a gyökerénél kéne megfognod a problémát. Kétlem hogy egy átlag teniszest érdeklnek a pálya adatai, csak az érdekli lehet e rajta játszani, azt meg úgy is ő dönti el. Ami érdekli hogy poros vagy sáros, ránéz a pálya képéra hogy akar e rajta játszani, abból meg úgy is látja hogy van e rajta pocsolya. Mutatsz 2 képet a pálya két térfeléről és kész. Ránéz a játékos és egyből látja milyen álapotban van.

... vagy veszel meg egy pyranometert meg egy csapadekmerot, es a mert ertekekbol csinalsz egy palyaszaradasi fuggvenyt :)

--
"You're NOT paranoid, we really are out to get you!"

Vegyél fel egy bölcsészt, aki időnként körbejár, és megnézi a szemével.
Az eredményt pedig frissíti magától.

Az az ember ideális, aki pocsolyalógia szakon szakon végzett, dekoratív és bizonyít az állásinterjún (a szó hagyományos értelmében).

Fuszenecker_Róbert

En ertek a kepfeldolgozashoz.

Attol fugg, hogy mennyi false positive es false negative riasztast szeretnel.

Szerintem kulteren a feladat extrem nehez,ha mondjuk jobbat akarsz, mint 90% FP-ra.
Belteren meg nincs pocsolya.

Allandoan valtoznak a fenyviszonyok. A teniszpalyan nincsennek e'lek, ezert az egyszeru metodusok kiesnek.

Ahhoz, hogy rendes rendszert csinalj, tobb ezer felvetelre van szukseged a teniszpalyarol, kulonbozo napszakokban, kulonbozo idojarasi korulmenyek kozott. Ez a kiindulas. Ha nincs tobb ezer keped, nem tudod merni az algoritmusodat. Tiz-husz kepet felejts el. Par szaz keppel el tudsz indulni, de ha biztosat akarsz ezres nagysagrendu kepek kellenek.

Vagyis kb. honapokig gyujtened kell az adatokat. Es raadasul lehet, hogy a rendszered majd jol ratanul azokra a palyakra, ahonnan a kepek vannak, es a kovetkezo kliensnek kezdheted az egeszet majdnem elorol.

Ha van tobb ezer keped, akkor onnantol beindul a fantazia, sok modszer celra vezeto lehet. Talalhatsz ki sajat algoritmust, vagy hasznalhatsz gepi tanulast - a lenyeg a validalas.

De amint latod, a nehez nem az algoritmus maga, hanem annak a validalasa, illetve a kifejleszteshez szukseges framework letrehozasa.

Egy cirkuláris polarizátor szűrőre lesz szükséged, ami nem láthatóvá teszi a fényvisszaverődést a pocsolyáról.

A hagyományos és a szűrt képet összehasonlítva megtalálhatod a pocsolyákat (és üvegfelületeket).

Én ezzel a szűrővel próbálkoznék, ez egy egyszerű megoldás, amihez nem kell csak két kamera és egy szűrő.

Vagy vannak speciális kamerarendszerek amik erre beépítetten képesek, de sokba kerülnek.

Esetleg a különbség kiemelésére két kamera egy-egy, egymáshoz képest 90 fokkal elforgatott polárszűrővel, és a harmadik a referenciaképhez. (nem értem miért kell circ. polár, a kamerák érzékenyek rá? Sztem sima lináris is jó, az olcsóbb).

TTL rendszerű fénymérésnél a fénymérő belső szerkezete polarizálja a fényt, így a sarkított fényekből több lesz, ami mérési hibát okoz lineáris polárszűrő esetén, cirkulás esetén ugye az elforgatja 90° a fény rezgésének síkját, így ez a hiba nem fog fennállni.

Természetesen mindig az adott kamera dönti el, hogy lineáris vagy cirkuláris polárszűrő kell bele.

He he. Ha végigolvastam volna a topicot....(1-el alattad)

------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.

Köszönöm szépen mindenkinek a sok ötletet, magyarázatokat és főleg a segíteni akarást! Majd kiderül mi lesz még ebből :)

A Fizika a megoldás a te problémádra. 2 kamerával(minél közelebb egymáshoz) egy vízszintes és egy függőleges polársíkkal felveszel 2 képet a felületről, majd kivonod egymásból. Ahol nagy a fényerőkülömbség, ott a pocsolya :)

------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.