ITKv4 DICOM Status Mathieu Malaterre, Mark Roden Alexandre Gouaillard, William Ryan, Daniel Blezek.

Slides:



Advertisements
Similar presentations
Image Sharing Network Patients images are acquired and interpreted by a Radiologist at a facility Patients images and possibly other test results are reviewed.
Advertisements

DICOM Structured Reporting Workshop - March 2000 Structured Reporting and the IHE Year 2 Technical Framework Simon Wail, PhD Marconi Medical Systems.
September, 2005What IHE Delivers 1 Mike Schmidt, Carl Zeiss Meditec IHE Eye Care Webinar Requirements for Modality Vendors June 6-7, 2006.
MINT Meeting Agenda August 16-17, Monday, August 16, :00 – 12:00Overview and Demo 12:00 – 1:00Lunch 1:00 – 3:00Code and design walkthrough.
What is DICOM? The standard for Digital Imaging and Communications in Medicine. Developed by the National Electrical Manufacturers Association (NEMA) in.
Mpeg-21 and Medical data A strategy for Tomorrow ’ s EMR.
National Alliance for Medical Image Computing ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.
11 DICOM Image Communication in Globus-Based Medical Grids Michal Vossberg, Thomas Tolxdorff, Associate Member, IEEE, and Dagmar Krefting Ting-Wei, Chen.
CS490T Advanced Tablet Platform Applications Network Programming Evolution.
Canonical Producer CP API User Code CP Servlet Files CreateTable, Port, Protocol, Security, SQL Support, Multiple Query Support Security Insert Query Port.
Senior Design Project 2004/2005 Web Enabled Calling Number Delivery Daniel St. Clair Barron Shurn Professor Soules 10/28/2004.
End-to-End Data Outline Presentation Formatting Data Compression.
An Introduction to Internetworking. Algorithm for client-server communication with UDP (connectionless) A SERVER A CLIENT Create a server-socket (listener)and.
Picture Archiving and Communication System (PACS) -Krystal Kerney and Hui Pan.
Imaging Object Change Management (IOCM)
OVER VIEW RFC 959 FILE TRANSFER PROTOCOL (FTP). C ONTENTS  The Ftp Model  Data transfer functions  File transfer functions  Declarative specifications.
John Degenhart Joseph Allen.  What is FTP?  Communication over Control connection  Communication over Data Connection  File Type  Data Structure.
Web Proxy Server. Proxy Server Introduction Returns status and error messages. Handles http CGI requests. –For more information about CGI please refer.
TCP/IP protocols Communication over Internet is mostly TCP/IP (Transmission Control Protocol over Internet Protocol) TCP/IP "stack" is software which allows.
Image Registration Lecture 7: Getting Started with ITK March 15, 2005 Prof. Charlene Tsai.
Socket Lab Info. Computer Network. Requirement Use TCP socket to implement a pair of programs, containing a server and a client. The server program shall.
DICOM - Digital Imaging and Communications in Medicine
World Wide Web Hypertext model Use of hypertext in World Wide Web (WWW) WWW client-server model Use of TCP/IP protocols in WWW.
Introduction to Network Programming with Sockets Network Programming Kansas State University at Salina.
DICOM INTERNATIONAL DICOM INTERNATIONAL CONFERENCE & SEMINAR April 8-10, 2008 Chengdu, China Efficient, Standard-Compliant Streaming of EHR Imagery Combining.
ITK Input/Output Kitware Inc.. Overview IO Factory Mechanism Image File IO Transform File IO SpatialObject File IO Logger.
Programming into Slicer3. Sonia Pujol, Ph.D., Harvard Medical School -1- National Alliance for Medical Image Computing Programming into Slicer3 Sonia Pujol,
C-FIND Performance Issues. Multiple Patient IDs PACS increasingly have records transferred between facilities (IHE and otherwise) Transferred patient.
Archival and Communication of DICOM Images on a Hospital Network Sheikh Mahmood H.M School of Biomedical Engineering IIT - Bombay.
NA-MIC National Alliance for Medical Image Computing ParaView Server Manager Berk Geveci Andy Cedilnik.
Agilent Technologies Copyright 1999 H7211A+221 v Capture Filters, Logging, and Subnets: Module Objectives Create capture filters that control whether.
Services for Advanced Image Access CP 309 and Advanced Query/Retrieve Work Item WG-04, 18 February 2003 Harry Solomon and Yongjian Bao GE Medical Systems.
Slicer3 for developers – S.Pujol -1- National Alliance for Medical Image Computing Slicer3 Course for developers Sonia Pujol, Ph.D. Surgical Planning Laboratory.
Server-side Programming The combination of –HTML –JavaScript –DOM is sometimes referred to as Dynamic HTML (DHTML) Web pages that include scripting are.
The Problems HTTP is disconnected So many database vendors Create a simple consistent versatile interface on the data Look at ADO.NET classes OleDb SQL.
Imaging Systems in Radiology
DICOM INTERNATIONAL DICOM INTERNATIONAL CONFERENCE & SEMINAR April 8-10, 2008 Chengdu, China Exchanging Imaging Data Herman Oosterwijk Add logo if desired.
 Lossless › Integer wavelet (+/- reversible color transformation).  Either lossless or lossy › Integer or floating point wavelet  Many features! › Region-of-interest.
