Projekt aplikacji

W dokumencie PRACA DYPLOMOWA MAGISTERSKA (Stron 26-52)

Obrazek 21. – Logo Microsoft .NET Framework.9

Oprogramowanie zostało napisane w języku C#, przy użyciu środowiska .NET Framework i wykorzystaniu dostępnych dodatków ułatwiających pracę programiście.

6.1. Przyjęta metoda programowania

Metoda programowania zastosowana w projekcie zakłada podzielenie projektu na moduły (klasy), które posiadają View do komunikacji z użytkownikiem oraz Back-End do przetwarzania danych dla każdego z nich osobno.

6.1.1. Dostępne możliwości

Wybór właściwie oparł się o stworzenie aplikacji okienkowej, stacjonarnej bez wbudowanej bazy danych, co wyklucza konieczność używania ORM-ów. Modele pisania aplikacji web-owych i mobilnych zostały odrzucone ze względu na poziom obliczeń i przepływ ilości danych, jakie występują w projekcie.

9 Źródło: http://download.komputerswiat.pl/media/2011/3/105577/screen-net-framework-sp1-1.jpg

6.2. Konstrukcja UI użytkownika 6.2.1. Menu główne

Menu główne jest trzonem aplikacji, w którym odbywa się proces wywołania innych grup widoków, a także wczytywanie plików i ich ustawienia przekazywane do widoków podrzędnych.

Po kliknięciu przycisku „wybierz plik” na każdej z zakładek użytkownik musi wybrać plik o formacie .bvh do załadowania, a w przypadku porównywania próbek minimum dwa pliki.

Naciśnięcie przycisku Narysuj wykres, Pokaż FFT i Porównaj uruchamia procedurą rysowania wykresów i wyświetla je na panelach.

Obrazek 22. – Okno programu po uruchomieniu.

Obrazek 23. – Okno wyboru pliku do wczytania.

Obrazek 24. – Komunikat po wczytaniu pliku.

6.2.2. Grupa widoków podrzędnych

W nawiązaniu do podrozdziału 6.1, z widoku menu głównego są wywoływane widoki podrzędne, które są umiejscowione na panelach na odpowiednich zakładkach.

6.2.2.1. Wykres wczytanego pliku

Na ekranie jest wyświetlony czas wczytanego pomiaru wraz z wykresem, którym można manipulować w celu dokładniejszej analizy danych.

Bezpośrednio w tym widoku istnieje możliwość podejrzenia danych („Tabela danych”) oraz obliczenie całek wraz z rozpoznawaniem płci („Całki i rozpoznawanie płci”).

Obrazek 25. – Ekran przedstawiający wykres 3D.

6.2.2.2. Właściwości całkowe

Po kliknięciu przez użytkownika w „Całki i rozpoznawanie płci” jeśli jest wybrane lewe biodro, płaszczyzna XY oraz Różnice, powinien zostać wyświetlony komunikat nt.

rozpoznawania płci.

Bez względu na rozpoznawanie jest wyświetlany wynik całek dla dwóch osi oraz suma pól prostokątów kreślonych przez punkty w przestrzeni.

Obrazek 26. – Komunikat rezultatu rozpoznawania (po lewej) i fragment ekranu z całkami (po prawej).

Obrazek 27. – Ekran zapisu wyniku całkowania.

6.2.2.3. Wykres FFT dla 2D

Bezpośrednio po wytworzeniu wykresu użytkownik może podejrzeć dane („Tabela danych”), które zostały zwizualizowane. Jest także możliwa manipulacja wykresem jak w przypadku zwykłych wykresów z poprzedniego punktu.

Obrazek 28. – Ekran z FFT 2D na wykresie 3D.

6.2.2.4. Tabele i ich zapis

Sekcja widoku z tabelami danych została stworzona ze względu na zapotrzebowanie szczegółowego podglądu tablic i dania użytkownikowi możliwości poprzez naciśnięcie

„Eksportuj do pliku” możliwości zapisu do pliku programu Microsoft Excel.

Obrazek 29. – Ekran z tabelą gotową do eksportu dla programu Excel.

Obrazek 30. – Ekran zapisu pliku .xls.

6.2.2.5. Panel porównywania obiektów

W momencie kliknięcia porównywania plików zostaje wyświetlony komunikat, który opisuje czy dane próbki są do siebie podobne i w wartości wyrażonej w % podaje prawdopodobieństwo, iż badane próbki należą do tego samego człowieka.

Obrazek 31. – Komunikat z raportem o podobieństwie nagrań.

Obrazek 32. – Ekran porównawczy dwóch nagrań.

6.3. Ładowanie plików BVH 6.3.1. Parser BVH

Jest to zmodyfikowana wersja silnika używana również przez Pawła Czecha w jego pracy magisterskiej i inżynierskiej. Poniżej prezentacja klasy przechowującej działanie mechanizmu.

Odpowiednie sekcje hierarchii plików .bvh są przechowywane w listach.

Kod źródłowy 1. - Klasa parsera, przechowująca dane.

6.3.2. Struktura wczytywania pliku.

Wczytywanie samego pliku jest ustawione tak, aby punkty ładowane były z gęstością 0.2 sekundy. Umożliwia to optymalną prace programu.

Kod źródłowy 2. – Wczytywanie pliku do programu.

public class BVHParseResult

public BVHParseResult(string Results, List<BVHSkeleton>

Skeletons, List<BVHMotion> Motions)

6.4. Metoda całkowa

Ogólne działanie metody całkowej polega na zliczeniu sumy punktów dla konkretnej osi.

Jednym wyjątkiem jest metoda całkowa dla pól powierzchni, gdzie sedno przetwarzania tkwi w zliczeniu sum pól kreślonych przez prostokąty względem osi X oraz Y.

S = ∑ 𝑥(n)

Wzór 2. – Suma pól powierzchni – całka dla pól powierzchni.

Kod źródłowy 3. – Metoda obliczająca całki.

private void calculatingData(float[,] tempPointsX)

+ tempPointsX[i+1, 2])* ValueToX.value / 2));

if (tempPointsX[i, 1] != 0 && tempPointsX[i, 2] != 0) TwoDtype = Math.Abs(TwoDtype + ((((tempPointsX[i, 2] * tempPointsX[i, 1]) / 2) + ((tempPointsX[i + 1, 2] * tempPointsX[i + 1, 1]) / 2)) *

6.5. Metoda FFT.

Obliczenia FFT są oparte na bazie metod dostarczonych przez ILNumerics, dzięki czemu nie była wymagana implementacja całego silnika FFT.

Oprogramowanie użyte w projekcie osiąga identyczny efekt jak użycie programu MATLAB lecz całkowicie uniezależniania działanie programu od narzędzia zewnętrznego. Gotowe rozwiązanie gwarantuje poprawności przetwarzania oraz bardzo dobrą optymalizację w stosunku do tradycyjnych rozwiązań.

Wykorzystane metody w programie to:

 fft2() – oblicza transformatę.

 ifft2() – oblicza odwrotną transformatę.

 ifft2sym() – oblicza odwrotną transformatę wzdłuż pierwszych dwóch wymiarów tablicy.

 abs() – wartość absolutna (rzeczywista).

Wzór 3. – Dwuwymiarowa dyskretna transformata Fouriera.10

Kod źródłowy 4. – Fragment z implementacją FFT2D przy pomocy ILNumerics.

10 Źródło: https://pl.wikipedia.org/wiki/Dyskretna_transformata_Fouriera - Dyskretna transformata Fouriera [Wikipedia]

6.6. Rysowanie wykresów

Jego wytwarzanie polega na rzucie dwuwymiarowej tablicy danych typu float na wykres 3D. Poprzedzane jest to oznaczeniem osi, a także wyliczeniu połączeń między punktami w przestrzeni (są zaznaczane czerwonymi liniami).

Kod źródłowy 5. – Metoda kreśląca wykresy 3D.

public void Draw()

ObjectsInGraph.First<ILLinePlot>("Points").Update(points);

for (int i = 0; i < points.S[1]; i++)

ObjectsInGraph.First<ILLinePlot>("Line").Update(points);

GraphPanel3D.Scene.Configure();

GraphPanel3D.Scene.First<ILPlotCube>().Reset();

GraphPanel3D.Refresh();

}

6.6.1. Wczytywanie punktów

Poniżej przedstawiono przykład prezentujący fragment wczytywania punktów przez metodę, która pobiera dane przygotowane przez parser, a następnie pobrane punkty przypisuje do tablicy. Ostatnim krokiem jest przesłanie tak zadeklarowanej tablicy do dalszego przetwarzania.

6.6.2. Możliwości manipulacji

Cała innowacja, którą posiada skonstruowany program to wykorzystanie IL_panelu dostępnego z ILNumerics.

Jego działanie jest oparte przez twórców o bibliotekę OpenTK, która wykorzystując OpenCL rysuje na ekranie oraz obsługuje event’y odpowiedzialne m.in. za takie działanie na wykresach:

 Rotację,

 Przesuwanie,

 Przybliżanie,

 Oznaczanie.

Poniższy przykład kodu pokazuje inicjalizację panelu do wyświetlania wykresów.

Jest na nim generowana scena z definicją kolorów połączeń między punktami (w tym przypadku typu Linia o kolorze czerwonym).

Kod źródłowy 7. – Ładowanie wykresu.

private void 3D_Load(object sender, EventArgs e) {

6.7. Moduł identyfikacji badanych obiektów 6.7.1. Algorytm rozpoznawania

Obrazek 33. – Schemat algorytmu rozpoznawania.

Działanie algorytmu opiera się o wyliczone wartości całek z osi X i osi Y oraz całki z sum pól powierzchni. Rozpoznawanie odbywa się tylko, gdy użytkownik wybierze płaszczyznę XY. Obliczone dane są porównywane do wzorcowych i w wypadku zwycięstwa jednej z dwóch opcji otrzymujemy wynik oraz jego skalę wyrażoną w procentach.

Na następnej stronie kod źródłowy działania algorytmu.

Kod źródłowy 8. – Algorytm rozpoznawania płci. wzorca w " + sumOfpercent.ToString() + "%", "Wykryto: Mężczyzne.",

MessageBoxButtons.OK, MessageBoxIcon.Question);

} else {

MetroMessageBox.Show(this, "Załadowana probka jest podobna do wzorca w " + sumOfpercent2.ToString() + "%", "Wykryto: Kobiete.",

MessageBoxButtons.OK, MessageBoxIcon.Question);

} }

6.8. Testy oprogramowania

Testy jakościowe przeprowadzone na oprogramowaniu wyeliminowały błędy grube ze względu na analizę programu linijka po linijce, a także przyjęcie metodyki analizy zachowań pod szczególnie dużym obciążeniem długości pracy oraz ilością rotacji wczytywanych plików.

Błędy wykryte podczas testowania wykluczyły najgroźniejszy element, czyli przeładowanie pamięci RAM, ze względu na dużą ilość danych jakie są wczytywane z plików .bvh.

6.8.1. Wydajność i obciążenie

Aplikacja posiada zmodyfikowaną wersję parsera BVH z pracy inżynierskiej Pawła Czecha, który minimalizuje czas wczytywania danych do aplikacji, co potwierdza się podczas użytkowania. Frameworki zostały tak ustawione, aby zwalniały pamięć, jeśli jakiś moduł nie jest już używany – kiedy nastąpi jego wywołanie, zostanie on załadowany z dysku.

Nie zostały stwierdzone problemy z płynnością działania wykresów trójwymiarowych mimo dużej ilości eventów, jakie aplikacja wykonuje podczas sesji diagnostycznych.

Obrazek 34. – Aplikacja po uruchomieniu.

Obrazek 35. – Aplikacja po wczytaniu i wyświetleniu danych.

7. Badania

Po wstępnych analizach badania opierają się na płaszczyźnie XY dla lewego biodra i to one są podstawą do wyznaczania zakresów rozpoznawania płci w kolejnych podrozdziałach.

7.1. Analiza metodą całkową

Poniżej są przedstawione wykresy (dla obu kamer nagranie nr. 1) oraz tabele dla metody całkowej. Pozostałych aktorów można znaleźć w dodatku do pracy.

7.1.1. Aktorzy 7.1.1.1. Aktor 4

Obrazek 36. – Wykres różnic dla aktora 4 – X360.

Tabela 2. - Tabela z wynikami całek dla aktora 4 – X360.

Pole: X Pole: Y Pole prostokątów 10,42335 7,675344 1,21166

Obrazek 37. – Wykres różnic dla aktora 4 - XONE.

Pole: X Pole: Y Pole prostokątów 13,00847 14,68051 3,347812

Tabela 3. – Tabela z wynikami całek dla aktora 4 - XONE.

7.1.2. Aktorki 7.1.2.1. Aktorka 4

Obrazek 38. – Wykres różnic dla aktorki 4 – X360.

Pole: X Pole: Y Pole prostokątów 11,17626 11,5976 2,686552

Tabela 4. - Tabela z wynikami całek dla aktorki 4 – X360.

Obrazek 39. – Wykres różnic dla aktorki 4 – XONE.

Pole: X Pole: Y Pole prostokątów 15,26513 10,24313 2,643036

Tabela 5. - Tabela z wynikami całek dla aktorki 4 – XONE.

7.2. Analiza metodą FFT

Poniżej są przedstawione wykresy (tylko dla kamery X360 nagrani nr. 1) oraz tabele dla metody FFT. Jak w przypadku poprzedniej metody, pozostałych aktorów można odszukać w dodatku do pracy.

7.2.1. Aktorzy 7.2.1.1. Aktor 4

