实验二 数字图像的算术运算
一、实验目的
1.了解图像的算术运算在数字图像处理中的初步应用。
2.体会图像算术运算处理的过程和处理前后图像的变化。
二、实验环境
- PC计算机
- MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox)
- 实验所需要的图片
三、实验原理
图像的代数运算是图像的标准算术操作的实现方法,是两幅输入图像之间进行的点对点的加、减、乘、除运算后得到输出图像的过程。如果输入图像为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)
图像的代数运算在图像处理中有着广泛的应用,它除了可以实现自身所需的算术操作,还能为许多复杂的图像处理提供准备。例如,图像减法就可以用来检测同一场景或物体生产的两幅或多幅图像的误差。
表2-1 图像处理工具箱中的代数运算函数
函数名 | 功能描述 |
Imabsdiff | 两幅图像的绝对差值 |
Imadd | 两幅图像的加法 |
Imlincomb | 计算两幅图像的线性组合 |
Immultiply | 两幅图像的乘法 |
imsubtract | 两幅图像的减法 |
实验图像:
五、实验步骤和结果
-
1.用数字运算符合实现图像的加减乘运算,
a=imread('E:\ins风\hai.tif')
subplot(2,3,1)
imshow(a)
title('hai')
b=imread('E:\ins风\yun.tif')
subplot(2,3,2)
imshow(b)
title('yun')
c=a+b
subplot(2,3,3)
imshow(c)
title('加法')
d=a-b
subplot(2,3,4)
imshow(d)
title('减法')
e=a.*b
e=times(a,b)
subplot(2,3,5)
imshow(e)
title('乘法')
- 用IPT函数实现图像的加减乘运算
-
a=imread('E:\ins风\hai.tif')
subplot(2,3,1)
imshow(a)
title('hai')
b=imread('E:\ins风\yun.tif')
subplot(2,3,2)
imshow(b)
title('yun')
c=imadd(a,b)
subplot(2,3,4)
imshow(c)
title('加')
d=imsubtract(a,b)
subplot(2,3,5)
imshow(d)
title('减')
e=immultiply(a,b)
subplot(2,3,6)
imshow(e)
title('乘')
- 讨论其结果是否一致,为何!分析其结果的不同。
-
答:结果一致
两种方法的区别在于:数值计算的表达式、矩阵变量中不允许有未定义的自由变量 , 而符号计算可以含有未定义的符号变量
4.实现图像的缩放,放大分别采用最近邻插值和双线性插值,分析其结果的不同。
函数:imresize(I,scale),scale是缩放的尺度
imresize(I,scale,'nearest')
imresize(I,scale,'bilinear')
通过观察,结果一致
最近邻差值和双线性插值的区别:双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。
最近邻插值是将变换后的图像中的原像素点最邻近像素的灰度值赋给原像素点的方法。
都是将图片以一定的映射规律转换到新的坐标中。i=imread('E:\ins风\huahai.tif')
figure(1)
imshow(i)
title('原图')
i1=imresize(i,1.5)
figure(2)
imshow(i1)
title('缩放')
i2=imresize(i,1.5,'nearest')
figure(3)
imshow(i2)
title('最近邻差值')
i3=imresize(i,1.5,'bilinear')
figure(4)
imshow(i3)
title('双线性插值')
六、实验思考
matlab学习心得 matlab中有丰富的图形处理能力,提供了绘制各种图形、图像数据的函数。他提供了一组绘制二维和三维曲线的函数,他们还可以对图形进行旋转、缩放等操作。matlab内部还包含丰富的数学函数和数据类型,使用方便且功能非常强大。本学期通过对matlab的系统环境,数据的各种运算,矩阵的分析和处理,程序设计,绘图,数值计算及符号运算的学习,初步掌握了matlab的实用方法。通过理论课的讲解与实验课的操作,使我在短时间内学会使用matlab,同时,通过上机实验,对理论知识的复习巩固实践,可以自己根据例题编写设计简单的程序。来实现不同的功能,绘制出比较满意的二维三维图形,在实践中找到乐趣。matlab是一个实用性很强,操作相对容易,比较完善的工具软件,使用起来比较方便,通过操作可以很快看到结果,能够清晰的感觉到成功与失败,虽然课程中也会出现一些小问题,但是很喜欢这门课程。