dcmpstat: a presentation state library and utility apps
This module contains classes that implement a high-level API for the DICOM Softcopy Grayscale Presentation State Storage SOP Class. It also contains various support classes that are used by DICOMscope, a free DICOM viewer that has been developed as a demonstrator for presentation states. See https://dicom.offis.de/en/dicomscope/
The main interface classes are:
Tools
This module contains the following command line tools:
- dcmmkcrv: Add 2D curve data to image
- dcmmklut: Create DICOM look-up tables
- dcmp2pgm: Read DICOM image and presentation state and render bitmap
- dcmprscp: DICOM basic grayscale print management SCP
- dcmprscu: Print spooler for presentation state viewer
- dcmpschk: Checking tool for presentation states
- dcmpsmk: Create DICOM grayscale softcopy presentation state
- dcmpsprt: Read DICOM images and presentation states and render print job
- dcmpsrcv: Network receive for presentation state viewer
- dcmpssnd: Network send for presentation state viewer
Examples
The following example shows how to create a default presentation state for a DICOM image:
DcmFileFormat infile;
DcmFileFormat outfile;
if (infile.loadFile("image.dcm").good())
{
DVPresentationState pstate; // presentation state handler
if (pstate.createFromImage(*infile.getDataset()).good())
{
// serialize presentation state into DICOM data set structure
if (pstate.write(*outfile.getDataset(), OFFalse).good())
{
// and write to file
outfile.saveFile("gsps.dcm", EXS_LittleEndianExplicit);
}
}
}
The following example shows how to apply the grayscale transformation pipeline from a presentation state to a DICOM image:
DcmFileFormat imagefile;
DcmFileFormat gspsfile;
if (imagefile.loadFile("image.dcm").good() &&
gspsfile.loadFile("gsps.dcm").good())
{
DVPresentationState pstate; // presentation state handler
if (pstate.read(*gspsfile.getDataset()).good()) // parse gsps object
{
// attach presentation state to image data
if (pstate.attachImage(&imagefile, OFFalse).good())
{
const void *pixel; // pointer to pixel data, one byte per pixel
unsigned long width; // width of image bitmap
unsigned long height; // height of image bitmap
if (pstate.getPixelData(pixel, width, height).good())
{
/ do something useful with the pixel data /
}
pstate.detachImage(); // release connection between GSPS and image
}
}
}