Poniżej zadania wraz z rozwiązaniami z drugich zajęć z Teorii Systemów.
(więcej…)
Category: Prowadzone zajęcia
-
Zadania z TS lab 2
-
Wyniki wejściówki TS lab 2
Numer Indeksu Liczba Punktów 104042 0,75 104046 0,6875 104031 0,5 104058 0,875 104052 1 104061 0,1875 99329 83342 0,375 93856 0,6875 104218 0,5 104048 0 104041 1 104040 1 104029 0,55 104034 0,375 93839 1 104060 0,625 104037 0,875 104154 0,5 104043 0,625 0,3 0,5 104208 0,5 104014 0 104013 0,875 104022 0,5625 99674 0,5625 104197 0,6375 99752 0,35 104205 0,025 104222 0,5 100309 0,625 104213 0,3125 104015 1 Punktacja
Ocena Zakres punktów 5,0 od 0,9 do 1,0 4,5 od 0,8 do 0,9 4,0 od 0,7 do 0,8 3,5 od 0,6 do 0,7 3,0 od 0,5 do 0,6 2,0 od 0,0 do 0,5 -
Zadanie z TS lab 1
Poniżej zadania wraz z rozwiązaniami z pierwszych zajęć z Teorii Systemów.
(więcej…) -
Lista proponowanych projektów z Przetwarzania Sygnałów Biomedycznych
Projekty mogą być realizowane w grupach 2-3 osobowych.
- Projekty Sprzętowe
- Pulsometr optyczny – 93796, 93784, 83468
- Elektrokardiograf – 93914, 93904, 93909
- Holter –
- Miograf
- Elektroniczny stetoskop
- Elektroniczny mini termometr
- Monitor rytmu serca płodu
- Sterowanie elektroniczną protezą – 93786, 93901, 93830
- Stresometr
- Sprzętowy pomiar czasu reakcji – 93894, 93949
- Projekty Mieszane
- Tomograf optyczny
- Analizator dobowego rytmu temperaturowego
- Projekty Programowe
- Analizator dobowego rytmu aktywności fizycznej – aplikacja na androida z akcelerometrem
- Program do analizy elektrokardiogramów – określenie rytmu serca, wariancji, wykresu widmowego
- System do badania słuchu – 93797, 93940, 93861
- System badania tęczówki oka – 93955, 93960
- System do badania tarczy nerwu wzrokowego – moduł rejestracji, moduł analizy
- System pomiaru wzrostu i wagi – kinekt – 93816, 93879
- Polometr – określenie pola widzenia – kamera śledzi wzrok czy użytkownik patrzy na wprost – 93855, 93808
- Śledzenie wzroku – Milosz Cudniewicz, Daria Szymańska, Cezary Korzeniewski
- Tablice Ishihary – wersja www
- System badania widzenia 3D – piesek z kością bez kości
- Pomiar rytmu oddechu – aplikacja na androida – akcelerometr
- System diagnowy zmian skórnych – detektor harra
- Ocena powrotu włośniczkowego
Każda grupa przygotowuje harmonogram prac nad projektem który musi zawierać:
- Opis celu – jak bedzie działać projekt
- Datę ukończenia projektu
- Podział obowiązków pomiedzy członków grupy
- 2 kamienie milowe – przewidywany stanu projektu na dzień 1 listopad i 1 grudzień
Harmonogram nalezy przesłać do prowadzącego zajęcia w terminie do 17-10-2012
- Projekty Sprzętowe
-
Szablony filtrów z okienkiem właściwości
W archiwum DirectShow Filter Template – PropertyPage znajduje sie 5 szablonów filtrów z szablonem okienka właściwości:
- Transform – Filtr przeznaczony do realizacji projektów z jednym wejściem i jednym wyjściem. Przykładem takiego projektu jest filtr konwersji RGB do YUV
- DualInput – Filtr przeznaczony do realizacji projektów z dwoma wejściamy i jednym wyjściem. Przykładem takiego projektu jest filtr składający dwa obrazu do obrazu typu SideBySide.
- DualOutput – Filtr przeznaczony do realizacji projektów z jednym wejściem i dwoma wyjściami. Przykładem takiego projektu jest filtr wyszukujący i śledzący twarz
- Source – Filtr przeznaczony do realizacji projektów filtów źródłowych z jednym wyjściem. Przykładem takiego projektu jest filtr odczytujący pliki BMP z dysku
- Sink – Filtr przeznaczony do realizacji projektów filtów docelowych z jednym wejściem. Przykładem takiego projektu jest filtr zapisujący pliki BMP z dysku
Po rozpakowaniu archiwum w pierwszej kolejności nalezy przekompilować klasy bazowe znajdujące się w katalogu BaseClasses. W tym celu otwieramy plik projektu make.visual/baseclasses_vc2005.sln w środowisku Visual Studio 2005 lub odpowiednio nowszy projekt w nowszym środowisku. Z menu build wybieramy opcje Rebuild Solution. Nastepnie zamykamy projekt.
Po przeanalizowaniu projektu który Państwo realizują należy wybrać odpowiedni szablon filtru.
W zależności od wybranego typu projektu należy zmodyfikować następującą funkcję:
- Transform – Transform
- DualInput – ProcessSamples
- DualOutput – Receive
- Source – DeliverSample
- Sink – Receive
-
Sekwencja testowa
Podczas opracowywanie filtru DirectShow zdarzają sie różne problemy z odtwarzaniem sekwencji które nie mają przyczyny w opracowywanym kodzie filtru. W takich przypadkach zalecam wykorzystanie załaczonej prostej sekwencji testowej.
Foreman – QCIF YUV 4:2:0 foreman_qcif.rar
-
Bio Lab04
Pomiar czasu rekcji na sygnał wizualny, dźwiekowy.
Pomiar precyzji ruchu i drgań mimowolnych.
Pomiar dokładności prowadzenie myszy.
Ocena stopnia upośledzenia zdolności motorycznych.System badania wzroku, system badania daltonizmu.
-
Zmiana formatu pinu wyjściowego
Podczas tworzenia filtru nieraz istnieje potrzeba zmiany formatu pinu wyjściowego. Zmianę formatu pinu wyjściowego rozważymy na przykładzie filtru Transform. Chcemy zmienić obraz wyjściowy w taki sposób aby był 2 razy wyższy.
(więcej…) -
Techniki SSE i AVX
Poniżej znajduje się kod programu który umożliwia porównanie wydajności obliczeń z wykorzystaniem instukcji SIMD zawartych w rozszerzeniach SSE i nowszym AVX. Wykorzystanie techniki AVX wymaga środowiska Visual Studio 2010 i procesora serii Core i3 i5 i7 oznaczego 4 cyfrowym numerem np Core i3 2100. Rozkazy serii SSE dostępne są we wszystkich nowoczenych procesorach.
#include <windows.h> #include <stdio.h> #include <math.h> #include <emmintrin.h> #include <immintrin.h> #include <intrin.h> int ops_scalar (float* a, float* b, float* c, float* d, int N) { for(int i=0; i<N; i++) { d[i] = a[i]*b[i] + sqrt(c[i]); } return 0; } int ops_SSE (float* a, float* b, float* c, float* d, int N) { for(int i=0; i<N; i+=4) { __m128 A = _mm_load_ps(&(a[i])); //Załadowanie 4 float __m128 B = _mm_load_ps(&(b[i])); __m128 C = _mm_load_ps(&(c[i])); __m128 mul = _mm_mul_ps(A, B); //A*B __m128 sqrt = _mm_sqrt_ps(C); //Sqrt(C) __m128 sum = _mm_add_ps(mul, sqrt); //A*B+Sqrt(C) _mm_store_ps (&(d[i]),sum); //Zapis wyniku do pamięci } return 0; } int ops_AVX (float* a, float* b, float* c, float* d, int N) { for(int i=0; i<N; i+=8) { __m256 A = _mm256_load_ps(&(a[i])); __m256 B = _mm256_load_ps(&(a[i])); __m256 C = _mm256_load_ps(&(a[i])); __m256 mul = _mm256_mul_ps(A, B); __m256 sqrt = _mm256_sqrt_ps(C); __m256 sum = _mm256_add_ps(mul, sqrt); _mm256_store_ps(&(d[i]),sum); } return 0; } int main( int argc, char *argv[ ] ) { fprintf(stdout, "START\n"); int N = 100000000; unsigned __int64 ticks; //Alokacja pamieci z wyrównaniem float* a = (float*)_aligned_malloc(sizeof(float)*N, 32); float* b = (float*)_aligned_malloc(sizeof(float)*N, 32); float* c = (float*)_aligned_malloc(sizeof(float)*N, 32); float* d = (float*)_aligned_malloc(sizeof(float)*N, 32); //Załadowanie losowych danych do przetworzenia for(int i=0; i<N; i++) { a[i] = rand(); b[i] = rand(); c[i] = rand(); } ticks = __rdtsc(); //Pomar czasu w taktach ops_scalar(a, b, c, d, N); ticks = __rdtsc() - ticks; printf("Scalar: %I64d\n", ticks); ticks = __rdtsc(); ops_SSE(a, b, c, d, N); ticks = __rdtsc() - ticks; printf("SSE: %I64d\n", ticks); ticks = __rdtsc(); ops_AVX(a, b, c, d, N); ticks = __rdtsc() - ticks; printf("AVX: %I64d\n", ticks); _aligned_free(a); _aligned_free(b); _aligned_free(c); _aligned_free(d); system("pause"); return 0; }