MATLAB中的图像类型

在MATLAB中数组是最基本的数据结构,大部分图像用二维

数组即矩阵表示,矩阵中的一个元素对应一个像素。例如,一个由500行600列不同颜色点组成的图像可以用500*600的矩阵来表示。当然也有一些图像是用三维数组表示的,如RGB图像的三个维分别表示像素的红色、绿色和蓝色分量值。这样使得在MATLAB中使用图形文件格式的图像和使用其他类型的矩阵数据的方式一致。

在MATLAB中,一幅图像可能包含一个颜色影像表矩阵。在图像处理工具箱支持的图像分为四个基本类型:RGB图像、灰度图像、索引图像及二值图像。它们的区别在于数据矩阵元素的不同含义。

RGB图像

RGB图像在MATLAB中存储为一个n*m*3的三维数据数组。n,m

分别为图像的行列数。数组可以是双精度浮点型或unit8类型。数组中的元素定义了每个像素的红、绿、蓝颜色值,它们保存在数组的第三维里,这三个值共同构成了该像素的颜色。如,像素(4,7)表示第4行第七列的像素,它的红绿蓝颜色值分别保存在元素RGB(4,7,1)、RGB(4,7,2)和RGB(4,7,3)里。

灰度图像

灰度图像是一个数据矩阵 I,每个元素代表一个像素,I的数据表示在一定范围内的灰度值.I可以是双精度浮点型,其值域为[0.0,1.0];也可以是unit8类型,其值域为[0,256]。

索引图像

索引图象包括图象矩阵和颜色数组。其中颜色图是按图象中颜色值进行排序后的数组。对于每个象素,图象矩阵包含一个值,这个值就是颜色图数组中的索引。颜色图为m×3的双精度值矩阵,各行分别指定红、绿、蓝(R、G、B)单色值,且R、G、B均为值域[0,1]上的实数值。

二值图像

这类图像只包含一个由0,1构成的矩阵,可以保存为双精度或unit8类型的数组。在图像处理工具箱中为了节省空间都用unit8类型的数组。二值图像可以看成一个仅由黑白两色组成的特殊的灰度图或者共有两种颜色的索引图,因此其显示方式与灰度图或索引图类似。

4、设计方案

图像的四种基本类型是可以相互转换的。有时需要对图像类型进

行转换以方便某些处理,MATLAB有实现对RGB图像、灰度图像、索引图像及二值图像相互转换的函数。本次课程设计的核心就是利用图像类型转换函数来实现图像类型之间的转换。

1、索引图像转换为灰度图像的函数ind2gray() 其语法格式为:I=indgray(X,map)

它将具有颜色图map的索引图像X转换为灰度图像I,X可以是双精度型或unit8型,I是双精度型。

2、索引图像转换为RGB图像的函数ind2rgb()

其语法格式为:

RGB=IND2RGB(X,map)

它将具有颜色图map的索引图像X转换为真彩色图像RGB。 3、灰度图像转换为索引图像的函数gray2ind()

其语法格式为:

[X,map]=gray2ind(I,n)

它将灰度图像I转换成索引图像X,具有颜色图gray(n),n的默认值是64。

4、RGB图像转换为索引图像的函数rgb2ind() 其语法格式有下面五种:

● [X,map]=rgb2ind(RGB):

直接RGB图像转换为具有颜色图map

的矩阵X.

● [X,map]=rgb2ind(RGB,tol):  用均匀量化的方法将

RGB图像转

换为索引图像X,tol的范围从0.0到1.0. [X,map]=rgb2ind(RGB,n): 使用最小量化方法将

RGB图像转换

为索引图像X,map中包括至少n个颜色。

● [X,map]=rgb2ind(RGB,map):  将

RGB中的颜色与颜色图map

中最相近的颜色匹配,将RGB转换为具有MAP颜色图的索引图。

● [  ]=rgb2ind(…,dither_option):  通过

dither_option参数来设置

是否抖动。

5、RGB图像转换为灰度图像的函数rgb2gray() 其语法格式有两种:

●I=rgb2gray(RGB):  将输入的RGB图像转换为灰度图I ●newmap=rgb2gray(map):  将输入的颜色图map返回一个等价的灰度图

6、转换为二值图像的函数im2bw()

该函数通过阈值化方法将索引、灰度和RGB图像转换为二值图

像。其语法格式有以下几种:

●BW=im2bw(I,map,level): 将颜色图为map的索引图像转换为二

值图像

●BW=im2bw(I,level):  将灰度图像I转换为二值图像 ●BW=im2bw(RGB,level):将RGB图像转换为二值图像 7、 dither 函数通过抖动算法转换图像类型 其语法格式为:

● x=dither (RGB,map) : 通过抖动算法将真彩色图像RGB按指定的调色板map转换成索引色图像X

● x=dither(RGB,map,Qm,Qe) :利用给定的参数Qm,Qe从真彩色

图像RGB中产生索引色图像x.Qm对于补色决定各颜色轴的量化位数,Qe决定量化误差的位数。如果Qe<Qm,则不进行抖动操作。Qm的默认值是5,Qe的默认值是8

● BW=dither (I):将灰度图像抖动成二值图像,输入图像可以是double 或uint8,如果输出的图像是二值图像或颜色种类不超过256的索引色图像,则是uint8,否则是double

设计源代码:

%将RGB图像转换为索引图像

RGB=imread('lily.tif');                  %加载图像文件格式的图像lily [X,map]=rgb2ind(RGB,0.7);         %将RGB图像转换为索引图像 figure(1);                                %选择图像输出的窗口 subplot(1,2,1);                           %选择图像输出的位置 imshow(RGB);                                 %显示RGB图像 title('RGB图像');                                %显示图像标题 subplot(1,2,2);                           %选择图像输出的位置 imshow(X,map);                              %显示索引图像 title('索引图像');                                %显示图像标题

%将索引图像转换为RGB图像

load trees                                   %加载图像trees

RGB=ind2rgb(X,map);             %将索引图像转换为RGB图像 figure(2);                                %选择图像输出的窗口

subplot(1,2,1);                           %选择图像输出的位置                                    imshow(X,map);                               %显示索引图像 title('索引图像');                               %显示图像标题 subplot(1,2,2);                          %选择图像输出的位置 imshow(RGB);                                  %显示RGB图像 title('RGB图像');                               %显示图像标题

%将RGB图像转换为灰度图像

map=rgb2gray(RGB);               %将RGB图像转换为灰度图像 figure(3);                                %选择图像输出的窗口 subplot(1,2,1);                           %选择图像输出的位置 imshow(RGB);                                  %显示RGB图像 title('RGB图像');                              %显示图像标题 subplot(1,2,2);                           %选择图像输出的位置 imshow(map);                             %显示灰度图像 title('灰度图像');                               %显示图像标题

%将灰度图像转换为索引图像

I=imread('rice.tif');                    %加载图像文件格式的图像rice [X,map]=gray2ind(I,80);           %将灰度图像转换为索引图像 figure(4);                                %选择图像输出的窗口 subplot(1,2,1);                           %选择图像输出的位置 imshow(I);                                   %显示灰度图像 title('灰度图像');                             %显示图像标题 subplot(1,2,2);                           %选择图像输出的位置 imshow(X,map);                             %显示索引图像 title('索引图像');                            %显示图像标题

%将索引图像转换为灰度图像

load trees                                       %加载图像trees

I=ind2gray(X,map)                   %将索引图像转换为灰度图像 figure(5);                                %选择图像输出的窗口 subplot(1,2,1);                           %选择图像输出的位置 imshow(X,map);                          %选择图像输出的位置 title('索引图像');                                %显示图像标题 subplot(1,2,2);                           %选择图像输出的位置 imshow(I);                                     %显示灰度图像

title('灰度图像');                                %显示图像标题

%将灰度图像转换为二值图像

I=imread('rice.tif');               %加载图像文件格式的图像 rice

