Przetwarzanie obrazów medycznych. Wykład DICOM. dr inż. Robert Kazała



Podobne dokumenty
DICOM. Beata Brzozowska. 11 marca 2013

EDYCJA I PRZETWARZANIE GRAFIKI W MEDYCYNIE. Agata Dróżdż, Krzysztof Pudło Fizyka Medyczna IV rok

DICOM protocol. Urszula Krukar, Agnieszka Lewandowska. 13 czerwca Wst p Protokó Serwery DICOM a Toolkits

Zarządzanie sieciami telekomunikacyjnymi

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

Zarządzanie sieciami komputerowymi - wprowadzenie

Tychy, plan miasta: Skala 1: (Polish Edition)

SubVersion. Piotr Mikulski. SubVersion. P. Mikulski. Co to jest subversion? Zalety SubVersion. Wady SubVersion. Inne różnice SubVersion i CVS

Zmiany techniczne wprowadzone w wersji Comarch ERP Altum

Zakopane, plan miasta: Skala ok. 1: = City map (Polish Edition)


MS Visual Studio 2005 Team Suite - Performance Tool

Instrukcja obsługi User s manual

Wojewodztwo Koszalinskie: Obiekty i walory krajoznawcze (Inwentaryzacja krajoznawcza Polski) (Polish Edition)

deep learning for NLP (5 lectures)


OpenPoland.net API Documentation

Machine Learning for Data Science (CS4786) Lecture11. Random Projections & Canonical Correlation Analysis

SSW1.1, HFW Fry #20, Zeno #25 Benchmark: Qtr.1. Fry #65, Zeno #67. like

1. CZYM JEST SERIALIZACJA

ARNOLD. EDUKACJA KULTURYSTY (POLSKA WERSJA JEZYKOWA) BY DOUGLAS KENT HALL

MaPlan Sp. z O.O. Click here if your download doesn"t start automatically

Karpacz, plan miasta 1:10 000: Panorama Karkonoszy, mapa szlakow turystycznych (Polish Edition)

Stargard Szczecinski i okolice (Polish Edition)

POLITYKA PRYWATNOŚCI / PRIVACY POLICY

Zestaw pytań nr 5. 1) Ze względu na sposób licencjonowania prosimy o podanie szacowanej liczby wykonywanych badań przesyłanych PACS.

archivist: Managing Data Analysis Results

Wojewodztwo Koszalinskie: Obiekty i walory krajoznawcze (Inwentaryzacja krajoznawcza Polski) (Polish Edition)

Wykład 6 Dziedziczenie cd., pliki

Helena Boguta, klasa 8W, rok szkolny 2018/2019

Modulacja i kodowanie. Labolatorium. Kodowanie źródłowe Kod Huffman a

Rozpoznawanie twarzy metodą PCA Michał Bereta 1. Testowanie statystycznej istotności różnic między jakością klasyfikatorów

Dolny Slask 1: , mapa turystycznosamochodowa: Plan Wroclawia (Polish Edition)

Raport bieżący: 44/2018 Data: g. 21:03 Skrócona nazwa emitenta: SERINUS ENERGY plc

Katowice, plan miasta: Skala 1: = City map = Stadtplan (Polish Edition)



Miedzy legenda a historia: Szlakiem piastowskim z Poznania do Gniezna (Biblioteka Kroniki Wielkopolski) (Polish Edition)

Wykład pt Plik DXF. Jarosław Bydłosz


Automatyczne generowanie testów z modeli. Bogdan Bereza Automatyczne generowanie testów z modeli

Network Services for Spatial Data in European Geo-Portals and their Compliance with ISO and OGC Standards

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

TTIC 31210: Advanced Natural Language Processing. Kevin Gimpel Spring Lecture 9: Inference in Structured Prediction

Wymagania ogólne dla pakietu 2 - załącznik nr 12a I

Jak zasada Pareto może pomóc Ci w nauce języków obcych?

Emilka szuka swojej gwiazdy / Emily Climbs (Emily, #2)

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)

