dcmjpls: bibliothèque de compression/décompression et applications utilitaires
Ce module contient des classes qui assurent la conversion entre les représentations non compressées et compressées en JPEG-LS (syntaxes de transfert) d'un objet image DICOM. Les processus JPEG-LS sans perte et quasi sans 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 :
- dcmcjpls: encode un fichier DICOM vers la syntaxe de transfert JPEG-LS
- dcmdjpls: décode un fichier DICOM compressé en JPEG-LS
- dcml2pnm: convertit des images DICOM en PGM/PPM, PNG, TIFF ou BMP
Exemples
L'exemple suivant montre comment compresser un fichier image DICOM en JPEG-LS sans perte :
DJLSEncoderRegistration::registerCodecs(); // enregistre les codecs JPEG-LS
DcmFileFormat fileformat;
if (fileformat.loadFile("test.dcm").good())
{
DcmDataset *dataset = fileformat.getDataset();
DcmItem *metaInfo = fileformat.getMetaInfo();
DJLSRepresentationParameter rp(0, OFTrue); // paramètres pour le mode sans perte
// this causes the lossless JPEG-LS version of the dataset to be created
dataset->chooseRepresentation(EXS_JPEGLSLossless, ¶ms);
// check if everything went well
if (dataset->canWriteXfer(EXS_JPEGLSLossless))
{
// store in lossless JPEG-LS format
fileformat.saveFile("test_jpls.dcm", EXS_JPEGLSLossless);
}
}
DJLSEncoderRegistration::cleanup(); // annule l'enregistrement des codecs JPEG-LS
L'exemple suivant montre comment décompresser un fichier image DICOM compressé en JPEG-LS :
DJLSDecoderRegistration::registerCodecs(); // enregistre les codecs JPEG-LS
DcmFileFormat fileformat;
if (fileformat.loadFile("test_jpls.dcm").good())
{
DcmDataset *dataset = fileformat.getDataset();
// decompress data set if compressed
dataset->chooseRepresentation(EXS_LittleEndianExplicit, NULL);
// check if everything went well
if (dataset->canWriteXfer(EXS_LittleEndianExplicit))
{
fileformat.saveFile("test_decompressed.dcm", EXS_LittleEndianExplicit);
}
}
DJLSDecoderRegistration::cleanup(); // annule l'enregistrement des codecs JPEG-LS
Remarque juridique
Notez que Hewlett Packard affirme détenir des brevets applicables au JPEG-LS. Hewlett Packard accorde des licences gratuites pour les implémentations conformes du JPEG-LS. OFFIS, en tant qu'auteur de la boîte à outils DCMTK, a obtenu une telle licence, mais selon votre législation nationale, les entreprises qui utilisent le codec JPEG-LS de DCMTK peuvent également devoir acquérir une licence. Consultez http://www.hpl.hp.com/loco/ pour en savoir plus si vous envisagez d'utiliser ce module à des fins commerciales.