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

Podobne dokumenty