HARMONIZACJA DANYCH PRZESTRZENNYCH JERZY GAŹDZICKI

Wojewodztwo Koszalinskie: Obiekty i walory krajoznawcze (Inwentaryzacja krajoznawcza Polski) (Polish Edition)

Wojewodztwo Koszalinskie: Obiekty i walory krajoznawcze (Inwentaryzacja krajoznawcza Polski) (Polish Edition)

OSI Physical Layer. Network Fundamentals Chapter 8. Version Cisco Systems, Inc. All rights reserved. Cisco Public 1

Installation of EuroCert software for qualified electronic signature

Wykaz linii kolejowych, które są wyposażone w urządzenia systemu ETCS

Laboratorium Programowania Kart Elektronicznych

Standard HL7 (cel, protokoły, zastosowanie) Piotr Dybski Jan Flik

OSI Transport Layer. Network Fundamentals Chapter 4. Version Cisco Systems, Inc. All rights reserved. Cisco Public 1


****/ZN/2012. if you are pregnant or breast-feeding.

Wykaz linii kolejowych, które są wyposażone w urzadzenia systemu ETCS

Miedzy legenda a historia: Szlakiem piastowskim z Poznania do Gniezna (Biblioteka Kroniki Wielkopolski) (Polish Edition)

Weronika Mysliwiec, klasa 8W, rok szkolny 2018/2019

EXCEL PL PROGRAMOWANIE PDF

Polska Szkoła Weekendowa, Arklow, Co. Wicklow KWESTIONRIUSZ OSOBOWY DZIECKA CHILD RECORD FORM

Dynamiczny DNS dla usług typu Neostrada przykład konfiguracji

Techniki multimedialne

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

User s manual for icarwash

Compatible cameras for NVR-5000 series Main Stream Sub stream Support Firmware ver. 0,2-1Mbit yes yes yes n/d

Przykład zastosowania notacji UML dla realizacji zastosowania wzorca Mediator (materiały dla studentów na prawach rękopisu)

ERASMUS + : Trail of extinct and active volcanoes, earthquakes through Europe. SURVEY TO STUDENTS.

Website review radcowie.biz

Application Layer Functionality and Protocols

SG-MICRO... SPRĘŻYNY GAZOWE P.103

Rozwój standardu DICOM, jego rola i znaczenie

A co to jest LDAP. Dariusz Żbik Remigiusz Górecki


Systemy kodowania. Jolanta Bachan

OSI Network Layer. Network Fundamentals Chapter 5. ITE PC v4.0 Chapter Cisco Systems, Inc. All rights reserved.

Zajęcia z języka angielskiego TELC Gimnazjum Scenariusz lekcji Prowadzący: Jarosław Gołębiewski Temat: Czas Present Perfect - wprowadzenie

Tomasz Grześ. Systemy zarządzania treścią

REFERAT PRACY DYPLOMOWEJ

kdpw_stream Struktura komunikatu: Status komunikatu z danymi uzupełniającymi na potrzeby ARM (auth.ste ) Data utworzenia: r.

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Zadanie1: Wykorzystując serwis internetowy Wikipedii odszukaj informacje na temat usługi WINS.

(Apache) CouchDB. Krzysztof Kulewski 2008

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

Patients price acceptance SELECTED FINDINGS

Progresywny internetowy kodek falkowy

Wykład I. Wprowadzenie do baz danych

Wykorzystanie standardów serii ISO oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych

Jerzy Kosiński Wyższa Szkoła Policji w Szczytnie

Wojewodztwo Koszalinskie: Obiekty i walory krajoznawcze (Inwentaryzacja krajoznawcza Polski) (Polish Edition)

Wroclaw, plan nowy: Nowe ulice, 1:22500, sygnalizacja swietlna, wysokosc wiaduktow : Debica = City plan (Polish Edition)

Systemy wbudowane. Poziomy abstrakcji projektowania systemów HW/SW. Wykład 9: SystemC modelowanie na różnych poziomach abstrakcji

Dolny Slask 1: , mapa turystycznosamochodowa: Plan Wroclawia (Polish Edition)

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

