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)来描述颜色。
色调: 其中
饱和度、;
强度:
形态学处理;