数字图像处理课程设计
基于Matlab的数字图像处理 ——图像的代数运算
院系 专业班级 学号 姓名 课程设计时间 2014年12月
目录
摘要……………………………………2 一.课程设计的目的…………………2 二.课程设计的原理…………………2 三.课程设计的实现(含测试调试过程)
(1)图像的加法运算??????2 图像加法运算的实现????3 (2)去除叠加噪声???????5 去除叠加噪声的实现????5 (3)图像的减法运算??????6 图像减法运算的实现????7 (4)图像的乘法运算??????9 图像乘法运算的实现????9 (5)图像的除法运算??????10 图像除法运算的实现????11
四.课程设计的总结………………13 五.参考文献………………………13
1
摘要
图像的代数运算具有明显的物理意义,本篇主要介绍了matlab的一些基
本的运算,线性代数中矩阵的一些基本运算,matlab图像的工具箱已经为我们提供了相关函数用于图像的加减乘除,它们分别是imadd、imsubtract、immultiply、imdivide,这些函数将自动处理图像运算过程中的溢出。 通过设计matlab进行图像的亮度对比变化、亮度的缩小放大和旋转,直方图统计和直方图均衡以及加入各种噪声,使用各种程序和函数,来完成上述各种程序和函数,来完成上述各种功能,并对结果进行分析和调试。总结了程序调试的经验以及各个函数的使用技巧,很好的实现了图像的处理功能。
一、 课程设计的目的
1.理解代数运算的基本定义和常见方法。 2.掌握matlab对图像代数运算的方法。
3.体会图像代数运算处理过程中以及处理前后的对比。
二、 课程设计的原理
是指对两幅输入图像进行点对点的加、减、乘或除运算而得到输出图像的运算。对于相加和相乘的情形,可能不止有两幅图像参加运算。在一般情况下,输入情况之一可能为常数。
四种图像处理代数运算的数学表达式如下: 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)
其中A(x,y)和B(x,y)为输入图像,而C(x,y)为输出图像。还可以通过适当的组合形成涉及几幅图像的复合代数运算方程。
在MATLAB中,我们可以用函数简单的得到数字图像的图像数据矩阵(即A(x,y)和B(x,y)),有了这些矩阵后我们只要适当的设计代数运算的形式并写出方程,就可以得到一个输出图像的矩阵(即C(x,y) 图像相加的一个重要应用是对同一场景的多幅图像求平均值。这点被经常用来有效的降低加性随机噪声的影响。
三、 课程设计的实现
1.图像的加法运算
2
图像相加可以得到图像叠加效果,也可以把同一景物的多重影像加起来求平均以减少图像的随机噪声。
matlab中提供的imadd函数用于实现图像的加法运算,其调用格式如下: Z=imadd(X,Y):将矩阵X中的每一个元素与矩阵Y中对应元素相加,返回值Z。X和Y的维数和数据类型相同,或者Y为一个数值型常数。除了X为二进制常数时,Z返回双精度外,Z的维数和数据类型与Y相同。如果X和Y 为整数矩阵,运算结果可能超出数据类型支持的范围(即溢出),这时matlab自动将数据截断为数据类型所支持的最大值。 在进行图像的加法运算时,需要注意以下三点。
(1)当X,Y对应元素和大于256时,Z仍取255;如果Y为多精度标量时,Z将对小数部分取整。
(2)为了避免出现大于255的切除效果,可将Z储存为uint16。
(3)但只有X,Y,Z的类型为logical,uint8或single,且三者类型相同时,IPPL才会激活。当Y为双精度时,X,Z为uint8,int16或single,且类型相同时IPPL也会激活。
图像加法运算的实现
以下代码使用加法运算将图中a,b两幅图叠加在一起 I = imread('rice.png');
J = imread('cameraman.tif'); K = imadd(I,J,'uint16');
subplot(2,2,1), imshow(I) subplot(2,2,2), imshow(J) subplot(2,2,3), imshow(K,[])
3
图像整体亮度增加:一个图像和一个常数的求和。
I = imread('rice.png'); J=imadd(I, 50);
subplot(1,2,1), imshow(I) subplot(1,2,2), imshow(J)
4