数据类

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. TensorFlow笔记一 :测试和TFboard使用

    一 .第一个TF python3.6 import tensorflow as tf x=2 y=3 node1=tf.add(x,y,name='node1') node2=tf.multiply ...

  2. linux中kill几个有用信号

    kill用法 kill -signal PID 15 (SIGTERM) 正常方式杀死进程:(这种方式可能会存在一些问题:进程的子进程可能会无法终止,并继续系统资源) PID 或者 kill PID ...

  3. spring boot 读取配置文件(application.yml)中的属性值

    在spring boot中,简单几步,读取配置文件(application.yml)中各种不同类型的属性值: 1.引入依赖: <!-- 支持 @ConfigurationProperties 注 ...

  4. 【经验】使用Profiler工具分析内存占用情况

    Unity3D为我们提供了一个强大的性能分析工具Profiler.今天我们就使用Profiler来具体分析一下官方样例AngryBots的内存使用信息数据. 首先打开Profiler选择Memory选 ...

  5. XML基础知识学习

    概念: XML 指可扩展标记语言 XML 是一种标记语言,非常类似 HTML ,文本文件. XML 的设计宗旨是数据传输,而非显示数据 .存储和传输复杂的关系模型数据 XML 标签没有被提前定义 使用 ...

  6. lambda表达式转换sql

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; usin ...

  7. request 获取请求头

    /********************************************************servlet页面********************************** ...

  8. ios开发之猜数字游戏

    // // main.m // 猜数 // #import <Foundation/Foundation.h> #import "Guess.h" int main(i ...

  9. 【selenium+Python WebDriver API】之复选框顺序正选和顺序反选

    from selenium import webdriver from selenium.webdriver.common.by import By import os,time driver = w ...

  10. erlang的随机数 及 random:uniform()函数

    每次调用会更新进程字典里的random_seed变量,这样在同一个进程内每次调用random:uniform()时,随机数种子都不同,所以生成的随机数都不一样(调用完random:uniform()后 ...