`
qimo601
  • 浏览: 3416174 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

DCMTK读取多帧图像,不需要全部读取像素数据,即可处理数据

阅读更多

 

Howto: Access multi-frame images without loading complete pixel data

Here's an example that shows how to access the individual frames of a large multi-frame image (for visualization purposes) without loading the complete pixel data into main memory.

The parameter fcount in the DicomImage constructor specifies that initially only the first 10 frames are processed. Multiple calls of processNextFrames() give access to the subsequent frames.

See API documentation for details.

Source Code

 

#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmimgle/dcmimage.h"
 
int main(int argc, char *argv[])
{
    OFLog::configure(OFLogger::INFO_LOG_LEVEL);
 
    DicomImage *image = new DicomImage("mf_image.dcm", CIF_UsePartialAccessToPixelData, 0, 10 /* fcount */); 
 
    if (image->getStatus() == EIS_Normal)
    {
        do {
            DCMIMGLE_INFO("processing frame " << image->getFirstFrame() + 1 << " to "
                                              << image->getFirstFrame() + image->getFrameCount());
        } while (image->processNextFrames());
    }
 
    delete image;
 
    return 0;
}

 Note

This example requires DCMTK 3.5.5 (20091222) or newer.

 

DicomImage::DicomImage ( const char *  filename,
const unsigned long  flags = 0,
const unsigned long  fstart = 0,
const unsigned long  fcount = 0 
)

constructor, open a DICOM file.

Opens specified file and reads image related data, creates internal representation of image data. Use getStatus() to obtain detailed information about any errors.

Parameters:
filename the DICOM file
flags configuration flags (see diutils.h, CIF_MayDetachPixelData is set automatically)
fstart first frame to be processed (optional, 0 = 1st frame), all subsequent use of parameters labeled 'frame' in this class refers to this start frame.
fcount number of frames (optional, 0 = all frames)

 

int DicomImage::processNextFrames ( const unsigned long  fcount = 0 ) [inline]

process next couple of frames.

If the image object has been created with less than the number of frames stored in the DICOM image, this function allows for accessing the subsequent frames. Multiple calls to this function allow for successively processing all frames stored in the file or dataset. See parameters 'fstart' and 'fcount' of the constructor for how to initially create an instance of this class. NB: Only "original" images can be processed in this way, i.e. images that were created by one of the above constructors. Images that were created by one of the createXXX() methods can not be processed since they are derived from original image data in a certain way, e.g. scaled.

Parameters:
fcount number of frames to be processed (0 = same number as before)
Returns:
status, true if successful, false otherwise

------------------------------------------------------------------

柳北风儿

http://qimo601.iteye.com

转载:http://support.dcmtk.org/wiki/dcmtk/howto/multiframe
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics