数据类

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函数可以把数值数组转化为二值数组。如:

B = logical(A);

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

islogical(A);

术语注释

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

数据类间的转换

数据类间的转换使用如下方式:
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的图像:
f =
-0.5000 0.5000
0.7500 1.5000

执行转换

g = im2uint8(f)
g =
0 128
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类数组,如:

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

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


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

im2bw用于将亮度图像转换为二值图像:
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. MFC中 编辑框输入换行功能

    首先修改编辑框的属性: Multiline 设为true , Auto HScroll 设为true , Auto VScroll 设为 true . 然后响应PreTranslateMessage( ...

  2. UNIX网络编程卷1 server程序设计范式8 预先创建线程,由主线程调用accept

    本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.程序启动阶段创建一个线程池之后仅仅让主线程调用 accept 并把客户连接传递给池中某个 ...

  3. Linux 指令篇:系统设置--set

    功能说明:设置shell. 语 法:set [+-abCdefhHklmnpPtuvx] 补充说明:set指令能设置所使用shell的执行方式,可依照不同的需求来做设置. 参 数: -a  标示已修改 ...

  4. Node.js自动化技术实现(Java)

    Node.js自动化测试框架(NodeTestFramework):

  5. HDU 3466 01背包变形

    给出物品数量N和总钱数M 对于N个物品.每一个物品有其花费p[i], 特殊值q[i],价值v[i] q[i] 表示当手中剩余的钱数大于q[i]时,才干够买这个物品 首先对N个物品进行 q-p的排序,表 ...

  6. 线程安全的概念和Synchronized(读书笔记)

         并行程序开发的一大关注重点就是线程安全,一般来说,程序并行化为了获取更多的执行效率,但前提是,高效率不能以牺牲正确性为代价,线程安全就是并行程序的根本和根基.volatile并不能真正保证线 ...

  7. EVB-P6UL:一识庐山真面目

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文使用Markdown写成,为获得更好的阅读体验与正确的图片链接显示,请访问我的博客原文: 在爱板网上看到这个活动,昨晚确认,今 ...

  8. Android4.0(Phone)拨号启动过程分析(一)

    因为工作的须要.须要改动原生的Phone程序,如今就好好看下来电与拨号是怎样处理的:无论是拨号还是来电,调用的都是Phone程序,因为非常多类都涉及到framework层,比較复杂:先从简单的拨号分析 ...

  9. 记录MySQL运行的SQL

    对照Oracle功能去学习Mysql总会发现亮点 Oracle中通过日志挖掘这一技能,能够找到以前运行过的全部记录: Mysql中也提供了3种方法{验证过的,我会记录详细做法} 方法1:{已验证} 记 ...

  10. Oracle Sequence用plsql修改

    在plsql中,打开Objects窗口   找Sequences文件夹>你需要修改的Sequence   选中你需要修改的sequence,右键edit(编辑)     OK!