《数字图像处理与机器视觉——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]), 准备写入文件
相关文章
|
5月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
516 0
|
5月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
1182 2
|
6月前
|
机器学习/深度学习 编解码 并行计算
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
329 8
|
5月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
497 0
|
5月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
185 0
|
5月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
304 8
|
5月前
|
IDE 编译器 开发工具
msvcp100.dll,msvcp120.dll,msvcp140.dll,Microsoft Visual C++ 2015 Redistributable,Visual C++ 运行库安装
MSVC是Windows下C/C++开发核心工具,集成编译器、链接器与调试器,配合Visual Studio使用。其运行时库(如msvcp140.dll)为程序提供基础函数支持,常因缺失导致软件无法运行。通过安装对应版本的Microsoft Visual C++ Redistributable可解决此类问题,广泛应用于桌面软件、游戏及系统级开发。
668 2
|
6月前
|
机器学习/深度学习 算法 安全
【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab代码实现)
【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab代码实现)
240 2
|
6月前
|
并行计算 C++ Windows

热门文章

最新文章