Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Program analizujący zdjęcia

marcus753 03 Sty 2010 18:26 3178 26
  • #1 03 Sty 2010 18:26
    marcus753
    Poziom 9  

    Witam wszystkich bardzo serdecznie
    Jestem uczniem technikum informatycznego i od kilku miesięcy chodzi za mną pewien pomysł

    Mianowicie chce napisać program który pobierał by zdjęcia z kamer na ulicach np. w krakowie a następnie w tabeli pokazywał by jaki ruch jest na jakiej ulicy...

    Zadanie karkołomne wiem dlatego na razie zbieram materiały i rozplanowuje grafik prac

    Myślę że na początku przydało by się zdjęcie zupełnie pustej drogi które było by porównywalne ze zdjęciem aktualnym (szukali byśmy odstępstw od orginalnego zdjęcia) im było by ich więcej tym większy byłby ruch...

    Co o tym myślicie ? piasałem już różne programy głównie w c++ ale nigdy nie analizowałem w nim zdjęć i nie za bardzo wiem jak się do tego zabrać

    Wszelkie pomysły i uwagi mile widziane

    Pozdrawiam ;)

    0 26
  • Pomocny post
    #2 03 Sty 2010 19:29
    jaromisz
    Poziom 17  

    Zadanie trudne z kilku powodów.
    Musisz mieć obrazy ulicy w różnych warunkach atmosferycznych, różnych godzinach. Każde odstępstwo - deszcz, śnieg, ciemna chmura spowoduje że nie zobaczysz asfaltu tak jak by tego program oczekiwał. Skutkiem tego przy pustej drodze i deszczyku albo chmurce cały asfalt będzie zajęty.
    Jakość Kamery, niskie rozdzielczości powodują małe możliwości wykrywania tych odcinków asfaltu pomiędzy samochodami.
    Ruch samochodów - jak zamierzasz to zalgorytmować?
    Może lepiej byłoby wykrywać światła w samochodach... - jeszcze narazie jest to u nas obowiązkowe.

    Co do oprogramowania, to poszukaj po bibliotekach w PHP. Są gotowce do dobierania się do konkretnych pikseli w JPeGach, do wykrywania ruchu...

    0
  • #3 03 Sty 2010 19:38
    marcus753
    Poziom 9  

    ruchu samochodów nie będę brał pod uwagę bo do dyspozycji mam tylko zdjęcia a nie podgląd na zywo (znacznie więcej kamer jest oferujących zdjęcia aktualizowane co pare minut niż obraz online) co do świateł myślałem o tym ale kurcze nigdy nie pracowałem na grafice w tak dużym stopniu...
    muszę porównać jasność świateł w dzień i w nocy może wtedy poprostu sprawdzał bym ile punktów na zdjęciu ma taką jasność i po niej ustalał bym liczbe pojazdów...

    Spotkał się ktoś z podobnym systemem ? ale udostępnionym masowo ?

    0
  • #4 03 Sty 2010 19:47
    jaromisz
    Poziom 17  

    Powiem jeszcze tak:
    jakiekolwiek by to nie było rozwiązanie to trudno będzie ci je skalibrować z tyloma różnymi rodzajami kamer... Każda będzie inaczej łapała odcienie, jasność otoczenia itp.
    Z tymi światłami to chyba jedyny sensowny pomysł, gdyż jest to jedyny stały element występujący umownie w każdym samochodzie, i przy tym zawsze odróżniający się natężeniem od otoczenia. Pamiętaj jeszcze o pogodzie - po deszczu możesz widzieć samochody razy 2 (odbicie od mokrego asfaltu), w słoneczny dzień odbicie słońca od szyby...
    Bardzo dużo zależy od jakości i przede wszystkim od ujęcia kamery do jakiego będziesz miał dostęp.
    ---------------------------------
    Przyszła mi do głowy jeszcze jedna rzecz odnośnie wyboru samego języka programowania. Zorientuj się czy do c++ są jakieś biblioteki do obsługi JPG - na pewno są tylko być może płatne. Jeśli nie znajdziesz nic sensownego, to rozważ użycie PHP i linucha - Ostatecznie i tak pewnie będziesz chciał przedstawiać wyniki na jakiejś mapie a nie w tabelach.
    Zrobiłem sobie dla własnego użytku mały detektor ruchu podłączony do kamerki intenetowej. Całość śmiga szybciej niż przypuszczałem. Na jakimś starym athlonie analizuję jakieś 6 zdjęć na sekundę - w sensie określam w jakim stopniu kolejne 2 obrazy z jednej kamery są różne od siebie. Niemal wszystko zrobiłem na gotowych funkcjach i przykładach ich zastosowań.

    Analogiczne algorytmy powinny być stosowane w mechanizmach wykrywania "czerwonych oczu" - pogmeraj w necie - może o tym będzie więcej niż o ruchu na drodze.

    0
  • #5 03 Sty 2010 21:49
    marcus753
    Poziom 9  

    Przykładowe zdjęcie

    aktualne zdjęcie:
    Program analizujący zdjęcia
    zdjęcie z 20:15 :
    Program analizujący zdjęcia

    Trzeba by było tutaj wydzielić obszar który algorytm by brał pod uwagę tak aby ominąć latarnie itp. wystarczy policzyć tylko liczbę świateł w danym fragmencie zdjęcia (muszę porównać to zdjęcie ze zdjęciem zrobionym w dzień i zobaczyć jak bardzo różnią się światła... Problemem może być grupka samochodów po lewej stronie ale biorąc pod uwagę że przed droga jest prawie pusta można by wywnioskować że są to tylko światła a nie korek na całej drodze.

    Myślałem o tym chwile i wymyśliłem taki mechanizm

    Algorytm stosuje się tylko do jednego obrazu z kamery dla każdej kamery będzie on się nieco różnił

    Najpierw sprawdzamy która jest godzina (dzień czy noc) (w zależności od tego jaki światła w samochodzie będą miały kolor
    Następnie robimy pętle która
    dzieli zdjęcie (wyznaczony obszar) na poszczególne piksle
    sprawdza czy odcień danego piksla zgadza się z pikslem wzorcowym oraz zapisuje w zmiennej pozycję każdego takiego piksla
    gdy mamy już całe zdjęcie przeskanowane zajmujemy się analizą wyników
    musimy rozważyć możliwość zagęszczenia pojazdów jezeli w promieniu kilkudziesięciu pkt. piksle które znaleźliśmy tworzą jednolitą plame oznacza o że mamy zgrupowanie pojazdów musimy sprawdzić fragment drogi przed nimi jeżeli jest pusty jeśli tak wystarczy nam przyblizona wielkość takiej plamy przypisana do zmiennej którą wykorzystamy potem a całą tą plamę ignorujemy dla dalszego kroku jeżeli taka plama pokrywa całą drogę oznacza to że jest mocno zakorkowana.
    jeżeli odległość od siebie wyszukanych piksli jest mała np 15 pkt ignorujemy takie piksle (w ten sposób jednemu światłu samochodu które składa się z kilku piksli będzie odpowiadał jeden piksel właściwy)
    liczymy liczbę piksli właściwych i dzielimy na 2 w ten sposób mamy przybliżoną liczbę samochodów na zdjęciu teraz trzeba się jeszcze zająć tą plamą znając jej wielkość można również w przybliżeniu podać liczbę samochodów tworzących taką plamę

    Fragment poddanego analizie w ten sposób zdjęcia będzie pokrywał jeden kierunek ruchu fragment zdjęcia po którym samochody jadą z przeciwnej strony będzie trzeba poddać podobnej analizie

    Co o tym myślicie ? teraz pytanie jak to wszystko napisać...

    znalazłem na necie algorytm wycinający fragment zdjęcia

    [php]1. header("Content-type: image/jpeg");
    2. $image = imagecreatefromjpeg("tygrys.jpg");
    3. list($width, $height) = getimagesize("tygrys.jpg");
    4. $new_width = 780;
    5. $new_height = 840;
    6. $image_new = imagecreatetruecolor($new_width, $new_height);
    7. imagecopyresized($image_new, $image, 0, 0, 140, 100, $new_width, $new_height,
    260, 280);
    8. imagejpeg($image_new);[/php]

    zastanawiam się jak ustalić kolor wycięteg w ten sposób piksla ;/

    pewnie będę miał potężny problem z napisaniem czegoś takiego bo nigdy nie korzystałem z biblioteki GD ciekawe jak będzie wyglądała wydajność można by było ew. zliczać nie 1 piksel a 4...

    Dodano po 4 [minuty]:

    żeby nie było za prosto znalazłem jeszcze takie zdjęcie:

    Program analizujący zdjęcia

    widzimy tutaj światło samochodu które odbija się od drogi w takim przypadku mój algorytm uznał by że jest to zgrupowanie pojazdów jak to wyeliminować ? nie mam pojęcia :sciana:

    0
  • #6 03 Sty 2010 22:06
    jaromisz
    Poziom 17  

    To jest właśnie to o czym pisałem... Niestety jakość kamer jest ... oszałamiająca:) Wszystko się zlewa przy złych warunkach pogodowych, odblaski od asfaltu...to funkcje których używam:
    imagecreatefromjpeg, getimagesize, to o co pytasz:

    Code:
     $rgb1 = imagecolorat($im1, $x, $y);
    
          $r1 = ($rgb1 >> 16) & 0xFF;
          $g1 = ($rgb1 >> 8) & 0xFF;
          $b1 = $rgb1 & 0xFF;

    wyciąga piksel x,y i masz 3 zmienne z kolorami RGB

    0
  • #7 04 Sty 2010 00:11
    qrdel
    Poziom 28  

    No to masz pole do popisu.
    Przede wszystkim poczytaj o metodach przetwarzania obrazu, bo akurat w tym wymyślanie roweru po raz tysięczny potrafi dać wyjątkowo słabe efekty po zmarnowaniu dużej ilości czasu/chęci/pieniędzy...

    Pomyśl też nad precyzyjnym określeniem celu.
    Choćby nad zdefiniowaniem pojęcia 'jaki ruch'.
    Czy samochody stojące gęsto zderzak w zderzak to to samo co taka sama ilość jadąca 30 km/h?

    A potem jest opanowanie całej serii prostych operacji [obszar zainteresowania (ROI), usuwanie artefaktów, wygładzanie, progowanie, wyróżnianie kształtów, eliminacja za małych za dużych, no jest tego dużo] i sensowne składanie w logiczny ciąg.
    Najlepiej otworzyć opis gotowej komercyjnej biblioteki procedur (w dowolnym języku/systemie) i zgodnie z opisem działania wybrać które warto samodzielnie napisać dla ruszenia problemu.

    No jest jeszcze jest druga metoda - napisanie wielkiej i niezrozumiałej procedury która po wprowadzeniu danych wejściowych będzie wydawać liczbę.
    Tylko one czasem się fixują.
    Maszyna Trurla mówiła 7, zaś w The Hitchhiker's Guide to the Galaxy było to o ile pamiętam 4.
    A w wersji bardziej humanistycznej był to paragraf 22.

    0
  • #8 10 Sty 2010 23:19
    marcus753
    Poziom 9  

    Witam ponownie a ja dalej rozwijam swój pomysł czytałem trochę na ten temat w internecie na forach od kilku dni zbieram zdjęcia z 4 kamer co (15 min.) i na ich podstawie rozmyslam nad rozwiązaniami tu mam 2 przykłady

    Program analizujący zdjęcia

    Program analizujący zdjęcia

    Myślałem o detekcji kształtów ale te zdjęcia pokazują że niema to sensu w nocy kompletnie się nie sprawdzi w dzień samochody się zlewają i też jest nie skuteczna...

    patrzyłem na różne filtry ale mają one sens tylko przy detekcji kształtach poprawiając w pewnym stopniu widoczność zdjęcia...

    Oglądając kilkadziesiąt zdjęć widzę że jedyny sens poszukiwania samochodu ma analiza poszczególnych piksli i tak doszedłem do wniosku że najepsze będzie wyszukiwanie koloru pojedyńczego piksla lub sprawdzanie zminności tonacji na np. 20 pikslach (ustawionych w rzędie) droga ma kolor raczej jednolity natomiast samochód zaburza tą jednolitość w najbliższych dniach rozpocznę prace nad algorytmem obliczającym takie związki i zobaczymy ale wstępne operacje są obiecujące :D

    0
  • #9 18 Sty 2010 13:54
    qrdel
    Poziom 28  

    Może odgrzewam trupa, ale doczytałem dopiero teraz fragment
    "zbieram zdjęcia z 4 kamer co (15 min.)".
    Może dla badania ruchu lepsze będzie badanie par zdjęć w odstępie 1 sekundy albo i ułamka. Wtedy łatwiej stwierdzić co jest ruchome w obrazie i nawet znaleźć coś zbliżonego do prędkości. (problem kalibracji)
    Niestety nie wiem jakie są warunki uzyskiwania zdjęć, może to nierealne.

    0
  • #10 19 Sty 2010 23:08
    marcus753
    Poziom 9  

    qrdel trupa nie odgrzewasz w tej chwili pisze algorytm 40 % mam już zasobą algorytm będzie miał ok 2 tyś linijek kodu i będzie się składał z kilkunastu mniejszych algorytmów
    Krótszego nie udało mi się wymyśleć...
    Pomysł masz fajny ale zależy mi na podpięciu się pod jak największą liczbę kamer a tylko kilkanaście procent oferuje podgląd w czasie rzeczywistym większość to zdjęcia aktualizowane co pare minut

    Trzymajcie kciuki żeby mi się udało:D

    Dodano po 4 [godziny] 47 [minuty]:

    zależy mi na tym aby ten skrypt wykonać nie używając baz danych mysql

    0
  • #11 25 Sty 2010 19:07
    marcus753
    Poziom 9  

    witam prace nad algorytmem cały czas trwają a oto pierwsze efekty:

    opracowałem 2 metody filtracji wyjątków (krawędzie światła itp) każda z metod jest w 12 stopniowej skali...

    a oto pare zdjec:

    Program analizujący zdjęcia

    Program analizujący zdjęcia

    wszystkie 25 zdjęć jest dostępnych tu:

    http://img202.imageshack.us/gal.php?g=23porownywarka31120.jpg

    myślę teraz nad wybraniem najlepszych 2 zdjęć z 1 i 2 metody nałożenie ich na siebie i przepuszczenie przez kolejny filtr który usunie zbedne zaznaczenie...

    0
  • #12 25 Sty 2010 21:08
    jaromisz
    Poziom 17  

    Początki całkiem niezłe...
    Tylko mnie cały czas martwi jakość zdjęć - nie moga byc znacząco gorsze od tych tutaj...

    0
  • #13 26 Sty 2010 18:16
    marcus753
    Poziom 9  

    napotkałem kolejny problem ilość danych ;/ w sumie mój kod ma już ponad 1000 linijek i składa się z 9 skryptow jestem wstanie wyszukiwać całe grupy wyróżniających się piksli i rozróżniać czy ukłądają się koliście czy w linii w sumie myślę że jeszcze z 300 linijek kodu i będę kończył ;)

    problem jaki mnie uderzył to ilość danych ;/ jeden skrypt przetwarza kilka tysięcy zmiennych a same informacje o kolorach piksli to ponad 360 000 myślę że wszystkie skrypty przetwarzaja i tworzą ponad 1 milion zmiennych...

    problemy w tym że to wszystko zaczyna mi się walić zawieszać i nie działać ;/ dlatego postanowilem podzielić zdjecie na grupy i traktować je jak zlepek małych zdjęć i na nich prowadzić kluczowe obliczenia a wyniki tych prac polaczyc w całość ;)

    Program analizujący zdjęcia

    usunięcie np. odblasku jest banalnie proste bo w przeciwienstwie do swiatel czy samochodu tworzy długa smugę...

    0
  • #14 27 Sty 2010 10:01
    jaromisz
    Poziom 17  

    a mam takie być może głupie pytanie... Czy operujesz na JPGach czy na innym formacie?
    Może warto by przekonwertować obrazek przed wykonywaniem jakichkolwiek analiz na prostrzy format - np bmp, i do tego jeszcze w jakiejś powiedzmy skali szarości a nie w kolorze...

    Czy mógłbys zamieścić jakiś schemat blokowy tego algorytmu?

    Co do podziału zdjęcia na segmenty to wydaje mi się że jest to stosunkowo dobry pomysł, oczywiście jeśli nie będzie problemów z łączeniem tego potem do kupy.
    Czy masz w tym algorytmie coś takiego jak skala wielkości w wykrywaniu świateł?

    0
  • #15 28 Sty 2010 22:53
    marcus753
    Poziom 9  

    schematu blokowego nie zamieszczę ale mogę napisać coś o strukturze cała aplikacja jest już gotowa w ok 80% najpierw zdjecie przechodzi przez algorytmy zapisujące jego kolory a następnie jest rozdzielane na 6 stref i tu zaczyna się poplątanie z pomieszaniem zrobione po to by algorytm nie analizował danych 3 godziny których jest naprawdę sporo...

    główna ścieżka algorytmu dzieli się na 6 pojedynczych ścieżek a każda z tych ścieżek dzieli się na 12 oddzielnych co daje nam 72 ścieżki (Dla jednego zdjęcia) pracujące równolegle każda z tych ścieżek wykonuje 3 algorytmy filtrowanie 2 metodami a nastepnie grupowanie po tych zabiegach liczba ścieżek skraca się do 6 które analizują wyniki poprzednich algorytmów by w końcowej fazie z powrotem wrócić do jednej która wypluwa nam gotowy plik po analizie przez 4 (kolejne skrypty które właśnie piszę) otrzymujemy liczbę samochodów na zdjęciu... przewidywana skuteczność to 80% wariant pesymistyczny 95-100 % optymistyczny każdy skrypt składa się z od 100 do 300 linijek kodu a przewidywany czas wszystkich obliczeń to ok 5 min.

    cały algorytm opiera się na plikach i to jest chyba mój błąd ale mieszając w to baze mysql chyba bym się pogubił całkowicie...

    aha i nie wyszukuje koloru piksla który mnie interesuje ta metoda nie zdała egzaminu za dużo zmiennych (pogoda brak świateł itp) algorytmy analizująco-wyszukujące są nastawione na wyszukiwanie anomalii w harmonijnych wzorach zdjęcia w efekcie czego dostajemy kontury świateł a w przypadku ich braku kontury pojazdów itp.

    0
  • #16 04 Lut 2010 20:58
    marcus753
    Poziom 9  

    ja cały czas piszę mój skrypt ;) lecz doszedłem do takiego momentu że zastanawiam zastanawiać się nad sieciami neuronowymi...
    projektował ktoś już takie sieci z was ? jak myślicie sprawdzą się w tym zadaniu czy będzie to raczej syzyfowa praca ?

    0
  • #17 07 Lut 2010 11:25
    And!
    Admin grupy Projektowanie

    W tym zadaniu dla sieci będzie to ciężka praca,
    sprawdziłby się np. w kamerze przy wjeździe na parking,
    gdzie jeden samochód jest zawsze na podobnej pozycji.

    Sieci neuronowe są bardzo dobrym narzędziem,
    ale jakość ich pracy zależy od jakości zbioru uczącego,
    oraz od ostrości różnic po między rozpoznawanymi klasami.

    Jeżeli masz dobry pomysł na ekstrakcję wektora cech ze zdjęcia kamery,
    z którego sieć będzie w stanie nauczyć się cech dla danej klasy obiektów:
    (np. cztery klasy brak samochodu, jeden samochód, dwa samochody, zakłócenia),
    to masz pole do popisu,
    zarówno dla uczenia z nauczycielem, jak i ew. dla map Kochonena.

    0
  • #18 18 Mar 2010 01:08
    marcus753
    Poziom 9  

    Zakładam Ze dane wejsciowe bedą słabej jakości i w roNych odstepach czasu ok15 min.
    Jednej rzeczy tylko nie rozumiem odejmujac od siebie 2 zdjęcia jako tło pozostaną ci rzeczy które się nie zmieniły pozostały w spocZynku ale przy zdjęciach co kilkanaście minut korzystanie z tego co było wcześniej chba nie ma sensu ale skoro człowiek może powiedzieć ile jest samochodów na drodze to powinno dać się to zrobić

    Jak skoncE algorytmy które przetwarAja mi dane wstępne to sproboje poprosru odejmowac od zbioru piksli jakie wytypowalem piłkę mnie nie interesujące zobaczymy co mi to wszystko da

    Witam wszystkich !

    Pierwszy post w tym temacie napisałem 3 stycznia dzisiaj mamy 18 marca czyli przeszło 3 miechy ;)

    czemu piszę ? bo chcę tutaj opublikować moje wstępne wyniki z beta testów mojej aplikacji

    Jeśli będziecie chcieli o samej aplikacji chętnie coś napiszę teraz dodam że stwór pisany wieczorami i w wolne chwile zaczyna (Chyba) naprawdę działać...

    Aby dobrze zinterpretować wyniki muszę powiedzieć o paru rzeczach po pierwsze zdjęcia z którymi musi sobie radzić aplikacja są bardzo niskiej rozdzielczości i są to zdjęcia nie film ! (jedno zdjęcie na ok 10 min.) niejednokrotnie człowiek ma problem z rozpoznaniem na nich czy dana plama to samochód czy po prostu kałuża odbijająca światło. Skryptowi postawiłem jeden cel ma określić w kilku stopniowej skali natężenie ruchu jednak potrafi znacznie więcej. Z tego co zaraz zobaczycie z dokładnością do ok. 2-3 samochodów jest w stanie podać ich dokładną liczbę. Aplikacja ma 2 swoje pięty Zdjęcia które są uszkodzone (w tym mają uszkodzone kolory i duży szum) oraz zdjęcia robione w deszczu i o ile z tymi ostatnimi jakoś sobie poradziłem (jestem wstanie skalowo określić natężenie ruchu) o tyle zdjęcie uszkodzone raczej będę ignorował i je po prostu pomijał. Na 10 i 6 zdjęciu możecie zobaczyć o jakich efektach mówię. Wyniki podaje nie zaokrąglone ale planuję je zaokrąglać do miejsc całkowitych od x.3 w górę...

    Samochody brane pod uwagę to takie które mają wyraźne kształty dlatego samochody przy samym horyzoncie (które tworzą np. jedną dużą kropkę) nie są brane pod uwagę przy liczeniu pojedynczym jednak gdy ustalamy skale ruchu do liczby samochodów dodawana jest informacja czy samochody są po horyzont czy tez nie...

    No to obiecane wyniki:
    Program analizujący zdjęcia


    Co o tym myślicie ? kilkadziesiąt godzin spędzone na testach planowaniu i programowaniu poszło w las ? czy jednak coś z tego będzię ?

    Pozdrawiam !

    0
  • #19 20 Mar 2010 16:44
    latoslatos
    Poziom 9  

    Witam serdecznie!
    To zadanie dla mechanizmów z rodziny SIP (systemy inteligentnego przetwarzania) w przypadku zastosowania deterministycznych algorytmów detekcji ruchu będziesz potrzebował nie lada sprzętu do ciągłej analizy danych. Polecam lekturę nt. sztucznych sieci neuronowych.
    Zabawa polega na tym, że takową sieć uczysz pewnymi wzorcami, a ona już sama na ich podstawie 'zaczyna wyciągać wnioski',klasyfikować, interpretować dane. Zagadnienie raczej nie do tłumaczenia na forum, ale mogę podrzucić odpowiednie pozycje w literaturze oraz oczywiście życzyć powodzenia i wytrwałości ;)

    0
  • #20 20 Mar 2010 17:48
    redie
    Poziom 15  

    Widzę, że na zdjęciach w pogodne dni nawet nieźle sobie radzi ten program.
    Jeśli tworzysz to na zaliczenie to możesz przedstawić swoje algorytmy i wyniki, i powinno być git.
    Jeśli chcesz zastosować SSN to i tak musisz zrobić jakąś analizę zdjęcia by przedstawić je w postaci jakichś wzorców dla sieci. Tak by było rozważnie.
    Ale mi przeszedł piekielny plan przez myśl - co gdyby tak te zdjęcia bezpośrednio rzucić na sieć neuronową (ewentualnie po zmniejszeniu ilości kolorów, lub zwiększeniu kontrastu) by uczyła się jedynie tego które obszary wpływają na określenie współczynnika ruchu, a które nie.
    Minusem tego podejścia jest m.in. to że musiałbyś ręcznie określić dla każdego zdjęcia współczynnik ruchu, a tych zdjęć trza by dać bardzo dużo - Oczywiście podczas nauki (nadzorowanej).

    0
  • #21 20 Mar 2010 19:02
    latoslatos
    Poziom 9  

    Plan zaiste piekielny.
    Tutaj należałoby się zmierzyć z wieloma rzeczami.
    Wydaje mi się, że żadna ze standardowych architektur SSN nie byłaby do końca odpowiednia - nie jest to do końca zadanie klasyfikacji, chyba, że zadowolimy się tutaj jakimiś przedziałami natężenia. W takim wypadku należałoby się skłonić ku sieciom typu RBF - z radialną funkcją bazową, gdyż te lepiej radzą sobie z zadaniem klasyfikacji niż np. Perceptron wielowarstwowy, gdyż parametry funkcji bazowych jest dość łatwo powiązać z fizycznym rozmieszczeniem danych uczących w przestrzeni.

    Ale co do samego wykorzystania SSN - wydaje mi się, że podejściem bardziej zbliżonym do optimum, będzie wykorzystanie sieci wielowarstwowej uczonej metodą wstecznej propagacji błędów. sieć mogłaby poszukiwać świateł samochodowych.
    Nawet nie trzeba było by przejmować się latarniami, bo ich liczba i pozycja jest znana, czyli można albo ignorować ich liczbę, albo zwyczajnie w trakcie preprocessingu danych zamazywać fragmenty obrazu.

    Dopiero w przypadku uogólnienia problemu dla sprzętu, który chcemy postawić w dowolnym miejscu robi się problem i np trzeba sprzęgać kaskadowo 2 sieci. Pierwsza wykrywa obiekty świecące, druga wykrywa ich ruch. (zakładamy tutaj, że kierowcy grzecznie włączają światła ;) )
    Ale w tym wypadku już sama sieć wykrywająca obiekty ruchome byłaby swietnym rozwiązaniem.

    Z takimi problemami niestety jest tak, że pomysłów na rozwiązanie jest mnóstwo, ale żaden bez wad. ;)

    0
  • #22 21 Mar 2010 12:56
    blue_17
    Poziom 32  

    Kolegi pomysł już został wykorzystany kiedyś byłem na AGH-u i tam zrobili coś podobnego tyle że kamera sterowała zmianą świateł na skrzyżowaniu dawała jeszcze kilka innych parametrów jak na tężenie ruchu i kilka jeszcze innych.

    Pozdrawiam

    0
  • #23 21 Mar 2010 13:09
    Informacja
    Poziom 18  

    Program może być banalnie prosty.
    Wystarczy jedynie zastosować trick który nazwałbym komparatorem grafiki.
    Cóż to takiego?
    To oprogramowanie które pozwala na porównywanie kolejnych klatek (nie koniecznie 1z2 2z3 itd, ale np co 10 20 30 czy ileś tam kolejnych.
    Odstęp między klatkami musi być na tyle nieduzy, aby zmiany obrazu wywołane zmianą warunków atmosferycznych, czy porą dnia nie różniły obrazów radykalnie.
    Czas musi być jednocześnie tak dobrany, aby samochód nie zdołał w nim przebyć analizowanej bariery.
    Następnie zapisywał bym kolejne obrazy a następnie zapuszczał petlę, pozwalającą na sprawdzenie czy w wybranych (przesuwanych po placu obrazu fragmentach - np wycinkach w formie prostokąta ilość kolorów zbliżonych zmieniła się więcej niż o określony doświadczalnie procent (np zaczynając od 20%)
    Jeśli w dany obszar wjechał by samochód to bez wątpliwosci zmienił by obraz drogi na własny.
    Warunki dokładnosci działania są dwa.
    Po pierwsze wycinki obrazu porównywalne ze sobą muszą być mniejsze lub równe wielkości samochodów obserwowalnych na obrazie, dodatkowo trzeba dołożyć petlę która zanalizuje czy kolejne wycinki nie zawierają fragmentów tego samego samochodu.
    Po drugie podobnie należy zrobić z kolorami.
    Różnica o kilka w R,G albo B nie powinna dyskwalifikować ustroju, gdyż kolor odbierany moze się różnić w zależności od np natężenia oświetlenia
    Dodatkowo przemyśleć można czy analizować cały obszar zdjęć, czy jedynie barierę np grubości 0,3 samochodu, przez którą wszystkie auta jadące ulicą muszą przejechać.
    To rozwiązanie pochłaniało by nieco mniej mocy obliczeniowych.
    I do boju.

    Pozdrawiam.

    0
  • #24 23 Mar 2010 14:38
    marcus753
    Poziom 9  

    Odcieli mnie od internetu grr ! teraz wchodzę patrzę i widzę opinie ;) a raczej pomysły...

    Zastanawiałem się nad różnymi rozwiązaniami ale jednym z głównych warunków jakie postawiłem sobie na początku jest jeden obraz na ok 5 min. tak więc nie mam do dyspozycji filmu a zdjęcie i to w dodatku fatalnej jakości
    Co do sieci mam kolegę który robił właśnie z nich specjalizacje na studiach i kategorycznie odradza mi ich stosowanie w tym przypadku...

    Ale myślę że same wyniki są obiecujące ;)

    0
  • #25 04 Kwi 2010 22:51
    Informacja
    Poziom 18  

    No tak
    Prostsza jest jednak analiza kolejnych klatek, bo stale podaje aktualny wynik.
    Ale i analiza zdjęcia wykonywanego co 5 minut ma swoje zalety.
    Kiedyś próbowałem się bawić w pisanie prostego programu do obróbki grafiki.
    Podkreślanie konturów było jednym z prostszych efektów.
    Taki programik może mieć wiele ciekawych zastosowań.
    Alarmowanie o pojawieniu sie intruza petenta itp, analizowanie elementów na taśmie, czy analizę obrazów z mikroskopu np.
    Mój kolega ze studiów np pisał dyplom na informatyce którego tematem było znajdowanie ilości bakterii konkretnego typu w zdjeciu badanej próbki.

    0
  • #26 11 Kwi 2010 22:39
    devonport1
    Poziom 2  

    Jak tam postępy w pracy są jakieś efekty:?:

    0
  • #27 09 Maj 2010 14:52
    marcus753
    Poziom 9  

    Witam wszystkich ponownie ;D

    Prace nad programem dobiegły końca przynajmniej w części (beta1)

    Skrypt php zamierzam pokazać na FI w Krakowie ;D o przyszłych wynikach poinformuje was ;)

    Teraz robię stronkę która w sposób graficzny przedstawi wyniki z 6 kamer (całodobowo z odświeżaniem co 10 min.) docelowo chciałbym uruchomić taką stronę dla mieszkańców Krakowa korzystając z ponad 70 kamer drogowych w tym mieście.

    Co do wyników robiłem statystyki z losowo wybranych 100 zdjęć z czego (30 robionych w nocy)

    statystyka ogólna wynosi:

    trafność z tolerancją 0 (bezbłędnie) 75%
    trafność z tolerancją 1 20%
    błąd (pow. 1) 5%

    wynik który pokazuje przybliżoną ilość samochodów 95%

    z czego w dzień wygląda to następująco:

    trafność z tolerancją 0 (bezbłędnie) 78,5%
    trafność z tolerancją 1 18,5%
    błąd (pow. 1) 2%

    wynik który pokazuje przybliżoną ilość samochodów 97%

    w nocy:

    trafność z tolerancją 0 (bezbłędnie) 67%
    trafność z tolerancją 1 23%
    błąd (pow. 1) 10%

    wynik który pokazuje przybliżoną ilość samochodów 90%

    Noc zaniża wyniki z całego dnia ale myślę że 95 % trafności (z możliwością błędu o 1 samochód) dla skryptu napisanego w php i który wykonuje się w 15s mając do dyspozycji tylko jedno zdjęcie nie jest aż takie złe ;)

    Zdjęcia zostały wykonane kamerą drogową 8 maja na odrodzę Kraków Olkusz która ma po 1 pasie ruchu warunki atmosferyczne były niesprzyjające wilgotno i mokro.

    0