Zagadnienia - update 18.11.2009
Transkrypt
Zagadnienia - update 18.11.2009
Informatyka medyczna - specyfikacja podstawowego programu 18 lutego 2011 0.1 Moduły obowiązkowe Aplikacja powinna umożliwiać wczytanie oraz operowanie jednym plikiem dźwiękowym (chętni mogą stworzyć aplikację MDI - wiele plików jednocześnie). 0.1.1 Nagłówek Należy umożliwić wczytanie plików *.wav oraz *.txt(EMG). Dane z nagłówka mają być dostępne w interfejsie z menu w dowolnym momencie dla aktywnego okna. *.emg Specyfikacja plików emg nagłówek MR32 ASCII Name piatka Frequency 1500 Date 01-01-2000 dane Time,s RT AB- RT MED. DUCT.POL., TRIuV CEPS,uV 0.0000 0.0007 0.0013 0.0020 -1.32431 -3.1558 -1.01437 2.02873 4.88089 3.66462 3.3645 3.66462 RT LAT. TRICEPS,uV 7.38861 4.95177 5.56098 6.17019 RT BICEPS BR.,uV RT BICEPS CB.,uV RT AB- Activities DUCT.POL., uV -3.49425 -3.79548 -3.79548 -3.49425 -2.13638 -2.13638 -3.62537 -4.53172 55.2385 37.2326 45.4726 56.4592 1 0 0 0 Dane techniczne 1. po każdej serii jest tylko jeden enter! (jedna seria w jednej linii) na niektórych edytorach może wydawać się, że są dwa - ale jest jeden. 2. nie interesuje nas pierwsza i ostatnia kolumna (czyli Time [s] oraz Activities) 3. etykiety serii też proszę wczytać → żeby w comboboksie można było sobie wybierać kanały do wyświetlania po etykiecie 4. ilość próbek w kanale (trzeba przecież wiedzieć jaką tablicę zaalokować) można wyestymować po ilości enterów w pliku 5. może być różna ilość kanałów - mogą być 4 a może być 10. W przykłądowych plikach jest 6. 6. każda kolumna to jeden kanał kolejnych próbek → możecie spokojnie te wartości skalować na shorty!! 7. tak jak wav na stałe był w przedziale < −32tys; +32tys > tak każdy kanał EMG jest w przedziale < −10000; +10000 > → proszę więc skalować na taki przedział *.wav Dane nagłówka: Nagłówek Nazwa pola Wielkość w Opis bajtach chunkID 4 Tekst ASCII “RIFF” - okrela standard RIFF chunkSize 4 Rozmiar całego pliku w bajtach minus 8 bajtów (pola chunkID, chunkSize) format 4 Tekst ASCII - “WAVE” chunkID 4 Tekst ASCII “fmt ” chunkSize 4 Rozmiar tego bloku w bajtach minus 8 bajtów (pola chunkID, chunkSize) audioFormat 2 1 - zapis bez kompresji, 1> użyto kompresji FMT numChannels 2 Liczba kanałów 1-mono, 2-stereo sampleRate 4 Częstotliwość próbkowania 800, 44100 byteRate 4 Liczba bajtów na sekundę (wszystkie kanaly) = sampleRate*numChannels*bitsPerSample/8 blockAlign 2 Liczba bajtów na próbkę (wszystkie kanaly) = numChannels*bitsPerSample/8 bitsPerSample 2 Liczba bitów na próbkę (przypadających na jeden kanał) - 8 lub 16 chunkSize Ewentualne dodatkowe parametry. Pole mo-16 że mieć różną długość!!! chunkID 4 Unikalny tekst ASCII opisujący ten blok [inne bloki] chunkSize 4 Rozmiar bloku w bajtach data chunkSize Dane tego bloku chunkID 4 Tekst ASCII “data” DATA chunkSize 4 Rozmiar danych dzwiękowych w bajtach = numSamples*numChannels*bitsPerSample/8 data chunkSize Kolejne próbki Dane techniczne 2 Plik wczytujemy w całości do pamięci operacyjnej. Nie są one tak duże, by było to niemożliwe/nieopłacalne. Zakładamy, że plik jest 16-bitowy ze znakiem (−32768...32767) i nagrany w trybie mono bez kompresji (tylko jeden kanał będzie w DATA). Jeśli tak nie będzie - wyświetlamy komunikat o nieobsługiwanym formacie pliku. 0.1.2 Oscylogram Należy wyświetlić oscylogram wczytanego pliku dźwiękowego (wav) lub wybranego kanału pliku EMG. Oscylogram musi dawać możliwość powiększania, pomniejszania, przesuwania (scrollowania). Musi również posiadać skalę czasu, która powiększa/pomniejsza/przesuwa się wraz z oscylogramem - implementacja dowolna. Okno może się składać z oscylogramu mniejszego o stałej wysokości pokazującego cały plik, oraz większego, posiadającego całą w/w funkcjonalność. Parametry: • skala s - interpretacja tego parametru jest dowolna, ważne żeby dzięki jego zmianie można był przybliżać od widoku całego pliku do skali 1:1 (jedna próbka na jeden piksel). Jednym z pomysłów jest zdefiniowanie s aby wskazywała stosunek próbek na piksel w przybliżonym oscylogramie do próbek na piksel w oscylogramie pełnym. Np. stosunek 2 : 1 oznacza narysowanie połowy oscylogramu w oknie przybliżenia oscylogramu. • przesunięcie of f - indeks próbki od której rozpoczynamy rysowanie Aby wyświetlić oscylogram na podstawie wartości (−32768.. + 32767) należy: • jeśli próbek na piksel jest mniej niż 10 (wartośc przybliżona, należy ją sobie wybrać doświadczalnie), należu kolejne punkty łączyć liniami. • jeśli próbek jest więcej, należy znaleźć minimum i maksimum i narysować pionową linię między jedną a drugą wartością Należy uwzględnić obie możliwości aczkolwiek rysowanie tylko sposobem pierwszym też jest dopuszczalne. Trzeba zwrócić uwagę na koniec pliku i na bardzo krótkie pliki. Nie można dopuścić do sytuacji w której oscylogram kończy się rysować na środku wykresu, ponieważ doszliśmy do końca tablicy z próbkami. Z tego powodu należy powstawiać odpowiednie ograniczenia dla skali i przsunięcia. 3 Należy umożliwić zaznaczanie fragmentu oscylogramu i zmianę rozmiaru tego fragmentu w oknie powiększenia. Jeśli nie został wybrany zakres, a jedynie miejsce w pliku należy je zaznaczyć pionową linią. 0.1.3 Odtwarzanie pliku - tylko format wav Interfejs ma umożliwiać zaznaczenie dowolnego fragmentu oscylogramu i odtworzenie go. Może również umożliwiać nagrywanie. Jeśli nie jest zaznaczony żaden fragment - plik ma się odtwarzać w całości. Parametry do zmiany: • szerokość okna • przesunięcie okna • zaznaczenie fragmentu oscylogramu 4