《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》一一1.2 MATLAB的图像转换

简介:

本节书摘来自异步社区出版社《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》一书中的第1章,第1.2节,作者:张铮 , 徐超 , 任淑霞 , 韩海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.2 MATLAB的图像转换

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

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

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

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

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

I = imread(‘coins.png’); %读入一幅unit8图像
sin(I);
??? Undefined function or method 'sin' for input arguments of type 'uint8'

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

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]), 准备写入文件
相关文章
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
278 0
|
3月前
|
机器学习/深度学习 编解码 并行计算
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
223 8
|
2月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
134 0
|
2月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
118 0
|
3月前
|
机器学习/深度学习 编解码 算法
【GUI】通过Hough变换在SEM显微图像上检测滑移线研究(Matlab代码实现)
【GUI】通过Hough变换在SEM显微图像上检测滑移线研究(Matlab代码实现)
170 0
|
2月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
191 8
|
3月前
|
机器学习/深度学习 算法 安全
【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab代码实现)
【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab代码实现)
183 2
|
3月前
|
机器学习/深度学习 编解码 算法
【图像处理】图像的边缘检测(Matlab代码实现)
【图像处理】图像的边缘检测(Matlab代码实现)
252 1
|
3月前
|
传感器 机器学习/深度学习 编解码
使用显著性检测的可见光和红外图像的两尺度图像融合(Matlab代码实现)
使用显著性检测的可见光和红外图像的两尺度图像融合(Matlab代码实现)
152 3
|
3月前
|
存储 算法 生物认证
基于Zhang-Suen算法的图像细化处理FPGA实现,包含testbench和matlab验证程序
本项目基于Zhang-Suen算法实现图像细化处理,支持FPGA与MATLAB双平台验证。通过对比,FPGA细化效果与MATLAB一致,可有效减少图像数据量,便于后续识别与矢量化处理。算法适用于字符识别、指纹识别等领域,配套完整仿真代码及操作说明。