`
qimo601
  • 浏览: 3439298 次
  • 性别: 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
分享到:
评论

相关推荐

    C++,dcmtk,gdcm实现dicom图像解压缩,信息读取,支持jpeg,jpeg2000,jpeg-l

    总的来说,理解和使用DCMTK和GDCM库来处理DICOM图像,尤其是涉及不同压缩格式的解压缩和信息读取,是一项技术性较强的任务,需要对C++编程、DICOM标准以及图像压缩算法有一定的了解。这个过程中,开发者需要具备良好...

    基于DCMTK的DICOM图像查看器

    【标题】"基于DCMTK的DICOM图像查看器"是一个专门为医学图像处理设计的应用程序,它利用了开源的DCMTK库来实现对DICOM格式图像的读取、显示和解析。DICOM(Digital Imaging and Communications in Medicine)是医疗...

    基于DCMTK的DICOM医学图像显示及其调窗方法研究

    最后,将编译好的库文件复制到项目的安装目录中,即可在应用程序中调用DCMTK提供的函数,实现DICOM图像的读取、显示和调窗处理等功能。 #### 结论 基于DCMTK的DICOM医学图像显示及其调窗方法研究对于医学影像技术...

    C, C++读取 DICOM & DICONDE 图像数据

    这可能涉及到解码不同类型的像素数据、处理多帧图像、调整窗宽窗位以增强可视化效果等。 在压缩包中的"dicomTest"文件可能包含示例DICOM或DICONDE文件。你可以使用上述代码作为起点,尝试读取和解析这些文件以加深...

    用VC++和DCMTK显示DICOM医学图像_solidtdl_Vc_dcmtk_源码.rar.rar

    2. **图像解码**:DCMTK的`dcmimage`模块可以处理图像编码,将原始的像素数据解码为可显示的RGB或灰度图像。 3. **图像显示**:在VC++中,可以使用GDI+或Direct2D这样的图形库将解码后的图像绘制到窗口上。 4. **...

    DCMTK 显示DCM图像和调窗

    DCMTK是一个开源的医疗影像处理工具包,主要用于处理DICOM(Digital Imaging and Communications in Medicine)格式的图像数据。DICOM是一种国际标准,用于在不同的医学设备和系统之间交换医学影像和相关临床信息。...

    用VC++和DCMTK显示DICOM医学图像

    以上代码展示了如何使用DCMTK读取DICOM文件中的像素数据,并利用VC++显示这些数据。通过这种方式,可以有效地展示医学图像,为医生提供诊断所需的视觉信息。 #### 结语 本文详细介绍了如何使用VC++与DCMTK来显示...

    DCMTK显示DICOM并进行调窗处理程序

    1. **DCMTK组件**:DCMTK主要由几个组件组成,包括DcmDataKit(数据解析)、DcmImageKit(图像处理)和DcmNetworkKit(网络通信)。在这个项目中,我们主要关注DcmImageKit,它负责 DICOM 图像的读取和显示。 2. **...

    Dicom图像读取与显示

    在实际应用中,你可能还需要处理不同色彩空间(如RGB或灰度)、多帧图像、不同模态(如CT、MRI)等问题。确保理解DICOM标准和元数据的重要性,以及如何正确地处理这些数据,才能有效地在C++中读取和显示DICOM图像。...

    dcmtk-3.6.0官方帮助文档

    2. **DICOM文件处理**:通过dcmdata库,DCMTK可以读取、写入和验证DICOM文件的元数据,确保符合DICOM标准。 3. **DICOM图像解码与编码**:dcmimgle库提供了对各种医学图像格式的解码和编码支持,如JPEG、RLE、PNG等...

    DICOM图像读取以及窗宽,窗位调整

    总的来说,理解并掌握DICOM图像读取和窗宽窗位调整是医学影像处理中的重要技能,对于医生诊断和研究有着重要意义。通过熟悉相关库和API,开发者可以创建自己的 DICOM 图像查看器,实现个性化的图像显示和分析功能。

    利用VC++ 和DCMTK 实现医学图像显示和调窗功能

    DICOM文件通常由多个数据元素(DICOM Tags)组成,这些元素包含了图像的像素数据、设备信息、病患信息等。像素数据部分是图像的核心,通常以灰度或RGB形式存储,需要通过解码才能得到可显示的图像。而调窗技术则是...

    dicom医学图像文件的读取和增强方法

    结合DICOM库读取数据,然后用OpenCV进行处理,可以构建一个完整的DICOM图像读取和增强系统。 在实际应用中,还需要考虑 DICOM 文件的网络传输、批量处理、与医疗设备的交互等问题。了解DICOM标准、熟悉相关库的使用...

    编译好的DCMTK3.5.3

    1. **读取和写入DICOM文件**:通过DCMTK提供的API,可以方便地读取和写入DICOM格式的图像和其他数据。 2. **网络通信**:利用DCMTK的dcmnet组件,可以实现与DICOM设备(如CT、MRI扫描仪)的网络通信,进行数据传输。...

    DCMTK3.5.4的include库

    DCMTK提供了全面的支持,包括解析和生成DICOM数据、网络传输、以及处理各种DICOM对象(如图像、病人信息、研究资料等)。 在DCMTK 3.5.4的include库中,你可以找到以下关键模块的头文件: 1. **dcmdata**:这个...

    dcmtk 转换

    2. **转换数据**:根据需求,可以修改元数据或者图像数据,例如改变像素表示方式、重采样图像等,然后用dcmmkdir或dcmj2pnm等工具进行格式转换。 3. **网络通信**:如果需要通过DICOM网络协议传输数据,可以使用...

    dcmtk-3.6.5.zip

    在开发医疗图像应用时,DCMTK提供了一个强大的接口,用于读取、写入和操作DICOM数据。这包括解析DICOM文件的元数据,如患者信息、设备信息、以及图像的像素数据等。此外,它还支持网络通信,可以用来发送和接收DICOM...

    dcmtk3.6.4离线工具包

    - **dcmimgle**:负责处理DICOM图像数据,支持多种像素类型和压缩算法。 - **dcmjpeg**:专门处理JPEG编码的DICOM图像,支持基本和进程JPEG编码。 - **dcmnet**:实现了DICOM网络协议,包括DIMSE服务和C-FIND、C-...

    dcmtk3.6.3 工具包(64位)

    它支持多种图像格式,包括多帧图像和不同的像素数据类型。 3. **dcmimage**: 更高级别的图像处理库,可以进行更复杂的图像处理和分析,如颜色空间转换、窗口/层次调整等。 4. **dcmsr**: 专门处理DICOM结构化报告...

Global site tag (gtag.js) - Google Analytics