dcmjpeg: bibliothèque de compression/décompression et applications utilitaires
Ce module contient des classes qui convertissent entre les représentations non compressées et compressées en JPEG (syntaxes de transfert) d'un objet image DICOM. Les processus JPEG sans perte et avec perte sont tous deux pris en charge. Ce module implémente une famille de codecs qui dérivent de la classe DcmCodec et qui peuvent être enregistrés dans la liste des codecs gérée par le module dcmdata.
Les principales classes d'interface sont :
Outils
Ce module contient les outils en ligne de commande suivants :
- dcmcjpeg: encoder un fichier DICOM vers la syntaxe de transfert JPEG
- dcmdjpeg: Décoder un fichier DICOM compressé en JPEG
- dcmj2pnm: convertir des images DICOM en PGM/PPM, PNG, TIFF, JPEG ou BMP
- dcmmkdir: Créer un fichier DICOMDIR
Exemples
L'exemple suivant montre comment compresser un fichier image DICOM en JPEG sans perte :
DJEncoderRegistration::registerCodecs(); // register JPEG codecs
DcmFileFormat fileformat;
if (fileformat.loadFile("test.dcm").good())
{
DcmDataset *dataset = fileformat.getDataset();
DcmItem *metaInfo = fileformat.getMetaInfo();
DJ_RPLossless params; // codec parameters, we use the defaults
// this causes the lossless JPEG version of the dataset to be created
if (dataset->chooseRepresentation(EXS_JPEGProcess14SV1, ¶ms).good() &&
dataset->canWriteXfer(EXS_JPEGProcess14SV1))
{
// store in lossless JPEG format
fileformat.saveFile("test_jpeg.dcm", EXS_JPEGProcess14SV1);
}
}
DJEncoderRegistration::cleanup(); // deregister JPEG codecs
L'exemple suivant montre comment décompresser un fichier image DICOM compressé en JPEG :
DJDecoderRegistration::registerCodecs(); // register JPEG codecs
DcmFileFormat fileformat;
if (fileformat.loadFile("test_jpeg.dcm").good())
{
DcmDataset *dataset = fileformat.getDataset();
// decompress data set if compressed
if (dataset->chooseRepresentation(EXS_LittleEndianExplicit, NULL).good() &&
dataset->canWriteXfer(EXS_LittleEndianExplicit))
{
fileformat.saveFile("test_decompressed.dcm", EXS_LittleEndianExplicit);
}
}
DJDecoderRegistration::cleanup(); // deregister JPEG codecs