dcmjpls: 圧縮・展開ライブラリとユーティリティアプリ群
このモジュールには、DICOM 画像オブジェクトの非圧縮表現と JPEG-LS 圧縮表現(転送構文)を相互に変換するクラスが含まれます。JPEG-LS のロスレス処理とニアロスレス処理の両方に対応します。本モジュールは、クラス DcmCodec を基底とする一連のコーデックを実装しており、モジュール dcmdata が管理するコーデック一覧に登録できます。
主なインターフェイスクラスは次のとおりです。
ツール
このモジュールには次のコマンドラインツールが含まれます。
- dcmcjpls: DICOM ファイルを JPEG-LS 転送構文へエンコード
- dcmdjpls: JPEG-LS 圧縮された DICOM ファイルをデコード
- dcml2pnm: DICOM 画像を PGM/PPM・PNG・TIFF・BMP へ変換
使用例
次の例は、ロスレス JPEG-LS で DICOM 画像ファイルを圧縮する方法を示します。
DJLSEncoderRegistration::registerCodecs(); // register JPEG-LS codecs
DcmFileFormat fileformat;
if (fileformat.loadFile("test.dcm").good())
{
DcmDataset *dataset = fileformat.getDataset();
DcmItem *metaInfo = fileformat.getMetaInfo();
DJLSRepresentationParameter rp(0, OFTrue); // parameters for lossless
// 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(); // deregister JPEG-LS codecs
次の例は、JPEG-LS 圧縮された DICOM 画像ファイルを展開する方法を示します。
DJLSDecoderRegistration::registerCodecs(); // register JPEG-LS codecs
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(); // deregister JPEG-LS codecs
法的事項
Hewlett Packard は、JPEG-LS に適用される特許を保有していると主張しています。Hewlett Packard は、JPEG-LS の準拠実装に対して無償ライセンスを付与しています。DCMTK ツールキットの作者である OFFIS はこのライセンスを取得済みですが、各国の法制度によっては、DCMTK の JPEG-LS コーデックを利用する企業が別途ライセンスを取得する必要がある場合があります。本モジュールを商用目的で利用する場合は、http://www.hpl.hp.com/loco/ を参照してください。