第6章图像基本运算_第1页
第6章图像基本运算_第2页
第6章图像基本运算_第3页
第6章图像基本运算_第4页
第6章图像基本运算_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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),二者均值有:,则可以得到二次曝光的效果。,加运算生成图像叠加效果举例,简单图像融合,推广公式为:,可以得到各种图像合成的效果,也可以用于两张图片的衔接。,加运算生成图像叠加效果举例,什么叫图像融合? 图像融合就是充分利用多幅图像信息,通过对观测信息的合理支配和使用,把多幅图像在空间或时间上的互补信息,依据某种准则进行综合处理。获得对场景的一致性解释或描述,使融合后的图像比参加融合的任意一幅图像更优越、更精确地反映客观实际。,图像

3、融合(Image fusion),(1) 对应像素取最大值 (2) 对应像素取最小值 (3) 对应像素取平均值 (4) 加权平均法 (5) 高级融合技术,图像融合一般规则,对应像素取小值融合,图像融合效果展示,对应像素取平均融合,图像融合效果展示,对应像素加权平均融合,图像融合效果展示,小波多尺度分解融合,图像融合效果展示,在MATLAB图像处理工具箱中,imadd函数实现图像相加运算,其调用格式如下 Z=imadd(X,Y) 对X和Y数组中对应元素相加,返回值Z和X、Y大小一致,若Y为标量,则对X数组中每个元素相加Y。,例 图像相加操作 I = imread(rice.png); J = i

