数字图象处理
第一章 绪言
一幅图像可以定义为一个二维函数f(x,y),其中x和y是空间坐标,而f在任意一对坐标(x,y)处的幅度称为该图像的亮度或灰度,当x,y和f的幅值都是有限的离散值时,称该图像为数字图像,数字图象处理就是用计算机处理数字图像,数字图象处理是由有限数量的元素组成的,
图像的处理分为:低级、中级和高级处理。低级处理包括原始操作,它的特点是其输入输出均为图像。中级处理的特点是,其输入通常是图像,但输出则是从这些图像中提取的属性,高级处理通过执行通常与人类视觉相关的感知函数。
Matlab的典型应用有:
数学和计算、算法开发、数据获取、 建模、模拟和原型设计、 数据分析、研究和可视化、科学和工程图形、应用开发
文件必须在当前的目录中,或者在搜索路径的目录中
M函数有两种可以由用户显示的信息类型,第一种信息类型称为H1,它包含函数名和一行描述,第二种信息类型称为帮助文本快。
第二章 基本原理
数据处理工具箱(IPT)是扩展MAtLAB数值计算能力的函数集
一幅图像可以定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,而f在任意一对坐标(x,y)处的幅度称为该图像的亮度或灰度,灰度是用来表示黑白图像亮度的一个术语,而彩色图像是单个二维图像组合形成的。
将坐标值数字化称为取样,将振幅数字化称为量化,当F的x,y分量和振幅都是有限且离散的量时,称该图像为数字图像。取样和量化的结果是一个实数矩阵,工具箱使用(r,c)表示行与列。
读取图像函数imread(‘图像名‘)imread支持GIF格式,但imwrite不支持,函数size(f)可以输出一幅图像的行数和列数,whos f可以显示出一个数组的附加信息,
显示图像用函数imshow(f,G),f 是一个图像数组,G使显示该图像的灰度等级,省略则默认灰度等级为256,imshow(f,[low high]),会将所有小于或等于low的值都显示为黑色,所有大于或等于high的值都显示为白色,imshow(f,[ ])可以将变量的low设置为数组f的最小值,将变量high设置为数组f的最大值,函数Pixval经常用来交互地显示单个像素的亮度值。
函数imwrite(f, ‘fliename’)可以将图像写到磁盘上,但是文件名必须是一种可以识别的格式。
数据类:
表中的前八种是数值数据、类,第九项是字符类,最后一项是逻辑数据类,8比特图像是实际中最常用的一种图像,
工具箱支持以下四种图像类型:
亮度图像、二值图像、索引图像、RGB图像
大多数单色图像的处理运算都是通过二值图像或亮度图像来进行的,规定双精度型归一化亮度图像的取值范围是[0,1]
一个取值只包含0和1的uint8类数组,在matlab中并不认为是二值图像,要通过logical函数来转换,B = logical(A)
要测试一个数组是否是逻辑数组,用函数islogical(c),c是逻辑数组,该函数返回1,否则返回0,
一幅图像的特性是由数据类和图像类型这两者来表征的,二值图像的像素只能是logical数据类。
检测输入的数据类用函数im2uint8,将一幅彩色图像转换成灰度图像用函数G = mat2gray(A),二值图像和亮度图像之间的转换用函数im2bw,G = im2bw(f,t),该函数通过阈值处理,将一幅亮度图像f转换成一幅二值图像g,
数组索引包括向量和矩阵索引,向量索引中的方法在矩阵索引中可用,sum(v)会将输入向量v的所有数值元素相加。M文件函数的组成部分为:函数定义行、H1行、帮助文本、函数体、命令。
Matlab运算符可以分为以下三种主要类别:
1、执行数值计算的算术运算符(包括矩阵算数运算符和数组算数运算符) 2、在数量上比较操作数的关系运算符
3、执行函数AND、OR、NOT的逻辑运算符
流控制:基于预定义条件集而控制操作流的能力是所有编程语言的核心,支持8种流控制语句,
两种优化代码的方法:向量化循环和预分配数组,在向量化后,代码的效率会更高。预分配数组可以加快代码的执行时间,
第三章 亮度变换与空间滤波
空间域指的是图像平面本身,在空间域内处理图像的方法是直接对图像的像素进行处理。
本书第47页,
对图像进行对比度拉伸变幻时进行动态范围处理的基本工具,对数变换的一项主要应用时压缩动态范围,使用函数mat2gray可将值限定在范围[0,1]内,使用函数im2uint8可将值限定在范围[0,255]内,在处理图像直方图的工具箱中,核心函数是imhist。
灰度级均衡化处理的最终结果是一幅扩展了的动态范围的图像,它具有较高的对比度,由函数g = histeq(f,nlev),其中f为输入图像,nlev是输出图像的灰度等级。(最大为256),
直方图的作用:均衡化——扩展f的灰度等级到较宽尺度的范围(函数histeq)
匹配化——输出的直方图是人为设计的,很难用数学方法模型描
述,需要使结果自动匹配指定的直方图(函数histeq)
直方图的显示用函数imhist
直方图的均衡化步骤:
1、求出灰度级fj,j = 0,1,??,L—1. 2、求出各灰度等级个数nj,j = ???? 3、求出灰度等级的频数,pf(fj) = nj/n
4、计算累计分布函数C(f)= Pf(fj) (j=0,1,2,??k)
5、应用下列公式,求输出图像的灰度级gi, (gi = INT[(g max—g min)C(f) + g min])
6、统计映射后各灰度级像素数目N. 7、求输出直方图
8、利用fj—>gj,求得均匀分布的输出图像
直方图的均衡化是通过扩展输入图像的灰度等级到较宽尺度的范围来实现图像增强
直方图的变换:用一个转移函数P对输入图像灰度f变换,g = P(f),使得Pf(g)符合均匀分布,指数分布,双曲线分布,瑞利分布等
空间滤波的领域处理包括: (1) 定义中心点(x,y)
(2) 仅对预先定义的以(x,y)为中心点领域内的像素进行运算 (3) 令运算结果为该点处处理的响应 (4) 对图像中的每一点重复此步骤
滤波器在该点处的响应是滤波掩膜所限定的相应领域像素与滤波器系数的乘积结果的累加, 卷积是在相关上将掩膜W旋转180度,再按一定的方式在图像f中移动的过程。卷积基本上是简单地冲击的位置复制W。(从左至右,从上至下)
滤波分为线性和非线性的,非线性是对领域操作,线性是通过傅里叶变换,(又分为平滑和锐化,平滑(低通)用于模糊图像,消除噪声、小对象或链接,锐化(高通)用来突出细节,增强边缘),线性滤波用函数imfilter,滤波最主要的目的是去除噪声,对图像滤波只能用double类型。
书上68页
非线性空间滤波也基于领域操作的,线性空间滤波基于乘积之和,令每个中心点处的响应等于其领域内的最大像素的操作即为非线性滤波,
滤波器(线性:fspecial,非线性:ordfilt2),最大值、最小值、中值、均值、二维中值滤波。
第四章 频域处理
傅里叶变换在图像增强、图像复原、图像数据压以及其他主要实际应用的设计和实现过程都很重要。
傅里叶公式:79页
傅立叶变换得到的图像也是周期无穷的,一维期望的周期可以通过在计算变换之前让f(x)乘以(—1)的x次方来得到,这样可将变换的原点移动到点u = M/2, 二维傅立叶变换之前将f(x,y)乘以(—1)的x+y次方来得到,通过将原点的变换值移动到频率矩形的中心位置,可简化频谱的视觉分析。平移函数:fftshift,反平移函数:ifftshift
使用IPT函数fftshift将变换的原点移动到频率矩形的中心,函数语法为 Fc = fftshift(F)
其中F使用fft2计算得到的变换,Fc是已居中的变换,函数fftshift通过交换F的象限来操作,在变换计算后使用FFTSHIFT的结果,于在计算变换前将输入图像乘以—1的X+Y次方得到的结果相同,但要注意的是,这两种处理的过程不可互换,
考虑居中问题时,若变量u和V的范围分别为0到M-1和0到N-1,则频率矩形的中心位于(M/2,N/2)若是0到M和0到N,则是(M/2+1,N/2+1)
空间域和频域线性滤波的基础都是卷积定里,如下
f(x,y)*h(h,y)?H(u,v)F(u,v) 和 f(x,y)h(h,y)?H(u,v)*G(u,v) 其中*表示两个函数的卷积,双箭头两遍的表达式组成了傅里叶变换对,第一个表达式两个空间函数的卷积可以通过计算两个傅里叶变换函数的乘积的逆变换得到,相反,两个空间函数的卷积的傅里叶变换刚好等于两个函数的傅里叶变换的乘积。
频域滤波的目的是选择一个滤波器传递函数,以便按照指定的方式修改F(u,v).误差清除(P>=A+C-1,Q>=B+D-1)
傅里叶变幻的基本步骤: 1、使用函数paddedsize获得填充参数,2、得到使用填充的傅里叶变换,3、生成一个PQ(1)*PQ(2)的滤波函数H,4、将变换乘以滤波函数,5、获得G的傅里叶变换的实部 6、讲左上部的矩形修剪为原始大小,
函数FREQZ2用于计算FIR滤波器的频率响应,
M函数的核心是需要在频率矩形中计算任意点到指定店的距离函数。
在频率域使用低通滤波函数lpfilter,高通hpfilter,绘制线框图的最简单法是使用函数mesh,彩色处理函数colormap,
低通滤波使图像变得模糊,高通滤波通过削弱傅里叶变换的低频而保持高频相对不变,使图像变得更加清晰,即锐化。
高频强调滤波:丢失低频信息,平滑区基本消失,采用加强滤波来弥补。高通滤波偏离了直流项,从而把图像的平均值降低到0,一种补偿方法是给高通滤波器加上一个偏移量,
第五章 图像复原
复原的目的是在预定义的意义上改善给给定的图像,增强技术基本上是以启发式过程来处理一幅图像的,复原技术用模糊函数来消除图像的模糊。
OTF和PSF是一个傅里叶变换对,工具箱提供了两个函数otf2psf和psf2otf,用于两者之间的转换,
模拟噪声的行为和影响的能力是图像复原的核心,两种基本噪声:空间域的噪声和频域的噪声,使用函数imnoise来使用噪声污染一幅图像,高斯噪声在诸如低照明水平图像传感器操作等情况下被用做一种近似,椒盐噪声由不完整的开关设备产生,照相乳剂中的银粒大小是用对数正态分布描述的随机变量,瑞利噪声产生与波段成像,指数和厄兰噪声在描述激光成像中很重要。
由椒盐噪声产生的噪声数组有三个值,相应与胡椒声的0,盐粒噪声的1,无噪声的0.5.
基本噪声Imnoise,按指定分布产生噪声imnoise2,周期噪声imnoise3,估计噪声参数roipoly(选取感兴趣的区域)
图像的周期噪声一般产生于图像采集过程中的电气和或者惦记干扰。
噪声的均值m和方差q^2的关系,问题变成通过样本图像来估计均值和方差,然后用这些值来估计求解a 和b。
噪声参数通常直接由带噪声的图像或一组噪声的图像来估计,选择一个尽可能与背景一样无特色的区域,以便使该区域的亮度值的可变性主要由噪声产
生。
那些不以PSF知识为基础的图像复原方法统称为盲去卷积算法。图像空间变换的大多数计算方法都可以归为两类:利用正向映射的方法和反向映射的方法,正向映射过程中的一个问题是,输入图像的两个不同的或更多的像素点可能会被变换成输出图像上的同一个像素点,另一个潜在的问题是,可能有些输出像素根本就没有被赋值,
图像配准方法寻求将两幅相同场景的图像加以对准,
第六章 彩色图像处理
图像处理工具箱将彩色图像当作索引图像或RGB图像(红,绿,蓝)。 以下几种重要的彩色:
RGB色彩空间: 立方体,crgbcube(30,40,50)视角,任一通道0-255. 索引颜色 : 数据矩阵X+映射矩阵map NTSC彩色系统:用于电视 YCBCr释色空间:视频 HSV色彩空间:六面
CMY和CMYK morph <变形软件> HIS色彩空间:
lab(亮度,色泽)等值,相关性最小
索引图像有两个分量,即整数的数据矩阵x和色彩映射矩阵map
函数dither可以用于灰度图像和色彩图像,抖动是在印刷业和出版业中常用的一种处理,它在由点组成的印刷页上给出色调变化的直观效果。在灰度图像的情况下,抖动色调试图用在白色背景上产生黑点的二值图像来得到灰色调
半色调技术又叫抖动技术 函数dither处理灰度图像的语法是:
bw=dither(gray_image)
dither 采用抖动从RGB图像创建索引图像
grayslice 从灰度级亮度图像通过多级 值创建索引图像 gray2ind 从灰度级亮度图像创建索引图像 ind2gray 从索引图像创建灰度级亮度图像 rgb2ind 从RGB图像创建索引图像 ind2rgb 从索引图像创建RGB图像 rgb2gray 从RGB图像创建灰度级图像 NTSC彩色空间:
NTSC彩色制式在美国用于电视系统,这种形式的一个主要优势是灰度信息和彩色信息是分离的,所以同一个信号既可以用于彩色电视机,又可用于黑白电视机。在NTSC制式中,图像数据是由三部分组成的:亮度(Y),色调(I),饱和度(Q)
YCbCr彩色空间:
YCbCr彩色空间广泛用于数字视频,亮度信息用单个分量Y来表示,彩色信息用两个色差分量Cb和Cr来储存。分量Cb是蓝色分量和一个参考值的差,分量Cr是红色分量和一个参考值的差
HSV是人们用于来从调色板或颜色轮中挑选颜色所用的彩色系统之一,色