Class 9 LBSC 690 Information Technology Multimedia.
8 February 2008 DVTk – IHE Actor Simulation Rick Busbridge Agfa Healthcare.
WP 10 ATF meeting April 8, 2002 Data Management and security requirements of biomedical applications Johan Montagnat - WP10.
b<>com Rest DICOM Library A portable DICOMweb™ toolkit
[1] ISO TC215 / DICOM – Jan. 18, Health Informatics – Messages and Communication – Web Access to DICOM Persistent Objects (WADO) Ad Hoc Group ISO.
Exchanging Imaging Data
G.v. Bochmann, revised Jan Comm Systems Arch 1 Different system architectures Object-oriented architecture (only objects, no particular structure)
ITK Basic Filters Kitware Inc.. ITK Basic Filters Pixel-wise Arithmetic, Casting, Thresholding Mathematical morphology Noise reduction Gaussian, Anisotropic.
Piyush B Using DVTk tools in service environment Piyush B DVTk developer.
Read a DICOM File typedef unsigned charInputPixelType; const unsigned intInputDimension = 2; typedef itk::Image InputImageType; typedef itk::ImageFileReader.
Medical Image Processing Server using DICOM. Barberis, Sebastián (1), Graffigna, Juan Pablo (2), Isoardi, Roberto (1) 1 – Escuela de Medicina Nuclear.
ITK Statistical Classification Kitware Inc.. Statistical Classification Multiple Components Images K-Means Markov Random Fields.
Aleksandar Drašković Enterprise Architect deroso Solutions GmbH Data shredding: a deep dive into SharePoint 2013 storage architecture.
NA-MIC National Alliance for Medical Image Computing Three ways to use the NA-MIC kit Sonia Pujol, Ph.D. Instructor of Radiology Surgical.
September, 2005What IHE Delivers 1 Stefan Claesen – Medflow Inc In partnership with Visbion Ltd IHE Eye Care Webinar Requirements for PACS\IMS vendors.
Clinical Data Exchange using HL7 and Mirth Connect Lecture 14 - DICOM connectors - Encoding/decoding Base64 data - Message Attachments - System Events.
SNMP.
Implementing Quality of Service (QoS)
Web Development Web Servers.
EE2E1. JAVA Programming Revision Lecture.
Layered Architectures
Net 323 D: Networks Protocols
OUTLINE Basic ideas of traditional retrieval systems
ITK Architecture Kitware Inc..
Net 323 D: Networks Protocols
Remote Data Access Update
Encrypted Database Final Presentation
An Introduction to Internetworking
Realizing a Peer-to-Peer System using a common API
Exceptions and networking
Presentation transcript:

ITKv4 DICOM Status Mathieu Malaterre, Mark Roden Alexandre Gouaillard, William Ryan, Daniel Blezek

Summary 1.DICOM DataSet abstraction 2.DICOM Query/Retrieve (network protocol) abstraction 3.Streaming 4.RTSTRUCT 5.MOSAIC

itk::DICOMDataSet itk::DICOMDataSet should replace the itk::MetaDataDictionary implementation for storing DICOM Attributes. Will allow re-use of third party lib (eg. DCMTK or GDCM), it will hold a pointer to the internal implementation. Interface will implements Supp 118 for querying of attributes One itk::DICOMDataSet per file (3D multiframes is not a Series of 2D frames)

Supp 118 queries (0008,1090) LO [RHAPSODE] # 8, 1 ManufacturersModelName (0008,2111) ST [JPEG 2000 irreversible (lossy) 69:1] # 36, 1 DerivationDescription... (0008,9215) SQ (Sequence with undefined length #=1) # u/l, 1 DerivationCodeSequence (fffe,e000) na (Item with undefined length #=3) # u/l, 1 Item (0008,0100) SH [113040] # 6, 1 CodeValue (0008,0102) SH [DCM] # 4, 1 CodingSchemeDesignator (0008,0104) LO [Lossy Compression] # 18, 1 CodeMeaning (fffe,e00d) na (ItemDelimitationItem) # 0, 0 ItemDelimitationItem (fffe,e0dd) na (SequenceDelimitationItem) # 0, 0 SequenceDelimitationItem const itk::DICOMDataSet &ds = dicomio- >GetDICOMDataSet(); string value; string query = ivationCodeSequence']” ds.GetValueFromQuery( query, value ); std::cout << “Code Meaning=” << value << std::endl;

Filter DICOM DataSet(s) ImageIOType::Pointer dicomio = ImageIOType::New(); ReaderType::Pointer reader = ReaderType::New(); reader->SetFileNames( filenames ); reader->SetImageIO( dicomio ); reader->Update(); FilterType::Pointer filter = FilterType::New(); filter->SetInput( reader->GetOutput() ); ImageIOType::Pointer dicomio2 = ImageIOType::New(); DICOMFilterType::Pointer anonymize = DICOMFilterType::New(); anonymize->SetInput( dicomio->GetDICOMDataSetArray() ); WriterType::Pointer writer = WriterType::New(); writer->SetInput( filter->GetOutput() ); dicomio2->SetDICOMDataSetArray( anonymize->GetDICOMDataSetArray() ); writer->SetImageIO( dicomio2 ); writer->SetFileNames( outputfilenames ); writer->Update();

