在解析dicom圖像過程中常常遇到經過壓縮的DICOM圖像,不能直接讀取。
想要讀取的話,需要解碼
DJDecoderRegistration::registerCodecs(); // register JPEG codecs
還有釋放線程
DJDecoderRegistration::cleanup();
DCMTK官網給出了JPEG格式壓縮的DCM文件解壓縮的方法(http://support.dcmtk.org/docs/mod_dcmjpeg.html),代碼摘錄如下:
DJDecoderRegistration::registerCodecs(); // register JPEG codecs DcmFileFormat fileformat; if (fileformat.loadFile("test_jpeg.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); } } DJDecoderRegistration::cleanup(); // deregister JPEG codecs
相關博客:
https://my.oschina.net/zssure/blog/354760
DCMTK 開源庫的學習筆記2:直接操作dcm文件中像素數據的嘗試
https://blog.csdn.net/fanhenghui/article/details/78626909
dcmtk壓縮解壓縮注意的地方
https://blog.csdn.net/m_buddy/article/details/53117427
解壓縮讀取Dicom圖片(彩色)及顯示
http://blog.sina.com.cn/s/blog_71f90cdf0100pfbu.html
DICOM Object基本概念(包含具體壓縮UID)
3、Pixel data介紹
Pixel data is treated the same as all other attributes
(7FE0,0010) - Pixel Data tag
Pixel data的存儲方式,包括:未壓縮,壓縮(無損、有損壓縮)
影像的Transfer Syntax UID (0002,0010)決定了影像的存儲方式,比如:
未壓縮:
Implicit VR Little Endian:
Default Transfer Syntax for DICOM 1.2.840.10008.1.2
Explicit VR Little Endian 1.2.840.10008.1.2.1
Explicit VR Big Endian 1.2.840.10008.1.2.2
無損壓縮:
JPEG Lossless :
Default Transfer Syntax for Lossless JPEG
ImageCompression 1.2.840.10008.1.2.4.70
JPEG 2000 Image Compression
(Lossless Only) 1.2.840.10008.1.2.4.90
RLE Lossless 1.2.840.10008.1.2.5
有損壓縮:
Default Transfer Syntax for Lossy
JPEG 12 Bit Image Compression
1.2.840.10008.1.2.4.51
LOSSY(8 bit) 1.2.840.10008.1.2.4.50
動態:
MPEG2 image Compression 1.2.840.10008.1.2.4.100