BW=dither(I);                      %将灰度图像转换为二值图像 figure(6);                                %选择图像输出的窗口 subplot(1,2,1);                           %选择图像输出的位置 imshow(I);                                    %显示灰度图像 title('灰度图像');                                %显示图像标题 subplot(1,2,2);                           %选择图像输出的位置 imshow(BW);                                  %显示二值图像 title('二值图像');                                %显示图像标题

%将RGB图像转换为二值图像

RGB=imread('lily.tif');                 %加载图像文件格式的图像lily BW=im2bw(RGB,0.5);             %将RGB图像转换为二值图像 figure(7);                                %选择图像输出的窗口 subplot(1,2,1);                           %选择图像输出的位置 imshow(RGB);                                 %显示RGB图像 title('RGB图像');                             %显示图像标题 subplot(1,2,2);                           %选择图像输出的位置

imshow(BW);                                %显示二值图像 title('二值图像');                                %显示图像标题

%将索引图像转换为二值图像

load trees                                    %加载图像trees

BW=im2bw (X,map,0.4);             %将索引图像转换为二值图像  figure(8);                                %选择图像输出的窗口 subplot(1,2,1);                          %选择图像输出的位置 imshow(X,map);                               %显示索引图像 title('索引图像');                               %显示图像标题 subplot(1,2,2);                           %选择图像输出的位置 imshow(BW);                                  %显示图像标题 title('二值图像');                             %显示二值图像

对 RGB 图像 RGB1 的红、绿、蓝调色板分别进行调整。

将图像RGB1中的亮度值映射到RGB2中的新值,

R:0.2~0.6;  G:0.3~0.7;    B:0~1

它们都可以使用空的矩阵[],默认值是[0 1]

20151028三晚素材:

灰度线性变换:

Fa:对比度

Fb:灰度值

灰度的对数变换:

只能处理double型,但大部分是uint8类型,需先进行类型转换。

Abs:求整数的绝对值,复数的模

灰度的Gamma变换:

灰度阈值变换及二值化:                      T为指定阈值

直方图均衡化

图像易受光照、视角、方位、噪声等的影响。使得同一类图像的不同变形体之间的差距有时大于该类图像与另一类图像之间的差距,影响图像识别、分类。图像归一化就是将图像转换到唯一的标准形式以抵抗各种变换,从而消除同类图像不同变形体之间的外观差异。也称为图像灰度归一化。

图像平移

正:

反:

空间域增强:

添加噪声:为什么不能添加椒盐噪声?

函数:h=imnoise(I,type,parameters);

Parameters:参数

Filter:滤波器:http://www.doc88.com/p-901960468556.html

积分:平滑

微分:锐化

Filter:滤波器

滤波器设计

parameters为可选项,是和所选定的滤波器类型type相关的

配置参数,如尺寸和标准差等。

type为滤波器的类型。其合法值如下

合法取值

功能

‘average’

平均模板

‘disk’

圆形领域的平均模板

‘gaussian’

高斯模板

‘laplacian’

拉普拉斯模板

‘log’

高斯-拉普拉斯模板

‘prewitt’

Prewitt水平边缘检测算子

‘sobel’

Sobel水平边缘检测算子

频率域图像增强:

幅度谱

相位谱

功率谱

彩色图像处理:

HIS模型是从人的视觉系统出发,直接使用颜色三要素色调(Hue)、饱和度(Saturation)和亮度(Intensity)来描述颜色。

色调:                    其中

饱和度、;

强度:

形态学处理;

