3

尝试使用一些 tiff 文件运行 imshow 时出现以下错误:

??? Error using ==> imageDisplayValidateParams>validateCData at 114
Unsupported dimension

Error in ==> imageDisplayValidateParams at 31
common_args.CData = validateCData(common_args.CData,image_type);

Error in ==> imageDisplayParseInputs at 79
common_args = imageDisplayValidateParams(common_args);

Error in ==> imshow at 199
  [common_args,specific_args] = ...

Error in ==> CellArea at 6
imshow('A1 x20.tiff')

我最初将图像数据存储在一个matlab变量中imread,当它不起作用时,imshow我用它直接用文件名获取图像;错误信息是一样的。

我要分析的问题图像是 1032x778 tiff 文件。我使用 Paint 制作了一个示例 tif 图像,该功能没有问题。有谁知道是什么导致了这些错误以及如何让图像显示?谢谢

这是其中一张图像的信息信息输出,根据要求

                 Filename: 'A1 x20.tiff'
              FileModDate: '14-Oct-2013 15:49:26'
                 FileSize: 3211714
                   Format: 'tif'
            FormatVersion: []
                    Width: 1032
                   Height: 778
                 BitDepth: 32
                ColorType: 'truecolor'
          FormatSignature: [73 73 42 0]
                ByteOrder: 'little-endian'
           NewSubFileType: 0
            BitsPerSample: [8 8 8 8]
              Compression: 'Uncompressed'
PhotometricInterpretation: 'RGB'
             StripOffsets: 8
          SamplesPerPixel: 4
             RowsPerStrip: 4.2950e+009
          StripByteCounts: 3211584
              XResolution: []
              YResolution: []
           ResolutionUnit: 'None'
                 Colormap: []
      PlanarConfiguration: 'Chunky'
                TileWidth: []
               TileLength: []
              TileOffsets: []
           TileByteCounts: []
              Orientation: 1
                FillOrder: 1
         GrayResponseUnit: 0.0100
           MaxSampleValue: [255 255 255 255]
           MinSampleValue: 0
             Thresholding: 1
                   Offset: 3211592

做 x = imread('A1 x20.tiff') 然后 whos x 给出

Name x
Size 778x1032x4
Bytes 3211584
Class uint8
Attributes
4

1 回答 1

5

出于某种原因,您的 tiff 文件有四个通道(与多帧无关):size(x,3)==4. 我猜第四个是 alpha 通道。
imshow可以显示灰度图像、索引图像(带有size(x,3)==1)或真彩色图像(带有size(x,3)==3)。您的图像有 4 个通道,因此imshow失败。
只要求inshow在前三个频道上工作就成功了:

 >> imshow( x(:,:,1:3) );
于 2013-11-10T16:44:03.477 回答