实验二 图像运算-点运算与代数运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二图像运算-点运算与代数运算
一、图像运算的基本形式 (15S)
顺向扫描逆向扫描
1、点运算 (2S)
在对图像各象素进行处理时,只输入该象素本身灰度的运算称为点运算。

2、领域运算 (3S)
在对图像各象素进行处理时,不仅输入该象素本身的灰度,还要输入以该象素为中心的某些局部区域中的一些象素的灰度进行运算的方式叫领域运算。

3、并行运算 (2S)
并行运算指的是对图像上各象素同时进行相同处理的运算方式。

点运算由于各象素的处理与其他象素无关,因为不论采用顺向扫描还是逆向扫描,结果
是一样的,所以点运算可以采用并行运算。

对于领域运算,上图可以采用并行运算。

下图处理用到前处理的结果,所以不能采用并行处理方式。

4、串行运算 (1S)
指按照顺序对逐个象素进行处理的方式。

上图即是。

5、迭代运算 (1S)
反复多次进行相同处理的运算,称为迭代运算。

6、窗口运算 (2S)
为减少运算时间,常对图像的某一部分进行的运算叫窗口运算。

7、模板运算 (3S)
对特定形状的区域进行某种运算方式叫模板运算。

8.帧运算 (1S)
在两幅或多幅图像之间产生的运算叫帧运算。

二、图像的点运算 (25S)
1、【例】线性点运算
rice=imread('rice.png');
I=double(rice);
J=I*0.43+60;
rice2=uint8(J);
subplot(1,2,1),imshow(rice);
subplot(1,2,2),imshow(rice2);
【例】负象
rice=imread('rice.png');
I=double(rice);
J=-1*I;
subplot(1,2,1),imshow(I,[]);
subplot(1,2,2),imshow(J,[]);
三、图像的代数运算 (60S)
1、概述 (10S)
图像的代数运算是两幅输入图像之间进行点对点的加、减、乘、除运算后得到输出图像的过程。

设输入图像为A(x,y)、B(x,y),输出图像为C(x,y),则图像的代数运算有如下四种形式:
C(x,y)=A(x,y)+B(x,y)
C(x,y)=A(x,y)-B(x,y)
C(x,y)=A(x,y)×B(x,y)
C(x,y)=A(x,y)÷B(x,y)
图像的代数运算在图像处理中有着广泛的应用,它除了可以实现自身所需的算术操作,还能为许多复杂的图像处理提供准备。

例如,图像减法就可以用来检测同一场景或物体生成的两幅或多幅图像的误差。

我们可以使用MATLAB基本算术符(+、-、×、÷等)来执行图像的算术操作,但是在此之前必须将图像转换为适合进行基本操作的双精度类型。

这些函数能够接受uint8和uintl6数据,并返回相同格式的图像结果。

图像的代数运算函数使用以下截取规则使运算结果符合数据范围的要求:超出数据范围的整型数据将被截取为数据范围的极值,分数结果将被四舍五入。

例如,如果数据类型是uint8,那么大于255的结果(包括无穷大inf)将被设置为255。

无论进行哪一种代数运算都要保证两幅输入图像的大小相等,且类型相同。

2、图像的加法 (10S)
MATLAB中调用imadd函数实现图像相加,格式如下:
Z=imadd(X,Y);其中Z=X+Y。

【例】使用加法操作将两幅图像叠加在一起
I=imread('rice.png');
J=imread('cameraman.tif');
K=imadd(I,J);
subplot(2,2,1);imshow(I);
subplot(2,2,2);imshow(J);
subplot(2,2,3);imshow(K);
【例】增加RGB图像的亮度
RGB=imread('onion.png');
RGB2=imadd(RGB,50);
subplot(1,2,1),imshow(RGB);
subplot(1,2,2),imshow(RGB2);
为了避免出现饱和现象,在进行加法计算前最好将图像转换为一种数据范围较宽的数据类型。

3、图像的减法 (10S)
图像减法也称为差分方法,MATLAB中调用imsubtract函数实现图像相减。

调用格式如下:
Z=imsubtract(X,Y);其中Z=X-Y。

【例】减去不均匀背景
rice=imread('rice.png');
background=imopen(rice,strel('disk',15));
rice2=imsubtract(rice,background);
subplot(1,2,1),imshow(rice);
subplot(1,2,2),imshow(rice2);
【例】降低RGB 图像的亮度 RGB=imread('onion.png'); RGB2=imsubtract(RGB,50); subplot(1,2,1),imshow(RGB); subplot(1,2,2),imshow(RGB2);
4、图像的乘法 (10S)
两幅图像进行乘法运算可以实现掩模操作,即屏蔽掉图像的某些部分。

一幅图像乘以一个常数通常被称为缩放。

如果使用的缩放因数大于1,那么将增强图像的亮度,如果因数小于1则会使图像变暗。

MATLAB 中调用immultiply 函数实现两幅图像相乘。

调用格式如下: Z =immultiply(X ,Y);其中Z=X ×Y 。

【例】象素值缩放
I=imread('moon.tif'); J=immultiply(I,1.2); K=immultiply(I,0.6);
subplot(1,3,1),imshow(I); subplot(1,3,2),imshow(J); subplot(1,3,3),imshow(K);
5、图像的除法 (10S)
除法运算可用于校正成像设备的非线性影响。

MATLAB 中调用imdivide 函数进行两幅图
像相除。

调用格式如下:
Z=imdivide(X,Y),其中Z=X÷Y。

【例】米粒图像除法运算
rice=imread('rice.png');
I=double(rice);
J=0.43*I+90;
Ip=imdivide(I,J);
subplot(2,2,1),imshow(uint8(I));
subplot(2,2,3),imshow(uint8(J));
subplot(2,2,4),imshow(uint8(Ip),[]);
6、图像四则运算 (10S)
因对uint8、uintl6数据,每步运算都要进行数据截取,将会减少输出图像的信息量。

图像四则运算较好的办法是使用函数imlincomb。

该函数按双精度执行所有代数运算操作,仅对最后的输出结果进行截取,该函数的调用格式如下:
Z=imlincomb(A,X,B,Y,C),其中,Z=A×X+B×Y+C
Z=imlincomb(A,X,C),其中:Z=A×X+C
Z=imlincomb(A,X,B,Y),其中:Z=A×X+B×Y
【例】计算两幅图像的平均值
CLF
I1=imread('rice.png');
I2=imread('cameraman.tif');
% K=imdivide(imadd(I1,I2),2);
K=imlincomb(0.5,I1,0.5,I2);
subplot(2,2,1),subimage(I1);
subplot(2,2,2),subimage(I2);
subplot(2,2,3),subimage(K);
50
100
150
200
250
50100150200250
50
100
150
200
250
50100150200250
50
100
150
200
250
50100150200250。

相关文档
最新文档