数据类

Matlab中和IPT中支持的基本数据类型如下:

名称 描述
double 双精度浮点数,范围-10308~10308  8字节
uint8 无符号1字节整数,范围[0, 255]
uint16 无符号2字节整数,范围[0, 65535]
uint32 无符号4字节整数,范围[0, 4294967295]
int8 有符号1字节整数,范围[-128, 127]
int16 有符号2字节整数,范围[-32768, 32767]
int32 有符号4字节整数,范围[-2147483648, 2147483648]
single 单精度浮点数,范围-1038~1038  4字节
char 字符
logical 值为0或1

图像类型

Matlab的IPT(Image Process Toolbox)支持如下四种类型的图像:

  • 亮度图像(Intensity images)
  • 二值图像(Binary images)
  • 索引图像(Indexed images)
  • RGB图像(RGB images)

大多数的单色图像的处理运算是通过二值图像或者亮度图像来进行的。首先学习这两种类型的图像。

亮度图像

一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。其亮度图像像素都是uint8类或者uint16类,则它们的整数范围分别为「0, 255」和「0, 65535」。若图像是double类,则像素的取值就是浮点数,其归一化亮度图像取值范围就是「0, 1」。

二值图像

二值图像在Matlab中具有非常特殊的意义。一幅二值图像是一个取值只有0和1的逻辑数组。因而,一个取值只包含0和1的uint8类数组,在Matlab中并不认为是二值图像。使用logical函数可以把数值数组转化为二值数组。如:

  1. B = logical(A);

使用islogical可以测试一个数组是否是逻辑数组:

  1. islogical(A);

术语注释

注意数据类图像类型之间的差别与联系。提到幅图像时,会说uint8亮度图像。uint8为数据类,亮度为图像类型。

数据类间的转换

数据类间的转换使用如下方式:
  1. B = data_class_name(A)

data_class_name为数据类型。如A为uint8类型数组,B=double(A)会产生一个双精度的数组B。如果C是一个聚会范围为[0, 255]的double数组,命令D=uint8(C)会产生一个uint8类数组。如果C中包含有[0, 255]之外的值,则转换为uint8数组时,会将所有小于0的值转换为0,大于255的值转换为255。


图像类型和类型间的转换

IPT提供了执行必要缩放的函数,进行图像类和类型间进行转换。如f为double的2x2的图像:
  1. f =
  2. -0.5000 0.5000
  3. 0.7500 1.5000

执行转换

  1. g = im2uint8(f)
  2. g =
  3. 0 128
  4. 191 255

可以看到,im2uint8将所有输入小于0的值设置为0,而将输入大于1的值设置为255,再将其他数据乘以255。还有其他的转换函数如下:

名称 将输入转换为 有效的输入图像数据类
im2uint8 uint8 logical, uint8, uint16, double
im2uint16 uint16 logical, uint8, uint16, double
mat2gray double, 范围[0, 1] double
im2double double logical, uint8, uint16, double
im2bw logical uint8, uint16, double

函数im2uint16与im2uint8类似。

函数mat2gray用于把任意的double类数组转换为归一化的double类数组,如:

  1. g = mat2gray(A, [Amin, Amax])

图像g的取值范围在[0, 1]之间,规定小于Amin的值转换为0,大于Amax的值转换为1。如果不给定Amin和Amax参数,则将A中的最小值和最大值分别赋给Amin和Amax。


im2double用于将输入转换为[0, 1]之间的double类。

im2bw用于将亮度图像转换为二值图像:
  1. g = im2bw(f, T)

图像f中的小于T的值转换为0,其他值转换为1。域值T是一个[0, 1]之间的值。


