Category: Prowadzone zajęcia

  • Zadania z TS lab 2

    Poniżej zadania wraz z rozwiązaniami z drugich zajęć z Teorii Systemów.
    (więcej…)

  • 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
      1. Pulsometr optyczny – 93796, 93784, 83468
      2. Elektrokardiograf – 93914, 93904, 93909
      3. Holter –
      4. Miograf
      5. Elektroniczny stetoskop
      6. Elektroniczny mini termometr
      7. Monitor rytmu serca płodu
      8. Sterowanie elektroniczną protezą – 93786, 93901, 93830
      9. Stresometr
      10. Sprzętowy pomiar czasu reakcji – 93894, 93949
    • Projekty Mieszane
      1. Tomograf optyczny
      2. Analizator dobowego rytmu temperaturowego
    • Projekty Programowe
      1. Analizator dobowego rytmu aktywności fizycznej – aplikacja na androida z akcelerometrem
      2. Program do analizy elektrokardiogramów – określenie rytmu serca, wariancji, wykresu widmowego
      3. System do badania słuchu – 93797, 93940, 93861
      4. System badania tęczówki oka – 93955, 93960
      5. System do badania tarczy nerwu wzrokowego – moduł rejestracji, moduł analizy
      6. System pomiaru wzrostu i wagi – kinekt – 93816, 93879
      7. Polometr – określenie pola widzenia – kamera śledzi wzrok czy użytkownik patrzy na wprost – 93855, 93808
      8. Śledzenie wzroku – Milosz Cudniewicz, Daria Szymańska, Cezary Korzeniewski
      9. Tablice Ishihary – wersja www
      10. System badania widzenia 3D – piesek z kością bez kości
      11. Pomiar rytmu oddechu – aplikacja na androida – akcelerometr
      12. System diagnowy zmian skórnych – detektor harra
      13. 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

  • Oceny z Egzaminu ZPwM

    Numer indeksu Ocena
    83413
    83468 4,0
    84423 3,0
    93784
    93786 5,0
    93796 4,0
    93797 4,5
    93804 4,0
    93816 5,0
    93830 4,5
    93842
    93877
    93879 5,0
    93894 4,5
    93901 3,5
    93914 5,0
    93934 4,0
    93938 3,0
    93940 4,0
    93949
    93955 5,0
    93960 5,0
    93961 5,0
  • 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;
    }