Skip to content

Projekt zrealizowałem w trakcie studiów w ramach publikacji "Communication management to improve the efficiency of intelligent transport systems" (https://www.mdpi.com/1996-1073/13/12/3087). Celem projektu było stworzenie oprogramowania do pomiaru czasów reakcji kierowców na podstawie nagrania ze skrzyżowania w Warszawie.

Notifications You must be signed in to change notification settings

robert-czwartosz/czas-ruszania

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pomiar czasu reakcji kierowców na podstawie nagrania

Spis treści

Cel projektu

Projekt zrealizowałem w trakcie studiów w ramach publikacji "Communication management to improve the efficiency of intelligent transport systems". Celem projektu było stworzenie oprogramowania do pomiaru czasów reakcji kierowców na podstawie nagrania ze skrzyżowania w Warszawie.

Technologie

  • Python 3
  • OpenCV 2

Uruchomienie oprogramowania

Najpierw należy ustawić parametry, które są ustawiane ręcznie, w pliku konfiguracyjnym config.json. Aby dokończyć konfugigurację trzeba wydobyć tła(program slider.py) oraz dokonać kalibracji za pomocą programu calib.py. Pomiary są dokonywane przez program czasRuszania.py. Po dokonaniu pomiarów należy odrzucić te, które zostały wykonane niewłaściwie, przy pomocy programu test.py. Więcej informacji na temat zasady działania oprogramowania znajduje się w pliku czasRuszania.pdf. postepowanie

Plik konfiguracyjny config.json

  • X, Y, W, H - parametry prostokąta, obejmującego analizowany obszar; X i Y są współrzędnymi lewego górnego rogu, natomiast W i H określają szerokość i wysokość; ustawiane przy pomocy calib.py

  • x1, y1, w1, h1 - parametry prostokąta, opisującego miejsce nr 1 (pojazd nr 1); ustawiane przy pomocy calib.py

  • x2, y2, w2, h2 - parametry prostokąta, opisującego miejsce nr 2 (pojazd nr 2); ustawiane przy pomocy calib.py

  • x3, y3, w3, h3 - parametry prostokąta, opisującego miejsce nr 3 (przejezdność skrzyżowania); ustawiane przy pomocy calib.py

  • threshRuch1 - próg określający czułość detekcji ruchu pierwszego pojazdu; zakres wartości: od 0 do 255; ustawiane ręcznie

  • threshRuch1 - próg określający czułość detekcji ruchu drugiego pojazdu; zakres wartości: od 0 do 255; ustawiane ręcznie

  • threshJest - próg określający czułość detekcji obecności pojazdów; zakres wartości: od 0 do 255; ustawiane ręcznie

  • pathRoot - ścieżka do katalogu zawierającego nagranie; ustawiane ręcznie

  • video - nazwa pliku z nagraniem; ustawiane ręcznie

  • output - nazwa pliku zawierającego zmierzone czasy reakcji kierowców; ustawiane ręcznie

  • show - określa czy pokazać obraz podczas działania programu czasRuszania.py; ustawiane ręcznie

  • save - określa czy zapisać zmierzone czasy po zakończeniu działania programu czasRuszania.py; ustawiane ręcznie

Wydobycie teł

Nagranie jest przeglądane za pomocą programu slider.py w celu wydobycia odpowiedniej liczby teł. Zalecane jest, aby w tła były zapisywane co około pół godziny nagrania.

STEROWANIE: n - 1s do przodu b - 1s do tyłu m - 7.5min do przodu v - 7.5min do tyłu , - 15 min do przodu c - 15 min do tyłu . - 30 min do przodu x - 30 min do tyłu / - 1h do przodu z - 1h do tyłu

s - zapisz tło do katalogu backgrounds
q - zakończ

Kalibracja

Następnie wykonywana jest kalibracja, czyli ułożenie miejsc na odpowiednich pozycjach i określenie ich wymiarów. W tej czynności program calib.py pełni funkcję pomocniczą.

Zmiana konfigurowanego pola odbywa się poprzez następujące klawisze:

  • a - pole nr 1 - pojazd 1
  • b - pole nr 2 - pojazd 2
  • c - pole nr 3 - przejezdność skrzyżowania
  • x - okno

Zmiana wybór czy zmieniana jest wysokość czy szerokość odbywa się poprzez klawisze:

  • w - zmiana szerokości
  • h - zmiana wysokości

Zmiana wymiarów i pozycji pól odbywa się poprzez:

  • +/- - zwiększanie/zmniejszanie szerokości lub wysokości pola/okna
  • 2, 8, 4, 6 - sterowanie pozycją

Pozostałe sterowania:

  • s - zapisz
  • q - zakończ

Pomiary czasów reakcji

Po przygotowaniu teł i kalibracji uruchamiany jest skrypt czasRuszania.py. Ten skrypt mierzy czasy ruszania i odrzuca pomiary wykonane w złych warunkach np.: przesłonięcie przez autobus lub korek. Nie zawsze program rozpoznaje czy pomiar wykonany był w odpowiednich warunkach. Zatem należy przejrzeć momenty wykonywania pomiarów. Zmierzone czasy są zapisywane do pliku czasy.txt. Natomiast czasy wraz z momentami rozpoczęcia i zakończenia pomiaru są zapisywane do pliku czasy_ext.txt.

STEROWANIE:

z - tempo odtwarzania = 1
x - tempo odtwarzania = 10
c - tempo odtwarzania = 100
v - zatrzymanie nagrania(tempo odtwarzania = 0)

q - zakończ

Przeglądanie pomiarów

Skrypt test.py pomaga użytkownikowi przeglądać klatka po klatce momenty wykonania pomiarów. Momentem wykonania pomiaru jest przedział czasu pomiędzy ruszeniem pojazdu nr 1, a ruszeniem pojazdu nr 2. Skrypt korzysta z plików czasy_ext.txt oraz nagranie.mp4. Jeśli pomiar był wykonany w odpowiednich warunkach użytkownik może zatwierdzić go klawiszem “A”, lub w przeciwnym razie odrzucić klawiszem “P”. Po przejrzeniu wszystkich pomiarów, wszystkie pomiary wykonane w odpowiednich warunkach są zapisywane do plików czasy_ok.txt oraz czasy_ok_ext.txt. Analogicznie postępuje się z odrzuconymi pomiarami.

STEROWANIE:

n - 1 klatka do przodu
b - 1 klatka do tyłu

a - akceptacja pomiaru
p - odrzucenie pomiaru
o - odrzucenie pomiaru wraz z napisaniem uwagi dotyczącej pomiaru

q - zakończ

TODO

  • Graficzny interfejs użytkownika
  • Refaktoryzacja kodu

Bibliografia

About

Projekt zrealizowałem w trakcie studiów w ramach publikacji "Communication management to improve the efficiency of intelligent transport systems" (https://www.mdpi.com/1996-1073/13/12/3087). Celem projektu było stworzenie oprogramowania do pomiaru czasów reakcji kierowców na podstawie nagrania ze skrzyżowania w Warszawie.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages