
西华大学课程设计手册1前言介绍了一个数字图像处理系统平台,该平台使用可视化数值计算软件MATLAB来实现. 系统使用MATLAB中提供的GUI来设计系统的可视用户界面. 下拉菜单方便用户选择正确的图像处理. 用户可以自由选择要处理的图片. 但是,该系统仅支持灰度图像,可以实现的内容主要包括灰度图像的代数运算和几何运算. 基于数字图像处理的一些基本原理,MATLAB设计程序用于处理灰度图像. 有许多方法可以处理某些操作. 我选择了最简单,最清晰的方法. 数字图像处理,也称为计算机图像处理,是指将图像信号转换为数字信号并用计算机进行处理的过程. 从理论上讲,图像是二维连续函数. 但是,在计算机上对图像进行数字处理时,必须首先将其空间和亮度数字化. 这是图像采样和量化的过程. 通过对二维图像进行均匀采样,可以获得离散为M×N个样本的数字图像. 数字图像是一个整数数组,因此用矩阵描述数字图像是最直观和最容易的. 随着计算机的发展,图像处理技术已广泛应用于许多领域,并且有许多图像处理软件,例如PHOTOSHOP,PAINTSHOP,GIMP,SaperaProcessing,MATLAB等,其中大多数基于广告计划和图像修改设计用于处理的应用程序软件对图像处理不是很方便.
而MATLAB(矩阵实验室)在矩阵运算中具有其独特的特性,并且在矩阵运算处理中具有很大的优势,因此使用MATLAB处理数字图像非常方便. 不仅如此,MATLAB还提供了大量的图形命令和图形功能,并且其面向对象的图形系统具有强大的用户界面(GUI)生成功能. 这样,用户可以充分利用系统提供的GUI功能并编写所需的图形界面,从而可以高效地执行图像处理. MATLAB支持五种图像类型,即索引图像,灰度图像,二进制图像,RGB图像和多帧图像阵列. 支持BMP,GIF,HDF,JPEG,PCX,PNG,TIFF,XWD,CUR,ICO和其他图像文件格式,用于读取,写入和显示. MATLAB的图像处理功能主要集中在其图像处理工具箱中. 图像处理工具箱由一系列支持图像处理操作的功能组成,这些功能包括几何操作,线性滤波和滤波器设计,图像变换,图像分析和图像增强,二进制图像操作以及形态处理. 处理操作. 1西华大学课程设计手册2方案设计2.1系统基本方案本系统采用MATLAB语言设计程序进行灰度图像处理,主要功能包括灰度图像的代数运算,几何运算,基本上包含了所有的变换和运算. 图片.

