GDCM Summer of Code 2012
From gdcm
Contents |
Presentation
Quick overview of GDCM here
Google sponsored SoC 2012 (Summer of Code 2012). GDCM has been accepted as mentoring organization.
If you have any questions, feel free to contact the GDCM mentoring administrator, Mathieu Malaterre, at (malat -at- users sf net).
If you are volunteering to become a mentor, please read this.
If you are a student interested in any of the following projects, please go to GSOC 2012 Student Application page to apply.
This page contains a few project ideas (which, by no means, limits any prospective proposals).
Timeline
- March 26, 2012 - Applications open for students
- April 6, 2012 - deadline for students to apply
Patient Privacy (Password Protection)
Summary: Implements a Password based encryption for PHI
Description: GDCM currently implements patient protection by using the Basic Application Level Confidentiality Profile (see gdcmanon). This profile uses Cryptographic Message Syntax (CMS) to encode file with certificate based keys, this imply a priori knowledge of not only all recipients but also public key infrastructure.
In practice, this has proved to be fairly difficult to deploy outside an institution, or hospitals. To satisfy user demand for a simpler usb-key-sharing scheme, the DICOM standard has been extended to allow password based encryption. In this case a password is used to encrypt and recover the content; such a password can be distributed separately from the media but to any number of recipients as appropriate.
This will greatly simplify the exchange of media containing patient information, since it will allow patient data protection while at the same time be very simple to exchange. The only required thing will be the exchange of a password, without the password the patient data cannot be accessed.
The implementation for PKCS#7 has been done using OpenSSL for a portable implementation (see gdcm::CryptographicMessageSyntax). However on windows this adds an unnecessary dependencie to OpenSSL, while the CryptoAPI could be used instead. By reimplementing gdcm::CryptographicMessageSyntax to use the CryptoAPI we could drop the dependencie to OpenSSL on windows.
Required skills:
- C++ programming
- OpenSSL / Cryptography knowledge would be ideal
References:
- DICOM 3.15-2011, Security and System Management
- DICOM Correction Proposal 895: Password based encryption
- http://gdcm.sourceforge.net/html/gdcmanon.html
- http://groups.google.com/group/comp.protocols.dicom/browse_thread/thread/bf4409639406302d
- http://www.mail-archive.com/openssl-users@openssl.org/msg59636.html
- http://www.ietf.org/rfc/rfc3852.txt
- http://msdn.microsoft.com/en-us/library/aa382372.aspx
- http://www.ureader.com/msg/16591281.aspx
- http://fedoraproject.org/wiki/CryptoConsolidationEval
- http://www.kernel.org/doc/Documentation/crypto/api-intro.txt
- http://www.aleksey.com/xmlsec/
Mentor: Mark Roden
Digital Signature
Summary: Implements a Signing and Verifying of DICOM Files
Description: Supplement 31 added features to allow DICOM applications to exchange messages over a Secure Transport Connection. While this protects the data during transit, it does not provide any lifetime integrity checks for DICOM SOP Instances. This supplement adds mechanisms for adding Digital Signatures to DICOM SOP Instances as a first step toward lifetime integrity checks.
Sup41 only addresses the following aspects of security:
- Authentication – verifying the identity of entities involved in an operation
- Data Integrity – verifying that data within an object has not been altered or removed
The goal of this project is to implements a profile from PS 3.15 Annex C; DIGITAL SIGNATURE PROFILES
Required skills:
- C++ programming
- Cryptography knowledge would be ideal (OpenSSL, NSS, CryptoAPI)
References:
Mentor: Mathieu Malaterre
Convert From/To Enhanced MR/CT Image Storage
Summary: Finish implementation of gdcmtar to convert from/to Enhanced MR/CT Image Storage
Description: gdcmtar support converting from SIEMENS MOSAIC back to MR Image Storage. It has basic support for converting from Enhanced MR/CT Image Storage. the goal would be to finish the implementation.
This would help user convert a Series of N DICOM files into a simplified view of M Enhanced DICOM files (M << N). An optional task would be as part of the conversion to also handle private extension and re-use the information from the old Image Storage Class instance and push it into the proper location in the new Image Storage Class.
This would also provide a tool for researchers to be able to convert from their private format to the public approved format for DTI/DWI (Diffusion).
Required skills:
- C++ programming
References:
- Supp 58 Enhanced CT Image Storage SOP Class
- Supp 157 Parts 2,3,4,6,16,17 Multi-Frame Converted Legacy Images
- http://gdcm.sourceforge.net/html/gdcmtar.html
Mentor: Mathieu Malaterre
Export From/To XML
Summary: Implement a tool to convert from DICOM to XML
Description: DICOM Working Group WG26 has defined an API for executing XPATH queries on DICOM Native Model. It would be nice to have a tool to convert from DICOM to XML. XML is not well suited for storing large binary blob (eg. Pixel Data attribute), however some other SOP Classes are well suited for this transformation (eg. SR Documents).
The generated XML files will be checked against DTD and or XSD for validity.
Required skills:
- C++ programming
- XML+XSD notions would be nice
References:
- Supp 118 Application Hosting
- http://support.dcmtk.org/docs/dcm2xml.html
- http://medical.nema.org/Dicom/2011/11_19pu.pdf
Mentor: Mathieu Malaterre
Improve OpenJPEG decoding/encoding time
Summary: OpenJPEG is the library used to encode/decode JPEG 2000 stream
Description: DICOM supports encapsulated JPEG 2000 stream. GDCM currently uses OpenJPEG as a library to compress/decompress JPEG 2000 stream. However this library could be improved as to take advantage of modern compiler extension (SSE, MMX). It could also takes advantage of some GPU coding.
Required skills:
- C programming
- GPU/assembly notions would be nice
- compiler options optimization notions would be nice
- skills on image/data compression notions would be nice
References:
- http://cuj2k.sourceforge.net/
- http://software.intel.com/en-us/articles/performance-tools-for-software-developers-application-notes-intel-ipp-jpeg2000-and-jasper-in-ksquirrel/
- http://www.ece.uvic.ca/~frodo/jasper/
- http://code.google.com/p/openjpeg/wiki/DocJ2KCodec
Mentor: Nicolas Bertrand
Possible ideas
Here comes a list of possible ideas, we are listing them for references (we need a mentor for them):
- convert the DICOM standard from .doc file into docbook (or XML-like format)
- add support for MPEG2/MPEG4
- Portable DICOM Viewer ( This may be a good tool for distributing portable DICOM viewer with dicom files through CD or USB stick ...etc)
- DICONDE viewer (changing internal dictionary reference from Patient to Component Name and Patient ID to Component ID ...etc)
- SCP equivalent of gdcmscu (aka gdcmscp)
- DICOM Structured Reporting Documents
- PS 3.3, 7.6-Extension of the DICOM model of the real world for clinical trials, p.79
- Authentification (PS 3.7, D.3.3.7-User Identity Negotiation, p. 105)
- PS 3.3, A.45-Encapsulated Document Information Object Definition, p.278
- gdcm::Anonymizer et PS 3.15, E-Attribute Confidentiality Profiles, p. 33)
- Web-services : supp 148
- GDCM Summer of Code 2011
- GDCM Summer of Code 0X
Applying
For more info, see the official website: Google Melange.
Or if you are looking for more practical information on how to apply: http://code.google.com/soc/
Link to the flyer:
Links
- http://www.google-melange.com/gsoc/program/home/google/gsoc2012
- http://www.google-melange.com/document/show/gsoc_program/google/gsoc2012/faqs
- http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2012/userguide
- http://code.google.com/p/google-summer-of-code/wiki/WikiStart
- http://www.google-melange.com/document/show/gsoc_program/google/gsoc2012/timeline
DICOM Status
Link to the DICOM status page, from David Clunie webpage
Mentors List
If you are considering becoming a mentor, please list yourself here. You should read the advice for mentors before:
Ref:
Mathieu Malaterre
Mathieu is the current maintainer of GDCM. He has been designing most of the GDCM 2.X toolkit from scratch. He is the main responsible if GDCM ever corrupts your data !
google account: mathieu dot malaterre (gmail)
Frédéric Cervenansky
google account: fceransky (gmail)
Mark Roden
Mark is a contributer to GDCM, notably collaborating with Mathieu to produce the networking section of GDCM 2.X, as well as additions to the vtkGDCMPolyDataReader and Writer classes for RT Struct handling.
google account: mmroden (gmail)
Nicolas Bertrand
Nicolas is a PhD student working on Digital Cinema, with Utopia ( a French network of indie cinema theaters). The goal is to provide a full open-source solution for creation, projection and distribution of digital copies in theaters. As Digital Cinema uses JPEG2000 for compression, OpenJpeg was chosen for encoding and decoding Images. More precisely, Nicolas work on OpenJpeg decoding optimization, to speed-up the decompression time to reach a decoding frame rate from 1/24 to 1/30 s on a "standard" machine ( no dedicated hardware used).
google account: nicoinattendu (gmail)
| |
