企业网站建站 优帮云,网站的信息管理建设的必要性,互联网公司怎么盈利,天津体验网站一、实验目的#xff1a;
1#xff0e;了解图像的算术运算在数字图像处理中的初步应用。
2#xff0e;体会图像算术运算处理的过程和处理前后图像的变化。
二、实验内容#xff1a;
1#xff0e;图像的加法运算
图像相加一般用于对同一场景的多幅图像求平均效果…一、实验目的
1了解图像的算术运算在数字图像处理中的初步应用。
2体会图像算术运算处理的过程和处理前后图像的变化。
二、实验内容
1图像的加法运算
图像相加一般用于对同一场景的多幅图像求平均效果以便有drrrrrr效地降低具有叠加性质的随机噪声。直接采集的图像品质一般都较好不需要进行加法运算处理但是对于那些经过长距离模拟通讯方式传送的图像如卫星图像这种处理是必不可少的。
在MATLAB中如果要进行两幅图像的加法或者给一幅图像加上一个常数可以调用imadd函数来实现。imadd函数将某一幅输入图像的每一个像素值与另一幅图像相应的像素值相加返回相应的像素值之和作为输出图像。imadd函数的调用格式如下
Z imaddXY
其中X和Y表示需要相加的两幅图像返回值Z表示得到的加法操作结果。
图像加法在图像处理中应用非常广泛。例如以下代码使用加法操作将图2.1中的(a)、(b)两幅图像叠加在一起
I imread(‘flower.tif’)J imread(‘rice.tif’)K imadd(I,J)imshow(K)
叠加结果如图2.2所示。 图2.1 待叠加的两幅图像 图2.2 叠加后的图像效果
给图像的每一个像素加上一个常数可以使图像的亮度增加。例如以下代码将增加图2.3(a)所示的RGB图像的亮度加亮后的结果如图2.3(b)所示。
RGB imread(‘flower.tif’)RGB2 imadd(RGB,50)subplot(1,2,1)imshow(RGB)subplot(1,2,2)imshow(RGB2)RGBimread(flower.tif);RGB2imadd(RGB,-50);subplot(1,2,1);imshow(RGB);subplot(1,2,2);imshow(RGB2);%亮度变暗 加50 减50
图2.3 亮度增加与变暗
两幅图像的像素值相加时产生的结果很可能超过图像数据类型所支持的最大值尤其对于uint8类型的图像溢出情况最为常见。当数据值发生溢出时imadd函数将数据截取为数据类型所支持的最大值这种截取效果称之为饱和。为了避免出现饱和现象在进行加法计算前最好将图像转换为一种数据范围较宽的数据类型。例如在加法操作前将uint8图像转换为uint16类型。
2图像的减法运算
图像减法也称为差分方法是一种常用于检测图像变化及运动物体的图像处理方法。图像减法可以作为许多图像处理工作的准备步骤。例如可以使用图像减法来检测一系列相同场景图像的差异。图像减法与阈值化处理的综合使用往往是建立机器视觉系统最有效的方法之一。在利用图像减法处理图像时往往需要考虑背景的更新机制尽量补偿由于天气、光照等因素对图像显示效果造成的影响。
在MATLAB中使用imsubtract函数可以将一幅图像从另一幅图像中减去或者从一幅图像中减去一个常数。imsubtract函数将一幅输入图像的像素值从另一幅输入图像相应的像素值中减去再将这个结果作为输出图像相应的像素值。imsubtract函数的调用格式如下
Z imsubtract(X,Y)
其中Z是X-Y操作的结果。以下代码首先根据原始图像如图2.4(a)所示生成其背景亮度图像然后再从原始图像中将背景亮度图像减去从而生成图2.4(b)所示的图像
I imread(‘cameraman.tif’)background imopen(cameraman, strel(‘disk’,15))I2 imsubtract(rice, background)subplot(1,2,1)imshow(I)subplot(1,2,2)imshow(I2) 图2.4 原始图像、减去背景图像
如果希望从图像数据I的每一个像素减去一个常数可以将上述调用格式中的Y替换为一个指定的常数值例如
Z imsubtract(I,50)
减法操作有时会导致某些像素值变为一个负数对于uint8或uint16类型的数据如果发生这种情况那么imsubtract函数自动将这些负数截取为0。为了避免差值产生负值同时避免像素值运算结果之间产生差异可以调用函数imabsdiff。imabsdiff将计算两幅图像相应像素差值的绝对值因而返回结果不会产生负数。该函数的调用格式与imsubtract函数类似。
3. 图像的乘法运算
两幅图像进行乘法运算可以实现掩模操作即屏蔽掉图像的某些部分。一幅图像乘以一个常数通常被称为缩放这是一种常见的图像处理操作。如果使用的缩放因子大于1那么将增强图像的亮度如果因子小于1则会使图像变暗。缩放通常将产生比简单添加像素偏移量自然得多的明暗效果这是因为这种操作能够更好地维持图像的相关对比度。此外由于时域的卷积或相关运算与频域的乘积运算对应因此乘法运算有时也被作为一种技巧来实现卷积或相关处理。
在MATLAB中使用immultiply函数实现两幅图像的乘法。immultiply函数将两幅图像相应的像素值进行元素对元素的乘法操作MATLAB点乘并将乘法的运算结果作为输出图形相应的像素值。immulitply函数的调用格式如下
Z immulitply(X,Y)
其中ZX*Y。例如以下代码将使用给定的缩放因子对图2.5(a)所示的图像进行缩放从而得到如图2.5(b)所示的较为明亮的图像
I imread(‘room.tif’)J immultiply(I,1.2)subplot(1,2,1)imshow(I)subplot(1,2,2)imshow(J) 图2.5 原图和乘以因子1.5 的图像
uint8图像的乘法操作一般都会发生溢出现象。Immultiply函数将溢出的数据截取为数据类型的最大值。为了避免产生溢出现象可以在执行乘法操作之前将uint8图像转换为一种数据范围较大的图像类型例如uint16。
4图像的除法运算
除法运算可用于校正成像设备的非线性影响这在特殊形态的图像如断层扫描等医学图像处理中常常用到。图像除法也可以用来检测两幅图像间的区别但是除法操作给出的是相应像素值的变化比率而不是每个像素的绝对差异因而图像除法也称为比率变换。
在MATLAB中使用imdivide函数进行两幅图像的除法。imdivide函数对两幅输入图像的所有相应像素执行元素对元素的除法操作点除并将得到的结果作为输出图像的相应像素值。imdivide函数的调用格式如下
Z imdivide(X,Y)
其中ZX/Y。例如以下代码将图4所示的两幅图像进行除法运算请将这个结果和减法操作的结果相比较对比它们之间的不同之处
I1 imread(‘cameraman.tif’)I double(I1)J I * 0.43 90I2 uint8(J)Ip imdivide(I, I2)Imshow(Ip, [])
除法操作的结果如图2.6所示。 图2.6 原图和减背景后的图像相除的图像效果
5图像的四则代数运算
可以综合使用多种图像代数运算函数来完成一系列的操作。例如使用以下语句计算两幅图像的平均值
I imread(‘rice.tif’)I2 imread(‘.tif’)K imdivide(imadd(I,I2),2)
建议最好不要用这种方式进行图像操作这是因为对于uint8或uint16数据每一个算术函数在将其输出结果传递给下一项操作之前都要进行数据截取这个截取过程将会大大减少输出图像的信息量。执行图像四则运算操作较好的一个办法就是使用函数imlincomb。函数imlincomb按照双精度执行所有代数运算操作而且仅对最好的输出结果进行截取该函数的调用格式如下
Z imlincomb(A,X,B,Y,C)
其中ZA*XB*YC。MATLAB会自动根据输入参数的个数判断需要进行的运算。例如以下语句将计算ZA*XC
Z imlincomb(A,X,C)
而以下语句将计算ZA*XB*Y
Z imlincomb(A,X,B,Y,)
三、实验程序、实验结果与实验分析
1.实验程序
1图像的加法运算 (脚本test2_1)
I imread(flower.tif);whos II I(:,:,1:3); whos IJ imread(rice.tif);whos JK imadd(I,J);imshow(K);title(叠加后的图像);figure;RGB imread(flower2.tif);RGB2 imadd(RGB,50);subplot(1,2,1);imshow(RGB);title(原始图像);subplot(1,2,2);imshow(RGB2);title(增加50亮度后的图像);figure;RGBimread(flower2.tif);RGB2imadd(RGB,-50);subplot(1,2,1);imshow(RGB);title(原始图像);subplot(1,2,2);imshow(RGB2);%亮度变暗 title(减少50亮度后的图像); (2)图像的减法运算 (脚本test2_2)
I imread(cameraman.tif);background imopen(I, strel(disk,15));I2 imsubtract(I, background);subplot(1,2,1);imshow(I);title(原始图像)subplot(1,2,2);imshow(I2);title(减去背景图像)
3图像的乘法运算 (脚本test2_3)
I imread(room.tif);J immultiply(I,1.2);subplot(1,2,1);imshow(I);title(原始图像);subplot(1,2,2);imshow(J);title(乘以因子1.5 的图像);
4图像的除法运算 (脚本test2_4)
I1 imread(cameraman.tif);I double(I1);J I * 0.43 90;I2 J; % 将 I2 保持为双精度类型Ip imdivide(I, I2);subplot(1, 3, 1);imshow(I1);title(原始图像);subplot(1, 3, 2);imshow(Ip, []);title(减背景后的图像相除的图像);subplot(1, 3, 3);imshow(I2, []);title(减背景后的图像);
5图像的四则代数运算 (脚本test2_5)
I imread(rice.tif);whos IJ imread(room.tif);whos JI1 double(I);J1 double(J);K imlincomb(1.1, I1, 0.9, J1, 50, uint16);whos KK uint8(K);subplot(1, 3, 1);imshow(I, []);title(图像 I);subplot(1, 3, 2);imshow(J, []);title(图像 J);subplot(1, 3, 3);imshow(K, []);title(I和J线性组合后的图像);
2.实验结果
1图像的加法运算
①两张图像叠加 ②增加常数变亮 ③变暗后的图像 2图像的减法运算 3图像的乘法运算 4图像的除法运算 5图像的四则代数运算 3.实验分析
1图像的加法运算
①首先加载名为flower.tif和rice.tif的图像分别存储在变量I和J中。
I imread(flower.tif);J imread(rice.tif);
②然后将I 转换为只有三个通道的彩色图像使两幅图像大小和类型保持一致否则无法叠加。
I I(:,:,1:3);
③最后使用 imadd 函数将图像 I 和图像 J 进行叠加结果存储在变量 K 中。
K imadd(I,J);
①首先使用imread函数加载名为 flower2.tif的彩色图像存储在变量 RGB 中。
RGB imread(flower2.tif);
②然后使用imadd函数增加50 RGB 图像的亮度
RGB2 imadd(RGB,50);
①首先使用imread函数加载名为 flower2.tif的彩色图像存储在变量 RGB 中。
RGBimread(flower2.tif);
②然后使用imadd函数减少50 RGB 图像的亮度
RGB2imadd(RGB,-50);
2图像的减法运算
①首先加载名为cameraman.tif的图像
I imread(cameraman.tif);
②通过 imopen(I, strel(disk,15)) 函数创建了一个结构元素然后使用 imopen 函数对原始图像 I 进行了开运算操作以获得背景信息。
background imopen(I, strel(disk,15));
③使用 imsubtract 函数对原始图像 I 和背景图像进行减法运算得到了减去背景后的图像 I2
I2 imsubtract(I, background);
3图像的乘法运算
①首先使用imread函数加载图像
I imread(room.tif);
②使用 immultiply(I,1.5) 对原始图像 I 中的每个像素值乘以因子 1.5
I imread(room.tif);
注因子大于 1 时图像的亮度会增加因子小于 1 时图像的亮度会减小。
4图像的除法运算
①首先使用imread函数加载图像
I1 imread(cameraman.tif);
②将原始图像 I1 转换为 double 类型并进行了一系列线性变换其中包括乘以一个因子并加上一个偏置值得到图像 J。
I double(I1);J I * 0.43 90;I2 J; % 将 I2 保持为双精度类型
③使用 imdivide 函数对原始图像 I 和减去背景后的图像 I2 进行相除操作得到了相除后的图像 Ip。
Ip imdivide(I, I2);
5图像的四则代数运算
①首先使用imread函数加载图像rice.tif和room.tif
I imread(rice.tif);J imread(room.tif);
②将它们转换为 double 类型以进行线性组合
I1 double(I);J1 double(J);
③使用imlincomb函数对图像I和J进行线性组合权重分别为1.1和0.9加上偏置值50结果存储在变量K中。这个操作可以将两幅图像按照给定的权重进行加权组合从而生成一幅新的图像。使用了uint16类型作为输出图像的数据类型。
K imlincomb(1.1, I1, 0.9, J1, 50, uint16);
四、思考题
1.由图像算术运算的运算结果思考图像减法运算在什么场合上发挥优势
答1背景去除在一些情况下图像中的背景可能对目标的检测和分析产生干扰。通过对包含目标和背景的两幅图像进行减法运算可以将背景从图像中去除突出目标的特征和边缘。
2运动检测在视频监控和运动分析中图像减法可以用于检测图像序列中的运动物体。通过对连续帧之间进行减法运算可以获得移动物体的差异图像从而实现运动检测和跟踪。
3亮度调整图像减法运算可以用于对图像的亮度进行调整。通过将图像中的每个像素值减去一个常数值可以增加或减少图像的亮度水平使图像更加清晰或更加柔和。
4图像增强在一些情况下图像中的某些部分可能受到噪声、光照变化或其他因素的影响从而降低了图像的质量。通过对原始图像和经过滤波处理后的图像进行减法运算可以增强图像中的目标特征提高图像的质量和清晰度。