《数字图像处理与机器视觉——Visual C++与Matlab实现》——1.3 Matlab的图像转换...

本节书摘来自异步社区出版社《数字图像处理与机器视觉——Visual C++与Matlab实现》一书中的第1章,第1.3节,作者: 张铮 , 王艳平 , 薛桂香,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.3 Matlab的图像转换

数字图像处理与机器视觉——Visual C++与Matlab实现
1.图像存储格式的互相转换
有时必须将图像存储格式加以转换才能使用某些图像处理函数。例如,当使用某些Matlab内置的滤镜时,需要将索引图像转换为RGB图像或者灰度图像,Matlab才会将图像滤镜应用于图像数据本身,而不是索引图像中的颜色索引值表(这将产生无意义的结果)。

Matlab提供了一系列存储格式转换函数,如表1.11所示。它们的名字都便于记忆,例如,ind2gray可以将索引图像转化为灰度图像。
image

image

也可以使用一些矩阵操作函数实现某些格式转换。例如,下面的语句可以将一幅灰度图像转换为RGB图像。

RGBIMAGE = CAT(3, GRAY, GRAY, GRAY);

2.图像数据类型转换
Matlab图像处理工具箱中支持的默认图像数据类型是uint8,使用imread函数读取的图像文件一般都为uint8类型。然而,很多数学函数如sin等并不支持double以外的类型,例如,当试图对uint8类型直接使用sin函数进行操作时,Matlab会提示如下的错误信息:

sin(D);
??? Undefined function or method 'sin' for input arguments of type 'uint8'

针对这种情况,除了使用1.1.4小节介绍的强制类型转换方法外,还可利用图像处理工具箱中的内置图像数据类型转换函数。内置转换函数的优势在于它们可以帮助处理数据偏移量和归一化变换,从而简化了编程工作。

一些常用的图像类型转换函数如表1.12所示。

image

可以在使用Matlab数学函数前将图像转换为double类型,而在准备将图像写入文件时再将其转换为uint8类型,如下所示:

I_d = im2double(I_uint8); %将uint8图像转换为double类型,灰度范围也相应从[0,255]归一化至[0,1]
Iout_d = sin(I_d); %进行数学计算
Iout_uint8= im2uint8(Iout_d); %转换回uint8(灰度范围也重新扩展到[0,255]), 准备写入文件
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值