2020/2/24第三章图像变换与空间滤波2020/2/24本章主要内容:3.1背景知识图像旋转和调整大小的函数及用法3.2亮度变换函数(1)函数adjust(2)对数和对比度拉伸变换(intrans函数)3.3直方图处理与函数绘图3.4空间滤波(1)线性空间滤波(2)非线性空间滤波器2020/2/24重点:(1)对比度增强方法(adjust和intrans函数)(2)直方图的画法(bar、stem和plot函数)(3)均值及中值滤波方法难点:微分算子的锐化作用(掌握拉普拉斯算子、Robert、Sobel算子)2020/2/243.1图像的几何操作•1、插补运算插补运算是通过在输入图像中查找与输出像素对应的点来确定插补像素点的数据值。MATLAB提供的插补运算:近邻插补运算(nearestneighbor)双线性插补运算(bilinear)双立方插补运算(bicubic)2020/2/24•2、图像的旋转函数:imrotate作用:通过特定的插补方法来改变图像的角度使用:B=imrotate(A,angle,method)或者B=imrotate(A,angle,method,’crop’)其中:A是图像矩阵,angle是图像的旋转角度,method可以是nearest,bininear或bicubic,默认nearest,参数crop表示剪切。2020/2/24例子:使用双立方插补法改变图像的角度程序:A=imread('hch.jpg');B=imrotate(A,30,'bilinear','crop');subplot(1,2,1),imshow(A)title('原始图像')subplot(1,2,2),imshow(B)title('旋转30度后的图像')实验效果:2020/2/24•3、调整图像的大小函数:imresize作用:通过特定的插补方法来调整图像的大小使用(1)B=imresize(A,m,method)用method方法返回大小等于A的m倍的图像B。(2)B=imresize(A,[mrowsncols],method)用method方法返回大小等于mrows*ncols的图像B。2020/2/24例子:调整图像的大小程序:A=imread('hch.jpg');figure,imshow(A)B=imresize(A,0.5,'bilinear');figure,imshow(B)实验效果:注意:若指定图像和输入图像具有不同的宽高比,则输出图像会变形。2020/2/241、什么是图像增强图像增强是指改善图像,以使图像主观上看起来更好的一种图像处理方法,虽然我们并不关心一幅图像的内容是什么,但是我们关心这副图像是否可以得到改善,比如:是否能观察到更多的细节,是否能去掉一些不想要的斑点,是否能使对比度达到更好?等等。3.2图像的增强2020/2/242、图像增强的两大类方法:空间域:是指图像平面自身,这类方法是以对图像的像素直接处理为基础。频域:将一幅图像像元值在空间上的变化分解为具有不同振幅、空间频率和相位的简振函数的线性叠加,图像中各种空间频率成分的组成和分布称为空间频谱。这种对图像的空间频率特征进行分解、处理和分析称为空间频率域处理或波数域处理。处理技术是以修改图像的傅氏方法为基础的。2020/2/24空域增强按技术不同可分为灰度变换和空间滤波。空间域:灰度变换:基于点操作,将每一个像素的灰度值按照一定的数学变换公式转换为一个新的灰度值。常用的有:对比度增强、直方图均衡化等方法。空域滤波:基于邻域处理,应用某一模板对每个像素及其周围邻域的所有像素进行某种数学运算,得到该像素的新的灰度值。图像平滑与锐化技术就属于空域滤波。2020/2/241、imadjust函数(1)反转(用于增强嵌入在大片黑色区域中的白色细节)语句:g=imadjust(f,[01][10]);等价于:g=imcomplement(f);效果图:反转2020/2/24(2)imadust(突出感兴趣的亮度带)语句:g1=imadjust(f,[0.50.75][01]);自适应:g1=imadjust(f,stretchlim(f),[],)(3)整体变亮或整体变暗(Gamma校正)语句:g3=imadjust(f,[],[],0.5);//整体变亮g4=imadjust(f,[],[],2);//整体变暗效果图:g1g2g32020/2/242、对数变换和对比度拉伸变换用于减少动态范围例:f=imread('1x.jpg');figure,imshow(f)g=im2uint8(mat2gray(log(1+double(f))));figure,imshow(g)效果图:2020/2/243、亮度变换的一个M函数intrans要注意的:(1)输入的变量是如何处理的(2)错误检验是如何插入代码的(3)输入图像的类是如何与输出图像的类相匹配的例子:f=imread('3-2.jpg');g=intrans(f,'stretch',mean2(im2double(f)),0.9);figure,imshow(g)2020/2/243.3、直方图处理与函数绘图(1)什么是直方图?图像的直方图是一个关于图像灰度级别的离散函数,描述的是图像中具有该灰度级别的像素个数。直方图归一化之后,该函数在所有灰度级上的离散和为1。(2)图像的直方图和图像质量的关系“差”图像的直方图很窄“好”图像的直方图则要平坦很多2020/2/24(3)直方图处理函数:imhist语法:h=imhist(f,b);默认b=2562020/2/24(4)直方图均衡化(扩展动态范围对比度增强)不适合平坦的直方图函数:histeq语法:g=histeq(f,nlev)//nlev输出图像指定的灰度级数,默认:64,一般来说我们把nlev的值赋给2562020/2/24(5)直方图的绘制a、条形图函数:bar语法:bar(horz,v,width,style)其中:v是一个列向量,包含将被绘制的点horz是一个与v有相同维数的向量width是[01]之间的值,代表条宽度,默认0.8style是显示样式,’group’表示成组显示,’stack’表示层叠显示。2020/2/24Bar函数例子:y=[1234;5462;3123];x=[1:3:9];Subplot(1,2,1)bar(x,y,’stack’)’group’Subplot(1,2,2)bar(x,y,0.6)2020/2/24•f=imread('3-3.jpg');•h=imhist(f);•h1=h(1:10:256);•horz=1:10:256;•bar(horz,h1)•axis([0255015000])•set(gca,'xtick',0:50:255)•set(gca,'ytick',0:2000:15000)•xlabel('x轴')•ylabel('y轴')•title('直方图绘制')2020/2/24b、杆状图绘制语法:stem(horz,v,’color_linestyle_marker’,’fill’)color颜色,默认为黑色linestyle:线型,默认为实线marker:标记点,默认为圆形注:若使用fill,且标记点为圆形、方形或菱形,则标记点的颜色为color指定的颜色。2020/2/24符号颜色k黑w白r红g绿b蓝c青y黄m品红符号线型-实线--虚线:点线-.点划线none无线colorlinestyle符号颜色+加号o圆型*星号.点x叉型s方形d菱形none无标记marker2020/2/24程序:h=imhist(f);h1=h(1:10:256);horz=1:10:256;stem(horz,h1,'fill')axis([0255015000])set(gca,'xtick',0:50:255)set(gca,'ytick',0:2000:15000)2020/2/24c、plot函数语法:plot(horz,v,’color_linestyle_marker’)功能:将一组点用直线连接起来color颜色,默认为黑色linestyle:线型,默认为实线marker:标记点,默认为圆形2020/2/24•以下面的例子说明用法:•x=0:pi/15:2*pi;•y1=sin(x);y2=cos(x);•plot(x,y1,'b:+',x,y2,'g-.*')2020/2/243.4空间滤波•3.4.1基础概念:(1)空间滤波(2)掩模(3)卷积(4)边缘点处理2020/2/24空间滤波:在大小为m*n的图像f上,用m*n大小的滤波器进行线性滤波由下式给出:aasbbttysxftswyxg),(),(),(其中,a=(m-1)/2,b=(n-1)/2,为了得到一副完整的经过滤波处理后的图像,必须对x=0,1,…,M-1,y=0,1,…,N-1依次应用上述公式,这样,就保证了对图像中所有像素的处理。2020/2/242020/2/24掩模(滤波算子):函数:fspecial(type,para)功能:用于建立预定义的滤波算子其中,参数指定算子的类型,para指定相应的参数。P72表7.42020/2/24卷积:函数:conv2(A,B)语法格式:c=conv2(A,B)其中:若A的大小为[ma,na],B的大小为[mb,nb],则c的大小为[ma+mb-1,na+nb-1]。c=conv2(A,B,shape)用于指定卷积的范围。shape的值为’full’、‘same’例子:A=magic(5);B=magic(3);C=conv2(A,B,’same’)2020/2/24边缘点处理:(1)将掩模中心点的移动范围限制在距离图像边缘不小于(n-1)/2个像素处。(最优)(2)补零(3)抽边缘的像素补充2020/2/24滤波函数imfilter语法:g=imfilter(f,w,filtering_mode,boundary_options,size_options)其中:(1)filtering_mode是指定在滤波过程中是使用“相关‘corr’”或者”卷积‘conv’”,默认是相关。P67(2)boundary_option是边界填充问题,“P”表示填充0,‘replicate’表示复制外边界,默认填充0(3)size_options可以是’same’或‘full’,默认是same2020/2/24•注意:滤波后的图像的每个元素使用双精度浮点算术进行运算,然而imfilter会将输出图像转换为与输入图像相同的类,因此,若f是一个整数数组,则输出中超过整形范围的元素将被截断,且小数会四舍五入。若结果要求更高的精度,则f需要在使用函数imfilter之前利用im2double或double转换为double类。2020/2/24程序:A=imread('3-1.jpg');figure,imshow(A)w1=fspecial('average',3);w2=fspecial('average',5);w3=fspecial('average',9);g1=imfilter(A,w1,'replicate');g2=imfilter(A,w2,'replicate');g3=imfilter(A,w3,'replicate');subplot(2,2,1),imshow(A)subplot(2,2,2),imshow(g1)subplot(2,2,3),imshow(g2)subplot(2,2,4),imshow(g3)2020/2/243.4.2平滑空间滤波器作用:模糊处理和减少噪声重要应用:为了对感兴趣物体得到一个粗略的描述而模糊一幅图像,这样,那些较小物体的强度与背景混合在了一起,较大物体变