ONA – Zadanie bonusowe – kinect

Zadanie polega na użyciu biblioteki freenect do napisania prostego programu, który w kreatywny sposób wykorzystuje informacje z czujnika głębokości kinect.

Przykładowo, w zeszłym roku powstały gry pozwalające użytkownikom odgadywać liczbę wylosowaną przez komputer poprzez ustawianie się przed komputerem w odległości i sprawdzanie czy to za blisko, czy za daleko.

W przyszłym tygodniu (3.IV) chciałbym, aby na zajęciach zgłosiły się do mnie 2 osobowe zespoły, które chcą ten projekt realizować.

Za 2 tygodnie (10 IV) chciałbym porozmawiać z Państwem o projektach, które chcą Państwo realizować.

Na zajęciach 5 VI będziemy prezentować projekty. Będzie można zdobyć maksymalnie 15 punktów.

ONA 5 – Analiza obrazu

Dzisiejsze zajęcia poświęcimy na analizę obrazów 2d. Slajdy są tu ONA5-Obrazy

Przydać mogą się pakiety: scipy.ndimage i matplotlib

Zadania na dziś:

0. Pozyskaj przy pomocy kinect swoje zdjęcie w pracowni komputerowej zarówno w postaci macierzy głebokości, jak i obrazów rgb (przyklady tu i tu)

1. Przekształć obraz RGB do skali szarości poprzez uśrednienie składowych.

2. Wyświetl te obrazy na swoim komputerze przy pomocy biblioteki matplotlib

3. Wyświetl histogram obrazu i dokonaj jego “wyrównania” pisząc program w  języku python

f(x) = (x-min)/(max-min)*255 dla parametrów min i max

4. Zastosuj filtr Gaussowski rozmiaru k, aby “wygładzić” obraz i obejrzyj wyniki dla różnych k (3,5,7,9,11,…)

5. Napisz program wykrywający krawędzie przy pomocy filtru Sobel’a

6(*). Napisz program wykrywający cienie na obrazie z miernika odległości.

7(*). Użyj biblioteki pydicom do wczytania przekrojów przez głowę z projektu visible human. Napisz program, który zamieni te przekroje poziome na prekroje pionowe. Użyj wygładzania krawędzi.

 

ONA 2017 – 4 Sygnały

Slajdy  ONA4-DSP

Interesują nas przede wszystkim biblioteki scipy.signal i scipy.fftpack

1. Wygeneruj sygnał funkcji wielomianowej o zaburzeniu Gaussowskim, dla 10000 punktów. Wykonaj uśrednienia tego sygnału przy pomocy średniej kroczącej, albo splotu przy pomocy filtru kwadratowego, trójkątnego lub Gaussowskiego. WYniki zaprezentuj na wykresie

2. Pobierz sygnał o zajętości nukleosomowej z plików pochodzących z eksperymentu MNase-Seq ( dane tu w formacie bedgraph ) . Wczytaj go do numpy jako wektor. Przedstaw go na wykresie. Używając szybkiej trasformaty fouriera oblicz widmo Fourierowskie tego sygnału. Przedstaw je na innym wykresie. Wyzeruj część widma wysokich częstotliwości i dokonaj odwrotnej transformaty Fouriera, aby uzyskać wygładzony sygnał zajętości nukleosomami. Spróbuj tak dobrać parametry filtra, aby wykres po odwrotnej transformacie Fouriera miał okres zbliżony do 160-200 par zasad.

ONA – Zadanie 1 – Moduł python’a do normalizacji kwantylowej.

Naszym zadaniem jest napisanie modułu (pliku .py) w języku python (wersja 3), który pozwoli na wykonanie normalizacji kwantylowej zadanych obserwacji.

Normalizacja kwantylowa, to operacja na macierzy, która pozwala zapewnić, że w każdej kolumnie macierzy znajdują się wartości o tym samym rozkładzie kwantyli, przy czym wartości są możliwie bliskie wejściowym.

Opis samej metody (dot. kolumn) można zobaczyć na przykładzie w wikipedii .