Matlab图像处理(02)-图像基础的更多相关文章

  1. MATLAB图像处理基础

    MATLAB图像处理基础 2.2.1 图像文件格式及图像类型 1.MATLAB支持的几种图像文件格式: ⑴JPEG(Joint Photogyaphic Expeyts Group):一种称为联合图像 ...

  2. Matlab图像处理(01)-Matlab基础

    枫竹梦对于Matlab几乎是零基础,只是在上学的时候稍稍接触一点,万万没有想到现在还能用到Matlab.进入正题>>> 图像的基本概念 一幅图像可以被定义为一个二维函数f(x,y), ...

  3. Matlab图像处理基础知识

    Matlab图像处理基础知识 Matlab的图片以矩阵的形式存储,矩阵的行列值为图片的行列的色彩值. 1图像表达方式: 像素索引 图像被视为离散单元.如使用I(2,2)可以获取第二行第二列的像素值 空 ...

  4. Matlab图像处理函数:regionprops

    本篇文章为转载,仅为方便学术讨论所用,不用于商业用途.由于时间较久,原作者以及原始链接暂时无法找到,如有侵权以及其他任何事宜欢迎跟我联系,如有侵扰,在此提前表示歉意.----------------- ...

  5. MATLAB图像处理函数汇总(二)

    60.imnoise 功能:增加图像的渲染效果. 语法: J = imnoise(I,type) J = imnoise(I,type,parameters) 举例 I = imread('eight ...

  6. matlab图像处理

    matlab图像处理 转自:http://www.cnblogs.com/lovebay/p/5094146.html 1. 图像和图像数据 缺省情况下,MATLAB将图像中的数据存储为双精度类型(d ...

  7. Matlab图像处理系列1———线性变换和直方图均衡

    注:本系列来自于图像处理课程实验,用Matlab实现最主要的图像处理算法 图像点处理是图像处理系列的基础,主要用于让我们熟悉Matlab图像处理的编程环境.灰度线性变换和灰度拉伸是对像素灰度值的变换操 ...

  8. Matlab图像处理相关

    相关函数: 读取:imread() %参数为文件名(路径)或url,格式等 写入:imwrite() %参数为写入数据矩阵,写入文件名(路径),格式等 显示:imshow() %显示由输入决定,属性自 ...

  9. Atitit MATLAB 图像处理 经典书籍attilax总结

    Atitit MATLAB 图像处理 经典书籍attilax总结 1.1. MATLAB数字图像处理1 1.2. <MATLAB实用教程(第二版)>((美)穆尔 著)[简介_书评_在线阅读 ...

随机推荐

  1. JAVA Eclipse如何安装Swing

    查看自己的Eclipse版本   打开WINDOWBUILDER的下载页面,找到自己对应版本的下载地址,注意只是一个下载地址,不是要下载东西 http://www.eclipse.org/window ...

  2. 雕刻效果的实现【OpenCV+QT】

    雕刻能够区分为凸雕和凹雕. 凸雕基右下角的点减去左上角的点. 凹雕是左上角的点减去右下角的点. [效果图] 由于进行了缩放.效果看起来差一些.

  3. linux下robotframework执行测试用例的几种方法

    1.执行指定的测试用例文件(Test Suite)     [root@localhost cases]# pybot purge.txt   2.执行整个porject目录下的所有测试用例     ...

  4. git 操作分支

    1. git 查看本地分支:git branch 2. git 查看所有分支:git branch -a 3. git 新建本地分支:git branch branchName 4. git 新建分支 ...

  5. Ubuntu下配置Nginx HTTPS

    HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入S ...

  6. 并发错误:事务(进程 ID )与另一个进程已被死锁在 lock 资源上,且该事务已被选作死锁牺牲品

    这个是并发情况下导致的数据库事务错误,先介绍下背景. 背景 springboot+springmvc+sqlserver+mybatis 一个controller里有五六个接口,这些接口都用到了spr ...

  7. [Java] 实验4參考代码

    题目.提示.代码.解释都已公布. 提供这些的目的不是要求大家要写得像我写得这样,而是希望大家在实验后看看别人写的代码:     1. 提升理解代码的能力.     2. 不要自满于完毕题目.要明确你的 ...

  8. 解决phpmyadmin导入大数据库出现一系列问题

    在用phpmyadmin导入mysql数据库文件时,往往超过2M就会提示文件大,导入不成功.这时我们打开phpmyadmin-->libraries-->config.default.ph ...

  9. 使用Docker开发NodeJs APP

    英文版原文地址 这是两篇连载文章的第一篇,讲解了如何使用 Docker 替代 Vagrant 开发基于 Express 框架的NodeJs App的部分细节.不过,这次要增加点难度:我们要使用 con ...

  10. eclipse没有(添加)"Dynamic Web Project"选项的方法

    建议使用代理lantern,否则可能要花很长时间显示和下载插件 http://www.dabu.info/eclipse-no-add-dynamic-web-project-option.html ...