4、madd(I,50); subplot(1,2,1),imshow(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(两图像进行相加操作效果);,主要应用

5、: (1) 去除一幅图像中不需要的加性图案,如缓慢变化的背景阴影,周期性噪声等; (2) 检测同一场景的两幅图像之间的变化; (3) 运动检测。,图像相减即在两幅图像之间对应像素做减法运算。,减法运算,原始图像,背景图像,差图像,图像相减消除背景,图像相减检测同一场景两幅图像之间的变化,设: 时间1的图像为f1(x,y), 时间2的图像为f2(x,y) g(x,y) = f2 (x,y) - f1(x,y),=,-,左上: 某序列图像的第100帧; 下:某序列图像的第300帧; 右上: 两幅图像相减并取绝对值显示的结果,图像相减运动检测,在MATLAB中,图像的减法运算用imsubtract和

6、imabsdiff函数可以完成,其调用格式为: Z=imsubtract(a,b) %差值结果小于0的赋值为0 Z=imabsdiff(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

7、(133); imshow(ap,);title(减法运算结果);,图像相乘即在两幅图像之间对应像素做乘法运算。,乘法运算,图像相乘局部显示,在MATLAB中,图像乘运算的函数是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); ti

8、tle(原始图像); subplot(132); imshow(J); title(图像自乘); subplot(133);imshow(L);title(图像与数据相乘);,主要应用 可产生对颜色和多光谱图像分析十分重要的比率图像。,图像相除即在两幅图像之间对应像素做除法运算。,除法运算,左上:遥感图像f1(x,y); 右上:遥感图像f2(x,y); 下:f1与f2之比。,图像相除比率图像,在MATLAB中,图像除运算的函数是individe,其调用方法如下: Z=individe(X,Y),a=imread(lena.bmp); background=imopen(a,strel(disk

9、,15); a1=imdivide(a,background); subplot(131); imshow(a); %原始图像 subplot(132); imshow(background); %Background结果 subplot(133); imshow(a1,); %除法运算结果,6.2 图像逻辑运算,求反 异或 或 与,求反的定义 g(x,y) = 255 - f(x,y) 主要应用举例 获得一个阴图象 获得一个子图像的补图像 绘制区别于背景的、可恢复的图形,获得一个阴图象,获得一个子图像的补图像 255-,=,绘制区别于背景的、可恢复的图形,原图,求反画图,求反恢复原图,异或运

10、算的定义 g(x,y) = f(x,y) h(x,y) 主要应用举例 获得相交子图象 绘制区别于背景的、可恢复的图形,获得相交子图象,=,绘制区别于背景的、可恢复的图形,原图,异或画图,异或恢复原图,或运算的定义 g(x,y) = f(x,y) v h(x,y) 主要应用举例 合并子图像,=,与运算的定义 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(ric

11、e.png); I1=im2bw(I);%转化为二值图像 J1=im2bw(J); K1=I1 %异或运算,figure(1);%依次显示四幅图像 subplot(221);imshow(I); subplot(222);imshow(J); subplot(223);imshow(I1); subplot(224);imshow(J1); figure(2);%依次显示四幅图像 subplot(221);imshow(K1); subplot(222);imshow(K2); subplot(223);imshow(K3); subplot(224);imshow(K4);,6.3 图像的几

12、何变换,我们知道,图像是对三维实际景物的平面投影。为了观测需要,常常需要进行各种不同的几何变换。注意一点,实际上几何变换不改变像素值,而是改变像素所在的位置。,6.3.1.图像的位置变换,一、图像的平移,注意:平移后的景物与原图像相同,但“画布”一定是扩大了。否则就会丢失信息。,用齐次矩阵表示:,A=imread(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(

13、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; 用齐次矩阵表示:,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(

14、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_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

15、=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.图像的形状变换,一、图像的缩小 图像的缩小一般分为按比例缩小和不按比例缩小两种。图像缩小之后,因为承载的信息量小了,所以画布可相应缩小。,1. 图像按比例缩小: 最简单的是减小一半,这样只需取原图的偶(奇)数行和偶(奇)数列构成新的图像。,图像的减半缩小效果,返

16、回,如果图像按任意比例缩小,则需要计算选择的行列。 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*k2N大小,(k11,k21)。 设旧图像是F(x,y),新图像是I(x,y) 则:I(x,y)=F(int(c1*x),int(c2*y) c1=1/k1

17、c2=1/k2,二、图像的放大 图像的缩小操作中,是在现有的信息里如何挑选 所需要的有用信息。 图像的放大操作中,则需对尺寸放大后所多出来的空格填入适当的值,这是信息的估计问题,所以较图像的缩小要难一些。,如果放大倍数太大,按照前面的方法处理会出现马赛克效应。,图像大比例放大时的马赛克效应,放大10倍,返回,1.按比例放大图像 如果需要将原图像放大k倍,则将一个像素值添在新图像的k*k的子块中。,放大5倍,图像的成倍放大效果,返回,2. 图像的任意不成比例放大: 这种操作由于x方向和y方向的放大倍数不同,一定带来图像的几何畸变。 放大的方法是: 将原图像的一个像素添到新图像的一个 k1*k2的

18、子块中去。,图像的不按比例放大,返回,三、图像的错切变换 图像的错切变换实际上是景物在平面上的非垂直投影效果。,图像的错切效果,返回,可以看到,错切之后原图像的像素排列方向改变。与前面旋转不同的是,x方向与y方向独立变化。,四、几何畸变的矫正 受到错切变换效果的启发,将其进行简单的延伸,当景物在图像上是非垂直投影时,可以通过几何变换将其进行矫正。 矫正方法为:,变换参数可通过对应点的坐标来确定。,6.4 邻域处理,滑动邻域处理 输入图像将以像素为单位进行处理,对于输入图形的每一个像素,指定的操作将决定输出图像相应的像素值。 分离邻域处理 输入图像一次处理一个邻域,即图像被划分为矩阵邻域,分离邻

19、域操作将分别对每一个邻域进行操作,求取相应输出邻域的像素值。,滑动邻域处理,滑动邻域是一组像素,操作对象为邻域中心的像素。对于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)按1-4遍历原图像中的所有像素;,1nlfilter函数 在MATLAB中,函数nlfilter是基本邻域处理函数,其调用

20、的方式如下: 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中,进行快速的邻域操作的函数是colfilt,为每一个像素建立一个列向量,向量元素对应于该像素邻域的元素,其调用方式如下 B = colfilt(A,m n,block_type,fun) 其中block_type表示指定块的移动方式,当为distinct,图像块不重叠;当为sli

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论