METHOD 2 -DIAGNOSTIC OUTSIDE

Transkrypt:

Przetwarzanie obrazów medycznych Wykład DICOM dr inż. Robert Kazała

DICOM - Wprowadzenie Digital Imaging and COmmunication in Medicine Images and Media [File format] Film and Network [Communication protocol] 24.05.2014 dr inż Robert Kazała 2

DICOM Wraz z rozwojem tomografii komputerowej w latach siedemdziesiątych konieczne stało się opracowanie standardu umożliwiającego wymianę informacji graficznych oraz towarzyszących im danych medycznych między różnymi urządzeniami i systemami informatycznymi. Pierwszy zarys standardu został opracowany w 1983 roku przez American College of Radiology (ACR) oraz National Electrical Manufacturers Association (NEMA) i został opublikowany pod nazwą ACR-NEMA Standards Publication No. 300-1985. W 1988 roku powstała druga wersja dokumentu, zaś w 1993 roku powstała wersja trzecia, znacznie rozbudowana i uzupełniona o nowe możliwości. Zmieniono wówczas nazwę standardu na Digital Imaging and Communications in Medicine DICOM. 24.05.2014 dr inż Robert Kazała 3

DICOM Standard DICOM powstał w celu popularyzacji cyfrowej wymiany danych, ułatwienia tworzenia oraz rozbudowy systemów archiwizacji obrazów PACS (ang. Picture Archiving and Comunication Systems) oraz wymiany informacji medycznych z innymi systemami informatycznymi stosowanymi w medycynie (ang. Hospital Information System HIS). DICOM jest uzupełnieniem standardu Health Level Seven HL7 o zasady komunikacji i wymianę obrazów w medycynie, nie występujących w normie HL7. Osoby zainteresowane analizą danych medycznych bardzo szybko spotkają się z plikami DICOM. Obecnie istnieje duża liczba różnego rodzaju oprogramowania, które umożliwia wgląd do plików DICOM. Przykładowo program Matlab posiada funkcje umożliwiające analizę (dicominfo) oraz wczytywanie (dicomread) danych medycznych z plików DICOM. Jednak po odczycie bardzo szybko okazuje się, że informacji jest tak dużo, że ich analiza jest bardzo trudna. 24.05.2014 dr inż Robert Kazała 4

DICOM - specyfikacje Dokumentacja opisująca DICOM jest redagowana przez NEMA Diagnostic Imaging and Therapy Systems Division i dostępna w postaci zestawu następujących dokumentów: PS 3.1: Introduction and Overview zawiera wprowadzenie oraz informacje podstawowe na temat standardu PS 3.2: Conformance zawiera definicje podstawowych zasad oraz pojęć PS 3.3: Information Object Definitions definiuje informatyczną reprezentację fizycznych danych format danych, w postaci zbiorów parametrów (ang. Data Elements) PS 3.4: Service Class Specifications definiuje metody służące do obsługi informatycznych reprezentacji danych PS 3.5: Data Structure and Encoding określa sposób kodowania oraz niezbędne struktury wymagane do budowy pełnej informacji o rzeczywistej informacji medycznej PS 3.6: Data Dictionary zawiera tzw. słownik danych, czyli spis wszystkich możliwych informacji występujących w standardzie wraz z ich nazwą oraz kodami liczbowymi umożliwiającymi identyfikację danych PS 3.7: Message Exchange definiuje sposób wymiany informacji między aplikacjami PS 3.8: Network Communication Support for Message Exchange dokument definiuje sposób wymiany informacji między aplikacjami DICOM z wykorzystaniem protokołu TCP/IP. Standard DICOM wykorzystuje warstwową strukturę modelu ISO OSI PS 3.10: Media Storage and File Format for Data Interchange opisuje model archiwizacji danych na nośnikach zewnętrznych. Dokument ten był podstawowym źródłem informacji na temat struktury danych na płycie CD zawierającej dane z tomografii komputerowej PS 3.11: Media Storage Application Profiles określa wymagania stawiane aplikacjom gromadzącym dane w standardzie DICOM PS 3.12: Storage Functions and Media Formats for Data Interchange definiuje funkcje, nośniki oraz sposoby wymiany danych PS 3.14: Grayscale Standard Display Function określa sposoby prezentacji danych graficznych, np. sposoby kalibracji monitorów PS 3.15: Security Profiles opisuje aspekty bezpieczeństwa danych PS 3.16: Content Mapping Resource definiuje szablony obiektów używanych w standardzie 24.05.2014 dr inż Robert Kazała 5

