数字媒体技术第二章灰度变换与空间滤波2020/7/201MATLABMATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。2020/7/2022020/7/203Matlab图像处理工具箱———ImageProcessingToolbox提高图像质量,使模糊的图像变得清晰;提取图像的有效特征,以便进行模式识别;通过图像变换和有效编码来压缩其频带或数据,以便传输或存储。一、图像处理工具箱函数包含一百余个函数,按其内容划分为以下几类:⑴、图像显示函数;⑵、图像文件输入、输出函数;⑶、图像几何操作函数;⑷、图像像素值及统计函数;⑸、图像分析函数;⑹、图像增强函数;⑺、线性滤波函数;2020/7/204一、图像处理工具箱函数(cont.)⑻、二维线性滤波器设计函数;⑼、图像变换函数;⑽、图像邻域及块操作函数;⑾、二值图像操作函数;⑿、基于区域的图像处理函数;⒀、颜色图操作函数;⒁、颜色空间转换函数;⒂、图像类型和类型转换函数。2020/7/205二、工具箱支持的图像类型分别为:•真彩色图像(RGBimages);•索引色图像(indeximages);•灰度图像(intensityimages);•二值图像(binaryimages)。由于有的函数对图像类型有限制,这四种类型可以用工具箱的类型转换函数相互转换。2020/7/206Matlab可操作的图像文件包括:•BMP•HDF•JPEG2020/7/207•PCX•TIFF•XWD三、常用图像操作图像的读写与显示操作:用imread()读取图像,imwrite()输出图像。图像显示于屏幕:imshow()。图像进行裁剪:imcrop()。图像的插值缩放:imresize()。图像的旋转:imrotate()。2020/7/208四、图像增强功能图像增强是数字图像处理过程中常用的一种方法,目的是采用一系列技术去改善图像的视觉效果或将图像转换成一种更适合于人眼观察和机器自动分析的形式。2020/7/209图像增强方法灰度直方图均衡化。灰度变换法。平滑与锐化滤波。2020/7/20101、灰度直方图均衡化均匀量化的自然图像的灰度直方图通常在低灰度区间上频率较大,使得图像中较暗区域中的细节看不清楚,采用直方图修整可使原图像灰度集中的区域拉开或使灰度分布均匀,从而增大反差,使图像的细节清晰,达到增强目的。直方图均衡化可用histeq()函数实现。2020/7/20112、灰度变换法照片或电子方法得到的图像,常表现出低对比度即整个图像偏亮或偏暗,为此需要对图像中的每一像素的灰度级进行灰度变换,扩大图像灰度范围,以达到改善图像质量的目的。这一灰度调整过程可用imadjust()函数实现。2020/7/20123、平滑滤波平滑技术用于平滑图像中的噪声,基本采用在空间域上的求平均值或中值。或在频域上采取低通滤波,因在灰度连续变化的图像中,我们通常认为与相邻像素灰度相差很大的突变点为噪声点,灰度突变代表了一种高频分量,低通滤波则可以削弱图像的高频成分,平滑了图像信号,但也可能使图像目标区域的边界变得模糊。2020/7/20134、锐化滤波而锐化技术采用的是频域上的高通滤波方法,通过增强高频成分减少图像中的模糊,特别是模糊的边缘部分得到了增强,但同时也放大了图像的噪声。在Matlab中,各种滤波方法都是在空间域中通过不同的卷积模板即滤波算子实现,可用fspecial()函数创建预定义的滤波算子,然后用filter2()或conv2()函数在实现卷积运算的基础上进行滤波。2020/7/2014五、图像边缘检测和图像分割功能边缘检测是一种重要的区域处理方法,边缘是所要提取目标和背景的分界线,提取出边缘才能将目标和背景区分开来。如果一个像素落在边界上,那么它的邻域将成为一个灰度级变化的带。对这种变化最有用的两个特征是灰度的变化率和方向。2020/7/2015边缘检测算子可以检查每个像素的邻域并对灰度变化率进行量化,也包括对方向的确定,其中大多数是基于方向导数掩模求卷积的方法。Matlab工具箱提供的edge()函数可针对sobel算子、prewitt算子、roberts算子、log算子和canny算子实现检测边缘的功能。基于灰度的图像分割方法也可以用简单的Matlab代码实现。2020/7/2016五、图像边缘检测和图像分割功能六、图像变换功能图像变换技术是图像处理的重要工具,常运用于图像压缩、滤波、编码和后续的特征抽取或信息分析过程。Matlab工具箱提供了常用的变换函数,如fft2()与ifft2()函数分别实现二维快速傅立叶变换与其逆变换,dct2()与idct2()函数实现二维离散余弦变换与其逆变换。Matlab还提供了如二值图像的膨胀运算dilate()函数、腐蚀运算erode()函数等基于数学形态学与二值图像的操作函数。2020/7/2017七、Matlab图像处理工具箱运用实例为了说明Matlab语言是一种简洁,可读性较强的高效率编程软件,通过运用图像处理工具箱中的有关函数,对图“board.tif”为一幅电路板的原图像进行处理。该图像右边的剪切图像为从“board.tif”中剪切出的将用于分析的子图像块。为了便于分析与观察,把子图像块旋转180度置于水平位置并把该图存在名为“board_new.bmp”的图像文件中。2020/7/20181、图像读取、显示、截取、旋转、写入x=imread(‘board.tif’);imshow(x);y=imcrop(x);figure,imshow(y);z=imrotate(y,180);figure,imshow(z);imwrite(z,‘board_new.bmp’,‘bmp’);isrgb(z)2020/7/20191、图像读取、显示、截取、旋转、写入(cont.)2020/7/2020截取旋转180度2、对灰度图进行直方图均衡化处理先判断看所给图像是否为一真彩色图像?是,将其转换为灰度图像,以下所有的进一步处理均采用经过灰度化处理后的图像作为原图。对灰度图进行直方图均衡化处理。通过比较灰度原图和经均衡化后的图形可见图像变得清晰,均衡化后的直方图形状比原直方图的形状更理想。2020/7/20212、对灰度图进行直方图均衡化处理(cont.)m=imread(‘board_new.bmp’);n=rgb2gray(m);imshow(n);figure,imhist(n);I=histeq(n);figure,imshow(I);figure,imhist(I);2020/7/20222、对灰度图进行直方图均衡化处理(cont.)2020/7/2023“board_new.bmp”的灰度化图像(原图)均衡化前直方图2、对灰度图进行直方图均衡化处理(cont.)2020/7/2024经直方图均衡化后的图像均衡化后直方图3、灰度图像平滑与锐化处理灰度图像平滑与锐化处理。Matlab图像工具箱中有多种平滑与锐化滤波函数,也可以自定义滤波算子。在此我们采用可根据图像的局部方差来调整滤波器输出的自适应滤波对图像进行平滑,及采用拉氏算子运算使图像的模糊部分得到增强。2020/7/20253、灰度图像平滑与锐化处理(cont.)x=imread(‘board_new.bmp’);x=rgb2gray(x);x=double(x);p=wiener2(x);imshow(p,[]);h=[010;1-41;010];q=conv2(x,h,‘same’);r=x-q;figure,imshow(r,[]);2020/7/20262020/7/2027采用自适应滤波平滑利用拉氏算子卷积锐化“board_new.bmp”的灰度化图像(原图)3、灰度图像平滑与锐化处理(cont.)2020/7/2028灰度直方图描述了一副图像的灰度级统计信息,主要应用于图像分割和图像灰度变换等处理过程中。从数学角度来说,图像直方图描述图像各个灰度级的统计特性,它是图像灰度值的函数,统计一幅图像中各个灰度级出现的次数或概率。归一化直方图可以直接反映不同灰度级出现的比率。横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各个灰度级别的像素在图像中出现的次数或概率。imhist(I);%灰度直方图I=imread(‘red.bmp’);%读入图像figure;%打开新窗口[M,N]=size(I);%计算图像大小[counts,x]=imhist(I,32);%计算有32个小区间的灰度直方图counts=counts/M/N;%计算归一化灰度直方图各区间的值stem(x,counts);%绘制归一化直方图一、图像直方图图像直方图归一化2020/7/20292020/7/2030二、灰度的线性变换BAAABfDfDfDFa1时,输出图像的对比度将增大;Fa1时,输出图像对比度将减小。Fa=1且Fb非零时,所有像素的灰度值上移或下移,使整个图像更暗或更亮。Fa0,暗区变亮,亮区变暗。2020/7/20312020/7/20322020/7/2033三、灰度的对数变换skctlogc为尺度比例常数,s为源灰度值,t为变换后的目标灰度值。k为常数。灰度的对数变换可以增强一幅图像中较暗部分的细节,可用来扩展被压缩的高值图像中的较暗像素。广泛应用于频谱图像的显示中。Warning:log函数会对输入图像矩阵s中的每个元素进行操作,但仅能处理double类型的矩阵。而从图像文件中得到的图像矩阵大多是uint8类型的,故需先进行im2double数据类型转换。2020/7/2034I=imread('nir.bmp');%读入图像F=fft2(im2double(I));%FFTF=fftshift(F);%FFT频谱平移F=abs(F);T=log(F+1);%频谱对数变换figure;imshow(F,[]);title('未经变换的频谱');figure;imshow(T,[]);title('对数变换后');2020/7/2035图像的几何变换二、图像镜像B=imtransform(A,TFORM,method);TFORM=makeform(transformtype,Matrix);%空间变换结构Method合法值含义‘bicubic’双三次插值‘bilinear’双线性插值‘nearest’最近邻插值参数transformtype指定了变换的类型,常见的’affine’为二维或多维仿射变换,包括平移、旋转、比例、拉伸和错切等。Matrix为相应的仿射变换矩阵。2020/7/2036A=imread('nir.bmp');[height,width,dim]=size(A);tform=maketform('affine',[-100;010;width01]);B=imtransform(A,tform,'nearest');tform2=maketform('affine',[100;0-10;0height1]);C=imtransform(A,tform2,'nearest');figure;imshow(A);figur