Digital Image Processing 石家庄铁道学院计算机系 数字图像处理 Digital Image Processing 主讲人: 封筠 Email:fengjun7171@yahoo.com.cn ftp://202.206.41.8:6621/ User: Student.feng 2007. 3
第7章 图像分割 (Image Segmentation) 7.1 概述 7.2 边缘检测 7.3 边缘跟踪
基本思想 边缘检测是所有基于边界的分割方法的第一步。两个具有不同灰度值的相邻区域之间总存在边缘。灰度或结构等信息的突变处称为边缘。这种灰度值的不连续常可以利用求导数方便地检测到,一般常用一阶和二阶导数来检测边缘。 边缘示例 下面来看几幅典型的示意图像,第一排是具有边缘的图像示例。第二排是沿图像水平方向的1个剖面图,第三和四排分别为剖面的一阶和二阶导数。 由于采样的缘故,数字图像中的边缘总有一些模糊,所以这里垂直上下的边缘剖面都表示成有一定的坡度。 7.2边缘检测
基本思想 7.2边缘检测 图像 剖面 一阶 导数 二阶 导数 a b c d
基本思想 7.2边缘检测 常见的边缘剖面有3种: (1)阶梯状(如图a,b所示); (2)脉冲状(如图c所示); (3)屋顶状(如图d所示) 阶梯状的边缘处于图像中2个具有不同灰度值的相邻区域之间。 脉冲状主要对应细条纹的灰度值突变区域,可以看作图a,b的两个阶梯状相向靠得很近时的情况; 而屋顶状的边缘上升下降沿都比较缓慢,可以看作是图c的脉冲坡度变小的情况。 7.2边缘检测
基本思想 边缘与导数关系 (1)图a中,对灰度值剖面的一阶导数在图像由暗变明的位置处有一个向上的阶跃,而在其他位置均为零。这表明可以用一阶导数的幅度值来检测边缘的存在,幅度峰值一般对应边缘位置。对灰度值剖面的二阶导数在一阶导数的阶跃上升区有1个向上的脉冲,而在一阶导数的阶跃下降区有1个向下的脉冲。在这2个阶跃之间有一个过0点,它的位置正对应原图像中边缘的位置。所以可用二阶导数的过零点检测边缘位置,而用二阶导数在过零点附近的符号确定边缘像素在图像边缘的明区或暗区。 (2)分析b图由明变暗,得出相似得结论。 7.2边缘检测
基本思想 (3)图c中,脉冲状的剖面边缘与a的一阶导数形状相同,所以图c的一阶导数形状与图a的二阶导数形状相同,而它的2个二阶导数过零点正好分别对应脉冲的上升和下降沿。通过检测剖面的2个二阶导数过零点就可以确定脉冲的范围。 (4)图d中,屋顶状边缘的剖面可看作是将脉冲边缘底部展开得到的,所以它的一阶导数是将图c脉冲状剖面的一阶导数的上升和下降沿展开得到的,而它的二阶导数是将脉冲剖面二阶导数的上升沿和下降沿拉开得到的。通过检测屋顶状边缘剖面的一阶导数过零点可以确定屋顶的位置。 7.2边缘检测
梯度算子 7.2边缘检测 对图像中边缘的检测可以借助空域微分算子通过卷积完成。 梯度算子的数学表示 梯度对应一阶导数,梯度算子是一阶导数算子。对于1个连续函数f(x,y),它在位置(x,y)的梯度可表示为一个向量:
梯度算子 7.2边缘检测 幅值 方向角 为简化计算,幅值可近似为: 数字图像是离散的,所以计算偏导数Gx和Gy时,常用差分代替微分。为方便常用小区域模板卷积来近似计算梯度值。根据模板的大小,其中元素值的不同,人们提出了许多不同的算子。
梯度算子 7.2边缘检测 Gx Gy Roberts交叉梯度算子 Z1 Z2 Z3 Z4 Z5 Z6 Z7 Z8 Z9 -1 1 -1 1 1 -1 1 图像模板邻域 Gx Gy
梯度算子 7.2边缘检测 Roberts梯度锐化效果图例
梯度算子 7.2边缘检测 Gx Gy Sobel算子(加权平均差分) Z1 Z2 Z3 Z4 Z5 Z6 Z7 Z8 Z9 -1 -2 1 1 2 -1 1 -2 2 图像模板邻域 Gx Gy
梯度算子 7.2边缘检测 Gx Gy Prewitt算子(平均差分) Z1 Z2 Z3 Z4 Z5 Z6 Z7 Z8 Z9 -1 1 -1 1 -1 1 图像模板邻域 Gx Gy
梯度算子 应用以上三种算子检测边缘示例 7.2边缘检测 原图 Roberts算子 Prewitt算子 Sobel算子
二阶导数算子 7.2边缘检测 Laplacian算子 微分: 1 1 差分近似: -8 -4 实际计算借助模板卷积实现,两种常用的拉普拉斯算子模板如下: 1 -4 1 -8
二阶导数算子 7.2边缘检测 LOG算子(Laplacian of Gaussian) 上式中h(x,y)为二维高斯函数,经平滑和微分合并后的LOG算子 ,又称为Marr算子。
二阶导数算子 7.2边缘检测 原图 LOG算子
二阶导数算子 7.2边缘检测 b. 好的检测结果:对边缘的错误检测率要尽可能低,在检测出图像真实边缘的同时要避免检测出现虚假的边缘。 Canny算子 (1)基本思想 a. 克服噪声的影响 b. 好的检测结果:对边缘的错误检测率要尽可能低,在检测出图像真实边缘的同时要避免检测出现虚假的边缘。 c.好的边缘定位精度:标记出的边缘位置要和图像上真正边缘的位置尽量接近。 d.对同一边缘要有低的响应次数:有的算子会对一个边缘产生多个响应。也就是说图像上本来只有一个边缘点的,可是检测出来就会出现多个边缘点。 7.2边缘检测
二阶导数算子 7.2边缘检测 (2)算法步骤 a.用高斯滤波器平滑图像 b.计算滤波后图像梯度的幅值和方向 c.对梯度幅值应用非极大值抑制,其过程为找出图像梯度中的局部极大值点,把其它非局部极大值点置零以得到细化的边缘。 d.用双阈值算法检测和连接边缘,使用两个阈值T1和T2(T1>T2),T1用来找到每条线段,T2用来在这些线段的两个方向上延伸寻找边缘的断裂处,并连接这些边缘。 7.2边缘检测 Canny 算子 原图
算子比较 7.2边缘检测 Roberts算子:Roberts算子利用局部差分算子寻找边缘,边缘定位精度较高,但容易丢失一部分边缘,同时由于图像没经过平滑处理,因此不具备能抑制噪声能力。该算子对具有陡峭边缘且含噪声少的图像效果较好。 Sobel算子和Prewitt算子:都是对图像先做加权平滑处理,然后再做微分运算,所不同的是平滑部分的权值有些差异,因此对噪声具有一定的抑制能力,但不能完全排除检测结果中出现的虚假边缘。虽然这两个算子边缘定位效果不错,但检测出的边缘容易出现多像素宽度。
算子比较 7.2边缘检测 Laplacian算子:是不依赖于边缘方向的二阶微分算子,对图像中的阶跃型边缘点定位准确,该算子对噪声非常敏感,它使噪声成分得到加强,这两个特性使得该算子容易丢失一部分边缘的方向信息,造成一些不连续的检测边缘,同时抗噪声能力比较差。
算子比较 LOG算子:该算子首先用高斯函数对图像作平滑滤波处理,然后才使用Laplacian算子检测边缘,因此克服了Laplacian算子抗噪声能力比较差的缺点,但是在抑制噪声的同时也可能将原有的比较尖锐的边缘也平滑掉了,造成这些尖锐边缘无法检被测到。应用LOG算子,高斯函数中方差参数的选择很关键,对图像边缘检测效果有很大的影响。高斯滤波器为低通滤波器,方差越大,通频带越窄,对较高频率的噪声的抑制作用越大,避免了虚假边缘的检出,同时信号的边缘也被平滑了,造成某些边缘点的丢失。反之,方差越小,通频带越宽,可以检测到的图像更高频率的细节,但对噪声的抑制能力相对下降,容易出现虚假边缘。因此,应用LOG算子,为取得更佳的效果,对于不同图像应选择不同参数。 7.2边缘检测
算子比较 Canny算子:Canny算子虽然是基于最优化思想推导出的边缘检测算子,实际效果并不一定最优,原因在于理论和实际有许多不一致的地方。该算子同样采用高斯函数对图像作平滑处理,因此具有较强的抑制噪声能力,同样该算子也会将一些高频边缘平滑掉,造成边缘丢失。Canny算子其后所采用用双阈值算法检测和连接边缘,采用的多尺度检测和方向性搜索较LOG算子要好。 7.2边缘检测
基本步骤 7.3边缘跟踪 从图像中一个边缘点出发,然后根据某种判别准则搜索下一个边缘点以此跟踪出目标边界。 (1)确定边界的起始搜索点,起始点的选择很关键,对某些图像,选择不同的起始点会导致不同的结果。 (2)确定合适边界判别准则和搜索准则,判别准则用于判断一个点是不是边界点,搜索准则则指导如何搜索下一个边缘点。 (3)确定搜索的终止条件。
示例 7.3边缘跟踪 二值图像边界跟踪 灰度图像边界跟踪
Hough变换 7.3边缘跟踪 Hough变换可以用于将边缘像素连接起来得到边界曲线。 (1)优点在于受噪声和曲线间断的影响较小。
Hough变换 直线检测 7.3边缘跟踪 原始图像 二值化图像 细化图像 Hough 变换检测出的直线
第4章 图像增强 (Image Enhancement) 4.1 概述 4.2 空域变换增强 4.3 空域滤波增强 4.4 频域增强 4.1 概述 4.2 空域变换增强 4.3 空域滤波增强 4.4 频域增强 4.5 彩色增强
图像增强的含义 4.1概述 目的 1. 改善图像视觉效果,提高清晰度; 应用 2. 改善(增强)感兴趣部分(如滤除噪声、锐化目标物边缘),突出图像特征,以提高图像可懂度,便于计算机处理。 其主要目标是通过对图像的处理,使图像比处 理前更适合一个特定的应用。 应用 显示、打印、印刷、识别、分析、创艺等
4.1概述 图像增强的含义 处理操作 去除噪音、边缘增强、提高对比度、增加亮度、改善颜色效果、改善细微层次等。 通常与改善视觉效果相一致。 处理方法 空域法: 全局运算:在整个图像空间域进行。 局部运算:在与像素有关的空间域进行。 点运算:对图像作逐点运算。 频域法:在图像的某个变换域内,对图像的变换系数进行运算,然后通过逆变换获得图像增强效果。
4.1概述 图像增强的含义 分类
4.1概述 图像增强的含义 方法过程 1. 空域法 2. 频域法 建立在卷积定理基础上。
主要内容 4.2空域变换增强 直接灰度变换法 直方图处理 借助f(.)的直方图进行变换; 图像间运算 将f(.)中的每个像素按EH操作直接变换以得到g(.); 直方图处理 借助f(.)的直方图进行变换; 图像间运算 借助对一系列图像间的算术与逻辑操作进行变换。
直接灰度变换 4.2空域变换增强 线性灰度变换 目的:加大图像动态范围,扩展对比度,使 图像清晰、特征明显。 当图像成像时曝光不足或过度, 或由于成像设备的非线性和图像记录设备动态范围太窄等因素,都会产生对比度不足的弊病,使图像中的细节分辨不清。这时可将灰度范围线性扩展。
直接灰度变换 4.2空域变换增强 设f(x,y)灰度范围为[a,b],g(x,y)灰度范围为[c,d]。 f(x,y) g(x,y) a b f(x,y) g(x,y) a b c d
直接灰度变换 4.2空域变换增强 分段线性灰度变换 将感兴趣的灰度范围线性扩展,相对抑制不感兴趣的灰度区域。在黑色或白色附近有噪声干扰时用:如照片中的划痕。使用分段线性变换,通过调节折线拐点的位置及控制分段直线的斜率,可对不同区间进行压缩或扩展。 设f(x,y)灰度范围为[0,Mf],g(x,y)灰度范围为[0,Mg]。
4.2空域变换增强 直接灰度变换 变换使两个灰度区间0 ∼ a和b ∼ Mf受到压缩,而灰度区间[a,b]进行了线性变换。
4.2空域变换增强 直接灰度变换 非线性灰度变换 (1)对数变换 (Log Transformations) 其中a,b,c为参数,可调节曲线的位置和形状。 对数变换使低灰度范围的图像得以扩展;高灰度范围的图像得以压缩,使图像的灰度分布均匀,与人的视觉特性相匹配。
直接灰度变换 4.2空域变换增强 (2)指数变换 (Power-Law Transformations) 其中a,b,c为参数,可调节曲线的位置和形状。 指数变换与对数变换相反,可使高灰度区得以扩展,低灰度范围的图像得以压缩。
直接灰度变换 4.2空域变换增强 位面图 1幅灰度级用8bit表示的图像共有8个位面(每个bit可表示 1个二值的平面),用位面0代表最低位面,位面7代表最 高位面。可采取对图像特定位面的操作来达到对图像增强 的效果。 用灰度剪切变换函数T(r)来获取某幅图像的位面图。设要 提取第n个位面,则有通式:
4.2空域变换增强 直接灰度变换 位面图实例
4.2空域变换增强 直接灰度变换举例 原始图像
4.2空域变换增强 直接灰度变换举例 灰度倒置 底片效果
4.2空域变换增强 直接灰度变换举例 非线性灰度变换对数效应
4.2空域变换增强 直接灰度变换举例 非线性灰度变换指数效应
4.2空域变换增强 直接灰度变换举例 分段线性化 出现假轮廓
4.2空域变换增强 直接灰度变换举例 原始图像
4.2空域变换增强 直接灰度变换举例 亮度倒置 底片效果
4.2空域变换增强 直接灰度变换举例 非线性亮度变换对数效应
4.2空域变换增强 直接灰度变换举例 非线性亮度变换指数效应
4.2空域变换增强 直接灰度变换举例 分段线性化 出现假轮廓
4.2空域变换增强 直接灰度变换举例 分段线性灰度变换
4.2空域变换增强 直接灰度变换举例 灰度切分
直方图处理 4.2空域变换增强 直方图的基本概念 如果将图像中像素亮度(灰度级别)看成是一个随机变量, 则其分布情况就反映了图像的统计特性,这可用Probability Density Function (PDF)来刻画和描述,表现为灰度直方图(Histogram)。 灰度直方图是图像中各灰度级出现频数分布的统计图表。它表示图像中具有某种灰度级的像素的个数,是图像最基本的统计特征。 横坐标是灰度级,纵坐标是该灰度级出现的频度。
直方图处理 4.2空域变换增强 直方图的计算 图像的灰度统计直方图是一个1-D的离散函数: 其中sk是第k级灰度值,nk是f(x,y)中具有灰度值sk的像素个数,n是图像像素总数,L是灰度级,而nk/n即为频数,是对sk出现概率的估计 。
直方图处理 4.2空域变换增强 直方图的性质 (1)反映各灰度级出现频数的分布情况,进而反映图像对比(清晰)度,但不反映各灰度级的空间位置分布。即它只包含了该图像中某一灰度值的像素出现的概率,而丢失了其所在位置的信息。
直方图处理 4.2空域变换增强 直方图的性质 (2)任一幅图像,都能唯一地确定出一幅与它对应的直方图, 但不同的图像,可能有相同的直方图。即图像与直方图之间是多对一的映射关系。下图就是一个不同图像具有相同直方图的例子。
直方图处理 4.2空域变换增强 直方图的性质 (3)由于直方图是对具有相同灰度值的像素统计得到的, 因此,一幅图像各子区的直方图之和就等于该图像全图的直方图,如下图所示。 直方图的分解
直方图处理 4.2空域变换增强 直方图修正技术基础 对给定图像的灰度分布(在0≤r≤1范围内)进行灰度变换 s=T(r)。这里s为变换后的灰度,r为变换前的灰度,T为变换函数。 其中T应满足: (1)在0r 1 区间内, T(r)单调增加,保证灰度级从黑到白次序不变; (2)对于0r 1, 0 T(r) 1保证灰度变化的动态范围不变。 可由Pr(r)求出Ps(s): 通过变换函数T(r)可以控制图像灰度级的概率密度函数,从而改变图像的灰度层次。这就是直方图修改技术的理论基础。
直方图处理 4.2空域变换增强 直方图修正技术基础 灰度修正(改变像素灰度值) ⇔改变直方图(修正) ⇔灰度非线性变换 方法: (1)直方图均衡化(Histogram Equalization) (2)直方图规定化(Histogram Specification) (直方图匹配,Histogram Matching)
直方图均衡化处理 4.2空域变换增强 基本思想 将图像灰度直方图修正为均匀分布形式,增加像素灰度值的动态范围,从而达到增强图像整体对比度(清晰度↑)的效果。 非均匀分布 均匀分布
直方图均衡化处理 4.2空域变换增强 其中0≤rk≤1,k=0,1,2,...,L-1 直方图均衡化处理是以累积分布函数(CDF)变换法为基础的直方图修正法。可以证明CDF是单值单增函数且保证前后灰度动态范围的一致性。 对于离散的灰度级, CDF就是原始图的累积直方图,有: 其中0≤rk≤1,k=0,1,2,...,L-1 根据原图像直方图可直接计算出均衡化后的各像素灰度值。实际中还要对Sk取整(Sk←int[(L-1)Sk+0.5])以满足数字图像的要求。
直方图均衡化处理 4.2空域变换增强 举例 设有1幅64×64的8级灰度图像,其灰度分布如下表所示,现对其进行直方图均衡化处理。
直方图均衡化计算列表 序号 运算 步骤和结果 1 列出原始图灰度级rk,k=0,1,…,7 2 3 4 5 6 7 2 3 4 5 6 7 统计原始直方图各灰度级像素数nk 790 1023 850 656 329 245 122 81 计算原始直方图 0.19 0.25 0.21 0.16 0.08 0.06 0.03 0.02 计算累计直方图Sk 0.44 0.65 0.81 0.89 0.95 0.98 1.00 取整Sk←int[(L-1)Sk+0.5] 确定映射对应关系 ( rk → Sk ) 0→1 1→3 2→5 3, 4→6 5, 6, 7→7 统计新直方图各灰度级像素数nk 985 448 8 计算新直方图 0.24 0.11
直方图均衡化处理 4.2空域变换增强 图(a):原始图像的直方图; 图(b):原始图像的累计直方图; 图(c):均衡化后得到的直方图
直方图均衡化实例 4.2空域变换增强 图(a):8bit 灰度级的原始图像; 图(b):原始图像的直方图; 图(c):直方图均衡化后的新图像; 图(d) :新图像的直方图
直方图均衡化实例 4.2空域变换增强 原始图像
直方图均衡化实例 4.2空域变换增强 直方图均衡化 灰度动态范围扩展
直方图均衡化实例 4.2空域变换增强
直方图均衡化讨论 4.2空域变换增强 结果直方图趋于平坦化,灰度间隔(动态范围)拉大,对比度↑,图像清晰,便于读取、分析和处理; 直方图均衡化实质上是减少图像的灰度级以换取对比度的加大。在均衡过程中,原来的直方图上频数较小的灰度级被归入很少几个或一个灰度级内,故得不到增强。若这些灰度级所构成的图像细节比较重要,则需采用局部区域直方图均衡。 直方图均衡化的增强效果不易控制,实际中有时需要变换直方图使之成为某个特定形状,从而有选择地增强某个灰度值范围内的对比度,即直方图规定化(有可能获得比直方图均衡化更好的效果)。
直方图规定化处理 4.2空域变换增强 基本思想 有选择地增强某个灰度值范围内的对比度,将直方图变换为某个特定的形状。其目标是突出我们感兴趣的灰度范围,使图像质量得以改善。 原直方图 规定直方图
直方图规定化处理 4.2空域变换增强 主要步骤 这里设M和N分别为原始图像和规定图像中的灰度级数,且只考虑 NM 的情况。 (1)对原始图像的直方图进行灰度均衡化处理: (2)规定需要的直方图,并计算能使规定的直方图均衡化的变换: (3)将原始直方图对应映射到规定的直方图,即将所有 对应到 去。
直方图规定化处理 4.2空域变换增强 单映射规则(Single Mapping Law, SML) 首先找到能使下式最小的 k 和 l : 然后将 对应到 。这里每个 是分别对应过去的,故称为单映射规则。该方法简单直观,但有时会有较大的取整误差。 0.19 0.44 0.65 0.81 0.89 0.95 1 原始累积直方图 规定累积直方图 0.20 0.80 1
直方图规定化处理 4.2空域变换增强 组映射规则(Group Mapping Law, GML) 设 为整数函数,满足 。现在要确定能使下式达到最小的 : 若l=0,则将其i从0到I(0)的 对应到 ;若l>=0,则将其i从I(l-1)+1到I(l-1)的 都对应到 去。 0.19 0.44 0.65 0.81 0.89 0.95 1 原始累积直方图 规定累积直方图 0.20 0.80 1
直方图规定化处理 4.2空域变换增强 举例 设有1幅64×64的8级灰度图像,其灰度分布如下表所示(同前例),现对其进行直方图规定化处理。
直方图规定化计算列表 序号 运算 步骤和结果 1 列出原始图灰度级rk,k=0,1,…,7 2 3 4 5 6 7 2 3 4 5 6 7 统计原始直方图各灰度级像素数nk 790 1023 850 656 329 245 122 81 计算原始直方图 0.19 0.25 0.21 0.16 0.08 0.06 0.03 0.02 计算原始累计直方图 0.44 0.65 0.81 0.89 0.95 0.98 1.00 规定直方图 0.2 0.6 计算规定累计直方图 0.8 1.0 7S SML映射 8S 确定映射对应关系 0,1→3 2,3,4→5 5,6,7→7 9S 变换后直方图 0.45 0.11 7G GML映射 8G 查找映射对应关系 0→3 1,2,3→5 4,5,6,7→7 9G 0.62
直方图规定化处理 4.2空域变换增强 图(a):原始图像的直方图;图(b):规定直方图; 图(c):用SML映射规则得到的直方图; (d) 图(a):原始图像的直方图;图(b):规定直方图; 图(c):用SML映射规则得到的直方图; 图(d):用GML映射规则得到的直方图;
直方图规定化处理讨论 4.2空域变换增强 (1)将原直方图映射到规定的直方图上,使图像按要求的意愿去变换。 (2)实际直方图接近但不等于规定直方图: 灰度级离散,用靠近代相等,有近似误差存在。在连续情况下两个规则都能给出精确的规定化结果,但在离散情况下精度不一样。 从直观上看,用GML法得到映射线比较垂直,表明规定累积直方图和原始累积直方图比较一致。 SML的映射误差为: 通常有 。在上例中, 。 对SML: 对GML: 4.2空域变换增强
直方图规定化实例 4.2空域变换增强 Desired histogram original After
作业 书(清华章毓晋): P99 4.4 , P215 7.1(1) (a) (b) 4.4 设1幅图像有图(a)所示直方图,拟对其进行规定直方图变换,所需规定的直方图如图(b)所示。请列表给出直方图规定化计算结果(不必统计直方图各灰度级像素数),并比较SML方法和GML方法的误差情况。 (a) (b) 7.1 设1幅7×7二值图像中心处有1个值为1的3×3的正方形区域,其它处的像素值均为0。根据 ,使用Sobel算子计算这幅图的梯度,并画出梯度幅度图(给出梯度幅度图中所有像素的值)。 作业
Matlab简介 Matlab的IPT讲解(1) Matlab将专门理论所涉及的公式运算、方程求解编成了M函数或M文件的子程序。设计者只需根据自己的需要,直接调用函数名,输入变量与参数,运行函数,便可立即得到结果。 图像处理工具箱(Image Processing Toolbox,简称IPT)是以数字图像处理理论为基础,用Matlab语言构造出一系列用于图像数据显示与处理的M函数。 此外, Matlab中的信号处理工具箱、神经网络工具箱、模糊逻辑工具箱、小波工具箱等也用于协助执行图像处理任务。 Matlab的IPT讲解(1)
IPT主要任务 Matlab的IPT讲解(1) 图像合成:可以实现图像的代数运算和逻辑运算; 空间变换:可以对图像进行旋转、缩放和裁剪等操作; 邻域和块处理:可以进行块处理操作、滑动邻域操作、分离块操作和列处理; 线性滤波和滤波器设计:可以进行线性滤波和设计FIR等滤波器; 基于区域进行处理:可以指定区域并对区域进行滤波和填充; 变换域处理:可以进行傅里叶变换、离散余弦变换和Randon变换; 数学形态学运算:可以进行膨胀和腐蚀,以及基于膨胀和腐蚀的处理,可以进行数学形态学重建等操作; 图像分析:可以进行灰度统计、边缘检测、边界跟踪和四叉树分解等操作; 图像增强:可以进行灰度调整和去噪处理; 图像配准:可以基于控制点配准图像; 图像恢复:可以利用各种滤波器和算法恢复图像。 Matlab的IPT讲解(1)
图像数据 Matlab的IPT讲解(1) 图像类型 保存类型 二值图像 logical 索引图像 double uint8或uint16 灰度图像 RGB图像 Matlab的IPT讲解(1) 其中double类型为浮点值,一般在[0,1]中取值; Uint8为无符号8位整型,一般在[0,255]中取整型值; uint16为无符号16位整型,一般在[0,65535]中取整型值。
图像读写及显示函数 Matlab的IPT讲解(1) %将图像lena.bmp读入数组中 I=imread('lena.bmp') 数组变量 I 不用事先定义,由imread函数的调用与赋值自动生成一个类型为uint8的二维数据矩阵。
图像读写及显示函数 Matlab的IPT讲解(1) %显示图像I imshow(I)
图像读写及显示函数 Matlab的IPT讲解(1) %将图像I 以文件名lena.jpg保存 imwrite(I, 'lena.jpg ') 利用该函数的另外一个功能是实现图像类型转换,比如lena.bmp需要的存储空间是 257KB,而转换得到的压缩图像lena.jpg仅28.6KB。
图像运算函数 Matlab的IPT讲解(1) 函数 描述 imabsdiff 两幅图像的绝对差 imadd 两幅图像的和运算(相加) imcomplement 图像的补运算 imdivide 两幅图像的除运算 imlincomb 计算两幅图像的线性组合 immultiply 两幅图像的积 imsubtract 两幅图像的差 不需要将数据转换为double型的操作; 自动进行溢出控制。
2D-FFT实现 Matlab的IPT讲解(1) 下面通过实例来说明计算并显示图像傅里叶谱的方法。 Matlab提供了fft函数、 fft2函数和fftn函数分别用于进行一维DFT、二维DFT和N维DFT的快速傅里叶变换,以及ifft函数、 ifft2函数和ifftn函数分别用于进行一维DFT、二维DFT和N维DFT的快速傅里叶逆变换。 下面通过实例来说明计算并显示图像傅里叶谱的方法。
2D-FFT实现 Matlab的IPT讲解(1) 例:简单图像及其傅里叶变换。 Matlab程序: %建立简单图像d 并显示 D=zeros(32,32); %图像大小32*32 D(13:20,13:20)=1; %中心白色方块大小为8*8 figure(1); %建立图形窗口1 imshow(D,‘notruesize’); %显示图像d Matlab的IPT讲解(1)
2D-FFT实现 Matlab的IPT讲解(1) %计算傅里叶变换并显示 Df=fft2(D); %计算图像d的傅里叶变换 Df1=abs(Df); %求频谱(模) figure(2); %建立图形窗口2 imshow(Df1,[-1 5],‘notruesize’); %显示图像d的频谱图
2D-FFT实现 Matlab的IPT讲解(1) figure(3); figure(4); %对傅里叶变换频谱实施对数变换 imshow(log(Df1),[-1 5],‘notruesize’); %获得傅里叶变换中心谱 Dfs=fftshift(Df); figure(4); imshow(log(abs(Dfs)),[-1 5],‘notruesize’);
2D-FFT实现 Matlab的IPT讲解(1) %显示图像d的相位角谱 Df2=angle(Df); figure(5); imshow(Df2,[min(Df2(:)) max(Df2(:))],'notruesize');
彩色图像操作 Matlab的IPT讲解(1) 一幅M*N的RGB彩色图像可以用一个M*N*3的矩阵描述,图像中的每一个像素点对应于红、绿、蓝三个分量组成的三元组。 在Matlab中,不同的图像类型,其图像矩阵的取值范围也不一样。例如若一幅RGB图像是double类型的,则其取值范围在[0,1]之间,而如果是uint8或者uint16类型的,则取值范围分别在[0, 255]和[0, 65535]。
彩色图像操作 Matlab的IPT讲解(1) 其Matlab程序如下: 生成一幅RGB图像可以采用cat函数得到。 B=cat(dim, A1, A2, A3, …) 例:生成一幅128*128的RGB图像,该图像左上角为红色,右上角为蓝色,左下角为绿色,右下角为黑色。 其Matlab程序如下: IR=zeros(128,128); %生成一个128*128的零矩阵,作为R分量 IR(1:64,1:64)=1; %将左上角的64*64设置为1 IG=zeros(128,128); %生成一个128*128的零矩阵,作为G分量 IG(65:128,1:64)=1; %将左下角的64*64设置为1 IB=zeros(128,128); %生成一个128*128的零矩阵,作为B分量 IB(1:64,65:128)=1; %将右上角的64*64设置为1 I=cat(3,IR,IG,IB); %使用cat函数将三个分量组合 imshow(I) %显示生成RGB图像 Matlab的IPT讲解(1)
彩色图像操作 Matlab的IPT讲解(1) 分别获取一幅RGB图像I的三个分量值,可以使用下面语句: IR=I(: , : , 1); IG=I(: , : , 2); IB=I(: , : , 3); 例:显示baboon.bmp图像的R、G、B三分量图。 I=imread(‘baboon.bmp’); %读取baboon.bmp图像数据 IR=I(:,:,1); %获得R分量数据 IG=I(:,:,2); %获得G分量数据 IB=I(:,:,3); %获得B分量数据 figure(1); %建立图形窗口1 imshow(IR); %显示R分量图 figure(2); %建立图形窗口2 imshow(IG); %显示G分量图 figure(3); %建立图形窗口3 imshow(IB); %显示B分量图 Matlab的IPT讲解(1)
彩色图像操作 Matlab的IPT讲解(1)
Matlab的IPT讲解(1) R分量图 G分量图 B分量图
实验时间安排 考试方式:开卷 共分四次完成(每次3学时): 第1次 第5周周五 (4月6日) 下午5-7节 第1次 第5周周五 (4月6日) 下午5-7节 第2次 第6周周六 (4月14日)下午5-7节 第3次 第7周周五 (4月20日)下午5-7节 第4次 第8周周二 (4月24日)下午5-7节 考试时间初步定于第11周周三(5月16日)下午7-8节 考试方式:开卷
格式 预习报告 ****预习报告 1.实验目的 2.实验环境(器材) 3.实验中所用原理及相关知识 4.实验步骤(含实验前的准备工作) 专业: 姓名: 学号: 指导教师: 1.实验目的 2.实验环境(器材) 3.实验中所用原理及相关知识 4.实验步骤(含实验前的准备工作) 5.预习时所参阅的资料清单 6.预习后所产生(或思考)的问题
格式(软件类) 实验报告 一、实验项目名称 二、实验目的 三、实验环境 四、实验内容 五、实验步骤 六、源程序清单、测试数据、结果 根据实验教学大纲要求书写。 二、实验目的 目的要明确,要抓住重点,可以从理论和实践两个方面考虑。在理论上,验证定理、公式、算法,并使实验者获得深刻和系统的理解;在实践上,掌握使用实验设备的技能技巧和程序的调试方法。一般需说明是验证型实验还是设计型实验,是创新型实验还是综合型实验。 三、实验环境 实验用的软硬件环境。 四、实验内容 说明本次实验的具体内容,要求实验内容饱满,难度适中。 五、实验步骤 要求说明依据何种原理、定律、算法或操作方法进行实验,写清楚程序实现过程。 六、源程序清单、测试数据、结果 实验中编写的源程序和测试数据以及程序运行结果。 七、实验小结和思考 针对实验过程中出现的问题以及实验结果进行详细的分析,并写出本次实验的体会。
书写实验报告注意事项 实验报告 严格按照所要求的格式书写,包括七项内容。 实验步骤中应写明原理。源程序清单、测试数据、结果放在第六部分。对实验结果的分析放在第七部分。 实验报告应在第11周考试前上交。 实验报告
实验一:图像变换 实验目的 实验环境 (1)熟悉Matlab 图像处理工具箱IPT,掌握图像读写操作与基本的图像合成运算; (2)理解图像的频域变换处理思想,掌握二维离散傅里叶变换的原理,学会利用IPT求解图像的2D-FFT,并了解其一些具体应用; (3)利用Matlab 中的演示程序,熟悉图像的离散余弦变换与小波变换。 实验类型:验证型 实验环境 编程工具: Matlab
实验内容 实验一:图像变换 (一)针对图像文件的基本操作练习 (1)不采用图像运算函数,实现图像的合成运算
实验步骤 实验一:图像变换 Matlab程序: (a)图像相减 求出6.1.01.bmp与6.1.10.bmp间差异。 I1=imread('6.1.01.bmp'); I2=imread('6.1.10.bmp'); IMIN=double(I2)-double(I1); IMIN=uint8(IMIN); figure subplot(2,2,1);imshow(I1);title('图像1') subplot(2,2,2);imshow(I2);title('图像2') subplot(2,2,3);imshow(IMIN);title('图像差异') IMIN=histeq(IMIN); subplot(2,2,4);imshow(IMIN);title('图像差异均衡化') 实验一:图像变换
实验步骤 实验一:图像变换 Matlab程序: (b)图像平均 分别对迭加了零均值高斯随机噪声的lena.bmp进行4幅、8幅、16幅的图像平均。 Matlab程序: I=imread('lena.bmp'); [M,N]=size(I); II1=zeros(M,N); for i=1:16 II(:,:,i)=imnoise(I,'gaussian',0,0.01); II1=II1+double(II(:,:,i)); if or(or(i==1,i==4),or(i==8,i==16)); figure; imshow(uint8(II1/i)); end 实验一:图像变换
实验步骤 实验一:图像变换 (c)图像逻辑运算 针对lena.bmp与二值图像练习图像间的与或运算。Matlab程序: I=imread('lena.bmp'); [M,N]=size(I); I=double(I); I1=ones(M,N)*255; I1(100:350,200:300)=0; for i=1:M for j=1:N I2(i,j)=bitand(I(i,j),I1(i,j)); I3(i,j)=bitor(I(i,j),I1(i,j)); end I=uint8(I);I1=uint8(I1);I2=uint8(I2);I3=uint8(I3); subplot(2,3,1);imshow(I);title('图像1'); subplot(2,3,2);imshow(I1);title('图像2'); subplot(2,3,3);imshow(I2);title('AND'); subplot(2,3,4);imshow(I);title('图像1'); subplot(2,3,5);imshow(I1);title('图像2'); subplot(2,3,6);imshow(I3);title('OR'); 实验一:图像变换
实验一:图像变换 实验内容 (2)采用图像运算函数,实现图像的合成运算 具体运算函数见IPT讲解,调用方式查看Matlab帮助。 (3)获取RGB图像的三个分量值 详见IPT讲解
实验一:图像变换 实验内容 (二)快速傅里叶变换 FFT 算法的实现与运用 (1)在掌握傅里叶频域变换理论的基础上,利用 2-D FFT算法对给定的灰度图像lena.bmp与pepper.bmp进行傅里叶正变换,绘制相应的频谱图和相位角图。
实验内容 实验一:图像变换 (2)利用 二维离散傅里叶变换查找图像特征 利用相关确定包含文本的图像“text.tif”中字母“a”的位置。
实验一:图像变换 实验内容 bw = imread('text.tif'); %Extract one of the letters "a" from the image. a=bw(59:71,81:91); imshow(bw); figure, imshow(a); C = real(ifft2(fft2(bw) .* fft2(rot90(a,2),256,256))); %Display, scaling data to appropriate range. figure, imshow(C,[]) %Find max pixel value in C. max(C(:)) %Use a threshold that's a little less than max. thresh = 45; %Display showing pixels over threshold. figure, imshow(C > thresh)
实验一:图像变换 实验内容 (三)二维离散余弦DCT变换的演示练习 利用Matlab中的Demos,观察DCT变换的图像压缩效果,阅读演示程序代码。
实验一:图像变换
实验内容 实验一:图像变换
实验内容 实验一:图像变换 (四)小波变换的演示练习 利用Matlab中的Demos,观察小波变换的图像分解,阅读演示程序代码。
实验一:图像变换
实验内容 实验一:图像变换
数字图像处理 See you later!