DICOM - opis Standard DICOM powstał w celu odzwierciedlenia rzeczywistych informacji medycznych w postaci spójnego systemu informatycznego. Rysunek zaczerpnięty z dokumentu PS 3.3, przedstawia model rzeczywistych danych zaimplementowany w standardzie DICOM. Model przedstawia sposób łączenia różnych informacji medycznych oraz zależności występujące między nimi. Wartości liczbowe obok strzałek określają możliwą liczbę połączeń między informacjami. 24.05.2014 dr inż Robert Kazała 6

DICOM - model 24.05.2014 dr inż Robert Kazała 7

DICOM - informacje Do najistotniejszych informacji można zaliczyć: dane pacjenta (ang. patient), takie jak dane personalne, data urodzenia itp. badania (ang. study), na które składają się dane o pacjencie, dane na temat wizyt (ang. visit) oraz inne informacje opisujące badanie (ang. study content notification). Study gromadzą informacje na temat: elementów składowych badań (ang. study components) oraz procedur (ang. modality performed procedure steps), a także wyniki badań (ang. results) w postaci raportu (ang. raport) oraz poprawek (ang. amendment). Każde badanie zawiera przynajmniej jedną serię danych. serie danych służą do gromadzenia informacji uzyskanych podczas badania. Do informacji tych zalicza się między innymi: obrazy (ang. image), dane nieprzetworzone (ang. raw data), bitową płaszczyzna notatek (ang. overlay), tablicę kolorów (ang. lookup table) czy krzywe opisane ciągiem punktów (ang. curve). Przykładem serii danych jest zestaw danych (slajdów) przedstawiających przekroje przez ciało pacjenta, otrzymane podczas rekonstrukcji danych CT dla konkretnych parametrów rekonstrukcji (np. rozdzielczość, odległość między przekrojami, filtr rekonstrukcji, czy parametry okna). 24.05.2014 dr inż Robert Kazała 8

DICOM powiązanie danych 24.05.2014 dr inż Robert Kazała 9

DICOM - budowa DICOM został przystosowany do sieciowej wymiany informacji (on-line) w architekturze klient-serwer, poprzez protokół TCP/IP oraz do współpracy z nośnikami wymiennymi (off-line), takimi jak dyskietki, dyski CD czy MOD. Wymiana danych na tych nośnikach odbywa się poprzez systemy plików ISO 9660 oraz FAT16. Dodatkowo dla nośników fizycznych tworzony jest plik DICOMDIR przechowujący informację o wszystkich plikach DICOM na nośniku. 24.05.2014 dr inż Robert Kazała 10

DICOM - budowa 24.05.2014 dr inż Robert Kazała 11

DICOM - budowa Dla metod wymiany danych, zdefiniowano wspólną reprezentację danych (format danych, ang. Information Object, dokument PS 3.3) oraz rodzaje usług-serwisów (ang. Service Classes, PS 3.4) opisujących sposób współdziałania aplikacji. Współpraca aplikacji polega na wymianie specyficznych rozkazów (ang. DICOM Commands, PS 3.7). Dokładnie zdefiniowany jest poziom zgodności wyszczególniono, jakie informacje muszą być zawarte w konkretnych przypadkach (PS 3.7, 3.8 i 3.10). Aby komunikacja była możliwa, dwa połączone systemy ustalają role jakie będą pełnić podczas komunikacji. Określają, który system jest serwerem danych (ang. Service Class Provider - SCP), a który klientem (ang. Service Class User - SCU). Określają również metodę kodowania przesyłanych danych (little endian, big endian, JPG itp.). 24.05.2014 dr inż Robert Kazała 12

