第11章 MATLAB在数字图像处理中的应用 [MATLAB大学教程][肖汉光,邹雪,宋涛]

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
I=imread('filename')
其中,filename表示的是带有扩展名的图像文件名称,如 imread('lena.jpg')表示在MATLAB当前工作目录中读取名为lena的图像, 其格式为JPG。如果要在当前目录以外的路径中读取图像文件,则必须 在filename中写全该图像所在的整个路径,如imread('C:\file\flowers.gif')。
h=fspecial(type) h=fspecial(type,parameters) 参数type指定算子类型,parameters指定相应的参数
工作空间中的数据信息
数据转换前后的图像
11.1 图像基本操作
实际上函数im2bw使用阈值变换法把灰度图像转换成二值图 像。所谓二值图像,一般意义上是指只有纯黑(0)、纯白(255) 两种颜色的图像,从逻辑上来看,数据归一化后0表示黑色,1表 示白色。
11.1 图像基本操作
11.1.3图像数据的保存
>>imshow(I) 可以看到图像显示如图所示。值得注意的是,显示图像之前需要保 证图像已经读取并保存在变量I中,即用imread函数读入数据。
11.1 图像基本操作
11.1.2 图像的基本运算
1.图像的叠加和相减
两幅图像叠加就是把两幅图像的对应位置的像素值相加,以 便使图像中的内容变得更加丰富。由于图像数据本身是矩阵,因此 图像的叠加就是将两个大小相等的矩阵相加。
11.2 图像灰度变换
原图及其直方图 均衡化处理后的图像及其直方图
11.3 滤波处理
11.2.2 空间滤波
1.线性空间滤波
MATLAB图像处理工具箱提供了imfilter函数来对任意类型数组或多 维图像进行滤波,其调用格式如下:
g=imfilter(f,w,filtering_mode,boundary_options,size_options)
11.1 图像基本操作
【例11.1】读取图像。 在命令窗口中输入如下代码: >>I=imread('C:\Documents and Settings\Administrator\桌面\coins.png'); 图像以矩阵数据形式读入,在工作空间中可以看到如图所示的数据信息。
11.1 图像基本操作
'corr' 'conv'
选项
说明 滤波器使用相关来完成。该值是默认值 滤波器使用卷积来完成
P
输入图像的边界用值P来扩展。P的默认值为0
边界填充选 (boundary_options)
项 'replicate' 'symmetric'
图像大小通过复制外边界的值来扩展 图像大小通过反射其边界来扩展
'circular'
>>I=imread('lena.jpg'); >>imshow(I),figure,imhist(I) >>J=histeq(I); >>figure,imshow(J),figure,imhist(J)
从上述例子可以看出,直方图均衡化就是对图像进行非线性拉伸,重新 分配图像像素值,使一定灰度范围内的像素数量大致相同,使得图像对比度 增强。但处理后结果也有一定的缺点:①变换后图像的灰度级减少,某些细 节消失;②某些图像,如直方图有高峰,经处理后对比度会不自然地过分增 强。
im2uint8
uint8
logical,uint8,uint16,double
im2uint16
uint16
logical,uint8,uint16,double
im2double
double
logical,uint8,uint16,double
im2bw
logical
uint8,uint16,double
绪论 第1章 MATLAB概述及系统环境 第2章 MATLAB矩阵及其运算 第3章 MATLAB数据可视化 第4章 MATLAB程序设计 第5章 MATLAB数值计算 第6章 MATLAB符号运算 第7章 MATLAB GUI设计 第8章 MATLAB Simulink仿真 第9章 MATLAB在电路仿真中的应用 第10章 MATLAB在数字信号处理中的应用 第11章 MATLAB在数字图像处理中的应用 第12章 MATLAB在电磁场与电磁波中的应用
第11章 MATLAB在数字图像处理中的应用
图像基本操作 图像灰度变换 滤波处理 形态学处理 图像分割
11.1 图像基本操作
灰度图像是每个像素只有一个采样颜色的图像,这类图像通常显示为 从最暗的黑色(0)到最亮的白色(255)的灰度,像素介于0到255之间, 表现为二维数组。在x, y平面坐标上,其表现形式为:
方图定义为离散函数:
h(rk ) nk
图像处理过程中常用到直方图归一化,即所有灰度级个数除以
图像的像素总个数:
p(rk
)

h(rk n
)