7.2.2. Aktorki 7.2.2.1. Aktorka 4

Obrazek 41. – Wykres FFT dla aktorki 4.

7.3. Identyfikacja na podstawie badań

Możliwości identyfikacyjne dla metod powyższych wykluczają FFT dla dwóch wymiarów ze względu na swój sposób skomplikowania i bardzo drobne odchylenia widoczne na wykresach, co w bardzo wysokim stopniu dyskwalifikuje tę metodę do prób identyfikacyjnych.

Metoda całkowa w starej jak i nowej wersji została prekursorem do ustalenia wartości wzorcowych dla płaszczyzny XY oraz w tym wypadku lewego biodra, tylko dla chodu.

Poniższa tabela przedstawia zakresy ustalone podczas badań:

X Tolerancja Y Tolerancja Pola

prostokątów

Tolerancja

Kobieta 13 5 13 5 4 4

Mężczyzna 30 10 20 5 12 2

Tabela 6. – Zakresy dla różnic lewego biodra, płaszczyzny XY.

Powyższe dane informują, że w przypadku kobiet wartości uzyskiwane mogą być niższe i bliższe zera aniżeli przez mężczyzn, których granica tolerancji jest skierowana ku wyższym wartością. Uwaga! Dane są tylko dla plików o długości ustalonej w tym projekcie! Próba analizy nagrania o innej długości spowoduje podanie błędnych wyników przez aplikację, czego przykładem są nagrania Aktora 1. Zostały one skrócone o około 10 sekund i tym sposobem wskazują błędy rozpoznawania.

Przetestowanie wszystkich plików dało następujące efekty identyfikacji (pogrubione błędne rozpoznania):

Kinect X360 Kinect XONE

Nagranie 1 Nagranie 2 Nagranie 1 Nagranie 2

Wykryto Zgodność[%] Wykryto Zgodność[%] Wykryto Zgodność[%] Wykryto[%] Zgodność[%]

Aktor 1 Kobieta 99,99 Kobieta 99,99 Kobieta 99,99 Kobieta 99,99

Aktor 2 Mężczyzna 99,99 Mężczyzna 99,99 Mężczyzna 99,99 Mężczyzna 99,99

Aktor 3 Mężczyzna 99,99 Mężczyzna 99,99 Mężczyzna 66,66 Kobieta 66,66

Aktor 4 Kobieta 99,99 Kobieta 99,99 Mężczyzna 66,66 Mężczyzna 66,66

Aktorka 1 Kobieta 66,66 Kobieta 99,99 Mężczyzna 99,99 Mężczyzna 99,99

Aktorka 2 Kobieta 99,99 Kobieta 99,99 Mężczyzna 99,99 Mężczyzna 66,66

Aktorka 3 Kobieta 99,99 Mężczyzna 99,99 Kobieta 99,99 Kobieta 99,99

Aktorka 4 Kobieta 99,99 Kobieta 99,99 Kobieta 99,99 Kobieta 99,99

Tabela 7. – Testy wszystkich nagrań algorytmem rozpoznawania.

Następnym krokiem, ze względu na posiadanie dwóch nagrań tego samego ruchu badanego obiektu, była próba porównywania do siebie próbek i określenia w jakim stopniu odbiegają one od przyjętego wzorca, który ustalał pierwszy załadowany plik.

W tabeli nr. 8 przedstawiono wyniki dla aktora 4 (nagranie 1) z losowo wybranymi

Tabela 8. – Wybrane nagrania do prób porównawczych.

Część badawcza pomogła stwierdzić słabość kamery XONE, wybrane specjalnie Lewe biodro na płaszczyźnie XY ratuje, co prawda jej wizerunek, co nie zmienia faktu, że jej skuteczność balansuje na granicy między prawidłowym a błędnym wynikiem.

Wszystkie błędne rozpoznania, jakie zostały otrzymane to zwykłe szumy, których nie sposób odfiltrować ze względu na to, że próba filtracji potrafi okroić znacznie nagrania.

Doprowadza to do jeszcze większych kłopotów z rozpoznawaniem płci badanego obiektu.

Metoda porównawcza miedzy wybranymi nagraniami pozwala tylko nieznacznie stwierdzić różnice, jakie występują między nagraniami.

Ostatnim punktem kończącym podsumowanie jest problem z badanymi aktorów, którzy byli otyli, między takimi nagraniami różnice są mniejsze i tym sposobem algorytm błędnie rozpoznaje kobietę bądź mężczyznę. Przykładem takiego zdarzenia jest Aktor nr.4.

W dokumencie PRACA DYPLOMOWA MAGISTERSKA (Stron 26-52)

Related documents