DICOM model informacji Wprowadzono jasno sprecyzowany i dokładnie określony model informacji (ang. Information Objects Definition IOD, dokument PS 3.3), określający format danych dla różnych typów informacji, takich jak: obrazy, przebiegi czasowe, obiekty graficznych, raporty, wydruki itp. Model informacji IOD grupuje dane w tematycznych zbiorach, zwanych Entities oraz podzbiorach zwanych modułami. Każdy moduł tworzony jest przez zbiór atrybutów. 24.05.2014 dr inż Robert Kazała 13

DICOM budowa obiektu IOD 24.05.2014 dr inż Robert Kazała 14

DICOM Data Element Atrybut jest opisywany formatem elementu danych tzw. Data Element, zdefiniowanym w słowniku danych (PS 3.6) i stanowi podstawową jednostkę danych. Data Element opisywany jest przy pomocy: identyfikatora elementu danych (ang. Tag) złożonego z dwóch liczb określających: grupę (ang. Group) oraz element grupy (ang. Element), zapisywanych w postaci liczb heksadecymalnych, typu danych (ang. Value Representation), określonego w postaci pary liter w kodzie ASCII i umożliwiającego poprawną interpretację danych, rozmiaru elementu (ang. Value Length) wyrażonego w bajtach, informacji takich jak: nazwisko pacjenta, rozdzielczość obrazu itp. 24.05.2014 dr inż Robert Kazała 15

DICOM Data Set Strumień informacyjny (ang. Data Set) jest uporządkowanym strumieniem elementów danych (ang. Data Element) co przedstawiono na rysunku 5. Norma w dokumencie PS 3.3 w pełni opisuje katalog typów danych, rodzaju danych, itp. 24.05.2014 dr inż Robert Kazała 16

DICOM Service Element Oprócz definicji obiektu danych istotne jest skojarzenie z nim elementu usługi czyli tzw. Service Element. Obiekt Service-Obiect Pair (SOP) łączy dane z serwisami i definiuje różne usługi związane z modelem informacji IOD. W standardzie DICOM wprowadzono również techniki umożliwiające jednoznaczną identyfikację oraz ochronę danych (PS 3.15), pozwalające na sprecyzowanie zależności między danymi, np. podczas transmisji przez sieć. Norma nie definiuje szczegółów implementacji, wymogów dotyczących możliwości i funkcji urządzeń oraz sposobu testowania, czy zatwierdzania zgodności konkretnej implementacji ze standardem DICOM. Z tego też powodu zdarza się, że dwa różne urządzenia, będące zgodnie ze standardem DICOM, nie są zdolne do wymiany informacji! Jest to przejawem walki różnych producentów o wpływy na rynku. 24.05.2014 dr inż Robert Kazała 17

DICOM nośniki fizyczne Dane będące wynikiem badania CT mogą być zapisane na płycie CD-R w standardzie DICOM. Zawartość płyty zdefiniowana jest w dokumentacji standardu w dokumencie PS 3.10. 24.05.2014 dr inż Robert Kazała 18

DICOM nośniki fizyczne Fizyczny nośnik danych zawiera pliki w formacie opisanym w obiekcie DICOM File Format. Obiekt służy do przechowywania informacji w postaci plików. Każdy plik zawiera informację na temat jednego obiektu Service-Obiect Pair instance (SOP instance) oraz informacje o pliku, tzw. DICOM File Meta Information. Każdy obiekt DICOM File Meta Information zbudowany jest ze 128 bajtowej preambuły wypełnionej zerami, identyfikatora pliku DICOM (ang. DICOM prefix) zawierającego czteroliterowy ciąg liter DICM oraz zestawu elementów danych (ang. Data Element) opisujących plik. Elementy te mają identyfikator postaci (0002,xxxx). Po elementach danych należących do informacji o pliku (DICOM File Meta Information), znajduje się zakodowany zgodnie z dokumentem PS 3.5 ciąg elementów danych (DICOM Data Set) prezentujący jeden obiekt Service- Obiect Pair instance. Obiektem SOP może być np. jeden slajd CT (obraz jednej rekonstrukcji danych CT) lub obiekt opisujący dane na nośniku, tworzący plik DICOMDIR. 24.05.2014 dr inż Robert Kazała 19

DICOM nośniki fizyczne Nośnik fizyczny zawiera katalogi z plikami, w których to znajdują się właściwe informacje medyczne. Oprócz nich zawsze zapisywany jest specjalny plik o nazwie DICODIR, opisujący zawartość nośnika. Rysunek przedstawia zawartość pliku DICOMDIR oraz sposób powiązania zawartości z innymi plikami na nośniku. 24.05.2014 dr inż Robert Kazała 20

DICOM nośniki fizyczne 24.05.2014 dr inż Robert Kazała 21

DICOM nośniki fizyczne Plik DICOMDIR zawiera informacje na temat wszystkich plików na nośniku. Niektóre Data Elements obiektów SOP znajdują się tylko w pliku danych, a niektóre tylko w DICOMDIR. Dane w pliku DICOMDIR powiązane są w hierarchiczne drzewo, którego korzeniem są Direktory Information. Kolejnym poziomem są dane o pacjentach, następnym badania, potem serie, a na koniec obrazy. Przejścia między kolejnymi poziomami zaznaczone są na rysunku pogrubioną linią, zaś przejścia między obiektami na tym samym poziomie liniami z numerami poziomów. W obiektach zapisanych w DICOMDIR przechowywane są wskaźniki do danych na tym samym i kolejnym poziomie. Dzięki temu, możliwe jest szybkie przeszukiwanie danych w bardzo dużych plikach. Każdy obiekt SOP zapisany w DICOMDIR posiada również informację o pliku na nośniku (w postaci ścieżki dostępu oraz nazwy), w którym znajduje się pełna informacja o nim. 24.05.2014 dr inż Robert Kazała 22

DICOM pliki Dane zawarte w każdym pliku DICOM podzielone są na dwie części: część zawierającą informacje o pliku (Dicom-Meta-Information-Header) oraz dane jednego obiektu Service-Obiect Pair Instance (Dicom-Data-Set). Obydwie części zawierają dane w postaci strumienia informacji (ang. Data Set), który jest uporządkowanym strumieniem elementów danych (ang. Data Element). Strumień elementów danych można zaobserwować w przytoczonym powyżej binarnym fragmencie pliku DICOM. Informacje o pliku (Dicom-Meta-Information-Header) są wymagane dla każdego pliku DICOM. Dokument PS 3.10 ściśle określa zawartość tej części pliku. Część zawierająca dane (Dicom-Data-Set) przechowuje informacje o jednym obiekcie typu Service-Obiect-Pair instance (SOP instance). Obiektem tym może być np.: pojedynczy przekrój CT, pojedyncza klatka wirtualnej bronchoskopii wygenerowana na aparacie CT lub opis zawartości nośnika, tak jak ma to miejsce w przypadku pliku DICOMDIR. 24.05.2014 dr inż Robert Kazała 23

pydicom pydicom jest biblioteką utworzoną w języku Python służącą do przetwarzania plików DICOM (generalnie pliki z obrazami medycznymi ale także dane nie obrazowe takie jak np. informacje o radioterapii). Biblioteka nie jest przeglądarką plików graficznych, ale jest przeznaczona do odczytywania elementów danych DICOM jako zmiennych języka Python i modyfikawania ich w zależności od potrzeb za pomocą własnego kodu. pydicom jest udostępniany na licencji MIT. 24.05.2014 dr inż Robert Kazała 24

pydicom - Datasets Dataset is the base object in pydicom's object model. The relationship between Dataset and other objects is: Dataset (derived from python's dict) ---> contains DataElement instances --> the value of the data element can be one of: a regular value like a number, string, etc. a list of regular values (e.g. a 3-D coordinate) a Sequence instance --> a Sequence is a list of Datasets (and so we come full circle) 24.05.2014 dr inż Robert Kazała 25