Implementation Specific (GDCM) itk::DICOMDataSet &dicomds = io->GetDICOMDataSet(); itk::GDCMDataSet &gdcmds = dynamic_cast (dicomds); gdcm::DataSet &ds = gdcmds->GetGDCMDataSet(); const gdcm::PrivateTag tstringdata(0x33,0x1f,"GEMS_GENIE_1"); if( !ds.FindDataElement( tstringdata ) ) return 1; const gdcm::DataElement& stringdata = ds.GetDataElement( tstringdata ); ProcessSDOHeader( stringdata );

DICOM Discussion Represented: – CoSMo – Mayo – CTK/NAMIC – INRIA

DICOM Query/Retrieve C-ECHO C-STORE C-FIND (Patient & Study) Patient/Study Only will not be available C-GET: will not be available C-MOVE No external application required C-STORE SCP association using different port

C-ECHO An implementation for Service Class User (SCU) for the Verification SOP Class. Sends a DICOM C-ECHO message to a Service Class Provided (SCP) and waits for an answer. Used to verify basic DICOM connectivity PING !

itk::DICOMSCU (C-ECHO) itk::DICOMSCU scu; scu.SetPeer( “mi2b2.slicer.org” ); scu.SetCalledAETitle( “MI2B2” ); scu.SetPort( ); try { scu.SendEcho(); } catch ( itk::DICOMException & e ){ std::cerr << e.what() << std::endl; }

C-STORE This is used to send DataSet using the DICOM protocol (over TCP/IP). Equivalent to HTTP PUT

itk::DICOMSCU (C-STORE) vector filenames = …; itk::DICOMSCU scu; scu.SetPeer( “mi2b2.slicer.org” ); scu.SetCalledAETitle( “MI2B2” ); scu.SetPort( ); try { scu.SendStore( filenames ); } catch ( itk::DICOMException & e ){ std::cerr << e.what() << std::endl; }

C-FIND This is used to query an SCP using the C-FIND message. In SQL select PATIENT.PatientID, STUDY.StudyDate, STUDY.ModalitiesInStudy, STUDY.StudyDescription from PATIENT, STUDY where PATIENT.PatientID = "99999" and STUDY.Patient_fk = PATIENT.pk

itk::DICOMSCU (C-FIND) itk::DICOMSCU scu; scu.Set... itk::SeriesQuery::Pointer query = SeriesQuery::New(); query->SetPatientName( “X*” ); vector cfind_results; try { cfind_results = scu.SendFind( query ); } catch ( itk::DICOMException & e ){ std::cerr << e.what() << std::endl; }

itk::DICOMSCU (C-FIND) Open Questions itk::SeriesQuery::Pointer query = SeriesQuery::New(); query->SetPatientName( “* 王 ^ 小東 *” ); itk::SeriesQuery::Pointer query = SeriesQuery::New(); query->SetPatientName( “*Ibáñez*” ); itk::SeriesQuery::Pointer query = SeriesQuery::New(); query->SetPatientName( “*Jérôme*” ); itk::SeriesQuery::Pointer query = SeriesQuery::New(); query->SetPatientName( “*Rüdiger*” );

C-GET This is essentially just a C-MOVE, except it does not require an extra step (another Association). This is not implemented in some private implementation.

C-MOVE This is used to retrieved DataSet using the DICOM protocol (over TCP/IP) Somewhat equivalent to HTTP GET

itk::DICOMSCU (C-MOVE) itk::DICOMSCU scu; scu.SetPeer( “mi2b2.slicer.org” ); scu.SetCalledAETitle( “MI2B2” ); scu.SetPort( ); scu.SetAETitle( “GDCMSCU” ); scu.SetIncomingPort( 5678 ); scu.SetOutputDirectory( “/tmp” ); try { scu.SendMove( cfind_results ); } catch ( itk::DICOMException & e ){ std::cerr << e.what() << std::endl; }

Server side configuration (dcm4chee)

Streaming Read/Write: RAW JPEG 2000 User demand: JPEG JPEG-LS RLE

JPEG 2000 Streaming Reading: Support in OpenJPEG v2, using opj_set_decode_area API Writing: Support in OpenJPEG v2 using opj_write_tile Open Question: when user extent do not match tile requirement

JPEG/JPEG-LS/RLE No direct support for streaming. Need to decompress the whole image, to access the last scanline 16 bits based standard, worse case scenario is 4Gb dataset.

itk::MOSAICImageIO Subclass of itk::GDCMImageIO Identical to itk::GDCMImageIO, except image is untiled.

itk::RTSTRUCT 2D contours will be loaded as itk::QuadEdgeMesh (subclass of itk::Mesh) Provide a itk::RTSTRUCTProperties to attach properties to each individual itk::QuadEdgeMesh (eg. Generation Algorithm Name)

References ork ork