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)如果数组中的数据是0或1,那么代码>将是二进制索引图像的正确答案(奇怪),为什么不能执行类似于img=255*uint8(img)的操作代码>?imread()
返回的类型是什么?您尝试的类型是什么?@chappjc您的临时解决方案确实完成了任务。谢谢,如果你能加上它作为答案,我会接受的。太好了!答案贴出来了。很高兴它有帮助。我仍然对这个二进制索引的.bmp文件很好奇。有没有办法在不修改的情况下发布实际文件?文章中的内容被转换为png和jpg。
double(~imread(file))