pydicom Dataset is the main object you will work with directly. Dataset is derived from python's dict, so it inherits (and overrides some of) the methods of dict. In other words it is a collection of key:value pairs, where the key value is the DICOM (group,element) tag (as a Tag object, described below), and the value is a DataElement instance (also described below). A dataset could be created directly, but you will usually get one by reading an existing DICOM file: >>> import dicom >>> ds = dicom.read_file("rtplan.dcm") # (rtplan.dcm is in the testfiles directory) 24.05.2014 dr inż Robert Kazała 26

pydicom You can display the entire dataset by simply printing its string (str or repr) value: >>> ds (0008, 0012) Instance Creation Date DA: '20030903' (0008, 0013) Instance Creation Time TM: '150031' (0008, 0016) SOP Class UID UI: RT Plan Storage (0008, 0018) SOP Instance UID UI: 1.2.777.777.77.7.7777.7777.20030903150023 (0008, 0020) Study Date DA: '20030716' (0008, 0030) Study Time TM: '153557' (0008, 0050) Accession Number SH: '' (0008, 0060) Modality CS: 'RTPLAN'... 24.05.2014 dr inż Robert Kazała 27

pydicom You can access specific data elements in a dataset by name ('keyword' in DICOM standard) or by DICOM tag number: >>> ds.patientname 'Last^First^mid^pre' >>> ds[0x10,0x10].value 'Last^First^mid^pre' In the latter case (using the tag number directly) a DataElement instance is returned, so the.value must be used to get the value. Using the keyword is preferred for more readable code, but using tag numbers may be necessary for elements not in pydicom's dictionaries (e.g. many private data elements). 24.05.2014 dr inż Robert Kazała 28

pydicom You can also set values by name or tag number: >>> ds.patientid = "12345" >>> ds.seriesnumber = 5 >>> ds[0x10,0x10].value = 'TestName' The use of names is possible because pydicom intercepts requests for member variables, and checks if they are in the DICOM dictionary. It translates the name to a (group,element) number and returns the corresponding value for that key if it exists. The names are the descriptive text from the dictionary with spaces and apostrophes, etc. removed. 24.05.2014 dr inż Robert Kazała 29

pydicom DICOM Sequences are turned into python lists. Items in the sequence are referenced by number, beginning at index 0 as per python convention. >>> ds.beamsequence[0].beamname 'Field 1' >>> # Same thing with tag numbers (not as pretty!): >>> ds[0x300a,0xb0][0][0x300a,0xc2].value 'Field 1' >>> # yet another way, using another variable >>> beam1 = ds.beamsequence[0] >>> beam1.beamname, beam1[0x300a,0xc2].value ('Field 1', 'Field 1') 24.05.2014 dr inż Robert Kazała 30

pydicom Since you may not always remember the exact name of a data element, Dataset provides a handy dir() method, useful during interactive sessions at the python prompt: >>> ds.dir("pat") ['PatientBirthDate', 'PatientID', 'PatientName', 'PatientSetupSequence', 'PatientSex'] dir will return any DICOM tag names in the dataset that have the specified string anywhere in the name (case insensitive). Calling dir with no string will list all tag names available in the dataset. You can also see all the names that pydicom knows about by viewing the _dicom_dict.py file. You could modify that file to add tags that pydicom doesn't already know about. 24.05.2014 dr inż Robert Kazała 31

pydicom Under the hood, Dataset stores a DataElement object for each item, but when accessed by name (e.g. ds.patientname) only the value of that DataElement is returned. If you need the whole DataElement (see the DataElement class discussion), you can use Dataset's data_element() method or access the item using the tag number: >>> data_element = ds.data_element("patientname") # or data_element = ds[0x10,0x10] >>> data_element.vr, data_element.value # PatientName was changed above ('PN', 'TestName') To check for the existence of a particular tag before using it, use the in keyword: >>> "PatientName" in ds True 24.05.2014 dr inż Robert Kazała 32

