当前位置:首页 > 前端 > Cornerstone3D > 正文内容

通过cornerstone2.0获取dicom文件头信息

virtualman2周前 (11-09)Cornerstone3D60

在解析dicom头信息之前,需要先明确,DICOM文件的具体格式,可移步:https://virtualman.top/index.php/post/57.html

  /**
  *  获取头部信息,仅限Dicom文件
  */
  function getHeaderInfo() {
    if(store.state.volumeInfo.type !== 'dicom'){
      store.state.dicomHeadInfo ={};
      return ElMessage.error('仅限DICOM文件');
    }
    cornerstone.imageLoader.loadImage(store.state.volumeInfo.volume.imageIds[0]).then(async (imageData) => {
      if (imageData.data) {
          store.state.dicomHeadInfo =  {
          PatientName: imageData.data.string("x00100010"),
          PatientID: imageData.data.string("x00100020"),
          PatientBirthDate: imageData.data.string("x00100030"),
          PatientSex: imageData.data.string("x00100040"),
          PatientWeight: imageData.data.string("x00101030"),
          PatientHeight: imageData.data.string("x00101030"),
          StudyDate: imageData.data.string("x00080020"),
          StudyDescription: imageData.data.string("x00081030"),
          AccessionNumber: imageData.data.string("x00080050"),
          InstitutionName: imageData.data.string("x00080080"),
          InstitutionAddress: imageData.data.string("x00080081"),
          InstitutionalDepartmentName: imageData.data.string("x00081040"),
          Manufacturer: imageData.data.string("x00080070"),
          ManufacturerModelName: imageData.data.string("x00081090"),
          SoftwareVersions: imageData.data.string("x00081090"),
          ProtocolName: imageData.data.string("x00181030"),
          SeriesDescription: imageData.data.string("x0008103e"),
          SeriesNumber: imageData.data.string("x00200011"),
          InstanceNumber: imageData.data.string("x00200013"),
          Modality: imageData.data.string("x00080060"),
          SeriesInstanceUID: imageData.data.string("x0020000e"),
          StudyInstanceUID: imageData.data.string("x0020000d"),
          SOPInstanceUID: imageData.data.string("x00080018"),
          SOPClassUID: imageData.data.string("x00080016"),
          ImageType: imageData.data.string("x00080008"),
          Rows: imageData.data.string("x00280010"),
          Columns: imageData.data.string("x00280011"),
          PixelSpacing: imageData.data.string("x00280030"),
          ImageOrientation: imageData.data.string("x00200037"),
          ImagePosition: imageData.data.string("x00200032"),
          SliceThickness: imageData.data.string("x00180050"),
          SliceLocation: imageData.data.string("x00201041"),
          PixelRepresentation: imageData.data.string("x00280103"),
          BitsAllocated: imageData.data.string("x00280100"),
          BitsStored: imageData.data.string("x00280101"),
          HighBit: imageData.data.string("x00280102"),
          WindowCenter: imageData.data.string("x00281050"),
          Windowwidth: imageData.data.string("x00281051"),
          // PixelData: imageData.data.string("x7fe00010"),
        }
      } else {
            ElMessage.error("暂无图像信息");
      }
    }).catch((e)=>{
      ElMessage.error("暂无图像信息");
      store.state.dicomHeadInfo ={};
    });
  }

简单说下上述代码,这段代码定义了一个名为 getHeaderInfo 的函数,用于从一个 DICOM 文件中提取元数据信息,并将其存储在应用的状态管理器(store)中。

首先检查当前加载的数据类型是否为 DICOM 类型,如果不是,则会通过 ElMessage.error 显示一条错误消息,并清除 DICOM 头信息。如果数据类型正确,那么它会使用 cornerstone.imageLoader.loadImage 方法加载第一个图像的 ID(因为dicom文件通常都是一组的形式加载,我们取头信息的时候只需要取出其中一张的头信息即可),并从中读取一系列标准的 DICOM 标签值。 

 

 

 

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。