Komunikacja człowiek-komputer

W pierwszej części zajęć laboratoryjnych przedmiotu KCK zapoznamy się ze środowiskiem python. Następnie zajmiemy się podstawami przetwarzania obrazu. Zajęcia #3 są poświęcone zapoznaniu się z możliwościami biblioteki openCV, a zajęcia #4-#6 – zaproponowaniu i implementacji własnej aplikacji dokonującej przetwarzania obrazu. Dalsze części laboratoriów będą poświęcone przetwarzaniu dźwięku, sensorom (Leap Motion, ew. EEG) oraz użyteczności oprogramowania.

Rezultaty poszczególnych części powinny zostać opisane w sprawozdaniach przygotowywanych samodzielnie lub w parach (ogłaszane przez prowadzącego dla poszczególnych zadań). Środowiskiem zalecanym do pisania sprawozdań jest LaTeX, a do tworzenia ewentualnych wykresów – matplotlib lub inny automatyczny generator taki jak R (ich znajomość przyda się na przyszłość).

Sprawozdania   [szablon]

Tematyka Elementy Termin: 23:59
Podstawy pythona
(2 pkt)

Uzupełnienie do laboratorium (~50min): historia i specyfika pythona, składnia i podstawowe polecenia [video].

Unikanie powtórzeń, "wierszyków" w źródle, zaszytych/ukrytych stałych – tworzenie uniwersalnych funkcji, czyli podstawowy refactoring podczas pisania kodu.

  1. (max 1-2 akapity) Co było szczególnie trudne, a co łatwe? Czy przy instalacji lub pisaniu skryptu pojawiły się nieoczekiwane trudności? Wyjaśnienie działania skryptu i głównych funkcji (może być jako komentarz w źródle).
Dzień przed zajęciami #2
Przetwarzanie obrazu – zadanie wstępne
(3 pkt)

Przydatne materiały: OpenCV oraz bindings: java, C# i inne.

Uzupełnienie do laboratorium (~40min [video]): obraz rastrowy, reprezentacje koloru (RGB, CMY, CMYK, HSV). Tajemnica fioletu i purpury/magenty/fuksji [1], [2], [3].