pydicom To remove a data element from the dataset, use del: >>> del ds.institutionname >>> # OR del ds[0x0008,0x0080] To work with pixel data, the raw bytes are available through the usual tag: >>> ds = dicom.read_file("ct_small.dcm") >>> pixel_bytes = ds.pixeldata but to work with them in a more intelligent way, use pixel_array (requires the NumPy library): >>> pix = ds.pixel_array 24.05.2014 dr inż Robert Kazała 33

pydicom - DataElement The DataElement class is not usually used directly in user code, but is used extensively by Dataset. DataElement is a simple object which stores the following things: tag -- a DICOM tag (as a Tag object) VR -- DICOM value representation -- various number and string formats, etc VM -- value multiplicity. This is 1 for most DICOM tags, but can be multiple, e.g. for coordinates. You do not have to specify this, the DataElement class keeps track of it based on value. value -- the actual value. A regular value like a number or string (or list of them), or a Sequence. 24.05.2014 dr inż Robert Kazała 34

pydicom The Tag class is derived from python's long, so in effect, it is just a number with some extra behaviour: Tag enforces that the DICOM tag fits in the expected 4-byte (group,element) a Tag instance can be created from a long or from a tuple containing the (group,element) separately: >>> from dicom.tag import Tag >>> t1=tag(0x00100010) # all of these are equivalent >>> t2=tag(0x10,0x10) >>> t3=tag((0x10, 0x10)) >>> t1 (0010, 0010) >>> t1==t2, t1==t3 (True, True) Tag has properties group and element (or elem) to return the group and element portions the is_private property checks whether the tag represents a private tag (i.e. if group number is odd). 24.05.2014 dr inż Robert Kazała 35

pydicom + matplotlib Matplotlib can take 2-d image information from Dataset.pixel_array and display it. Here is an example: >>> import dicom >>> import pylab >>> ds=dicom.read_file("ct_small.dcm") >>> pylab.imshow(ds.pixel_array, cmap=pylab.cm.bone) <matplotlib.image.axesimage object at 0x0162A530> >>> pylab.show() >>> 24.05.2014 dr inż Robert Kazała 36

GDCM : Grassroots DICOM library Grassroots DICOM (GDCM) jest implementacją standardu DICOM stworzoną dla zapewnienia naukowcom bezpośredniego dostępu do danych klinicznych. GDCM zawiera definicje formatów plików i sieciowe protokoły komunikacyjne. GDCM jest projektem open source, zapewnia on w pewnym stopniu kompatybilność z plikami ACR-NEMA 1.0 & 2.0 (raw files). Biblioteka napisana jest w C++ i oferuje wrapery do następujących języków: Python (supported), C# (supported), Java (supported), PHP (experimental), Perl (experimental). 24.05.2014 dr inż Robert Kazała 37

GDCM Formaty plików GDCM implementuje część 5 standardu DICOM, opisującą formaty plików obrazowych. Celem projektantów biblioteki jest wspieranie możliwie wszystkich formatów plików wykorzystywanych w standardzie DICOM: RAW, JPEG lossy 8 & 12 bits (ITU-T T.81, ISO/IEC IS 10918-1), JPEG lossless 8-16 bits (ITU-T T.81, ISO/IEC IS 10918-1), JPEG 2000 reversible & irreversible (ITU-T T.800, ISO/IEC IS 15444-1), RLE, Deflated (compression at DICOM Dataset level), JPEG-LS (ITU-T T.87, ISO/IEC IS 14495-1), JPEG 2000 Multi-component reversible & irreversible (ISO/IEC IS 15444-2) (not supported for now), MPEG-2 (not supported for now). 24.05.2014 dr inż Robert Kazała 38

Literatura http://dicom.nema.org/ http://home.agh.edu.pl/~socha/pmwiki/pmwiki.php/dicom/caly http://pl.wikipedia.org/wiki/dicom http://code.google.com/p/pydicom/ http://gdcm.sourceforge.net/wiki/index.php/main_page http://www.osirix-viewer.com/ http://www.k-pacs.net/ http://ginkgo-cadx.com/en/ http://sourceforge.net/projects/mito/ 24.05.2014 dr inż Robert Kazała 39