matlab中的图像类型相关推荐

  1. matlab中的图像转换

    matlab中的图像转换包括两个层面的内容,首先是不同图像文件格式之间的转换(例如将BMP格式转换为PNG格式,这里可以由imwrite()函数实现,具体参见):其次是matlab中不同图像存储形式之 ...

  2. Matlab中完成图像旋转(坐标旋转)

    Matlab中完成图像旋转(坐标旋转) 通过极坐标的转化,将点阵进行旋转,得到旋转后点阵的坐标并绘制出来,以下为代码. y=xlsread("D:\temp\meigu\tianran\un ...

  3. Matlab中消除图像噪声之中值滤波器:medfilt2

    Matlab中消除图像噪声之中值滤波器:medfilt2 medfilt2, matlab, 消除噪声, 中值滤波器, 椒盐噪声 在图像处理中,在进行如边缘检测这样的进一步处理之前,通常需要首先进行一 ...

  4. MATLAB中的图像融合

    下面来介绍一下如何在MATLAB中实现图像的融合,具体原理及步骤如下: 图像融合:图像融合是指将多源信道所采集到的关于同一目标的图像数据经过图像处理和计算机技术等,最大限度的提取各自信道中的有利信息, ...

  5. matlab中的图像,MATLAB中图像的基本操作

    MATLAB中图像的基本操作 1.读取.显示图片 MATLAB中提供了immread()与imshow()函数读取和显示图片.其中读取函数imread()原型: imread: A= imread(f ...

  6. MATLAB中实现图像的空间域滤波和频率域滤波

    1. 空间域滤波 空间域滤波是指在图像空间中借助模板对图像领域进行操作,处理图像每一个像素值.主要分为线性滤波和非线性滤波两类,根据功能可分为平滑滤波器和锐化滤波器.平滑可通过低通来实现,平滑的目的有 ...

  7. Matlab中的结构类型struct

    结构(struct)数组 要在MALTAB中实现比较复杂的编程,就不能不用struct类型.而且在MATLAB中实现struct比C中更为方便. 4. 3.1 结构数组的创建 MATLAB提供了两种定 ...

  8. matlab中给图像加几个矩形框_在图像中画矩形框(matlab)

    参考代码:https://github.com/cuijiaxun/FaceRecognitionByMatlab 中的LabelDetectWindow.m 在目标检测的时候,一般都需要用矩形框圈出 ...

  9. matlab 像素最大值,如何在MATLAB中的图像中找到局部最大值?

    我在MATLAB中有一个图像: y = rgb2gray(imread('some_image_file.jpg')); 我想做一些处理: pic = some_processing(y); 并找到输 ...

最新文章

  1. [转载]C# ListT的并集、交集、差集
  2. c语言错误指导,c语言编程指导.pdf
  3. php endall(),ob_end_flush
  4. 使用Exchange 的SMTP连接器路由/中继邮件的设定图例
  5. 信息学奥赛一本通 1143:最长最短单词 | OpenJudge NOI 1.7 25
  6. JavaScript之一: 闭包、执行环境、作用域链
  7. php null空值(转)
  8. 百度2014移动研发笔试题目
  9. 低代码平台在金融行业的OA解决方案
  10. python爬虫天猫商品数据及分析(1)
  11. wxpy 扫码登录微信报错 KeyError: pass_ticket(网页版微信登录失败)
  12. 楼市调控不断升级,房产中介还能翻身吗?
  13. php判断是否是节假日,C#编程之C#判断是否是节假日
  14. 美国金融客户投诉数据分析
  15. Python身体质量指数BMI
  16. The Things Network LoRaWAN Stack V3 学习笔记
  17. 阿里双11集团技术总指挥——汤兴:一场不亚于移动化的变革已经发生
  18. Selenium详解—— 自动化测试工具
  19. VR,AR,MR的区别与联系
  20. 学习游戏服务器开发必看,C++游戏服务器开发常用工具介绍

热门文章

  1. linux常用安装命令集锦
  2. 精美技术图赏-技术精华|二期
  3. 大厂「offer 收割机」修炼记
  4. 阿里二面:你来设计一下 Flink 性能调优?
  5. Redis源码:朴实无华且枯燥
  6. 裂墙推荐!IntelliJ IDEA 常用插件一览,让效率成为习惯
  7. Go标准库os/exec使用指南
  8. Kafka解惑之Old Producer(3)——Async Analysis
  9. 【LiveVideoStack线上分享】— 视频生产环境下的音视频解决方案
  10. 设计模式C++实现(3)——装饰模式