DicomObjects manifest file
There are many ways to generate a manifest file. They can be used to define your project’s resource dependencies (and much more) and for this example we have used mt.exe which comes as a part of the windows SDK installation. This avoids the step to register COM object on a machine mainly for portability and reasons related to restricted registry access. A manifest file can be added to your project (if supported) so that the resources are identified when the executable is run.
DicomObjects.COM 64bit Registration
This article provides help for those wishing to use the 64 bit version of DicomObjects from Visual Studio (for development in any supported language, including C# or C++)
Visual Studio is itself a 32 bit application, even when it is compiling a 64 bit application, which uses a 64 bit OCX. Therefore, it cannot ITSELF access the 64 bit OCX for intellisense, #import etc. The standard requirements for using 64 bit COM component in Visual Studio is that a 32 bit version with the same interfaces must be registered on the development machine (this is not of course needed for subsequent execution).
DicomObjects.NET License Activation Dialog Customization
It’s possible and very easy to customize our DicomObjects.NET licence activation dialog:
You can download the sample C# LicenseDialogCustomization project to see how each control on the licence dialog can be renamed/removed, including text labels, text boxes, buttons and logo.
Our DicomServer is a generic DICOM server for public uses. It is built using DicomObjects and is provided for the following purposes:
A public resource for all DICOM developers to use for testing (whatever toolkit they use) A demonstration of the capabilities of DicomObjects A test bed to find possible interoperability problems, so that they may be fixed Configuraiton information for using it can be found on the site itself: http://www.
Disable DPI Awareness
Symptom Very rarely, but it does happen, that developers are faced with a very strange behaviour where their winForm application automatically changes it size on start up when DicomObjects.NET version 8 is loaded. Using earlier versions will not give the same behaviour.
Root Cause This scaling issue is caused by PresentationCore.dll (which is referneced by DicomObjects.NET v8 for 3D related data structures) which makes a call to SetProcessDPIAware when it is loaded.
Down Sampling an Image
This is a very small and quick example to show how to down size an image to an 8 bit image and resize down to ¼ of the size (50% each dimension).
DicomImage NewImage = (DicomImage)OrigImage.Clone(true); // copy the image DicomImage TempImage = OrigImage.PrinterImage(8, 1, false, ((float)0.5), new Rectangle(new Point(0,0),OrigImage.Size), true); for each (DicomAttribute a in TempImage.DataSet) // copy the attributes of the Temp image into the new image NewImage.
Drag and Drop
It is possible to drag and drop an Image between multiple DicomViewer controls even between different version of DicomObjects.
We are sometimes asked “does DicomObjects support ECG” (or EKG depending on where you are in the world!)
The answer is that we support it (as we for all SOP classes) for reading/writing/transmission as well as giving you the ability to create it and to extract data element values from it.
We do not offer explicit rendering (there are just TOO many variables, and we spend days handling every possible option of line thickness, colour etc.
Enhanced Multiframe to Single Frame Conversion
Splitting enhanced multiframe imaging objects to multiple single frame objects may involve many attributes. Given our flexiblility with Multiframe Images, we do not split the images by default. Because of this many ask us: “why don’t you also include this attribute from the per-frame functional groups to the single frame image”, or “can you not include that attribute in the single frame image”.
So the short answer is no.
However, there is a way with DicomObjects (both .
Extended negotiation allows “options” to be negotiated between 2 Application Entities as part of Negotiation. In order for the option to be available for use, it must be both proposed by the initiator and agreed by the acceptor.
The uses for extended negotiation are currently:
Relational Queries Specification of storage level (how accurately the data is retained) for C-STORE In DicomObjects, these values are used as follows:
What’s the correct file extension for DICOM files? Many people are using “DCM” as extension for DICOM files, but in fact there should be NO extension for DICOM files, as required by the DICOM Standard (parts 10-12). Characters in files names must all be upper-case, numbers 0-9 can also be used in file names, and the maximum filename length is 8 characters.
Filtering on and Retrieving the "Modality" in a C-FIND
Many people wish to obtain a list of studies of a particular type (modality) - CR, MR etc. and try to filter/retrieve this in a standard STUDY level request by adding element 0008,0060 to a query (using DoRawQuery in DicomObjects, and are disappointed to discover that either the whole query is then rejected, or that this attribute is ignored. This is because modality is technically a SERIES level attribute in DICOM, as a DICOM study is allowed to contain multiple series, each with perhaps different modalities.
Frame Level Retrieval
Frame Level Retrieval (DICOM Supplement 119) was written by Dr. David Harvey (1962-2018), founder of Medical Connections, and is fully supported by DicomObjects.
Frame Selection Options There are 2 (actually 3, with the 3rd one using Content Time values to specify a Time Range) ways to ask for specific frames:
Simple Frame List Contains a list of frame numbers, each specifying a frame to be included in the returned object.
General Purpose Worklist
DICOM General Purpose Worklist (GPWL) is a means to allow reporting of other worklists to be shared between systems in a vendor neutral manner. it is of course supported by DicomObjects but industry uptake has been very low, as vendors like to “tie” their PACS and reporting stations together using proprietary protocols. It was retired from DICOM about 2010.
It is based closely on the Modality Worklist and Modality Performed Procedure Step services, and is summed up by this diagram:
For plain radiographs (conventional x-rays), the size recorded on the film is always larger than the size of the object being imaged, due to an effect called geometric magnification. Moreover, as shown in the diagram below, the amount of magnification varies for different objects, depending on their distance from the film, so it is NOT in general possible to “correct” for such magnification without knowing the distance of the object from the film.