《《图像基本运算》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《图像基本运算》PPT课件.ppt(101页珍藏版)》请在三一办公上搜索。
1、第六章 图像基本运算,1.算术运算2.几何运算3.逻辑运算4.邻域处理,6.1 图象算术运算,加法运算减法运算乘法运算除法运算,主要应用:(1)对同一场景的多幅图像求平均值,降低加性噪声;(2)一幅图像叠加到另一幅图像上去,达到二次暴光(Double-exposure)的效果。,加法运算,加法运算的定义,原理:对于图像f(x,y)和其噪声图像集gi(x,y),i=1,2,.K。gi(x,y)=f(x,y)+ni(x,y)其中ni(x,y)是第i帧图像的噪声分布,噪声分布n(x,y),均值为0,方差为,且n(x,y)中的不同位置(x,y)处的噪声分布互不相关。则M个图像的均值为:,多幅图像求平均
2、值,降低加性噪声。,M=1,M=2,M=4,M=16,多幅图像求平均值举例,生成图像叠加效果。,对于两个图像f1(x,y)和f2(x,y),二者均值有:,则可以得到二次曝光的效果。,加运算生成图像叠加效果举例,简单图像融合,推广公式为:,可以得到各种图像合成的效果,也可以用于两张图片的衔接。,加运算生成图像叠加效果举例,什么叫图像融合?图像融合就是充分利用多幅图像信息,通过对观测信息的合理支配和使用,把多幅图像在空间或时间上的互补信息,依据某种准则进行综合处理。获得对场景的一致性解释或描述,使融合后的图像比参加融合的任意一幅图像更优越、更精确地反映客观实际。,图像融合(Image fusion
3、),(1)对应像素取最大值(2)对应像素取最小值(3)对应像素取平均值(4)加权平均法(5)高级融合技术,图像融合一般规则,对应像素取小值融合,图像融合效果展示,对应像素取平均融合,图像融合效果展示,对应像素加权平均融合,图像融合效果展示,小波多尺度分解融合,图像融合效果展示,在MATLAB图像处理工具箱中,imadd函数实现图像相加运算,其调用格式如下Z=imadd(X,Y)对X和Y数组中对应元素相加,返回值Z和X、Y大小一致,若Y为标量,则对X数组中每个元素相加Y。,例 图像相加操作I=imread(rice.png);J=imadd(I,50);subplot(1,2,1),imshow
4、(I);title(原始图像);subplot(1,2,2),imshow(J);title(图像与数据相加);K=imread(cameraman.tif);H=imadd(I,K,uint16);%转换数据类型相加图像数据,figure;subplot(1,3,1);imshow(I);title(原始rice图像);subplot(1,3,2);imshow(K);title(原始cameraman图像);subplot(1,3,3);imshow(H,);title(两图像进行相加操作效果);,主要应用:(1)去除一幅图像中不需要的加性图案,如缓慢变化的背景阴影,周期性噪声等;(2)检
5、测同一场景的两幅图像之间的变化;(3)运动检测。,图像相减即在两幅图像之间对应像素做减法运算。,减法运算,原始图像,背景图像,差图像,图像相减消除背景,图像相减检测同一场景两幅图像之间的变化,设:时间1的图像为f1(x,y),时间2的图像为f2(x,y)g(x,y)=f2(x,y)-f1(x,y),=,-,左上:某序列图像的第100帧;下:某序列图像的第300帧;右上:两幅图像相减并取绝对值显示的结果,图像相减运动检测,在MATLAB中,图像的减法运算用imsubtract和imabsdiff函数可以完成,其调用格式为:Z=imsubtract(a,b)%差值结果小于0的赋值为0Z=imabs
6、diff(a,b)%差值结果取绝对值,例 图像相减运算,clear;a=imread(rice.png);%读取图像subplot(131);imshow(a);title(原始图像);background=imopen(a,strel(disk,15);%在a上进行形态学运算;ap=imsubtract(a,background);%减法运算函数subplot(132);imshow(background);title(输出背景);subplot(133);imshow(ap,);title(减法运算结果);,图像相乘即在两幅图像之间对应像素做乘法运算。,乘法运算,图像相乘局部显示,在MAT
7、LAB中,图像乘运算的函数是immultiply,其调用方法如下:Z=immultiply(X,Y),例 图像乘法运算。,I=imread(rice.png);%读取图像I16=uint16(I);%转换图像数据类型J=immultiply(I16,I16);%同一幅图像相乘L=immultiply(I,0.5);%图像乘以一个常数figure;%依次显示四幅图像subplot(131);imshow(I);title(原始图像);subplot(132);imshow(J);title(图像自乘);subplot(133);imshow(L);title(图像与数据相乘);,主要应用 可产生
8、对颜色和多光谱图像分析十分重要的比率图像。,图像相除即在两幅图像之间对应像素做除法运算。,除法运算,左上:遥感图像f1(x,y);右上:遥感图像f2(x,y);下:f1与f2之比。,图像相除比率图像,在MATLAB中,图像除运算的函数是individe,其调用方法如下:Z=individe(X,Y),a=imread(lena.bmp);background=imopen(a,strel(disk,15);a1=imdivide(a,background);subplot(131);imshow(a);%原始图像subplot(132);imshow(background);%Backgrou
9、nd结果subplot(133);imshow(a1,);%除法运算结果,6.2 图像逻辑运算,求反异或或与,求反的定义g(x,y)=255-f(x,y)主要应用举例获得一个阴图象获得一个子图像的补图像绘制区别于背景的、可恢复的图形,获得一个阴图象,获得一个子图像的补图像255-,=,绘制区别于背景的、可恢复的图形,原图,求反画图,求反恢复原图,异或运算的定义g(x,y)=f(x,y)h(x,y)主要应用举例获得相交子图象绘制区别于背景的、可恢复的图形,获得相交子图象,=,绘制区别于背景的、可恢复的图形,原图,异或画图,异或恢复原图,或运算的定义 g(x,y)=f(x,y)v h(x,y)主要
10、应用举例合并子图像,=,与运算的定义 g(x,y)=f(x,y)h(x,y)主要应用举例求两个子图像的相交子图,=,按位进行逻辑运算,黑11111111白00000000,S,T,NOT(S),S AND T,S OR T,S XOR T,I=imread(cameraman.tif);J=imread(rice.png);I1=im2bw(I);%转化为二值图像J1=im2bw(J);K1=I1%异或运算,figure(1);%依次显示四幅图像subplot(221);imshow(I);subplot(222);imshow(J);subplot(223);imshow(I1);subpl
11、ot(224);imshow(J1);figure(2);%依次显示四幅图像subplot(221);imshow(K1);subplot(222);imshow(K2);subplot(223);imshow(K3);subplot(224);imshow(K4);,6.3 图像的几何变换,我们知道,图像是对三维实际景物的平面投影。为了观测需要,常常需要进行各种不同的几何变换。注意一点,实际上几何变换不改变像素值,而是改变像素所在的位置。,6.3.1.图像的位置变换,一、图像的平移,注意:平移后的景物与原图像相同,但“画布”一定是扩大了。否则就会丢失信息。,用齐次矩阵表示:,A=imread
12、(lena.jpg);figure;subplot(121);imshow(A);A=double(A);A_move=zeros(size(A);H=size(A);A_x=50;A_y=50;I_movesult(A_x+1:H(1),A_y+1:H(2),1:H(3)=A(1:H(1)-A_x,1:H(2)-A_y,1:H(3);subplot(122);imshow(uint8(I_movesult);,二、图像的镜像,注意:做镜像时,实际上需要对坐标先进行平移,否则将出错。因为矩阵的下标不能为负。,水平镜像,垂直镜像,水平镜像,设:a(x,y)=-x;b(x,y)=y;用齐次矩阵表示
13、:,0,0,x,y,垂直镜像,设:a(x,y)=x;b(x,y)=-y;用齐次矩阵表示:,0,0,x,y,垂直镜像,I=imread(lena.jpg)subplot(221);imshow(I);I=double(I);h=size(I);I_fliplr(1:h(1),1:h(2),1:h(3)=I(1:h(1),h(2):-1:1,1:h(3);%水平镜像变换I1=uint8(I_fliplr);subplot(222);imshow(I1);I_flipud(1:h(1),1:h(2),1:h(3)=I(h(1):-1:1,1:h(2),1:h(3);%垂直镜像变换I2=uint8(I
14、_flipud);subplot(223);imshow(I2);I_fliplr_flipud(1:h(1),1:h(2),1:h(3)=I(h(1):-1:1,h(2):-1:1,1:h(3);%对角镜像变换I3=uint8(I_fliplr_flipud);subplot(224);imshow(I3);,三、图像的旋转,绕原点旋转度 设:a(x,y)=x*cos()-y*sin();b(x,y)=x*sin()+y*cos();用齐次矩阵表示:,0,0,x,y,几何变换旋转,几何变换旋转,6.3.2.图像的形状变换,一、图像的缩小 图像的缩小一般分为按比例缩小和不按比例缩小两种。图像缩
15、小之后,因为承载的信息量小了,所以画布可相应缩小。,1.图像按比例缩小:最简单的是减小一半,这样只需取原图的偶(奇)数行和偶(奇)数列构成新的图像。,图像的减半缩小效果,返回,如果图像按任意比例缩小,则需要计算选择的行列。M*N大小的图像缩小为:kM*kN大小,(k1)设旧图像是F(x,y),新图像是I(x,y)则:I(x,y)=F(int(c*x),int(c*y)c=1/k,K=1/3,图像的按比例缩小效果,返回,2.图像不按比例缩小:这种操作因为在x方向和y方向的缩小比例不同,一定会带来图像的几何畸变。,图像的不按比例任意缩小,返回,图像不按比例缩小方法:M*N大小的图像缩小为:k1M*
16、k2N大小,(k11,k21)。设旧图像是F(x,y),新图像是I(x,y)则:I(x,y)=F(int(c1*x),int(c2*y)c1=1/k1 c2=1/k2,二、图像的放大 图像的缩小操作中,是在现有的信息里如何挑选 所需要的有用信息。图像的放大操作中,则需对尺寸放大后所多出来的空格填入适当的值,这是信息的估计问题,所以较图像的缩小要难一些。,如果放大倍数太大,按照前面的方法处理会出现马赛克效应。,图像大比例放大时的马赛克效应,放大10倍,返回,1.按比例放大图像 如果需要将原图像放大k倍,则将一个像素值添在新图像的k*k的子块中。,放大5倍,图像的成倍放大效果,返回,2.图像的任意
17、不成比例放大:这种操作由于x方向和y方向的放大倍数不同,一定带来图像的几何畸变。放大的方法是:将原图像的一个像素添到新图像的一个 k1*k2的子块中去。,图像的不按比例放大,返回,三、图像的错切变换 图像的错切变换实际上是景物在平面上的非垂直投影效果。,图像的错切效果,返回,可以看到,错切之后原图像的像素排列方向改变。与前面旋转不同的是,x方向与y方向独立变化。,四、几何畸变的矫正 受到错切变换效果的启发,将其进行简单的延伸,当景物在图像上是非垂直投影时,可以通过几何变换将其进行矫正。矫正方法为:,变换参数可通过对应点的坐标来确定。,6.4 邻域处理,滑动邻域处理 输入图像将以像素为单位进行处
18、理,对于输入图形的每一个像素,指定的操作将决定输出图像相应的像素值。分离邻域处理 输入图像一次处理一个邻域,即图像被划分为矩阵邻域,分离邻域操作将分别对每一个邻域进行操作,求取相应输出邻域的像素值。,滑动邻域处理,滑动邻域是一组像素,操作对象为邻域中心的像素。对于mn的滑块邻域,其中心像素的位置为:floor(m,n+1)/2)例 m=2,n=3 floor(2,3+1)/2)=floor(3,4/2)=1,2,目的:对图像进行平滑、去噪等相关的像素操作;滑动邻域操作的步骤:1)选择像素;2)确定滑动邻域的大小;3)根据需要,选择函数对邻域内像素操作;4)计算结果作为输出图像的该点像素值;5)
19、按1-4遍历原图像中的所有像素;,1nlfilter函数在MATLAB中,函数nlfilter是基本邻域处理函数,其调用的方式如下:B=nlfilter(A,m,n,fun)其中A是要处理的图像,m,n规定了邻域块的大小,fun是指定的函数。,邻域操作函数,A=imread(cameraman.tif);fun=(x)median(x(:);B=nlfilter(A,3 3,fun);subplot(1,2,1);imshow(A),title(原始图像);subplot(1,2,2),imshow(B);title(邻域操作效果);,2colfilt函数在MATLAB中,进行快速的邻域操作的
20、函数是colfilt,为每一个像素建立一个列向量,向量元素对应于该像素邻域的元素,其调用方式如下B=colfilt(A,m n,block_type,fun)其中block_type表示指定块的移动方式,当为distinct,图像块不重叠;当为sliding,图像块滑动。,I=imread(tire.tif);I1=uint8(colfilt(I,5 5,sliding,mean);%用列处理进行滑动邻域操作f=(x)ones(64,1)*mean(x);%进行分块处理操作的函数I2=imread(cameraman.tif);I3=colfilt(double(I2),8 8,distinc
21、t,f);%用列处理来进行分离块操作,figure%依次显示四幅图像subplot(221);imshow(I);subplot(222);imshow(I1);subplot(223);imshow(I2);subplot(224);imshow(I3,);,分离邻域处理,在MATLAB中,进行图像分离块操作的函数是blkproc,其调用方式如下B=blkproc(A,m,n,fun)B=blkproc(A,m,n,morder norder,fun)其中morder norder是重叠的区域大小,blkproc函数返回一个矩阵。,I=imread(tire.tif);%读取图像f=(x)uint8(round(mean2(x)*ones(size(x);%先求取矩阵x均值,然后乘以全1矩阵,再取整I2=blkproc(I,8 8,f);%分离块操作设返回像素为该快的平均值figure%依次显示两幅图像subplot(121);imshow(I);subplot(122);imshow(I2);,
链接地址:https://www.31ppt.com/p-5580809.html