Operacje na histogramie, na charakterystyce (we/wy) oraz filtrowanie obrazu [video].

  1. (pomiń w sprawozdaniu) Zapoznaj się z zasadą i sposobem działania przekształceń: erozji, dylatacji, otwarcia i zamknięcia.
  2. (max 2 strony) Opis użytych w zadaniu operatorów i filtrów: co każdy z nich dostaje na wejściu, co daje na wyjściu, jaka jest zasada działania. Ciąg przekształceń (można użyć graphviz'a do jego pokazania) i ich parametry. Ilustracja działania – komentarz do przykładów demonstrujących wady i zalety zaproponowanego podejścia; skuteczność (w ilu obrazach na ile metoda dała w pełni poprawne rezultaty).
Dzień przed zajęciami #x
Przetwarzanie obrazu – aplikacja
(5 pkt)

Uzupełnienie do laboratorium (~40min): grafika wektorowa a rastrowa; zalety i zastosowania [video]. Jak działa i kiedy używać png, a kiedy jpg. Momenty Hu [1], [2], [3a], [3b] i transformata Hougha [video]. Macierz pomyłek i trafność klasyfikowania; automatyzacja; optymalizacja [video].

  1. (max 1 strona) Opis użytych w zadaniu operatorów i filtrów: co każdy z nich dostaje na wejściu, co daje na wyjściu, jaka jest zasada działania. Ciąg przekształceń (można użyć graphviz'a do jego pokazania) i ich parametry.
  2. (max 5 stron) Cel eksperymentu, pochodzenie danych i przykładowe obrazy, dyskusja skuteczności (macierz pomyłek, trafność klasyfikowania, zdolność dyskryminacji, problemy) i efektywności (on-line/off-line, fps, itp.).

Popularne przykłady zadań to

  • wykrywanie określonych obiektów (dłoń, twarz, oko, nos, usta, sylwetka człowieka, krzesło, monitor, samochód, tablica rejestracyjna, samolot, drzewo, okulary, parasol, ...),
  • wykrywanie ruchu obiektów (obroty rękami, gesty, taniec),
  • wykrywanie własności obiektów (wygięcie ust, emocje na twarzy, rodzaj samochodu/samolotu),
  • wykrywanie relacji obiektów (pod, nad, za, jest dalej niż),
  • AR (augmented reality).
Dzień przed zajęciami #x
Dźwięk i mowa
(3 pkt)

Uzupełnienie do laboratoriach (~90min): parametry analogowego i cyfrowego sygnału dźwiękowego, zasada działania FT (ciekawostka: IFT, FT), widmo, spektrogram, aliasing i metody zabezpieczenia się przed nim, autokorelacja, wykrywanie częstotliwości podstawowej w mowie. Dla chętnych: analiza widma oraz zaawansowane informacje o cepstrum.

Materiały wideo, 6 części tutaj.

(pomocne programy: Audacity, SoX)

Program rozpoznający płeć piszemy w całości samemu (bez korzystania z gotowych fragmentów źródeł).

Wczytywanie plików/strumieni dźwiękowych (java): tutorial, pakiet sampled

Biblioteka do wczytywania wav'ów

Biblioteka do FFT


  1. (pomiń w sprawozdaniu) Czym jest dźwięk? Jak dobrać częstotliwość próbkowania i kto podał twierdzenie o próbkowaniu? Co to jest aliasing (dla chętnych [1], [2]) i anty-aliasing? Co to jest ton podstawowy, formant, dithering?
  2. (pomiń w sprawozdaniu) Jak brzmi sygnał sinusoidalny, prostokątny, piłokształtny, a jak narysowane ręcznie? Obejrzyj i wyjaśnij ich widmo.
  3. (pomiń w sprawozdaniu) Implementacja programu rysującego wykres mocy/amplitudy i spektrogram (sygnał off-line, dla chętnych on-line). Jak liczona jest FFT, co podajemy na wejściu i co dostajemy? Zrzuty z ekranu (pokazujące spektrogram i wykres mocy oraz wartości na skali pionowej i poziomej) i użyte parametry (liczba wartości w oknie, ew. zastosowane okno czasowe) dla samodzielnie nagranych próbek: mowy, śpiewu o zmiennej wysokości, dźwięku okresowego, szumu, ew. innych interesujących.
  4. (max 2 strony) Rozpoznawanie płci (sygnał off-line, dla chętnych on-line) – eksperyment z wykorzystaniem metody autokorelacji, HPS lub analizy diwma. Jaką uzyskano trafność klasyfikowania? Podaj macierze pomyłek. Test na próbkach (tych albo tych) oraz, dla chętnych, na nagranych samemu; czy można ten test oszukać mówiąc w specyficzny sposób? Jaką trafność (w procentach) na tych danych dałaby decyzja klasy większościowej?
Dzień przed zajęciami #x
Użyteczność
(waga 3)
Prezentacja 10–12 minut (przetestujcie, czy się mieścicie w czasie!) zawierająca:
  1. Nazwa aplikacji, autorzy, motywacje, wartość dodana w stosunku do istniejących już rozwiązań (znajdź, porównaj!), innowacyjność
  2. Identyfikowanie potrzeb: badani (>2), sytuacje, lista potrzeb, obserwacje i wnioski
  3. Prototyp papierowy (zdjęcia), obserwacje i wnioski.
  4. Ewaluacja heurystyczna (film/zdjęcia). Zidentyfikowane problemy i ich naprawienie. Ewolucja interfejsu – kolejne ulepszenia prototypu.
  5. Opinia badanych użytkowników (2.) używających ostatecznych prototypów (4.); potencjał do wdrożenia
Pokaz na ostatnich zajęciach (każdy członek zespołu zabiera głos podczas prezentacji)

Przed wysłaniem sprawozdania upewnij się, że:

  • Podałeś pochodzenie źródłowe wszystkich cytowanych w sprawozdaniu fragmentów i wykorzystanych materiałów (literatura)
  • Sprawdziłeś pisownię tekstu (spell-check)
  • Wykresy (i w miarę możliwości rysunki) są wektorowe (pdf, ps, svg itp.)
  • Zatytułowałeś mail tak:   [KCK] sprawozdanie 1, Janek Kowalski & Marcin Nowak
  • Wysyłasz do prowadzącego laboratorium (maciej.komosinski@cs.put.poznan.pl / pawel.liskowski@cs.put.poznan.pl / agnieszka.mensfelt@cs.put.poznan.pl / michal.tomczyk@cs.put.poznan.pl) dwa pliki:
    • sprawozdanie (pdf), nazwa zawiera numer sprawozdania i nazwiska autorów:   1_KowalskiNowak.pdf
    • źródła programu (zip – same źródła):   1_KowalskiNowak.zip. Jeśli źródło to jeden plik, wyślij go bezpośrednio bez kompresowania.
  • Zwykle pdf powinien mieć < 1 MB, a zip < 50 KB.

Wszelkie sugestie do przedmiotu i poszczególnych zajęć możesz zgłaszać tutaj.