3

我曾经在 C 语言中使用 OpenCV,但现在决定给 MATLAB 一个机会。我对 MATLAB 很陌生,从一开始我就遇到了问题:

我读了这张图片:

X=dicomread('medicalimage.dcm') 

但是当我使用 imshow(X) 显示图像时,显示的图像与我上传的图像不同,即使我没有对图像进行任何更改。这是什么原因?两张图片之间有非常明显的对比度差异,而且似乎我丢失了原始图片中的一些细节。

我在我的 Ubuntu 12.04 系统上使用 MATLAB R2010b。

                      Filename: 'x.dcm'
                   FileModDate: '06-Nov-2006 09:49:26'
                      FileSize: 526966
                        Format: 'DICOM'
                 FormatVersion: 3
                         Width: 512
                        Height: 512
                      BitDepth: 12
                     ColorType: 'grayscale'
FileMetaInformationGroupLength: 202
    FileMetaInformationVersion: [2x1 uint8]
       MediaStorageSOPClassUID: '1.2.840.10008.5.1.4.1.1.2'
    MediaStorageSOPInstanceUID: '1.3.12.2.1107.5.1.4.54693.30000006100507010800000005302'
             TransferSyntaxUID: '1.2.840.10008.1.2.1'
        ImplementationClassUID: '1.3.6.1.4.1.19291.2.1'
     ImplementationVersionName: 'OSIRIX001'
  SourceApplicationEntityTitle: 'OSIRIX'
          SpecificCharacterSet: 'ISO_IR 100'
                     ImageType: 'ORIGINAL\PRIMARY\AXIAL\CT_SOM5 SPI'
                   SOPClassUID: '1.2.840.10008.5.1.4.1.1.2'
                SOPInstanceUID: '1.3.12.2.1107.5.1.4.54693.30000006100507010800000005302'
                     StudyDate: '20061005'
                    SeriesDate: '20061005'
               AcquisitionDate: '20061005'
                   ContentDate: '20061005'
                     StudyTime: '101556.921000'
                    SeriesTime: '102051.046000'
               AcquisitionTime: '101818.126639'
                   ContentTime: '101818.126639'
               AccessionNumber: '0'
                      Modality: 'CT'
                  Manufacturer: 'SIEMENS'
               InstitutionName: 'hY9'
            InstitutionAddress: ''
        ReferringPhysicianName: [1x1 struct]
                   StationName: 'CT54693'
              StudyDescription: 'Extrémités inférieures^Pied_cheville_UHR (Adulte)'
         ProcedureCodeSequence: [1x1 struct]
             SeriesDescription: 'Pied/cheville  1.0mm std'
       PerformingPhysicianName: [1x1 struct]
                  OperatorName: [1x1 struct]
         ManufacturerModelName: 'Sensation 64'
       ReferencedStudySequence: [1x1 struct]
       ReferencedImageSequence: [1x1 struct]
           SourceImageSequence: [1x1 struct]
                   PatientName: [1x1 struct]
                     PatientID: 'vAD7q3'
              PatientBirthDate: ''
                    PatientSex: ''
                    PatientAge: '000Y'
              BodyPartExamined: 'EXTREMITY'
                SliceThickness: 1
                           KVP: 120
        DataCollectionDiameter: 500
            DeviceSerialNumber: '54693'
               SoftwareVersion: 'syngo CT 2006A'
                  ProtocolName: 'Pied_cheville_UHR'
        ReconstructionDiameter: 206
      DistanceSourceToDetector: 1040
       DistanceSourceToPatient: 570
            GantryDetectorTilt: 0
                   TableHeight: 95
             RotationDirection: 'CW'
                  ExposureTime: 1000
               XrayTubeCurrent: 110
                      Exposure: 122
                    FilterType: '0'
                GeneratorPower: 17
                     FocalSpot: 0.7000
         DateOfLastCalibration: '20061005'
         TimeOfLastCalibration: '073350.000000'
             ConvolutionKernel: 'U30u'
               PatientPosition: 'FFS'
              StudyInstanceUID: '2.16.840.1.113669.632.20.1211.10000315526'
             SeriesInstanceUID: '1.3.12.2.1107.5.1.4.54693.30000006100507010800000005268'
                       StudyID: 'A10025547593'
                  SeriesNumber: 5
             AcquisitionNumber: 3
                InstanceNumber: 34
          ImagePositionPatient: [3x1 double]
       ImageOrientationPatient: [6x1 double]
           FrameOfReferenceUID: '1.3.12.2.1107.5.1.4.54693.30000006100506302075000001028'
                 SliceLocation: 58
                 ImageComments: 'JPEG 2000 lossless - Version 4.0.2 (c) Image Devices GmbH'
               SamplesPerPixel: 1
     PhotometricInterpretation: 'MONOCHROME2'
                          Rows: 512
                       Columns: 512
                  PixelSpacing: [2x1 double]
                 BitsAllocated: 16
                    BitsStored: 12
                       HighBit: 11
           PixelRepresentation: 1
       SmallestImagePixelValue: 0
        LargestImagePixelValue: 2583
                  WindowCenter: [2x1 double]
                   WindowWidth: [2x1 double]
              RescaleIntercept: -1024
                  RescaleSlope: 1
  WindowCenterWidthExplanation: 'WINDOW1\WINDOW2'
             RequestingService: 'Service d'orthopédie pédiatri'
 RequestedProcedureDescription: 'CT pied-cheville'
RequestedProcedureCodeSequence: [1x1 struct]
     RequestAttributesSequence: [1x1 struct]

左边是 imshow 的输出,右边是原图: http://img23.imageshack.us/img23/3166/differencem.png?http: //imageshack.us/

imshow(X,[0 255]) 的结果:http://img248.imageshack.us/img248/4140/difference2.png?http: //imageshack.us/

链接到我的 DCM 图像:http ://www.speedyshare.com/7enTP/x.dcm.zip

4

4 回答 4

2

如果您的 DICOM 数据包含颜色图,那么您也应该使用第二个输出将dicomread其导入并使用imshow. 例子:

[X, map] = dicomread('US-PAL-8-10x-echo.dcm');
imshow(X(:,:,1,1),map)

在此处输入图像描述

于 2012-10-08T14:10:12.000 回答
1

imshow根据最小和最大强度缩放图像的强度。假设最大强度为 255,请尝试imshow(X,[0 255]);.

于 2012-10-08T14:06:26.700 回答
1

您是否尝试过提供文档中提到的 DICOM 信息?

info = dicominfo('medicalimage.dcm');
Y = dicomread(info);
figure, imshow(Y);
imcontrast;
于 2012-10-08T15:25:57.957 回答
1

DICOM 信息具有高动态范围。图像的标题表明它是 12 位数据。您需要为显示您感兴趣的特征的动态范围部分设置窗口中心和窗口宽度,并计算与该窗口设置对应的最小和最大像素值。一旦确定了这些值,下面的代码将使用动态范围的那部分显示图像。

imshow(img, [minPixelValue, maxPixelValue]);
于 2012-10-09T13:52:08.270 回答