nk n
11.2 图像灰度变换
MATLAB图像处理工具箱提供了imhist函数来计算和显示图像的直 方图,其语法格式如下:
imhist(I,n) imhist(X,map)
11.2 图像Βιβλιοθήκη Baidu度变换
【例11.7】使用imadjust函数将灰度图像进行对比度变换。 在命令窗口中输入如下代码:
>>I=imread('pout.tif'); >>J=imadjust(I,[0.3 0.7],[0,1],[0.7]); >>imshow(I),figure,imshow(J) 变换后将原图的对比度范围进行了拉伸,本例中映射范围增大且 gamma值小于1,因此变换后的图像比原图像要明亮。
S cyr(c和r为常数)
当r < 1时,具有扩展低亮度区、压缩高亮度区的效果。当r > 1时,性能正好相反,具有压缩低亮度区、扩展高亮度区的效果。 当r = 1时,输入和输出成正比,图像无变化。
11.2 图像灰度变换
11.2.2 直方图均衡化
直方图又称质量分布图,是一种统计报告图。 若数字图像的像素值范围在[0, N]上共计M个灰度级,则图像直
在图像处理时,去 除图像的多余部分或者 某个细节内容往往会用 到图像的相减。与图像 叠加类似,图像相减就 是将两个大小相等的矩 阵进行减法操作
11.1 图像基本操作
2.图像之间的转换
图像中元素的数据类型有logical、uint8、uint16和double。
数据转换函数
转换函数
转换后的数据类型
转换前的数据类型
>>I1=imread('peppers.png'); >>I2=rgb2gray(I1); >>imshow(I2) 转换后的图像如图所示。
11.2 图像灰度变换
2.imadjust函数
函数imadjust一般用于调整灰度图像的对比度,其调用格式如下: f=imadjust(I,[low_in,high_in],[low_out,high_out],gamma)
11.2 图像灰度变换 11.2.1 常用灰度变换函数
1.rgb2gray函数
函数rgb2gray一般用于将彩色图像(三维数组)转换为灰度图像 (二维数组),其调用格式如下:
f=rgb2gray(I) 其中I为读入的彩色图像数据(三维矩阵),f为返回值。
【例11.6】使用rgb2gray函数将彩色图像转换为灰度图像。 在命令窗口中输入如下代码:
图像大小通过将图像视为二维周期函数的一个周期来扩展
大小选项(size_options)
'full' 'same'
输出图像的大小与被填充后的图像的大小相同 输出图像的大小与输入图像的大小相同
11.3 滤波处理
运用imfilter函数对图像进行滤波时,需要用户设定滤波掩模, MATLAB中的fspecial函数用于创建预定义的滤波掩模(滤波算子), 其语法格式如下:
mat2gray
double(范围 0~1)
Double
说明:函数 mat2gray 将 double 型的数据类型转换为 0~1 之间的数据类型,即将图像中的像素点进行归一化处理
11.1 图像基本操作
【例11.4】使用im2bw函数将图像数据转换为逻辑型。 在命令窗口中输入如下代码:
>>I1=imread('lena.jpg'); >>I2=im2bw(I1); >>imshow(I1) >>figure >>imshow(I2)
11.1 图像基本操作
【例11.3】图像的叠加。 在命令窗口中输入如下代码:
>>I1=imread('rice.png'); >>I2=imread('cameraman.tif'); >>imshow(I1) >>imshow(I2) >>I3=I1+I2; >>imshow(I3) 两幅图像叠加后的效果如图所示。
11.2 图像灰度变换 11.2.2线性灰度变换和非线性灰度变换
1.线性灰度变换
原图像和新图像像素之间存在线性关系:
S T (r) kr b
式中,r为输入点的灰度值,S为相应输出点的灰度值。
11.2 图像灰度变换
1.非线性灰度变换
(1)对数变换
S clog(1 r)
它对低亮度区扩展,对高亮度区压缩,实现对图像动态范围 的压缩。 (2)指数变换
其中,imhist(I,n)计算和显示灰度图像I的直方图,n为指定的灰度 级数目,默认值为256。imhist(X,map)计算和显示索引色图像X的直方 图,map为调色板。
11.2 图像灰度变换
直方图均衡化是通过使用累积函数对灰度值进行“调整”以实现 对比度的增强,其处理的中心思想是把原始图像的灰度直方图从比较 集中的某个灰度区间变成在全部灰度范围内的均匀分布。
2.图像的显示
读入到MATLAB中的数据是矩阵,但我们并不能很直观地看到图像, 它只是以矩阵的数据形式加载到内存中。MATLAB图像处理工具箱提供 了显示图像的imshow函数,其调用格式如下:
imshow(I) 其中参数I表示图像的数据,即imread函数读取的返回值。
11.1 图像基本操作
【例11.2】显示图像。 在命令窗口中输入如下代码:
a11 a12
a1n
F


a21
a22
a2n





am1 am2
amn
数组元素代表图像的亮度,即像素灰度值,因此MATLAB处理灰 度图像的过程实际上是在处理二维矩阵。
11.1 图像基本操作
11.1.1 图像的读取和显示
1.图像的读取
图像处理工具箱提供了读取图像的imread函数,其调用格式如下:
其中,f为输入图像,w为滤波掩模,g为滤波后的图像。 filtering_mode用于指定在滤波过程中是使用“相关”还是“卷积”。 boundary_options用于处理边界充零问题,边界的大小由滤波器的大小确 定,
11.3 滤波处理
imfilter参数选项列表
参数 滤波类型(filtering_mode)
经过处理后的图像需要保存。MATLAB提供了保存图像的imwrite 函数,其调用格式如下:
imwrite(I,'filename') 其中I表示处理后的图像数据,在MATLAB中数据类型就是矩阵; filename表示待保存图像文件的包括扩展名的完整名称,同时也可以是 指定路径的文件名。
【例11.5】使用imwrite函数保存图像。 在命令窗口中输入如下代码: >>imwrite(I2,'C:\Documents and Settings\Administrator\桌面\lena_bw.jpg') 即将处理后的二值图像I2保存到计算机桌面,文件名为lena_bw.jpg。
MATLAB图像处理工具箱提供了histeq函数来实现直方图均衡化, 其语法格式如下:
J=histeq(I,N) 其中,I为输入的图像,N为输出图像的灰度级数。如果N等于M (原图灰度级数),则相当于直接执行变换函数 。如果N小于M,则 均衡化后的图像会变得较为平坦。
11.2 图像灰度变换
【例11.8】使用imhist和histeq函数对图像进行直方图显示和直方图均 衡化处理。 在命令窗口中输入如下代码:
说明:它将原图像I中的像素点的亮度范围[low_in,high_in]映射到 新范围[low_out,high_out],得到新的图像f;
其中参数gamma决定了映射曲线是线性的还是非线性的,若 gamma小于1,则该映射偏重更高数值(明亮)输出,若gamma大于1, 该映射偏重更低数值(灰暗)输出,如果省略此参数,默认为线性映 射。
相关文档
最新文档