Nasz program powinien działać w trybie skryptu i pobierać opcje z linii komend (np. przy użyciu Argparse). Funkcjonalności wymagane to :

– wczytywanie wejścia i zapis wyniku w postaci macierzy (.npy) i tekstu (.csv) 3 pkt
– wczytywanie z excela (.xls) przy pomocy biblioteki pandas (bonus 1pkt)
– wykonanie procedury normalizacji kwantylowej wg kolumn (5 pkt)
– obsługa normalizacji wg wierszy (1 pkt)
– wyswietlenie macierzy wynikowej i pośrrednich, lub zapis do pliku obrazka w png lub pdf (1 pkt)
– dodatkowo można uwzględnić normalizację wg mniejszej liczby kwantyli (np. 100 kwantyli dla macierzy 1000 elementowej), przy założeniu liniowej zmiany wartości pomiędzy kwantylami (bonus 2 pkt)

Zadanie w postaci emaila z załączonym plikiem .py (nieskompresowanym) przesyłamy (z konta studenckiego) do 27 III  (godz. 00:00 w dowolnej strefie czasowej) na adres e-mail bartek@mimuw.edu.pl z dopiskiem [ONA-2017-1] w tytule (subject).

Po terminie można dostać maksymalnie 5 punktów.

ONA 2017 – 3 – Wykresy

Dzisiaj zajmujemy się wykresami.

Slajdy są tu ONA3-wykresy

Zadania na dziś:

1. Narysuj wykres podobny do tego ze slajdu nr. 14  z wykładu. Uwzględnij opisy osi, zakresy wartości, kolory, znaczniki wartości, legendę i tytuły osi oraz wykresów.

2. Narysuj wykres 10*sin(x)+normal(0,1) dla 1000 punktów w zakresie 0,10. Przyda się funkcja normal().

3. Napisz program, który wykona 1000 prób rzutu 10 kostkami. Narysuj na jednym wykresie 3 przenikające się histogramy (alpha=0.25): suma oczek na kościach parzystych (0,2,4,6,8), suma oczek na kościach nieparzystych (1,3,5,7,9), suma oczek na wszystkich kościach. Może przydać się funkcja randint().

4. Przedstaw dane z wykresu 3. w postaci 3 wykresów pudełkowych (boxplot)

5. Narysuj powierzchnię 3d (x,y,z) in linspace(0,1,100) gdzie z=y*cos(x)+(1-y)*sin(x), Może być przydatny ten przykład

5. Narysuj mapę ciepła dla tej samej powierzchni. Użyj różnych map kolorów.

 

ONA 2/2017 – Numpy

Slajdy do wykładu – ONA2-Macierze

Ćwiczenia:

  1. Stwórz macierze A i B o wymiarach  1000×1000 zawierające wartości A[i,j]==i*3-j*5 i [i,j]==np.sqrt(A[i,j]) (Zauważ, że to wymaga wartości urojonych, a więc macierzy typu complex64 i wartość sqrt(-1) ->.j)
  2. Napisz funkcję poz(indeksy, shape), która dla zadanej krotki indeksów zwraca liniową pozycję elementu o zadanych indeksach w wielowymiarowaj macierzy o kształcie shape.
  3. Korzystając z broadcastingu i mnożenia macierzy zmień znak elementów w macierzy B, których suma indeksów jest nieparzysta
  4. korzystając z metody sort() , posortuj macierz 3-wymiarową wg. drugiej współrzędnej i obejrzyj wynik.
  5. Korzystając z funkcji frompyfunc() napisz funkcje wektorowe, które liczą a) sumę kwadratów dwóch macierzy  (dwie macierze do jednej)
    b) iloraz i resztę z dzielenia całkowitoliczbowego przez 17 (jedna macierz wejściowa i dwie macierze wyjściowe)
  6. Korzystając z modułu time, porównaj prędkość funkcji liczących N potęg dwójki – na liście i w wektorze. Dla jakich wartości N warto używać macierzy?