基于菜单的图像处理操作清晰方便,并且视觉界面生动,易于使用,高度交互且具有无限扩展功能. 2.2系统流程图的开始. 操作文件已打开. 代数运算. 几何运算. 2.3 MATLAB的语言特征(1)语言简单紧凑,使用方便灵活,库功能极为丰富. 丰富的运营商. (2)MATLAB不仅具有结构化的控制语句(例如for循环,while循环,break语句和if语句),而且还具有面向对象编程的特性. (3)程序限制不严格,程序设计的自由度大. 2西华大学课程设计说明(4)MATLAB的图形功能强大. (5)MATLAB的缺点是与其他高级程序相比,该程序的执行速度较慢. (6)由于MATLAB程序不需要诸如编译之类的预处理,也不生成可执行文件,因此执行该程序进行解释,因此速度很慢. 2.4设计最终计划决策尽管可以使用高级编程语言(例如c#,delphi等),但使用matlab作为实现工具更为方便. 3.系统的设计原理3.1每个模块的功能和图像处理原理3.1.1代数运算代数运算是指在两个输入图像之间执行点对点加,减,乘和除运算以获得输出图像的过程. . 如果输入图像是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)对于图像的代数运算,应注意以下问题: (1)结果的代数运算很容易超出数据类型所允许的范围,某些运算(例如除法)将产生分数结果. 该结果无法用整数类型来描述,因此在图像代数运算中将使用以下拦截规则: ①超出数据类型允许范围的数据将使用data替换该类型的最大值; ②小数的结果四舍五入.
(2)在Matlab中使用代数运算函数时,无需转换数据类型. 这些函数可以接受uint8和uint16数据类型,并以相同格式返回图像结果. (3)可以使用+,-,*,/和其他基本算术运算符对图像执行算术运算,但是与Matlab中提供的算术函数不同,必须在操作之前将图像转换为适合算术运算的双精度数据类型. (4)任何代数运算都必须确保输入图像的大小相等且数据类型一致. 在该功能模块中,主要设计图像的补码,叠加,减法,线性组合,乘法和除法运算. 3C(x,y)= A(x,y)-B(x,y)C(x,y)= A(x,y)×B(x,y)西华大学课程设计手册3.1.2几何运算此功能模块中的功能主要包括更改图像大小,图像水平镜像,垂直镜像,图像转置,图像旋转和图像裁剪. 1.缩放操作: MATLAB成像工具箱中的immersize函数可以通过特定的插值方法更改图像的大小. 该函数的语法如下: B = immersize(A,m,method). 如果用户未指定插值方法,则该函数将使用默认的邻居插值方法. 此外,我们还可以根据指定的放大倍数更改图像的大小.

例如,以下代码可以使X中的像素数增加一倍. Y = immersize(X,2). 2是放大系数. 如果要减小倍数,只需将放大倍数设置为0到1. 2.旋转操作: MATLAB处理工具箱中的旋转功能可以通过特定的插值方法更改图像显示角度. 该函数的语法如下: B = imrotate(A,angle,method)此函数使用图像中心点作为参考,并使用角度作为负值来实现图像的顺时针旋转. 该函数是使用指定的差分方法旋转图像A,方法是逆时针旋转以下值之一的角度. 用大括号({})括住一个指定角度为默认值的文本字符串. 如果用户未指定插值方法,则该函数将使用默认的邻居插值方法. 另外,用户还需要指定旋转角度. 图像的几何变换可以看作是图像内像素的移动. 该移动可以改变图像中的对象(像素)之间的空间关系. 完整的几何运算需要通过两种算法来实现: 空间变换算法和灰度插值算法. 空间变换主要用于维持图像中曲线的连续性和物理连通性. 通常,使用数学函数来描述输入和输出图像的相应像素之间的空间关系.
通常将空间变换定义为g(x,y)? f(x',y')? f [a(x,y),b(x,y)],其中f是输入图像,g表示输出图像. 坐标(x',y')指的是空间变换的坐标. 应该注意,此时的坐标不是原始坐标(x,y),a(x,y)和b(x,y)分别是图像的x和y坐标的空间变换函数. . 灰度级插值主要是将空间变换后的像素的灰度值恢复为原始位置的灰度值. 在几何运算中,灰度级插值是必不可少的组件. 因为图像通常由整数位置的像素定义. 在几何变换中,g(x,y)的灰度值通常由非整数坐标上的f(x,y)的值确定,即g中的一个像素通常为. 相反,也就是f中的一个像素通常映射到g中几个像素之间的位置. 3.2 MATLAB编程和具体操作3.2.1界面设计系统的界面设计程序MainInterface.m主要使用Matlab GUI中的图形(图形窗口)和uimenu(图形窗口主菜单)两个对象.

在GUI中创建的所有对象都具有相同的格式: handle = function('propertyname',propertyvalue,...)表1中显示了uimenu对象的一些常见属性: 属性Backgroundcolor描述uimenu背景色是3元素的RGB向量或Matlab预定义的颜色名称. 默认的背景颜色是亮灰色. 回调Matalab回调字符串. 选择菜单项后,回调字符串将传递给函数eval. 初始值为一个空矩阵Checked Enable选中项的选中标记,出现在: 选中项旁边;关: 不显示. 菜单启用状态为开: 菜单项已启用. 选择菜单项可以将回调字符串传递给eval. 关: 未启用菜单项. 选择菜单项无效. 标签位置分隔符可见包含菜单项徽标的文本字符串. 在PC系统中,使用“&”定义快捷键uimenu对象的相对位置. 顶部菜单从左到右编号,子菜单从上到下线模式划分为: 分隔线在菜单项上方;关: 未绘制分界线. uimenu对象在以下位置的可见性: uimenu在屏幕上可见; off: 不可见表1 uimenu对象属性列表5西华大学课程设计手册在系统菜单设计过程中,主要使用背景颜色,回调,标签,位置,分隔符,图形的可见属性灰度图像数据量,uimenu.
在打开处理的图像之前,“文件”和“帮助”菜单的可见属性为“开”,其他所有属性为“关”. 3.2.2代数运算函数的函数名称Imabsdiff Imadd不等式Imdivide Imlincomb不相乘两个图像的绝对差值两个图像的相加补充一个图像两个图像的除法计算两个图像的线性组合两个图像的相乘两个图像减法表2图像处理工具箱中的代数运算函数的功能说明3.2.3图像代数运算(1)图像加法函数imadd语法格式Y = imadd(X)说明: imadd函数用于产生两个的叠加效果images,其中X和Y是相同类型的数组. imadd函数还可以通过指定常量参数来增强图像的亮度. 此方法在该系统中使用,指定常数参数以增强灰度图像的亮度. (2)图像减法函数减法语法格式: Y =减法(X))说明: 说明: imadd函数用于产生两个图像的叠加效果,其中X和Y是相同类型的数组. subtrac函数还可以通过指定常量参数来降低图像的亮度.
此方法在本系统中使用,指定常数参数以降低灰度图像的亮度. (3)图像乘法运算和图像分割运算mdivide图像乘法,分割和减法运算与叠加运算相似. 乘法函数用于遮盖两个图像,即遮盖图像的某些部分. 使用乘法功能时,需要指定缩放参数. 如果大于1,则图像亮度增加;否则,图像亮度降低. 除法函数除法通常用于校正成像设备的非线性误差,也可以用于检测两个图像之间的差异. 它给出了相应像素值的变化. 6西华大学课程设计规范的比率,并非每个像素值的绝对差. 减法函数减法通常用于检测运动对象的图像变化和图像处理. 3.2.4图像几何运算(1)更改图像大小函数imresize语法格式: Y = imresize(X,M,Method)注意: 其中X表示需要操作的图像,M是放大倍数,通常M是大于0的实数. 如果M大于1,则图像放大;如果M小于1,则图像缩小. Method参数用于选择要使用的插值方法. 其值和含义如下: “最近”最近邻插值,“双线性”双线性插值,“双三次”双三次插值,默认值为“最近”.
imresize还可以指定图像输出大小,即将向量参数传递给imresize函数,其中参数的两个组成部分分别指定输出图像的行数和列数. 要将原始图像X输出为200×480图像,命令为: Y = imresize(X,[200 480]). 在该系统中采用后一种方法,并且使用随机生成的函数使图像大小随机变化. (2)图像水平镜像fliplr,垂直镜像flipud,转置ctranspose语法格式: Y = fliplr(X)Y = flipud(X)Y = ctranspose(X)说明: 水平镜像功能fliplr用于沿垂直方向翻转图像轴矩阵,即左右翻转矩阵. 垂直镜像功能flipud沿水平轴翻转图像,即水平翻转矩阵. 图像转置可以直接使用函数ctranspose或矩阵转置Y = X’. (3)旋转图像旋转函数语法格式: Y = imresize(X,angle,method)Y = imresize(X,angle,method,'crop')说明: 其中X代表原始图像,angle代表旋转角度,this angle沿逆时针方向计算,负值表示顺时针旋转.
The
方法参数与先前的imresize中的参数含义相同. 裁剪参数表示以原始图像尺寸的中心输出旋转后的图像. 该系统采用后一种方法. 旋转后的图像被拍摄并输出到原始图像尺寸的中心,并使用随机生成函数使旋转角度随机化. (4)图像裁剪功能imcrop7西华大学课程设计手册语法格式: Y = imcrop(X,rect)Y = imcrop(X,map,rect)说明: 如果未指定原始图像,则imcrop功能将图像当原始图像是索引图像时,map参数指示调色板. rect参数定义图像裁剪区域的直角坐标. 如果未指定坐标,则可以通过拖放原始图像来手动选择一个矩形区域. 该系统使用指定裁剪区域直角坐标的方法. 4系统软件设计与实现4.1系统各功能模块的演示4.1.1图像加法运算的实现代码: RGB = imread('haha.JPG'); RGB2 = imadd(RGB,50); imshow(RGB)图,imshow(RGB2)RGB3 = imadd(RGB,100);图,imshow(RGB3)子图(221),imshow(RGB),标题('RGB');子图(222),imshow(RGB2),标题('RGB2'); subplot(223),imshow(RGB3),title('RGB3'); 8西华大学课程设计说明ͼ1ԭͼͼ2图3添加的图片4.1.2图像减法操作实现代码: I = imread('kow.JPG' ); imshow(I)9西华大学课程设计手册背景= imopen(I,strel('disk',15));图,imshow(背景); I2 =减(I,背景);图,imshow(I2)子图(221),imshow(I),title('rice');子图(222),imshow(背景),标题('背景');子图(223),imshow(I2),标题('I2'); ͼ4ԭͼͼ510西华大学课程设计手册图6图像相减后4.1.3图像相乘操作代码: I = imread('rice.JPG'); J =乘(I,1.2); K =乘(I,0.5); imshow(I)图,imshow(J)图,imshow(K)子图(131),imshow(I),标题('I'); 11西华大学课程设计规范子图(132),imshow(J),标题('J');子图(133),imshow(K),标题('K'); ͼ7ԭͼͼ812西华大学课程设计规范图9乘法后的图像4.1.4图像划分代码: Rice = imread('rice.tif'); I = double(米); J = I * 0.43 + 9 0; Rice2 = uint8(J); ip = imdivide(大米,rice2); Imshow(Ip,[]);图10图像划分13西华大学课程设计手册4.1.5图像翻译代码: img1 = imread('xixi.JPG'); img1 = rgb2gray(img1);图,imshow(img1); imwrite(img1,'a1.jpg'); %%%%%%翻译ͼ11ԭͼ图12翻译后的图4.1. 6图像缩放操作的实现代码: I = imread('lion.JPG'); J = imresize(I,1.25); K = imresize(I,0.8); imshow(I),title('I')14西华大学课程设计手册图,imshow(J),title('J')图,imshow(K),title('K')ͼ13ԭͼ15西华大学课程设计手册图14图像放大到原始图像的1.25倍15图像缩小到原始图像的0.8倍4.1.7图像翻转实现代码: I = imread('trees.tif'); J = imrotate(I,30,'bilinear'); J1 = imrotate(I,30,'bilinear','crop'); imshow(I)图,imshow(J)图,imshow(J1)子图(121),imshow(I),标题('I'); 16西华大学课程设计规范子图(122),imshow(J1),标题('J1'); J2 = imrotate(I,-15,'bilinear');%(写出命令的目的)图形,imshow(J2)I = imread('cameraman .tif');图灰度图像数据量,imshow(I); θ= 30; K =旋转(I,theta);%尝试改变角度theta. 图,imshow(K)图16图像左移17西华大学课程设计规范图17图像右移. 另一个: 还可以使用翻转和缩放代码se = translate(strel(1),[20 20]); img2 = imdilate(img1,se);图,imshow(img2); imwrit e(img2,'a2.jpg'); %%%%%% rotate img3 = imrotate(img1,90);图,imshow(img3); imwrite(img3,'a3.jpg');%%%%%% Zoom img4 = imresize(img1,2);图,imshow(img4); imwrite(img4,'a4.jpg'); 18西华大学课程设计说明5通过“基于Matlab的数字图像处理”的总结我已经学到了很多课程设计. 最基本的是再次熟悉matlab语言. 它不仅在matlab编程中得到了改进,并熟悉了界面设计,而且对数字图像处理有了更深入的了解.
首先,我了解图像是matlab的矩阵. 灰度和彩像分别对应于二维和三维的不同维度的矩阵,其中三维矩阵的每一位代表一种颜色. 矩阵可以是实数或复数. 不同图像矩阵的元素对应于不同类型,例如double和uint8. 由于几乎所有的matlab函数及其工具箱函数都可以使用double作为参数类型,但是由于64bit表示大量图像数据存储,因此matlab还支持图像数据的无符号整数存储,因此在使用它时应注意数据类型. 最后,我们必须理解理论指导实践. 为了达到预期的效果,我们必须了解其机理和相应的算法. 只有在相应理论的指导下,我们才能创新并取得突破,而不仅仅是简单地引用相应的处理功能. 例如,对于屏幕截图功能,它只能捕获坐标轴上的图像,但不能处理坐标轴上的意外图像,并且对于同时显示在坐标轴上的多个图像,它只能处理最后一个显示. 通过改进,我们可以认识到qq屏幕截图之类的功能非常强大. 但是,通过此实现,我对图像模式,几何变换原理,图像平移,裁剪,镜像,失真,缩放和旋转的原理有了更清晰的了解,并且了解了它们的实现机制.
matlab中有许多新功能等待我们探索. 通过此课程设计,我们受益匪浅. 19西华大学课程设计手册6致谢西华大学电气与信息工程学院的学习岁月即将过去,虽然时间并不长,但对我而言,这是磨砺青春,挥霍无度的书的几年. 持续多年的教师技能,不断提高的才能和不断提高的知识水平. 我将以积极的态度重新进入热门工作和职业生涯. 在此,我要衷心感谢和尊重,以培养我的母校,教我的老师,并帮助我的同学. 我在这个课程设计上一直很努力. 在此过程中,我得到了郭艺先生的精心指导和同学们的热情帮助,并为设计提出了许多有益的建议. 我要对他们表示衷心的感谢. 同时,我还要感谢学校给我这次机会尝试自己设计一些东西,以便我可以将知识和实践相结合. 最后,我还要感谢我所引用的文献的作者,这些文献对我来说是知识的来源,因此我可以最终成功完成本课程的设计. 在我们即将毕业时,我衷心希望我的同学和朋友在未来的生活中会越来越广泛. 我也深信,在未来的日子里,我们将携手并进,遇到许多碰撞与交流. 我们将永远记住我们在电气信息学院学习. 这将是我克服困难并不断前进的精神动力. 20西华大学课程设计手册7参考文献[1]王宏远主编. “ MATLAB语言及其在电子信息工程中的应用”. 清华出版社. 2004.12 [2] Feith技术研发中心,MATLAB6.5辅助图像处理,. 北京,电子工业出版社,2003 [3]楼顺天,基于MATLAB的系统分析与设计-信号处理,西安电子科技大学,西安出版社,1998.3 [4]李文峰,图形图像处理与应用,中国标准出版社,北京,2006 [5]李文峰. “图形图像处理和应用”. 中国标准出版社. 2006.06 [6]何兴华等. “ MATLAB7.X图像处理”. 人民邮电出版社2006.11.01 [7]刘文耀主编. “数字图像采集和处理”. 电子工业出版社. 2007.08.01 [8]陈怀臣主编. “数字信号处理教程-MATLAB的解释和实现”. 电子工业出版社. 2004.06 [9]张志勇等,MATLAB硕士和硕士,北京,北京航空航天大学出版社,1997.21
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-262134-1.html
乱放屁