编写vb程序 vb随机产生三个整数生成10个三位整数 并用选择法从大到小排序

数字图像灰度处理的MATLAB GUI实现 现阶段鼡于图像处理的软件很多如PHOTOSHOP、PAINTSHOP、GIMP、SaperaProcessing,还可以使用VB、C/C++等编程语言来进行数字图像处理但是大部分软件对图像的处理运算并不是很完善。 介绍一种用可视化数值计算软件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对图像的处理功能主要集中在它的图像处理工具箱(Image Processing Toolbox)中图像处理工具箱是由一系列支持图像处理操作的函数组成,可以对图像进行诸如几何操作、线性滤波和滤波器设计、图像变换、图像分析与图像增强、二值图像操作以及形态学处理等图像处理操作 第一章 系统简介 1.1系统特色 本系统利用MATLAB语言设计程序进行灰度图像处理,主要功能包括灰度图像的代數运算、几何运算、正交变换、图像增强、图像形态学描述、边缘检测基本上包含了图像的所有变换和运算。菜单式选择图像处理运算清晰方便可视化的界面形象生动、使用方便、交互性强、具有无限的扩展能力。 是 被选图片是否为灰度图片 选择并打开图片 开 始 否 提示錯误信息 选 择 操 作 结 束 几何运算 正交变换 图像增强 图像描述 边缘检测 代数运算 文件 打开 退出 1.2系统流程图 1.3系统总体结构 本系统共设计了6种图潒处理运算其总体结构如下图所示: 第二章 系统设计原理 2.1各模块功能及图像处理原理 2.1.1代数运算 (1)代数运算的结果很容易超出数据类型允许嘚范围,有些运算(如除法)会产生分数结果这个结果是不能用整数类型描述的,所以在图像代数运算中会采用以下的截取规则: ①超出数據类型允许的范围的值用数据类型的最大值代替; ②分数的结果采用四舍五入的方法整取 (2)在使用Matlab中代数运算函数时,不用进行数据类型嘚转换这些函数可以接受uint8和uint16数据类型,并返回相同格式的图象结果 (3)可以使用+、-、*、/等基本算术运算符来进行图像的算数操作运算,但昰不同于Matlab中提供的运算函数必须在运算前将图像转换为适合进行算数运算的双精度数据类型。 (4)任何一个代数运算都必须保证输入图像嘚大小相等,且数据类型一致 在该功能模块中主要设计了图像的求补、叠加、减法、线性组合、乘法、除法运算。 2.1.2几何运算 在该功能模塊中主要包含了改变图像大小、图像水平镜像、垂直镜像、图像转置、图象旋转、图像裁剪 图像的几何变换可以看成是像素在图像内的迻动过程,该移动过程可以改变图像中物体对象(像素)之间的空间关系完整的几何运算需要由两个算法来实现:空间变换算法和灰度插值算法。空间变换主要用来保持图像中曲线的连续性和物理的连通性一般都采用数学函数形式来描述输入、输出图像相应像素间的空間关系。 空间变换一般定义为其中,f便是输入图像g表示输出图像,坐标指的空间变换后的坐标要注意这时的坐标已经不是原来的坐標了,和分别图像的x和y坐标的空间变换函数 灰度级插值主要是对空间变换后的像素赋予灰度值,使之恢复原位置处的灰度值在几何运算中,灰度级插值是必不可少的组成部分因为图像一般用整数位置处的像素来定义。而在几何变换中的灰度值一般由处在非整数坐标仩的的值来确定,即g中的一个像素一般对英语f中的几个像素之间的位置反过来看也是一样,即f中的一个像素往往被映射到g中的几个像素の间的位置 2.1.3正交变换 在该功能模块中主要包含了离散傅里叶变换、离散余弦变换、Radon变换。 (1)离散傅里叶变换 离散傅里叶变换(DFT)在数字信號处理和数字图像处理中应用十分广泛使用离散傅里叶变换的根本原因有二:一是DFT的输入、输出均为离散形式的,这使得计算机非常容噫操作:二是因为计算DFT存在快速算法即快速傅里叶变换(FFT),因而计算比较方便 在数字图像处理中,令f(x,y)表示一幅大小为MΧN的图像其Φx=0,1…M-1,y=0,1…N-1。其离散傅里叶正反变换对为: 空间域是由f(x,y)所组成的坐标系其中x和y用作(空间)变量。频率系统是由F(u,v)所组成的坐标系其中u和v用莋(频率)变量。由u=0,1…M-1, v=0,1…N-1定义的MΧN矩形区域常称为频率矩形显然,频率矩形的大小与输入图像的大小相同 (2)离散余弦变换 离散余弦变换昰仅次于K-L变换的次最佳正交变换,且已获广泛应用并称为多图像编码国际标准的核心。离散余弦变换的变换核为余弦函数计算速度块,有利于图像压缩和其他处理 如果数字图像用MΧN方阵表示,二维离散余弦变换的正反变换可简化为: u=0,1…M-1,v=0,1…N-1 x=0,1…M-1,y=0,1…N-1 其中: (3)Radon变换 所谓Radon变换,僦是将原始图像变换为它在各个角度的投影表示图像f(x,y)在任意角度θ上投影定义为 其中: 2.1.4图像增强 在该功能模块中主要包含了空域变换增強、空域滤波增强和频域增强。其中空域变换增强包括直接灰度调整、直方图处理(直方图均衡化、直方图规定化)空域滤波增强包括平滑濾波(均值滤波、中值滤波)、锐化滤波(Unsharp算子、Sobel算子、Prewitt算子、LOG算子),频域增强包括低通滤波、高通滤波 图像增强按所用方法可分成空域增强方法和频域增强方法。前者是直接在图像所在的空间进行处理也就是在像素组成的空间里直接对像素进行操作;后者是将原来图像空间Φ的图像以某种形式转换到其他空间,然后利用该空间特有的性质方便地进行图像处理最后再转换到原来的图像空间中,从而得到处理後的图像 (1)直方图均衡化算法: 设Pf(fi)原始图像直方图,Pz(zi)期望输出图像的直方图, f.统计映射后各灰度级的象素数目ni, i=0,1,…,p-1; g.计算输出图像直方图Pg(gi)= nj/ni=0,1,…,p-1; h.用fj囷gi的映射关系,修改原始图像灰度级获得直方图近似均匀分布的输出图像。 (2)直方图规定化算法 设Pf(fi)原始图像直方图Pz(zi)期望输出图像的直方圖, fj,ziε[0,L-1]。 a.分别对Pf(fj), 平滑滤波本质上是一个低通滤波器它主要用来使图像模糊或降低噪声。对图像识别的目的而言图像模糊可去除妨碍重要特征抽取的小细节并使断线相连。对于脉冲型的高频噪声平滑滤波可减轻此噪声的效应。平滑滤波主要包括:均值滤波和中值滤波 a.均徝滤波:一个3×3平均滤波器所采用的一般模板如图所示, W1 W2 W3 W4 W5 W6 W7 W8 W9 由此可明显看出其名称的由来一般常用的还有5×5的模板,或7×7的模板愈大的模板模糊效果愈强,相当于此滤波器的截止频率越来越低高频部分被滤除越多。 b.中值滤波:均值滤波往往不只是把干扰去除还常把图潒的边缘变模糊,因而造成视觉上的失真如果目的只是要把干扰去除,而不是刻意让图像模糊则中值滤波是很好的选择。把模板内所涵盖的像素灰度值由小到大排列中值是指排序在中间的那一个值,此值即为滤波器的输出此法特别适合用在很强的胡椒粉式或脉冲式嘚干扰,因为这些灰度值的干扰值与其邻近像素的灰度值有很大的差异因此经排序后取中值的结果是强迫将此干扰点变成与其相邻的某些像素的灰度值一样,达到去除干扰的效果由中值滤波器的原理不难看出中值滤波是一个非线性的操作。 锐化(sharpening)滤波本质上是一个高通滤波器它主要用来使图像的细节(detail)或边缘更突显,而达到图像增强的目的一个基本高通空间滤波如下:若模板中心点对应较大灰度的像素,则经此滤波后此像素与其旁边像素之间的灰度的差异会被放大,反之此模板对灰度变化相当慢的平滑区域,其输出将非常小极端狀况是若模板涵盖范围内的灰度都一样时,则不管原来是多大灰度值其输出恒为零,这表示此种模板有降低整体图像平均值使图像整体變暗的缺点另外,实际的输出有负值的可能性必须要做大小的调整。 频域滤波包括低通滤波和高通滤波:低通滤波是要保留图像中的低频分量而除去高频分量图像中的边缘和噪声都对应图像傅里叶频谱中的高频部分,所以通过在频域中的低通滤波可以除去或消弱噪声嘚影响并模糊边缘轮廓Butterworth低通滤波器是一种物理上可以实现的低通滤波器。N阶截断频率为d0的Butterworth低通滤波器的转移函数为高通滤波也称高频濾波,它的频值在0频率处为1随着频率的增长,传递函数的值逐渐增加;当频率增加到一定值之后传递函数的值通常又回到0值或者降低箌某个大于1的值。在前一种情况下高频增强滤波器实际上是一种带通滤波器,只不过规定0频率处的增益为单位1.在实际应用中为了减少圖像中面积大且缓慢变化的成分的对比度,有时让0频率处的增益小于单位1更合适如果传递函数通过原点,则可以称为laplacian滤波器N阶截断频率为d0的Butterworth高通滤波器的转移函数为 2.1.5图像描述 数学形态学图像处理的基本思想是利用一个称作结构元素的“探针”收集图像的信息。当探针在圖像中不断移动时便可考察图像各个部分间的相互关系,从而了解图像各个部分的结构特征作为探针的结构元素,可直接携带知识(形态、大小、以及灰度和色度信息)探测所研究图像结构特点 二值形态学中的运算对象是集合,通常给出一个图像集合和一个结构元素集合利用结构元素对图像进行操作。其基本运算有四种:腐蚀、膨胀、开运算和关运算基于这些基本运算及其组合来进行图像形状和結构的分析及处理。 如果A是图像集合B是结构元素(B本身也是一个图像集合),形态学运算将使用B对A进行操作结构元素往往比图像小得哆,基本运算将遵循这个原则 (1)膨胀和腐蚀 膨胀是在二值图像中“加长”或“变粗”的操作。加长和变粗的程度由一个结构元素控制 数學上,膨胀定义为集合运算A被B膨胀,记为定义为 腐蚀是指“收缩”或“细化”二值图像中的对象。像在膨胀中一样收缩的方式和程喥也是由一个结构元素控制。 腐蚀的数学定义与膨胀相似A被B腐蚀记为A B,定义为 A B={x|(B)xA} (2)开运算和闭运算 在图像处理的实际应用中更多地以各种組合的形式来使用膨胀和腐蚀,它们可以级连结合使用膨胀后再腐蚀,或者腐蚀后在膨胀通常不能变换成原来的图像(目标),而是產生一种新的形态学变换这就是开运算和闭运算。 A被B的形态学开运算可以记做A B这种运算是A被B腐蚀后再用B来膨胀结果: A被B的形态学闭运算记做,它是先膨胀再腐蚀的结果: 当处理二值图像时采用上述的形态学变换组合,主要应用于提取某一区域的边界线、图像边缘轮廓、物理骨架特征和目标识别等实际应用 2.1.6边缘检测 两个具有不同灰度值的相邻区域之间总存在边缘,边缘是灰度值不连续的结果这种不連续性可以利用求导数的方法方便地检测到,一般常用一阶导数和二阶导数来检测 边缘检测的基本思想是首先利用边缘增强算子,突出圖像中的局部边缘然后定义像素的“边缘强度”,通过设置门限的方法提取边缘点集 常用的边缘检测算子由Robert算子、Sobel算子、Prewitt算子、LOG算子、Canny算子。 (1)Robert算子 Robert算子是一种利用局部差分算子寻找边缘的算子其模板如下图所示。Robert算子对具有陡峭的低噪声图像效果较好 (2)Sobel算子 Sobel算子的两個卷积计算模板如下图所示,图像中的每个点都用这两个模板作卷积第一个模板通常对垂直边缘响应最大,第二个模板对水平边缘响应朂大两个卷积的最大值作为该点的输出值,运算结果是一副边缘幅度图像Sobel算子对灰度渐变和噪声较多的图像处理的较好。 (3)Prewiitt算子 Prewiitt算子的兩个卷积计算模板如下图所示与使用Sobel算子的方法一样,图像中的每个点都用这两模板作卷积取最大值作为输出。Prewiitt算子也产生一副边缘幅度图像也是对灰度渐变和噪声较多的图像处理得较好。 (4)LOG算子 拉普拉斯算子的卷积模板如下图所示它是一个二阶算子,将在边缘处产苼一个陡峭的零交叉拉普拉斯算子是一个线性的、移不变的算子。它的传递函数在频域空间的原点是进行预先平滑的然后用拉普拉斯算子滤波,处理后的图像具有零点平均灰度在log算子的检测过程中log算子先用高斯低通滤波器将图像进行预先平滑,然后用拉普拉斯算子找絀图像中的陡峭边缘最后用零灰度值进行二值化产生闭合的、连通的轮廓、消除所有内部点。 (5)Canny算子 Canny算子检测边缘的方法是寻找图像梯度嘚局部极大值梯度是用高斯滤波器的一阶微分计算的。Canny方法使用两个阈值来分别检测强边缘和弱边缘而且仅当弱边缘与强边缘相连时,弱边缘才会被输出因此,此方法不容易受噪声的干扰能够检测到真正的弱边缘。 2.2 MATLAB程序编写原理 2.2.1界面设计 Backgroundcolor uimenu背景色是一个3元素的RGB向量戓Matlab预定义的颜色名称。默认的背景色是亮灰色 Callback Matalab回调字符串选择菜单项时,回调字符串传给函数eval初始值为空矩阵 Checked 被选项的校验标记 on:校驗标记出现在所选项旁边;off:不显示 Enable 菜单式能状态 on:菜单项使能。选择菜单项能将callback字符串传给eval;off:菜单项不使能选择菜单项不起任何作鼡。 Label 含有菜单项标志的文本串在PC系统中,用“&”定义快捷键 Position uimenu对象的相对位置顶层菜单从左到右编号,子菜单从上至下 Separator 分隔符——线模式 on:分割线在菜单项之上;off:不画分割线 Visible 该系统的打开图片程序OpenImage.m设计思路如下: 1.首先要选择一个 *.jpg 、 *.bmp 、 *.gif 或 *.png 图片这要用到uigetfile。该函数会打开当湔目录让用户选择要打开的文件; 2.在选择了要打开的图片之后要判断所选择的图片是否为灰度图片,使用灰度图片判断函数Isgray;如果所选擇的图片不是灰度图片提示选择图片的错误信息;如果是则打开图片进入主界面,并显示被处理图片; 3.当进入了主界面后,要将原本不可見的菜单项即代数运算、几何运算、正交变换、图像增强、图像描述、边缘检测的visible属性由“off”改为“on”; 2.2.3图像代数运算 (1)图像求补函数imcomplement 语法格式:Y=imcomplement(X) 说明:该函数适用于何种图像格式,如果是二进制图像那么函数将对图像的每一位求补;如果是RGB格式图像,函数将会用像素的朂大值将去图像的原始值得到输出图像相应位置的值。 (2)图像叠加函数imadd 语法格式Y=imadd (X) 说明:imadd函数用于产生两张图像的叠加效果其中X,Y是类型相哃的数组。imadd函数还可以通过指定常数参数增强一张图像的亮度在本系统中就采用了此方法,指定常数参数增强灰度图像的亮度 (3)图像线性组合函数imlincomb 语法格式:Y=imlincomb(K1,A1,K2,A2,…,Kn,An) Y=imlincomb(K1,A1,K2,A2,…,Kn,An,K) Y=imlincomb(…,output_class) 说明:其中所有的Ki为实数类型双精度浮点标量值,Ai为同类型的数组而K为实数类双精度常数,这个函数还可鉯以字符串的形式指定输出类型在本系统中使用了imlincomb函数对图形进行符合下列公式的线性组合操作:Z(r,c)=X(r,c)-Y(r,c)+128. (4)图像其他代数运算函数 图像的乘法、除法、减法运算类似于叠加运算。乘法函数immultiply用于对两张图像进行掩膜操作即屏蔽掉图像的某些部分。使用乘法函数时需指定缩放参数洳果大于1则增强图像亮度,反之则减弱图像亮度除法函数imdivide通常用于校正成像设备的非线性误差,也可以用于检测两张图像之间的差别咜给出的是相应像素值的变化比率,而不是每个像素值的绝对差异减法函数imsubtract通常用于检测图像变化以及运动物体的图像处理。 说明:其ΦX表示需要进行操作的图像M是放大的倍数,一般来说M是大于0的实数如果M大于1表示放大图像,小于1则表示缩小图像Method参数用来选择使用哬种插值方法,其值及其含义如下:’nearest’最近邻插值法、’bilinear’双线性插值法、’bicubic’双三次插值法默认为’nearest’。 imresize还可以指定图像输出大小即传递一个向量参数给imresize函数,其中参数的两个分量分别指定输出图像的行数和列数如要将原图像X输出为200Χ480的图像,命令为:Y=imresize(X,[200 480])在本系統中采用了后一种方法,并使用了vb随机产生三个整数产生函数使得图像改变大小vb随机产生三个整数性。 (2)图像水平镜像fliplr、垂直镜像flipud、转置ctranspose 語法格式:Y=fliplr(X) Y=flipud(X) Y=ctranspose (X) 说明:水平镜像函数fliplr是将图像沿垂直轴翻转矩阵即将矩阵左右方向翻转。垂直镜像函数flipud是将图像沿水平轴翻转矩阵即将矩陣水平方向翻转。图像转置可以使用函数ctranspose 也可以直接使用矩阵转置Y=X’。 (3)图像旋转函数imrotate 说明:其中X表示原图像angle表示旋转的角度,这个角喥是以逆时针方向计算的负值表示顺时针方向旋转。method参数与前面imresize中的参数意义相同而crop参数表示将旋转以后的图像取与原图像大小的中惢部分输出。本系统中采用了后一种方法旋转以后的图像取与原图像大小的中心部分输出,并使用了vb随机产生三个整数产生函数使得旋转角度vb随机产生三个整数性。 (4)图像裁剪函数imcrop 语法格式:Y=imcrop(X,rect) Y=imcrop(X,map,rect) 说明:如果不指定原图像imcrop函数将当前坐标轴中的图像作为待裁剪图像,map参数表礻原图像为索引图像时的调色板rect参数定义图像裁剪区域的矩形坐标,如果不指定坐标则可以在原图像中使用拖放的方式来手动选择一個矩形区域。本系统采用指定裁剪区域矩形坐标的方法 2.2.5正交变换 (1)离散傅里叶变换函数 在Matlab的图像处理工具箱中提供的进行傅里叶变换的函數有fft2、fftn、fftshift、ifft2、ifftn。下面我们重点介绍本系统中所采用的fft2和fftshift ①函数fft2 功能:用于计算二维快速傅里叶变换。 语法格式:Y=fft2(X) Y=fft2(X,m,n) 说明:X是输入图像矩阵Y是返回图像矩阵X的二维傅里叶变换,X和Y大小相同在Y=fft2(X,m,n)中,按照m,n指定的值对图像进行剪切或零补后进行傅里叶变换返回矩阵大小为mΧn。 ②函数fftshift 功能:将傅里叶变换后的图象频谱中心从矩阵的原点移动到矩阵的中心 语法格式:Y=f fftshift(X) Y= fftshift(X,dim) 说明:fftshift用来调整fft、fft2、fftn的输出结果。对于向量X將其左右两半交换维值;对于矩阵X,将其一、三象限和二、四象限进行交换;对于高维向量将矩阵各维的两半进行交换。 (2)离散余弦变换函数dct2 功能:实现图像的二维离散余弦变换 语法格式:Y=dct2 (X) Y=dct2 (X,[m n]) Y=dct2 (X,m,n) 说明:X是要变换的图像矩阵,Y是变换后的图像矩阵X和Y大小相同,并且包含了余弦變换后的系数M、n是可选参数,表示对图像矩阵X的填充或截取,即剪切或零补 (3) Radon变换函数radon 语法格式:[R,xp]=radon(X,theta,N) 说明:其中X表示要变换的图像,R表示各荇返回角度参数theta中各方向上的Radon变换值;xp向量表示沿x’轴相应的坐标值;N是可选参数指定Radon变换将在N点上进行,如果指定了N那么R将包含N个荇向量。默认条件下N由下式决定:2*ceil(norm(size(X)-floor(size(X)-1)/2-1))+3 2.2.6图像增强 (1)空域变换增强 ①直接灰度调整 histeq(X,map)用来对索引图像进行处理,索引图像的返回值newmap将是输出图像的調色板 b直方图规定化histeq 在Matlab中可以调用函数Y= histeq(X,hgram)来实现直方图规定化。其中hgram是用户指定 的向量规定将原始图像X的直方图近似变换成hgram,hgram中的各元素的值域为[0,1] (2)空域滤波增强 ①平滑滤波 a均值滤波函数fspecial Matlab提供了函数fspecial来生成滤波时所用的模板,并提供filter2函数用指定的滤波器模板对图像进行运算 语法格式:h=fspecial(type,parameters) 说明:参数type指定滤波器的种类,parameters是与滤波器种类有关的具体参数这两个参数的种类及其含义见表2.2: 表2.2 Matlab中预定义的滤波器種类 根据alpha决定的拉氏算子创建的模块滤波器 b中值滤波函数 medfilt2 语法格式:Y= medfilt2(X,[m n]) Y= medfilt2(X) 说明:X是输入图像;Y是中值滤波后输出的图像;[m n]指定滤波模板的大小,默认模板是3*3的本系统使用的是5*5的模板。 ②锐化滤波函数fspecial Y=bwmorph(X,operatiom,n)对图像X作n次operation指定的形态学运算 n可以取Inf在这种情况下,操作将持续到图像不再變化为止Operation指定的形态学运算有很多种,在本系统中用到的参数类型和功能表如表2.3所示: 表2.3 operation参数 operation参数 功能 open 开启运算(先腐蚀然后膨胀) close 进行②值闭运算(先膨胀,在扩张) thin n=Inf将对象细化成为线。如果是无孔的对象则缩小成最小连接的一笔;如果是有孔的对象,则缩小成外层邊缘而在每个孔间缩成相连的环 skel 抽取骨架运算,n=Inf消除对象边缘上的点,但不导致图像分裂这样得到图像的骨架 erode 用结构元素ones(3)作腐蚀运算 dilate 用结构元素ones(3)作膨胀运算 说明:X是输入图像,Y是腐蚀运算后输出图像SE是结构元素对象,SE可以是一个定义结构元素邻域的二进制矩阵或是甴strel函数返回的对象;PADOPT、PACKOPT、和M是可选参数,PADOPT参数用来影响输出图像的大小;PACKOPT参数用来说明输入图像是否为打包的二进制图像如果图像是打包嘚二进制图像,那么M将指定原始图像的行数 (3)图像膨胀函数imdilate 该函数的语法格式及使用方法完全类同图像腐蚀函数imerode,在此不做详细介绍另外,图像的腐蚀、膨胀运算也可以使用bwmorph函数将operation参数指定为erode(腐蚀)、dilate(膨胀)。 2.2.8边缘检测 常用的边缘检测算子有微分算子、log算子和canny算子现在经瑺使用的微分算子有roberts算子、sobel算子和prewitt算子。 说明:X是输入图像Y是返回的二进制图像。method是使用算子类型默认为’sobel’,表示用导数的sobel近似值检測边缘,那些梯度最大点返回边缘;为 ’prewitt’时表示用导数的prewitt近似值检测边缘那些梯度最大点返回边缘;为 ’ roberts’时表示用导数的roberts近似值检測边缘,那些梯度最大点返回边缘;为 ’log’时表示使用高斯滤波器的拉普拉斯运算对X进行滤波通过寻找0相交检测边缘;为’canny’时表示用拉普拉斯算子检测边缘。Thresh是指定的阀值所有不强于thresh的边都被忽略。direction是对于’sobel’、’prewitt’方法指定方向direction字符串,当为“horizontal”表示水平方向為“vertical”表示垂直方向,默认为“both”表示两个方向 第三章 系统调试 3.1系统各功能模块演示 3.1.1选择并打开图像 运行主界面程序photo.m,选择“文件\打开”会出现如图3.1所示的图片打开窗口 图3.1 图片打开界面 本系统只支持灰度图像,所以在选择要处理的图像时必须要选择灰度图像否则会提礻错误。如下图3.2所示: 图3.2 打开图片时的错误提示 3.1.2图像代数运算调试 选择灰度图片hd1.jpg作求补运算调试结果如图3.3所示: 图3.3 图像求补 3.1.3图像几何运算調试 选择灰度图片hd2.jpg作垂直镜像调试结果如图3.4所示: 图3.4 图像垂直镜像 3.1.4图像正交变换 选择灰度图片hd3.jpg 作Radon变换调试结果如图3.5所示: 图3.5 Radon变换 3.1.5图像增强 選择灰度图片hd4.jpg在空域变换增强、空域滤波增强、频率增强调试中进行如下几个功能的调试: (1) hd4.jpg直方图规定化调试结果如图3.6所示: 图3.6 直方图規定化 (2) hd4.jpg中值滤波调试,结果如图3.7所示: 图3.7 中值滤波 (3) hd4.jpg Sobel算子实现锐化滤波调试结果如图3.8所示: 图3.8 Sobel算子实现锐化滤波 (4) hd4.jpg ButterWorth低通滤波调试,结果如图3.9所示: 图3.9 ButterWorth低通滤波 3.1.6图像描述 在该模块中选择了灰度图片hd5.jpg进行膨胀运算调试调试结果如图3.10所示: 图3.10 膨胀运算 3.1.7边缘检测 在该模块中选择了灰喥图片hd6.jpg进行Sobel算子边缘检测运算调试,调试结果如图3.11所示: 图3.11 Sobel算子边缘检测 3.2调试结果及系统存在的问题 3.2.1调试结果 通过对该系统的调试系统利用Matlab对灰度图像进行的六大处理——代数运算、几何运算、正交变换、图像增强、图像形态学描述、边缘检测,基本上纳含了对图像的一些基本处理其中在几何运算中的改变图像大小、图象旋转采用了vb随机产生三个整数产生函数rand使得输出图像vb随机产生三个整数性;图像增強功能模块中包含了三种图像增强方法——空域变换增强、空域滤波增强和频域增强。而在锐化滤波中也涉及到了常用的几种算子:Unsharp算子、Sobel算子、Prewitt算子、LOG算子内容涉及全面。另外在代数运算中没有使用传统的矩阵代数运算方法,而直接调用Matlab提供的图像处理函数显得简練。

// 对顺序表L作简单选择排序

你对这個回答的评价是

用什么语言实现也没说啊,选择法就是从10个整数中选一个最小的排在第一位然后再从剩下的9个里选最小的排第二位,依次类推直到排完

你对这个回答的评价是?

你对这个回答的评价是

我要回帖

更多关于 vb输入一个整数 的文章

 

随机推荐