prezentacja


Program wizualizacji modelu klatki piersiowej

na podstawie przetworzonych obrazów

przekrojów poprzecznych

Praca dyplomowa napisana pod kierunkiem

dr Marka Dorosa

Celem pracy jest zaprojektowanie i uruchomienie programu wizualizacji modelu klatki piersiowej na podstawie obrazów przekrojów poprzecznych z wyodrębnionymi narządami takimi jak np. serce, płuca, kości, ściana torsu. Program uwzględnia więc detale anatomiczne istotne dla prowadzonych obserwacji. Celem ich może być np. diagnostyka lub edukacja.

Niniejsza prezentacja przedstawia następujące tematy:

Algorytm maszerujących kwadratów

Algorytm maszerujących kwadratów (ang. Marching Squares) stanowi dwuwymiarowy przypadek algorytmu maszerujących sześcianów (ang. Marching Cubes), którego autorami są: Harvey Cline i William Lorensen (US Patent 4.710.876). Oba algorytmy operują na wypełnionych powierzchniach konturowych, które w przypadku trójwymiarowym mogą stanowić np. przekroje poprzeczne. Rys. 1 przedstawia przykładową powierzchnię konturową:

0x08 graphic

Rys.1 Przykładowa powierzchnia konturowa.

Kolejnym krokiem algorytmu maszerujących kwadratów jest dokonanie podziału powierzchni na szereg kwadratów, poprzez wykreślenie poziomych i pionowych linii. Od gęstości podziału siatki zależy dokładność odwzorowania brzegu konturu. Przykładową siatkę 0x08 graphic
przedstawia Rys. 2:

Rys. 2 Powierzchnia konturowa z siatką kwadratów.

Przecięcia linii tworzą punkty, które można jednoznacznie zakwalifikować do jednego z dwóch przypadków: punkt zawiera się w powierzchni konturowej albo jest poza nią. Biorąc pod uwagę, że kwadrat posiada 4 wierzchołki i każdy wierzchołek może być w dwóch stanach, do rozważenia pozostaje 24 możliwych przypadków. Na Rys. 3 żółtymi kropkami oznaczono te wierzchołki kwadratów, które zawierają się w powierzchni konturowej:

0x08 graphic

Rys.3 Wierzchołki siatki zawierające się w powierzchni.

Ostatnim etapem algorytmu jest przybliżone wyznaczenie punktów przebiegu linii konturowej w połowach długości tych krawędzi, przez które przechodzi brzeg konturu. Jak łatwo zauważyć będą to takie krawędzie, w których jeden koniec zawiera się w powierzchni konturowej, drugi zaś leży poza tą krawędzią. Na Rys. 4 kolorem czerwonym zaznaczono linię otrzymaną z połączenia takich punktów:

0x08 graphic

Rys.4 Zarys powierzchni konturowej.

Jak widać przebieg linii konturowej wyznaczonej przez algorytm nie jest szczególnie dokładny. Pewną poprawę efektów daje zagęszczenie siatki kwadratów, dalej jednak brak informacji o faktycznym miejscu przecięcia powierzchni konturowej z krawędzią kwadratu powoduje niedokładności.

Niewielka modyfikacja algorytmu niweluje opisaną wadę. Wystarczy wyliczyć faktyczne miejsca przecięcia brzegu powierzchni konturowej z krawędziami kwadratów, aby znacznie polepszyć przybliżenie kształtu linii konturowej do brzegu obszaru. Na Rys. 5 czerwonym kolorem poprowadzoną linię przez tak wyliczone punkty przecięć:

0x08 graphic

Rys. 5 Dokładny zarys powierzchni konturowej.

Algorytm maszerujących sześcianów

Po „dwuwymiarowym” wstępie idea algorytmu działającego w trzech wymiarach jest prosta. Sąsiednie warstwy trójwymiarowego obiektu dzielone są na komórki o kształcie sześcianów. Komórka albo zawiera fragment konturu albo nie. Na podstawie porównania wartości w poszczególnych wierzchołkach sześcianu możliwe jest ustalenie przebiegu powierzchni konturowej. Z kombinatoryki wynika, iż przy 8 wierzchołkach sześcianu istnieje 256 (28) możliwych przypadków przebiegu powierzchni konturowej. Autorzy algorytmu maszerujących sześcianów wskazali, że tablica 256 przypadków może zostać zredukowana do 15 poprzez połączenie symetrycznie równoważnych i uzupełniających się. Przypadki te przedstawia Rys. 6:

0x08 graphic

Rys. 6 15 podstawowych przypadków algorytmu maszerujących sześcianów.

Narzędzia, biblioteki i pliki graficzne

Program został napisany w całości w języku C++ przy użyciu kompilatora Borland C++ Builder 4.0 Standard. Do wizualizacji grafiki 3D została zastosowana biblioteka OpenGL. Oprócz komponentów z biblioteki VCL (ang. Visual Component Library) w programie zostały wykorzystane następujące biblioteki:

Opracowany program akceptuje dane obrazowe w następujących formatach:

Wielkość danych obrazowych ograniczona jest jedynie pojemnością pamięci operacyjnej komputera.

Projekt Visible Human ®

Dane przetwarzane przez program pochodzą m.in. z projektu Visible Human®. Są to obrazy w formacie JPEG z rozdzielczością 96 dpi w 16,7 mln kolorów o rozmiarze (w pikselach) 800 x 500. Obrazy są fotografiami sekcyjnymi zrobionymi w odstępie 1 cm. Rys. 7 i 8 przedstawiają przekrój ciała człowieka oraz wydzielony kontur płuc:

0x08 graphic

Rys. 7 Przykładowy przekrój ciała człowieka pochodzący z projektu Visible Human.

0x08 graphic
Rys. 8 Przekrój płuc wyodrębniony z przekroju ciała człowieka.

Pliki MCS

Pliki MCS (ang. Marching Cubes Script) są zwykłymi plikami tekstowymi, które służą do opisu parametrów sceny i budowy obiektów 3D na podstawie przekrojów poprzecznych. Składnia pliku MCS obejmuje kilkanaście poleceń, które można podzielić na dwie grupy:

Polecenia służących do definiowania obiektów 3D:

Polecenia dotyczące ustawień sceny 3D:

Przykładowy skrypt MCS:

Title "Lung"

BackgroundColor 255 255 255

Left -200

Right 200

Bottom -200

Top 200

Near -200

Far 200

AmbientLight 128 128 128

DiffuseLight 192 192 192

LightPos -400 400 400

Begin

Color 255 0 0

PlaneColor 0 0 0

Texture "texture.pcx"

ObjectType "TexturedTriangles"

Step 11

File "1341.pcx" 90

File "1351.pcx" 75

File "1361.pcx" 60

File "1371.pcx" 45

File "1381.pcx" 30

File "1391.pcx" 15

File "1401.pcx" 0

End

Program

Opracowany program umożliwia tworzenie, wczytywanie, zapis i obróbkę plików MCS oraz zmianę poszczególnych parametrów sceny 3D tj. składowe kolorów i położenia źródła światła, zmiana rozmiaru sceny oraz obroty wokół osi współrzędnych. Zmiany parametrów sceny są natychmiast widoczne w oknie programu.

Ponadto w programie zaimplementowano zapis zawartości okna do pliku graficznego oraz jego kopiowanie do schowka. Wszelkie błędy związane z operacjami dyskowymi sygnalizowane są poprzez stosowne komunikaty. Program obsługuję technikę drag & drop.

Rys. 9 przedstawia wygląd głównego okna programu:

0x08 graphic

Rys. 9 Wygląd ogólny programu

Przykładowe obiekty 3D

Poniższe rysunki przedstawiają efekty działania programu:

0x08 graphic

Rys. 10 Obiekt typu Points

0x08 graphic
Rys. 11 Obiekt typu WireFrames

0x08 graphic
Rys. 12 Obiekt typu Edge Layers

0x08 graphic
Rys. 13 Obiekt typu Flat Triangles

0x08 graphic
Rys. 14 Obiekty typu Triangles z naniesioną siatką współrzędnych

0x08 graphic
Rys. 15 Obiekty typu Layers wraz z osiami współrzędnych



Wyszukiwarka

Podobne podstrony:
prezentacja finanse ludnosci
prezentacja mikro Kubska 2
Religia Mezopotamii prezentacja
Prezentacja konsument ostateczna
Strategie marketingowe prezentacje wykład
motumbo www prezentacje org
lab5 prezentacja
Prezentacja 18
Materialy pomocnicze prezentacja maturalna
Prezentacja na seminarium
Lato prezentacja 3
Prezentacja1
Prezentacja 2 analiza akcji zadania dla studentow
prezentacja soc rodziny

więcej podobnych podstron