Image 无法将索引(逻辑)图像转换为灰度

Image 无法将索引(逻辑)图像转换为灰度,image,matlab,image-processing,Image,Matlab,Image Processing,我有这样的图像: Filename: '/bmp/ae07_001.bmp' FileModDate: '09-Apr-2014 19:21:20' FileSize: 7202 Format: 'bmp' FormatVersion: 'Version 3 (Microsoft Windows 3.x)' Width: 449 Height: 119

我有这样的图像:

          Filename: '/bmp/ae07_001.bmp'
       FileModDate: '09-Apr-2014 19:21:20'
          FileSize: 7202
            Format: 'bmp'
     FormatVersion: 'Version 3 (Microsoft Windows 3.x)'
             Width: 449
            Height: 119
          BitDepth: 1
         ColorType: 'indexed'
   FormatSignature: 'BM'
NumColormapEntries: 2
          Colormap: [2x3 double]
           RedMask: []
         GreenMask: []
          BlueMask: []
   ImageDataOffset: 62
  BitmapHeaderSize: 40
         NumPlanes: 1
   CompressionType: 'none'
        BitmapSize: 7140
    HorzResolution: 2925
    VertResolution: 2925
     NumColorsUsed: 2
NumImportantColors: 2

所以它是一个逻辑格式的索引图像

问题是我看不懂。例如,如果我使用simple命令

img=imread(文件)

我明白了:

因此,为了正确阅读,我使用:

[img, map] = imread(file);
imshow(img, map);
在这里,它显示得很好,但我不想显示它,我想进一步处理它,所以我必须将其转换为灰度,我使用以下命令执行此操作:

new=ind2gray(img,map)

在这里,我得到了警告:

警告:X应为双精度、单精度、uint8或uint16阵列。 使用IM2DOUBLE(X,'index')将图像转换为double

如果我使用
imshow(new)
它只会显示为一个空白框,只是一个没有文本的白色图像

我尝试了推荐的
im2double(img,'indexed')
,然后使用
ind2gray
,但还是出现了一个白色框,缺少数据


为什么我不能将此图像转换为灰度?

如果您有一个二值索引图像,并且当您将索引显示为强度图像时,它是向后的,您只需反转这些强度:

uint8(255*~imread(file))


你能在没有修改的情况下将实际的bmp发布到某个地方吗?也就是说,考虑到你的结果,我打赌你可以通过
uint8(255*~imread(file))
double(~imread(file))
得到你想要的,但这将是一个特别的解决方案。也许只是
new=ind2gray(uint8(img),map)将是二进制索引图像的正确答案(奇怪),为什么不能执行类似于
img=255*uint8(img)的操作
imread()
返回的类型是什么?您尝试的类型是什么?@chappjc您的临时解决方案确实完成了任务。谢谢,如果你能加上它作为答案,我会接受的。太好了!答案贴出来了。很高兴它有帮助。我仍然对这个二进制索引的.bmp文件很好奇。有没有办法在不修改的情况下发布实际文件?文章中的内容被转换为png和jpg。
double(~imread(file))