关闭

【matlab】matlab读用索引来表示(伪彩色)的bmp图像的格式相关问题

标签: matlabbmp
1996人阅读 评论(0) 收藏 举报
分类:

bmp图像的定义:bmp-百度百科
里面这样说到:

典型的BMP图像文件由四部分组成:
1:位图头文件数据结构,它包含BMP图像文件的类型、显示内容等信息;
2:位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息;
3:调色板,这个部分是可选的,有些位图需要调色板,有些位图,比如真彩色图(24位的BMP)就不需要调色板;
4:位图数据,这部分的内容根据BMP位图使用的位数不同而不同,在24位图中直接使用RGB,而其他的小于24位的使用调色板中颜色索引值

注意第4条!!
这篇文章也可以参看一下:BMP文件格式详解(BMP file format)

在用3M君给的”如何一键批量裁剪、排列、并输出图片?“(微信号:科学计算编点程, kexuebc)文章中,有朋友想直接拿代码来用但是运行但是有问题,原因是与bmp的格式有关。以下是一些测试:

用matlab生成一张bmp图像

代码:

X = [1,2,3,4];
Y = [1,3,4,4];
plot(X,Y);
print('-dbmp','-r300','turecolor.bmp');

生成的图像:
turecolor
读取图像的一些信息:

[IM, map] = imread('turecolor.bmp','bmp');
im_size  = size(IM)
im_class = class(IM)

结果:

im_size =

        1800        2400           3


im_class =

uint8

可以看到图像的存储在一个三维矩阵里面的:垂直1800个像素,水平2400个像素,3个通道(RGB),位图数据类型为uint8.

从origin生成图像

图片是从origin生成的,它生成的就是用索引值来表示的,要配合调色板来使用。我先从origin生成一张图如下(随便生成的,不看也罢):
伪彩色
在matlab中读取查看它的信息,代码如下:

[IM, map] = imread('pseudocolor.bmp','bmp');
im_size  = size(IM)
im_class = class(IM)

结果:

im_size =

        2461        3216


im_class =

uint8

可以看到它与matlab生成的图像有一点不同,对,结果显示它是一个2维的数组,2维的数组是无法表示彩色的,所以它还有对应的调色板(matlab里面叫colormap?)。

解决办法

对于用RGB表示的图像直接用3M君给的代码就好。
对于origin生成的这种将其转换为真彩色即可,在matlab中对应的函数为ind2rgb。读取bmp图像的时候一起读取它的colormap。
例子:

[IM, color_map] = imread('pseudocolor.bmp','bmp');
im_size         = size(IM)
IMrgb(:,:,:)    = ind2rgb(IM, color_map);
IMrgb_size      = size(IMrgb)

结果:

im_size =

        2461        3216


IMrgb_size =

        2461        3216           3

这样就可以用3M君的代码了。

0
0
查看评论

Matlab colorbar相关操作

转载自『http://hi.baidu.com/imheaventian/item/8d3b8ecf2c209408c610b210』 1) matlab中画多张图如何使用同一范围的colorbar 例如生成了图1,2,3 生成图1时,使用 temp1=caxis; 将图1的z值的取值范围(即col...
  • lqhbupt
  • lqhbupt
  • 2014-03-20 11:17
  • 8580

MATLAB之pcolor—绘制伪彩色图

功能:绘制伪彩色图。该图为一矩形单元、由参数C定义了颜色阵列,系统通过C中的每相邻的四点定义 的曲面补片而生成一伪彩色图。为彩色图是从上面向下面观看的“平面”曲面图。若用户使用命令shading faceted或shading flat,则每一单元的固定颜色是与之相连的角的颜色有关的。所以,C(i,...
  • yangfengman
  • yangfengman
  • 2016-11-09 11:12
  • 9987

Matlab之索引图像转化为灰度图和真彩图

本篇只讲应用不讲原理 在进行数字图像处理时,需要将图像转换成灰度图。如truecolor转化为灰度图,可用函数rgb2gray即可实现,语法也比较简单。如下: grayImage=rgb2gray(srcImage); 加载完图片后可使用imfinfo()函数查看图像信息,通过co...
  • keith_bb
  • keith_bb
  • 2016-04-18 09:16
  • 6369

matlab中二值图像、灰度图像、彩色图像、索引图像都是几维矩阵,区别是什么?

文章出处:http://zhidao.baidu.com/question/530453986.html?qbl=relate_question_3&word=matlab%D6%D0%C8%E7%BA%CE%C5%D0%B6%CF%D2%BB%B8%F6%CD%BC%CF%F1%CA%C7...
  • zhb123GGGGGG
  • zhb123GGGGGG
  • 2015-04-30 00:37
  • 5035

matlab中灰度图转换成索引图

  • 2010-06-04 19:19
  • 20KB
  • 下载

制作索引图 labelme

制作索引图 labelme
  • qq_28424679
  • qq_28424679
  • 2017-12-18 17:07
  • 266

Matlab中image、imagesc和imshow函数用法解析

原文转自:http://blog.csdn.net/zhupananhui/article/details/16340345 1、显示RGB图像 相同点:这三个函数都是把m*n*3的矩阵中的数值当做RGB值来显示的。 区别:imshow将图像以原始尺寸显示,image和images...
  • zy122121cs
  • zy122121cs
  • 2015-11-10 16:12
  • 46451

Matlab 矩阵索引

<br /><br />获取矩阵元素 <br />A(row, column) <br />线性索引 <br />matlab存储矩阵并非以它的形状的形式,而是一个线性元素列,将每一列连接起来。 <br />比如...
  • pretend_b
  • pretend_b
  • 2010-10-26 19:23
  • 15159

【matlab】matlab读用索引来表示(伪彩色)的bmp图像的格式相关问题

  • 2016-07-17 20:28
  • 39KB
  • 下载

Matlab中如何读出写入图像文件以及对图像的简单处理

imMatrix = imread('name.jpg')%jpg也可以bmp,你的图片格式 MATLAB图像处理工具箱支持四种基本图像类型:索引图像、灰度图像、二进制图像和RGB图像。MATLAB直接从图像文件中读取的图像为RGB图像。它存储在三维数组中。这个三维数组有三个面,依次...
  • lskyne
  • lskyne
  • 2012-12-05 14:40
  • 37199
    简介
    个人资料
    • 访问:205795次
    • 积分:2987
    • 等级:
    • 排名:第13929名
    • 原创:112篇
    • 转载:0篇
    • 译文:2篇
    • 评论:23条
    最新评论