基于MATLAB GUI的相位测量轮廓术
matlab中GUI的使用
今天由于要帮一朋友用matlab处理一幅图片,处理图片的要求其实很简单,就是把图片加载进matlab中,然后显示出想要的某一列的趋势图来。
如果用代码写的话,程序如下:x=imread(‘文件路径\*.jpg’);figure(1);plot(x(:,100)); %假如要显示的是图像的第100列的趋势图显示效果如下图所示:虽然用M文件写两句很简单,不过带着感情,追求更好是我们永恒的动力,首先用M文件时候人机界面不友好,的看很多的代码,尤其对不太熟悉M编程的的人而言即使很简单也看着比较郁闷,因此我们接下来用matlab中的GUI来完成这个简单的例子,当然编程起来比这个复杂多,但是对使用者而言确很简单清楚。
这个就如同VC中的MFC和WINDOWSFORMS一样。
做成的都是人机交互界面。
不废话了,看例子。
首先打开MATLAB,要新建一个MATLAB GUI 程序有三种方法,这里我直接在命令窗口里输入guide,新建一个空的GUI程序,选择如下图:新建好的GUI编程界面如下图,上面无非就是菜单,工具,还有编程用到的控件,还有编程的用户窗口。
这个和LABVIEW有点像。
不过LABVIEW的前面板都是用控件拖出来的,后面板也是拖控件画出来的。
而GUI的显示界面是拖控件画出来的,其中一些属性参数要设置下,而后面的执行这些控件的都是写的M函数,即后面板都是要写代码的,这个比LABVIEW单纯的画程序要难,当然灵活性也大,不过个人感觉没一个简单的,都难呀。
至于上面控件的意思,怎么拖请自己看吧,若学过MFC或者WINDOWSFORMS的人就会很容易理解的,这之间是太像了,呵呵。
我们的目的是显示图片,并且显示需要的某一列的趋势图。
为了使人机交互更好点,我们可以使加载图片时和我们选择打开文件夹那样完成,即自己选择路径,而不用每次在M文件里改路径。
还有我们要求在加载图片完成时立马显示出这幅图片的大小信息,即多少行,多少列。
(任务书)基于MATLAB GUI的图像边缘检测算法的研究与仿真
毕业设计(论文)任务书(工科类)课题名称基于MATLAB/GUI的图像边缘检测算法研究与仿真副标题系(院)名称:电子与信息工程系专业:电子信息工程姓名:学号:毕业设计(论文)起讫时间:指导教师签名年月日系(院)主任签名年月日一、毕业设计(论文)的课题背景边缘是图象最基本的特征,边缘检测在计算机视觉、图象分析等应用中起着重要的作用,是图象分析与识别的重要环节,这是因为子图象的边缘包含了用于识别的有用信息。
所以边缘检测是图像分析和模式识别的主要特征提取手段。
GUI 即人机交互图形化用户界面设计。
GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用。
人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。
图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。
与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。
本次毕业设计使用MA TLAB/GUI仿真软件,仿真图像边缘检测算法,采用不同的算法实现对图像边缘检测,使学生了解GUI的基本结构和使用方法,熟悉算法研究与仿真的一般过程与MA TLAB 软件,巩固和加深学生在图像处理方面的专业知识技能,提高学生分析问题、解决问题的能力。
同时,培养学生掌握一定的编程技巧,积累经验。
二、毕业设计(论文)的技术参数(研究内容)“基于MA TLAB/GUI的图像边缘检测算法研究与仿真”应包含如下内容:1.图片可任意导入;2.经过图像边缘检测算法处理后的图片能导出成JPG等格式保存;3.至少使用三种图像边缘检测算法进行比较;4.图像可以简单缩放;5.多种图像边缘检测算法分析优缺点。
三、毕业设计(论文)应完成的具体工作1. 熟悉MA TLAB图像处理库函数及GUI的使用;2. 利用GUI设计图像边缘检测处理界面;3. 利用多种算法实现图像边缘检测处理;4. 对比分析所采用算法的优缺点;5. 翻译外文专业文献一篇;6. 依据同济大学浙江学院本科生毕业设计的规范要求,撰写《毕业设计(论文)》一篇,并进行毕业论文答辩。
matlab基于区域轮廓的代码
基于区域的活动轮廓算法matlab代码2011-06-11 21:25% Region Based Active Contour Segmentation%% seg = region_seg(I,init_mask,max_its,alpha,display)%% Inputs: I 2D image% init_mask Initialization (1 = foreground, 0 = bg)% max_its Number of iterations to run segmentation for% alpha (optional) Weight of smoothing term% higer = smoother. default = 0.2% display (optional) displays intermediate outputs% default = true%% Outputs: seg Final segmentation mask (1=fg, 0=bg)%% Description: This code implements the paper: "Active Contours Without % Edges" By Chan Vese. This is a nice way to segment images whose% foregrounds and backgrounds are statistically different and homogeneous. %% Example:% img = imread('tire.tif');% m = zeros(size(img));% m(33:33+117,44:44+128) = 1;% seg = region_seg(img,m,500);%% Coded by: Shawn Lankton ()%------------------------------------------------------------------------function seg = region_seg(I,init_mask,max_its,alpha,display)%-- default value for parameter alpha is .1if(~exist('alpha','var'))alpha = .2;end%-- default behavior is to display intermediate outputsif(~exist('display','var'))display = true;end%-- ensures image is 2D double matrixI = im2graydouble(I);%-- Create a signed distance map (SDF) from maskphi = mask2phi(init_mask);%--main loopfor its = 1:max_its % Note: no automatic convergence testidx = find(phi <= 1.2 & phi >= -1.2); %get the curve's narrow band%-- find interior and exterior meanupts = find(phi<=0); % interior pointsvpts = find(phi>0); % exterior pointsu = sum(I(upts))/(length(upts)+eps); % interior meanv = sum(I(vpts))/(length(vpts)+eps); % exterior meanF = (I(idx)-u).^2-(I(idx)-v).^2; % force from image information curvature = get_curvature(phi,idx); % force from curvature penaltydphidt = F./max(abs(F)) + alpha*curvature; % gradient descent to minimize energy%-- maintain the CFL conditiondt = .45/(max(dphidt)+eps);%-- evolve the curvephi(idx) = phi(idx) + dt.*dphidt;%-- Keep SDF smoothphi = sussman(phi, .5);%-- intermediate outputif((display>0)&&(mod(its,20) == 0))showCurveAndPhi(I,phi,its);endend%-- final outputif(display)showCurveAndPhi(I,phi,its);end%-- make mask from SDFseg = phi<=0; %-- Get mask from levelset%---------------------------------------------------------------------%---------------------------------------------------------------------%-- AUXILIARY FUNCTIONS ----------------------------------------------%---------------------------------------------------------------------%---------------------------------------------------------------------%-- Displays the image with curve superimposedfunction showCurveAndPhi(I, phi, i)imshow(I,'initialmagnification',200,'displayrange',[0 255]); hold on; contour(phi, [0 0], 'g','LineWidth',4);contour(phi, [0 0], 'k','LineWidth',2);hold off; title([num2str(i) ' Iterations']); drawnow;%-- converts a mask to a SDFfunction phi = mask2phi(init_a)phi=bwdist(init_a)-bwdist(1-init_a)+im2double(init_a)-.5;%-- compute curvature along SDFfunction curvature = get_curvature(phi,idx)[dimy, dimx] = size(phi);[y x] = ind2sub([dimy,dimx],idx); % get subscripts%-- get suba=rand(1)*9scripts of neighborsym1 = y-1; xm1 = x-1; yp1 = y+1; xp1 = x+1;%-- bounds checkingym1(ym1<1) = 1; xm1(xm1<1) = 1;yp1(yp1>dimy)=dimy; xp1(xp1>dimx) = dimx;%-- get indexes for 8 neighborsidup = sub2ind(size(phi),yp1,x);iddn = sub2ind(size(phi),ym1,x);idlt = sub2ind(size(phi),y,xm1);idrt = sub2ind(size(phi),y,xp1);idul = sub2ind(size(phi),yp1,xm1);idur = sub2ind(size(phi),yp1,xp1);iddl = sub2ind(size(phi),ym1,xm1);iddr = sub2ind(size(phi),ym1,xp1);%-- get central derivatives of SDF at x,yphi_x = -phi(idlt)+phi(idrt);phi_y = -phi(iddn)+phi(idup);phi_xx = phi(idlt)-2*phi(idx)+phi(idrt);phi_yy = phi(iddn)-2*phi(idx)+phi(idup);phi_xy = -0.25*phi(iddl)-0.25*phi(idur)...+0.25*phi(iddr)+0.25*phi(idul);phi_x2 = phi_x.^2;phi_y2 = phi_y.^2;%-- compute curvature (Kappa)curvature = ((phi_x2.*phi_yy + phi_y2.*phi_xx -2*phi_x.*phi_y.*phi_xy)./...(phi_x2 + phi_y2 +eps).^(3/2)).*(phi_x2 + phi_y2).^(1/2);%-- Converts image to one channel (grayscale) double function img = im2graydouble(img)[dimy, dimx, c] = size(img);if(isfloat(img)) % image is a doubleif(c==3)img = rgb2gray(uint8(img));endelse % image is a intif(c==3)img = rgb2gray(img);endimg = double(img);end%-- level set re-initialization by the sussman method function D = sussman(D, dt)% forward/backward differencesa = D - shiftR(D); % backwardb = shiftL(D) - D; % forwardc = D - shiftD(D); % backwardd = shiftU(D) - D; % forwarda_p = a; a_n = a; % a+ and a-b_p = b; b_n = b;c_p = c; c_n = c;d_p = d; d_n = d;a_p(a < 0) = 0;a_n(a > 0) = 0;b_p(b < 0) = 0;b_n(b > 0) = 0;c_p(c < 0) = 0;c_n(c > 0) = 0;d_p(d < 0) = 0;d_n(d > 0) = 0;dD = zeros(size(D));D_neg_ind = find(D < 0);D_pos_ind = find(D > 0);dD(D_pos_ind) = sqrt(max(a_p(D_pos_ind).^2, b_n(D_pos_ind).^2) ... + max(c_p(D_pos_ind).^2, d_n(D_pos_ind).^2)) - 1;dD(D_neg_ind) = sqrt(max(a_n(D_neg_ind).^2, b_p(D_neg_ind).^2) ... + max(c_n(D_neg_ind).^2, d_p(D_neg_ind).^2)) - 1;D = D - dt .* sussman_sign(D) .* dD;%-- whole matrix derivativesfunction shift = shiftD(M)shift = shiftR(M')';function shift = shiftL(M)shift = [ M(:,2:size(M,2)) M(:,size(M,2)) ];function shift = shiftR(M)shift = [ M(:,1) M(:,1:size(M,2)-1) ];function shift = shiftU(M)shift = shiftL(M')';function S = sussman_sign(D)S = D ./ sqrt(D.^2 + 1);。
matlab应用GUI的图像处理编程
图像 增 强就是 采用 一系 列技 术去 增强 图 表 1 : S o b e l 算子中各个点的像素点的关系图 ( i - 1 j - 1 ) ( - 1 )
.
+
1 . 3 6 U I 开 发 的 流程
扩 大亮度 间 隔 ~属 于拉伸 ,在亮 度值较 低 的
部分缩小亮度间隔 ~属于压缩 , 数学表达式
从而 实现图像处理 软件功能,主 要回调函数代
= l
叩
k
D
+
开发一 个 G UI 程序 的过 程主要 有两 个重
码和n l o g C a l l b a c k ( h Ob j e c t ,e v e n t d a t a , 具有独特性质 的区域并提 出感兴趣 目标 的技术 h a n d l e s ) f un c t i o n my gu i Op e n i n g F c n ( h 0b j e c t , 和过程 。它是 由图像处理到 图像分析的关键步 f u nct i on hi s t e ql Ca l l b a c k ( h Ob j e c t , e v e n t d a t a , h a n d l e s , v a r a r g i n ) 骤。现有的图像分割方法主要分 以下几类 :基 e v e n t d a t a , h a n d l e s ) 所 有 的启 动参 数 都是 通 过 v a r a r g i n传 于阈值 的分割方法 、基于 区域 的分割方法 、基 f unct i o n hi s t e q2 Ca l l b a c k ( h Ob j e c t , 到它 的 O p e n i n g F c n里 面 的 。 启 动 参 数 可 以 于边缘 的分割方法 以及基于特定理论 的分割方 e v e n t d a t a , h n a d l e s ) 包 括 :1 、f i g u r e , 也 就 是 窗 口 参 数 , 例 如 法等 。本文主要通过基于边缘 的方法 ,在算法 f unc t i o n a ve r a ge Ca l l b a c k ( h Ob j e c t , p o s i t i o n之 类 。 打 开 G UI时, 使 用 这 个 命 里主要 实现 了包括 s o b e l 算子 内的多种 分割算 e v e r l t d a t a , h a n d l e s ) 令 my g u i ( ’ P o s i t i o n ’ , [ 4 3 4 2 3 4 2 3 4 3 4 】 ) 则 表 示 法。 S o b e l 算子梯度幅值计算如表 l 所示 。( i j ) f unc t i o n a vg t hr e e Ca l l b a c k ( h Ob j e c t , 打 开 窗 口在 这 个 位 置; 还 有 哪 些 可 控 属 性 为当前 的位置点,梯度幅值计算公式如下: e v e n t d a t a , h a n d l e s ) 可以查 h e 2 、 自定 义 参 数 如 果 传 入 的 f unct i o n a vgf i ve Ca 1 l b a c k ( h 0b j e c t , 参数不是 f i g u r e的 属 性 ( ma t l a b查 找 不 到 输
MATLAB计算的可视化和GUI设计
4.1 二维曲线的绘制 4.2 MATLAB的三维图形绘制 4.3 MATLAB的特殊图形绘制 4.4 图形窗口的功能 4.5 对话框 4.6 句柄图形 4.7 用户图形界面设计
a
1
4.1二维曲线的绘制
➢ 4.1.1基本绘图命令
plot命令是MATLAB中最简单而且使用最广泛的一个绘图命令,用来
39预定义色图函数表48预定义色图的函数表命令说明hsvhsv的颜色对照表默认值以红色开始和结束hot代表暖色对照表黑红黄白浓淡色cool代表冷色对照表青品红浓淡色summer代表夏天色对照表绿黄浓淡色gray代表灰色对照表灰色线性浓淡色copper代表铜色对照表铜色线性浓淡色autumn代表秋天颜色对照表红黄浓淡色winter代表冬天色对照表蓝绿浓淡色spring代表春天色对照表青黄浓淡色bone代表x光片的颜色对照表pink代表粉红色对照表粉红色线性浓淡色flag代表旗帜的颜色对照表红白蓝黑交jethsv的变形以蓝色开始和结束prim代表三棱镜对照表红橘黄黄绿蓝交错上表每行的函数默认产生一个643的色图矩阵可以改变函数的参数产生一个m3的色图矩阵
hold
%在以上两个命令中切换
说明:在设置了“hold on”后,如果画多个图形对象,则在生成
新的图形时保留当前坐标系中已存在的图形对象,MATLAB会根据新图
形的大小,重新改变坐标系的比例。
a
14
4.1.3多个图形绘制的方法
【例4.7】在同一窗口画出函数sinx在区间[0 2π]的曲线和cosx 在区间[-π π]的曲线,如图4.7(a)所示。
a
11
4.1.3多个图形绘制的方法
1. 指定图形窗口
基于Matlab GUI角点和边缘检测软件开发与实现
3 1 5 8 0 0 )
( 宁波职 业技 术 学 院 电子 信 息 工程 系 ,浙 江 宁波
摘
要 :基 于 Ma t l a b / G U I 开 发 了角 点 和 边 缘 检 测 软 件 , 设 计 的软 件 平 台可 实 现 图像 的装 载 、 角 点 检测 、 角 点 数
( 2 )打开 各 对象 的属 性查 看 器 , 设置 G U I 中
收 稿 日期 :2 0 1 4 — 0 6 — 3 0
息 来反 应 图像 的局 部特 征 。为 简化每个 基 本模块
的设计 , 本 文采用 了层 次化设计 方法 。 设计 的总体 方 案如 图 1 所示。
图 1中 . 软 件 总 平 台包 括 角 点 检 测 和 边 缘 检
将过 重处 理枝 节信息 ,因此 需要 调整 阀值来 获得 理想 的检测结 果 。
3 结 论
本文 以Ma t l a b / G U I 为软件开发平 台 , 实现 了一 个 可 以实现 角点 和边缘 检测 的系统 。角点 检测 提 供 了两种不 同 的检测算 子 ,可 以实 时显示 角点 检
测 分模 块 ,各 自分别 实 现角点 检测 和边缘检 测功
基 金 项 目 :宁 波 职业 技 术 学 院 2 0 1 3年 度 科 研 项 目( N Z 1 3 0 1 9 Z F ) 作 者 简 介 :胡 国伟 ( 1 9 8 4 一 ) , 男, 浙 江 兰溪 人 , 宁 波 职业 技 术 学 院助 教 , 在 职博 士 研 究 生 , 研 究 方 向为 视 觉 机 器 人 导 航 技术 。
2 0 1 4 年 1 0 月
宁 波 职 业 技 术 学 院 学 报
MATLAB- GUI介面的设计
MATLAB- GUI介面的設計作者:胡哲銘國立台灣大學電信工程學研究所前言:這個講座專區是根據MATLAB介面開發與編譯技巧(第二版,李顯宏編著)這本書來做說明介紹並且用我碩論題目開發的程式來進行實例解說。
基本上,GUI設計不難,只要搞清楚GUI內建物件的選項功能以及輸出輸入的關係,你也可以設計出一套不錯的GUI程式介面。
建議已經有MATLAB撰寫基礎的人,可以直接從MATLAB介面開發與編譯技巧這本書的第九章開始研讀,此章節主要介紹如何透過GUIDE將GUI物件建立於介面中,並且建構出彈性化且美觀的人機介面。
Fig.1 的GUI介面是我碩論用來實現QBH(Querying By Humming)的程式介面,接下來我會一一說明其中各個方塊的撰寫方式。
Fig.1新手入門:打開Matlab,在Command Window打GUIDE,則會出現以下畫面:若是要開啟一個新的空白介面,選擇Blank GUI (Defualt),若是已經有舊的GUI 存檔(副檔名是.fig),則選擇Open Existing GUI。
現在以下是一個已經開啟的空白GUI設計介面:能鍵點選想要的功能鍵並且拖曳到座標方格中你想要的任何位置上圖中的功能鍵,每個鍵都有自己的功能:Push Button Radio Button Edit Text Pop-up Menu Slide Check Box Static Text List Box Table Panel Toggle ButtonAxes ActiveX ControlButton Group功能鍵功能鍵:Property:對於任一功能選項,點選右鍵,再選擇Property Inspector,則可以進行屬性的編輯。
點選進入後,一些常用的選項如:Tag, String, Font Size, Value (事實上,我寫的QBH介面幾乎只編輯這四個選項,這些已經蠻夠用的)。
基于Matlab的图形轮廓提取及填充
上面我们研究了如何提取黑白图形的轮廓, 其实在我们获得的网络图像图形资源中, 还经常得到一些轮廓图形, 我们需要将这 些轮廓填充起来作为形状来研究, 因此有必要研究如何有效地填充边界轮廓。为便于实验, 本文中用来填充的轮廓图形都是简单的 轮廓图形。
轮廓都是一个闭合的曲线, 但有些图形的边界非常接近画布的边缘, 以至于在填充时程序往往将这部分区域作为对象外部区 域, 即背景来考虑, 这样就导致轮廓的范围被改变, 从而不能正确填充。因此在填充前, 我们需要利用 photoshop 中的动作命令将轮 廓图形的画布变得稍大一些, 例如原始图像画布大小为 256*256, 那么我们可以将其尺寸改为 280*280, 这样, 一些轮廓点就不会距 离画布边缘过近了。
收稿日期: 2008- 02- 14 作 者 简 介 : 井 艾 斌 , 女 , 山 东 师 范 大 学 传 播 学 院 2006 级 硕 士 研 究 生 , 研 究 方 向 : 计 算 机 教 育 应 用 ; 柳 青 , 女 , 山 东 师 范 大 学 传 播 学 院
2005 级硕士研究生, 研究方向: 计算机教育应用; 孟祥增, 男, 山东师范大学传播学院教授, 研究方向: 计算机教育应用。
画布尺寸处理好以后, 我们就可以进行填充了。目前研究比较多的填充算法有扫描线算法、种子填充算法等。但这些算法的代 码不易编写, 而且对于简单的形状来说, 这些算法显得比较繁琐, 针对我们的实验中使用的轮廓图形比较简单的特点, 我们提出了 一种较为简单的轮廓填充思想, 这种算法共分为两大步, 这里我们所取一幅背景为黑色的帽子的轮廓图”hat.bmp”为例, 如图 4。
另外, 因为我们需要研究的对象是形状而非内部细节, 所以本文所涉及的轮廓, 指图形的外轮廓, 不包括图形内部的孔洞所围 成的内部边界, 例如, 对于示例图 1, 我们所期望得到的轮廓是如图 3 所示的外轮廓, 而非图 2 所示图形的整个内外边界轮廓。
matlab图像轮廓识别
matlab gui图像轮廓识别本程序利用matlab软件设计可视化gui界面,实现图像轮廓识别。
程序界面如图,可以读取图片、显示边缘,并与原图对比。
首先将,图片与主程序、fig文件放到同一文件夹内,如图所示运行gui3.m程序,即可显示gui界面,点击读取图片,选择一个图片,如图所示选中边缘选框,则如图所示选中原图+边缘选框,则如图所示选中清除图像,即可再读取其他图片。
点击退出按钮,则退出gui界面。
gui3.m主程序如下:function varargout = gui3(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @gui3_OpeningFcn, ... 'gui_OutputFcn', @gui3_OutputFcn, ... 'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});endfunction gui3_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);function varargout = gui3_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.output;% --- Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) global im%选择图片路径[filename,pathname]=...uigetfile({'*.jpg';'*.bmp';'*.gif'},'选择图片');%合成路径+文件名str=[pathname filename];%读取图片im=imread(str);%使用第一个axesaxes(handles.axes1);%显示图片imshow(im);% --- Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) close(gcf)% --- Executes when selected object is changed in uipanel1. function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)global imstr=get(hObject,'string');axes(handles.axes1);A=im;B=rgb2gray(A);level = graythresh(B); %得到合适的阈值C= im2bw(B,level); %二值化SE = strel('square',3); %设置膨胀结构元素D = imdilate(C,SE); %膨胀SE1 = strel('arbitrary',eye(5)); %设置腐蚀结构元素E = imerode(C,SE1); %腐蚀F = bwmorph(C, 'close '); %闭运算G=edge(F,'canny');G1=im2double(A);switch strcase '原图'imshow(im);case '边缘'imshow(G);case '原图+边缘'[x,y]=find(G);imshow(G1);hold onplot(y,x,'r.')case '清除图像'cla resetend% hObject handle to the selected object in uipanel1 % eventdata structure with the following fields (seeUIBUTTONGROUP)% EventName: string 'SelectionChanged' (read only)% OldValue: handle of the previously selected object or empty if none was selected% NewValue: handle of the currently selected object% handles structure with handles and user data (see GUIDATA)% --- Executes during object creation, after setting all properties.function uipanel1_CreateFcn(hObject, eventdata, handles)% hObject handle to uipanel1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called。
基于MATLAB_GUI信号与系统教学软件设计 精品
目录1 引言 (1)1.1论文写作背景 (1)1.2研究问题的提出 (1)1.3研究问题的解决方案 (1)2 MATLAB软件简介 (2)2.1 MATLAB发展过程 (2)2.2 MATLAB入门及其结构 (3)2.3 MATLAB在信号与系统中的应用 (4)3 信号与系统知识结构 (4)3.1信号与系统课程简介 (4)3.2基于教学软件中有关信号与系统的知识结构 (5)3.2.1 信号的频域分析 (5)3.2.2 系统的频域分析 (7)3.2.3教学软件中相关知识结构 (9)4 GUI界面的创建与应用 (9)4.1GUI界面的基本知识 (9)4.2信号与系统教学软件GUI设计 (11)4.2.1GUI主界面的设计 (11)4.2.2周期信号频域分析 (12)4.2.3非周期信号频域分析 (14)4.2.4系统的频率响应 (23)结论 (25)参考文献 (26)致谢 (27)1 引言1.1论文写作背景随着社会科技的高速发展以及计算机网络的普及,对信息应用的研究就变得非常重要,而其中对信号波形的模拟可以方便研究人员进行科学研究。
“信号与系统”课程的特点是概念抽象,数学运算量大、公式和理论推导相对较多,因此一直处于教难、学更难的境况中,这就更加需要通过实验来帮助学生理解这些抽象概念。
学校开设的传统实验均在实验室的硬件实验设备上完成,设备的使用存在空间、时间上的局限性,另外,对仪器操作不当等因素导致无法看到正确的波形。
而用软件对信号波形进行仿真有着界面可视性强,操作简单方便;便于数据修改,文件保存,实验效率高,实验内容丰富,结果直观易懂,便于分析的优点,同时可以让学生对相关课程产生兴趣,所以使用软件有必要而且急为迫切。
1.2研究问题的提出在学习“信号与系统”这门课程时,由于该课程对数学要求较高,理论结果往往来源于复杂的数学运算及推导,这就导致学生将大量的时间用于进行手工数学运算(如微分、积分、方程求解、多项式求根等),而未真正理解分析结果在信号处理中的实际应用。
MATLAB计算可视化和GUI设计doc
实验报告专用纸实验室:机号:实验日期:课程名称MATLAB实用教程实验项目名称MATLAB计算可视化和GUI设计实验组别第组同组者教师评语及成绩:实验成绩:教师签字:(请按照实验报告的有关要求书写,一般必须包括:1、实验目的;2、实验内容;3、实验步骤与方法;4、实验数据与程序清单;5、出现的问题及解决方法;6、实验结果、结果分析与体会等内容。
)一、实验目的1.熟练掌握MATLAB二维曲线的绘制和修饰2.掌握三维图形的绘制3.熟练掌握各种图形的绘制4.掌握句柄图形的概念和GUI设计二、实验内容(1)绘制二维曲线把图形窗口分割为2行2列,在窗口1中绘制1条正弦曲线y=sin(2*pi*t),t∈[0,2];在窗口2中绘制3条衰减的单边指数曲线y=e^(-t)、y=e^(-2t)和y=e^(-3t),t∈[0,2];在窗口3中绘制1个矩形脉冲信号,脉冲宽度为1,高度为2,开始时间为1;在窗口4中绘制1个单位圆。
(2)绘制多条二阶系统时域曲线和三维图形1.在同一平面绘制多条二阶系统时域曲线。
2.使用句柄图形3.使用图形窗口功能4.绘制三维图形(3)特殊图形1.绘制条形图2.绘制实心图3.绘制阶梯图4.绘制火柴图(4)GUI设计1.设计界面2.设计控件属性实验报告附页实验名称MATLAB计算可视化和GUI设计3.回调函数三、实验步骤与方法(1)绘制二维曲线1.使用subplot函数,在窗口中按照先向右、后向下的顺序绘制多个子图2.使用title语法为子图添加标题3.使用axis([xmin,xmax,ymin,ymax])命令为第2个子图设置坐标范围4.使用axis equal命令将第4个子图的坐标轴设置为等长刻度(2)绘制多条二阶系统时域曲线和三维图形1.在同一平面绘制多条二阶系统时域曲线。
a)使用plot函数绘制1条阻尼系数zeta=0的二阶系统曲线b)使用hold on命令在同一窗口叠绘4条曲线c)使用title和legend分别为曲线添加标题和图例d)使用grid on为曲线添加网格e)使用gtext将文字写在鼠标单击的地方f)使用ginput获取鼠标单击任意三点的图形数据2.使用句柄图形a)使用gcf命令获取当前图形窗口句柄b)使用gca命令获取当前坐标轴句柄c)使用gco命令获取被鼠标最近单击的对象的句柄使用get(h_obj,’PropertyName’)获取句柄对象指定标题的当前值d)使用h=findobj(h_obj,’PropertyName’,PropertyValue)获取文字句柄e)使用set函数来设置对象的属性值3.使用图形窗口功能选择菜单“View”→“Property Editor”命令,打开图形的属性窗口,单击图形中的对象打开的当前对象属性,在属性窗口设置各图形对象的属性。
基于MATLAB和GUI的零件图像识别
关于学位论文使用授权的声明
本人完全了解山东大学有关保留、使用学位论文的规定,同意学 校保留或向国家有关部门或机构送交论文的复印件和电子版,允许论 文被查阅和借阿;本人授权山东大学可以将本学位论文的全部或部分 内容编入有关数据库进行检索,可以采用影印、缩印或其他复制手段 保存论文和汇编本学位论文。
(保密论文在解密后应遵守此规定)
像采集卡)、图像处理软件、监视器、通讯/输入输出单元等。视觉系统首先
采用摄像机将被摄取目标转换成图像信号,传送给专用的图像处理系统,根
据像素分布和亮度、颜色等信息,转变成数字化信号;然后,图像系统对这
些信号进行各种运算来抽取目标的特征,如面积、长度、数量、位置等;最
后,根据预设的容许度和其他条件输出结果,如:尺寸、角度、偏移量、个
围较广,可以检测任意直线,但仍然需要较多计算时间,为此本文又提出了
基于随机霍夫变换法的搜索方法.该方法计算量小,比较适用于检测图像边
缘的直线特征。对于圆的检测,常用的方法仍然是霍夫变换法及其改进算法。
本文在随机霍夫变换法的基础上运用圆的性质对算法做了改进,减少了计算
量。应用该方法可以提取复杂图像中的圆。
industry.At present,the detection of parts’dimensions is done manually,which not only increases the workers’labouring intension, but also is difficult to guarantee the quality of parts.Especially for the manual detection of form—position error,it takes much time and the precision is not high.In the recent years,with the application of machine vision in industry detection,it is a necessary trend of modern manufacture to apply computer technology to detect parts’dimensions.
matlab gui教程
之阳早格格创做什么是GUI呢 ? GUI是Graphical User Interface 图形用户界里的意义,象很多下档编程谈话一般,Matlab也有图形用户界里启垦环境,随着估计机技能的飞快死长,人取估计机的通疑办法也爆收的很大的变更,从本去的下令止通讯办法(比圆很早的DOS系统)变更到了当前的图形界里下的接互办法,而当前绝大普遍的应用步调皆是正在图形化用户界里下运止的.记得读书籍的时间,大教启教没有暂,书籍院很多共教便启初报考世界估计机等第考查了,天然尔也是其中的一分子,其中C谈话是大普遍人采用的科目,当时正在教C谈话的时间,时常也会逢到人机接互的例子,譬如一个估计二个数相加的步调,运止步调后便切换到了Dos模式,而后正在此模式下输进二个数,再回车,才搞返回运算截止.当时便感触很没有便当,也没有友佳,厥后才得知C谈话是里背历程的谈话,利害里背对于象的谈话(VC++,VB,Matlab等是里背对于象的).那么底下咱们便去瞅瞅Matlab是怎么样简朴、赶快而友佳天办理那类问题的吧.Matlab GUI编程教程(适用于初教者)1.最先咱们新修一个GUI文献:File/New/GUI 如下图所示;采用Blank GUI(Default)2.加进GUI启垦环境此后增加二个编写文本框,6个固态文本框,战一个按钮,安插如下图所示;安插佳各控件此后,咱们便不妨去为那些控件编写步调去真止二数相加的功能了.3.咱们先为数据1文本框增加代码;面打上图所示黑色圆框,采用edit1_Callback,光标便坐刻移到底下那段代码的位子.function edit1_Callback(hObject, eventdata, handles)% hObject handle to edit1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text% str2double(get(hObject,'String')) returns contents of edit1 as a double而后正在上头那段代码的底下拔出如下代码:%以字符串的形式去保存数据文本框1的真质. 如果字符串没有是数字,则现真空黑真质input = str2num(get(hObject,'String'));%查看输进是可为空. 如果为空,则默认隐现为0if(isempty(input))set(hObject,'String','0')endguidata(hObject, handles);那段代码使得输进被庄重节造,咱们没有克没有及试图输进一个非数字.4.为edit2_Callback增加共样一段代码5当前咱们为估计按钮增加代码去真止把数据1战数据2相加的手段.用3中共样的要领正在m文献中找到pushbutton1_Callback 代码段如下;function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)正在上头那段代码后增加以下代码;a = get(handles.edit1,'String');b = get(handles.edit2,'String');% a and b are variables of Strings type, and need to be% converted to variables of Number type before they can% be added together%str2num(a) + str2num(b);c = num2str(total);% need to convert the answer back into String type to% display itset(handles.text1,'String',c);guidata(hObject, handles);底下咱们去对于上头那段步调分解一下;a = get(handles.edit1,'String');b = get(handles.edit2,'String');上头那止代码把用户输进的数据存进到变量a,变量b中;% a,b是字符型变量,正在估计二者相加之前需把他们变换为数字型total = str2num(a) + str2num(b);那段代码真止二数相加c = num2str(total);set(handles.text3,'String',c);guidata(hObject, handles);以上二止代码分别用去革新估计截止文本框战图形对于象句柄,普遍Callback回调函数皆以guidata(hObject, handles);j中断以革新数据步调运止如下:。
基于MATLAB的数字成像获取物体三维轮廓的提取与分析_毕业论文
基于数字成像的物体表面轮廓的提取和分析毕业论文基于MATLAB的数字成像获取物体三维轮廓的提取与分析摘要图像由于携带丰富的信息得到人们的青睐,而目前获取图像的方法有拍照,视屏截图,利用计算机产生彩图,激光扫描]1[等等。
从图像中获取景物的三维信息属于一个多学科交叉的研究领域,它涉及到射影几何学、数字图像处理、计算机图形学、计算机视觉等许多学科的理论,是目前研究的热点之一。
三维重建就是通过二维图像中基元(如点、线、面)来恢复目标的三维空间信息,需要研究三维空间中点、线、面的三维坐标与二维图像中对应点、线、面的二维坐标之间的关系,实现定量分析物体的大小和空间物体的相互位置关系。
其主要过程是通过对图像的特征提取、特征匹配、图像关键特征的重建、三角化以及数据融合生成物体完整的三维结构。
这种三维信息或三维模型在虚拟植物可视化、数字娱乐、产品外观设计、虚拟场景的模拟等诸多领域具有广泛的应用价值。
本文提出了利用数字图像处理的方法对图像进行处理以获得目标图像的轮廓,并得到目标图像的轮廓关键点上的坐标,这对接下来的三维重建目标十分关键。
在本文中图像采集之后,首先将其数字化。
数字化之后,计算机利用数字图像处理技术对图像进行彩色预处理、去除背景、图像平滑、彩色转灰度、图像锐化、灰度二值化、腐蚀膨胀、滤波、轮廓提取等处理,并且给出每步处理的图像结果。
关键词:数字成像;图像处理;三维重建;轮廓;坐标AbtractImage which due to the rich information to get the favour of people,At present, image acquisition methods are taking pictures, screen shots, and produce images by computer, laser scanning etc..Three-dimensional information obtained from two-dimensional images is an interdisciplinary research field, it involves many subjects of projective geometry, digital image processing, computer graphics, computer vision theory, is a research hotspot. Three-dimensional reconstruction is through 2D image primitives (such as point, line, surface) three-dimensional spatial information to restore the target, need to study three-dimensional point, line, surface 3D coordinate and 2D image corresponding points, lines, surfaces two-dimensional coordinate relationship, relationship between size and space objects to realize quantitative analysis of objects the. The main process is through the feature extraction, feature of image matching, reconstruction of key characteristics, triangulation and data fusion to generate complete object three-dimensional structure. This 3D information or 3D models have wide applications in virtual plant visualization, digital entertainment, product design, virtual scene simulation etc.This paper proposes the method of digital image processing to deal with the image we have got in order to obtain a target image contour, and get the coordinates of key points on the contour of the target image, which play a key role on the next step of three-dimensional reconstruction . In this paper we should firstly digitize the image acquisition, After digitaliztion, computer will make use of digital image processing technology for pretreatment, remove the background color, image smoothing,color to gray, image sharpening,gray value of two, corrosion expansion, filtering, contour extraction, and other image processing, and gives the result among erey steps of image processing. Key words : Digital imaging;image processing;3D reconstruction;contour;coordinate目录摘要 (1)Abstract (2)目录 (3)第一章绪论 (5)1.1论文研究的背景 (5)1.1.1三维测量技术的背景 (5)1.12数字图像处理的发展情况 (6)1.2数字成像与轮廓提取技术在国内外的发展 (7)1.3论文研究的主要内容 (7)1.4论文的安排 (8)第二章光学成像系统和图像系统的设计 (8)2.1光学成像系统的搭建 (8)2.1.1摄像系统的方案选择 (8)2.1.2摄像机的参数选择 (13)2.1.3光照系统的设计 (14)2.1.4光学成像系统的搭建效果 (16)2.2摄像机的标定 (16)2.2.1摄像机的标定原理 (16)2.2.2摄像机的标定过程 (17)2.3图像采集 (18)2.3.1图像采集的工作过程 (18)2.3.2D-S4004HC图像采集卡 (19)2.3.3PCI-2312光电隔离DI/D0卡 (20)2.3.4软件设计流程 (21)第三章数字图像处理的基本理论 (23)3.1数字图像处理的基本知识 (23)3.1.1数字图像的表示方法 (24)3.1.2数字图像的颜色模型 (25)3.2图像平滑 (25)3.2.1中值滤波 (26)3.2.2均值滤波 (26)3.3图像锐化 (27)3.3.1一阶微分运算 (27)3.3.2基于拉氏算子的图像锐化处理 (28)3.4图像表示方法相互转化 (29)3.4.1彩色图像转为灰度图像 (29)3.4.2灰度图像二值化 (29)3.5二值图像的形态学处理 (30)3.5.1图像膨胀 (30)3.5.2图像腐蚀 (30)3.6MATLAB软件的简介 (31)第四章数字图像处理的实现 (32)4.1图像的读取与显示 (33)4.2彩色图像预处理 (33)4.3彩色图像转为灰度图 (34)4.4图像的锐化与边缘检测 (35)4.4.1图像的锐化 (35)4.4.2图像的边缘检测 (35)4.5灰度图像的二值化 (36)4.6二值图像的处理 (37)4.6.1腐蚀膨胀处理 (37)4.6.2二值图像的中值滤波 (38)4.6.3连通域标记法滤波 (39)4.6.4水杯各分面的轮廓提取 (41)4.7 提取水杯分面的轮廓坐标 (43)4.7.1建立四个分面的二维坐标系 (43)4.7.2四个分面的三维坐标系 (44)4.7.3选取特征点 (44)第五章系统介绍与误差分析 (46)5.1系统各环节的误差分析 (46)5.1.1仪器产生的误差 (46)5.1.2数字图像处理过程中的误差 (46)5.1.3环境引起的误差 (47)第六章总结与展望 (48)参考文献: (49)第一章绪论1.1论文研究的背景1.1.1三维测量技术的背景21世纪是信息化的时代,而在信息学研究中以图像为载体的信息处理占据重要位置,图像工程]2[已经渗透到各个学科,从工业机器上的视觉检测,医学上的病变诊断,多媒体通信与娱乐,等各个方面都有巨大的用途。
基于Matlab GUI的复杂曲面轮廓度误差评定系统
E RRoR BAS E D oN MA TL A B GUI
B u X i a o y a n C a i P i n g G u o J u n j i e Y u a n G u o y i n g
( D e p a r t m e n t o fI n s t r u me n t S c i e n c e a n d T e c h n o l o g y , S h a n g h a i ∞ T o n g U n i v e r s i t y , S h a n g h a i 2 0 0 2 4 0 ,C h i n a ) 。 ( S c h o o l f Me o c h a n i c a l E n g i n e e r i n g, X i ' a n J i a o t o n g U n i v e r s i t y ,X i ' a n 7 1 0 0 4 9, S h a a n x i , C h i n a )
卜 晓燕 蔡 萍 郭俊杰 苑国英
( 上海交通大学仪器科学与技术系 上海 2 0 0 2 4 0 )
( 西安交通大学机械工程学院 陕西 西安 7 1 0 0 4 9 )
摘 要 在分析现有 的复杂 曲面轮廓度误差评 定方 法 的基础 上 , 开发基 于 M a t l a b G U I 的复杂 曲面轮廓 度误 差 的可视化 评定 系 统。该 系统软件可读取并存储 三坐标 测量机测量所得 的曲面 离散数据 , 对实验测量所得 的数据进行插值 拟合、 测 头半径修 正和 坐标
t i o n me t h o d o f c o mp l e x s u fa r c e p r o i f l e e r r o r .T h e s y s t e m c a n r e a d a n d s t o r e t h e s u f r a c e d i s c r e t e d a t a me a s u r e d b y t h r e e — c o o r d i n a t e s me a s u r i n g
Matlab做图像边缘检测的多种方法
Matlab做图像边缘检测的多种方法Matlab做图像边缘检测的多种方法1、用Prewitt算子检测图像的边缘I = imread('bacteria.BMP');BW1 = edge(I,'prewitt',0.04); % 0.04为梯度阈值figure(1);imshow(I);figure(2);imshow(BW1);2、用不同σ值的LoG算子检测图像的边缘I = imread('bacteria.BMP');BW1 = edge(I,'log',0.003); % σ=2imshow(BW1);title('σ=2')BW1 = edge(I,'log',0.003,3); % σ=3figure, imshow(BW1);title('σ=3')3、用Canny算子检测图像的边缘I = imread('bacteria.BMP');imshow(I);BW1 = edge(I,'canny',0.2);figure,imshow(BW1);4、图像的阈值分割I=imread('blood1.tif');imhist(I); % 观察灰度直方图,灰度140处有谷,确定阈值T=140 I1=im2bw(I,140/255); % im2bw函数需要将灰度值转换到[0,1]范围内figure,imshow(I1);5、用水线阈值法分割图像afm = imread('afmsurf.tif');figure, imshow(afm);se = strel('disk', 15);Itop = imtophat(afm, se); % 高帽变换Ibot = imbothat(afm, se); % 低帽变换figure, imshow(Itop, []); % 高帽变换,体现原始图像的灰度峰值figure, imshow(Ibot, []); % 低帽变换,体现原始图像的灰度谷值Ienhance = imsubtract(imadd(Itop, afm), Ibot);% 高帽图像与低帽图像相减,增强图像figure, imshow(Ienhance);Iec = imcomplement(Ienhance); % 进一步增强图像Iemin = imextendedmin(Iec, 20); figure,imshow(Iemin) % 搜索Iec中的谷值Iimpose = imimposemin(Iec, Iemin);wat = watershed(Iimpose); % 分水岭分割rgb = label2rgb(wat); figure, imshow(rgb); % 用不同的颜色表示分割出的不同区域6、对矩阵进行四叉树分解I = [ 1 1 1 1 2 3 6 61 12 1 4 5 6 81 1 1 1 10 15 7 71 1 1 1 20 25 7 720 22 20 22 1 2 3 420 22 22 20 5 6 7 820 22 20 20 9 10 11 1222 22 20 20 13 14 15 16];S = qtdecomp(I,5);full(S)7、将图像分为文字和非文字的两个类别I=imread('4-11.jpg');I1=I(:,:,1);I2=I(:,:,2);I3=I(:,:,3);[y,x,z]=size(I);d1=zeros(y,x);d2=d1;myI=double(I);I0=zeros(y,x);for i=1:xfor j=1:y%欧式聚类d1(j,i)=sqrt((myI(j,i,1)-180)^2+(myI(j,i,2)-180)^2+(myI(j,i,3)-180)^2);d2(j,i)=sqrt((myI(j,i,1)-200)^2+(myI(j,i,2)-200)^2+(myI(j,i,3)-200)^2);if (d1(j,i)>=d2(j,i))I0(j,i)=1;endendendfigure(1);imshow(I);% 显示RGB空间的灰度直方图,确定两个聚类中心(180,180,180)和(200,200,200)figure(2);subplot(1,3,1);imhist(I1);subplot(1,3,2);imhist(I2);subplot(1,3,3);imhist(I3);figure(4);imshow(I0);8、形态学梯度检测二值图像的边缘I=imread('wrod213.bmp');imshow(I);I=~I; % 腐蚀运算对灰度值为1的进行figure, imshow(I);SE=strel('square',3); % 定义3×3腐蚀结构元素J=imerode(~I,SE);BW=(~I)-J; % 检测边缘figure,imshow(BW);9、形态学实例——从PCB图像中删除所有电流线,仅保留芯片对象I=imread('circbw.tif');imshow(I);SE=strel('rectangle',[40 30]); % 结构定义J=imopen(I,SE); % 开启运算figure,imshow(J);。
MatlabGUI在光学实验仿真中的应用
* 2011-06-04收到,2011-08-20改回** 基金项目:浙江省2011年大学生科技创新项目;湖州师范学院校级科研资助项目(201140)。
***付恋恋,女,1990年生,本科,研究方向:光学设计仿真。
文章编号:1003-5850(2011)10-0015-02Matlab GUI 在光学实验仿真中的应用Application of Matlab GUI to Optical Experiment Simulation付恋恋 蒋记望 陈芳芳 钱淑珍 吴平辉(湖州师范学院理学院 浙江湖州 313000)【摘 要】在光学拍理论的基础上,利用Matlab 图形用户界面的设计与开发功能,制作了简洁美观、可拓展性强的光学拍实验仿真平台。
结果显示,该平台具有人机界面友好、操作简单、参数可调、速度快、可移植性强等优点,为教学和研究工作开辟了新的途径。
【关键词】M atlab,图形用户界面,光学实验仿真,光学拍中图分类号:O 436.1文献标识码:AABSTRACT Ba sed o n t he pr inciple of o ptical beats,t aking adv ant age of t he desig n and dev elo pment function o f M atlab g raphic user inter face (G U I),a simple ,art istic inter face and w ell scala ble optical beat s ex periment s simulatio n platfor m w as cr eated.T he result sho w s that the platfor m has the advantag e of man -machine int er face fr iendly ,opera tio n simple ,par ameters adjust able ,speed ra pidly ,and hig h po rt ability .It o pens up a new w ay fo r teaching and r esear ch .KEYWORDS M atlab ,gr aphic user inter face ,o ptical ex periment simulation ,o ptical beat s M atlab 是M athw orks 公司推出的一套交互式、面向对象的程序设计语言,因具有强大的数值计算能力和系统模拟仿真等优点而得到广泛应用[1-6]。
基于MatlabGUI的形状检测系统设计
58 •电子技术与软件工程 Electronic Technology & Software Engineering图像与多媒体技术• Image & Multimedia Technology【关键词】MTTLAB 图形用户界面(GUI) 形状检测系统 数字图像处理1 引言图像识别主要是对文字、声音和图像等信息进行处理和识别,主要应用于文字识别、目标的检测与识别、生物医学信号和图像分析等方面。
在图像识别与理解的过程中,物体的形状属于高级信息,简单的形状可以组合成更复杂的图形,检测出简单的几何形状,进而识别出复杂图像,在数字图像中对简单几何形状的识别意义重大 。
该文利用MATLAB GUI 设计一个简单的形状识别系统,提取不同形状的边缘特征,检测出简单的几何图形,如圆、矩形、正方形等,可以实现一些简单的工业检测,如简单的零件检测等。
相较于传统的形状检测,该系统不需要人为检测,极大地提高了生产效率。
2 图像预处理形状检测系统载入图像之后需要对图像进行预处理,消除图像中的无关信息,简化图像数据,增强图像的特征,进而增加图像特征提取、分割和识别的可靠性。
一般流程为灰度转换,然后对灰度图像进行图像平滑和提取边缘,运用形状检测算法,得到结果,结束程序。
2.1 灰度转换图像的灰度转换是反应灰度的输入/输出映射关系,增强图像中感兴趣的区域,抑制不感兴趣的区域,达到增强图像对比度的目的。
基于Matlab GUI 的形状检测系统设计文/李阳娟灰度变换处理是一种基础的图像增强处理技术,通过灰度变换可以使图像对比度扩展,图像清晰,从而使图像在视觉上得到改观。
灰度直方图是一种简单、有效的分析图像处理方法,假定灰度直方图的横坐标是灰度级r ,表示灰度值为k 的灰度级,纵坐标是具有该灰度级的像素的概率p(r k ),则直方图可以反映原图灰度值的分布情况,而通过对直方图形状的修改可以增强图像的对比度。
灰度转换处理图像如图1所示。
基于MATLAB GUI的相位测量轮廓术
基于MATLAB GUI的相位测量轮廓术
李凯颖;孙漫凝;边心田
【期刊名称】《光电子》
【年(卷),期】2016(006)001
【摘要】根据相位测量轮廓术的基本原理,利用MATLAB的用户界面设计了基于相位测量轮廓术的仿真交互界面,给出了三维面形测量的仿真结果。
该仿真可以将三维面形测量和实验很好的结合起来,具有一定的参考价值。
文中给出了理论分析和计算机模拟。
【总页数】6页(P20-25)
【作者】李凯颖;孙漫凝;边心田
【作者单位】[1]淮阴师范学院,江苏省现代检测技术与智能系统重点建设实验室,江苏淮安;;[1]淮阴师范学院,江苏省现代检测技术与智能系统重点建设实验室,江苏淮安;;[1]淮阴师范学院,江苏省现代检测技术与智能系统重点建设实验室,江苏淮安【正文语种】中文
【中图分类】TP39
【相关文献】
1.基于相位测量轮廓术的钢轨三维轮廓检测 [J], 肖龙飞;李金龙;高晓蓉;王泽勇;罗林;曾敏
2.基于Matlab GUI的复杂曲面轮廓度误差评定系统 [J], 卜晓燕;蔡萍;郭俊杰;苑国英
3.傅里叶变换轮廓术的MATLAB GUI设计与仿真 [J], 孙漫凝;杨丽娟;束益梅;程菊;
边心田;;;;;
4.基于相位测量轮廓术的车轮踏面三维轮廓测量 [J], 唐涛;彭建平;李金龙;马茹钰
5.基于超分辨率图像重建的在线相位测量轮廓术 [J], 高杰;曹益平;陈锦
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Optoelectronics 光电子, 2016, 6(1), 20-25Published Online March 2016 in Hans. /journal/oe/10.12677/oe.2016.61004Phase Measuring Profilometry Based on GUI MATLABKaiying Li*, Manning Sun, Xintian BianJiangsu Key Construction Laboratory of Modern Measurement Technology and Intelligent System, HuaiyinNormal University, Huaian JiangsuReceived: Mar. 6th, 2016; accepted: Mar. 25th, 2016; published: Mar. 28th, 2016Copyright © 2016 by authors and Hans Publishers Inc.This work is licensed under the Creative Commons Attribution International License (CC BY)./licenses/by/4.0/AbstractAccording to the basic principle of Phase Measurement Profilometry, we design interactive simu-lation interface based on Phase Measuring Profilometry. Simulation result of three dimensional shape measurements was provided. This simulation can combine the 3D shape measurement and experiment well. It has a certain reference value. The theoretical analysis and computer simula-tion were shown in this article.KeywordsThree Dimensional Measurement, GUI Interface, Phase Measurement Profilometry基于MATLAB GUI的相位测量轮廓术李凯颖*,孙漫凝,边心田淮阴师范学院,江苏省现代检测技术与智能系统重点建设实验室,江苏淮安收稿日期:2016年3月6日;录用日期:2016年3月25日;发布日期:2016年3月28日*通讯作者。
李凯颖 等摘 要根据相位测量轮廓术的基本原理,利用MATLAB 的用户界面设计了基于相位测量轮廓术的仿真交互界面,给出了三维面形测量的仿真结果。
该仿真可以将三维面形测量和实验很好的结合起来,具有一定的参考价值。
文中给出了理论分析和计算机模拟。
关键词三维测量,GUI 界面,相位测量轮廓术1. 引言近年来,随着工业的快速发展和科技的进步,光学三维测量技术以其非接触性、测量精度高、测量速度快等优点在制造业、航空航天、文物保护等领域具有广阔的应用前景[1]-[5]。
相位测量轮廓术(Phase Measuring Profilometry ,简称PMP)在三维面形测量中发展迅速,其理论已经相当成熟。
PMP 一般需要采集3帧以上的条纹图来恢复被测物体面形,是目前结构光三维面形测量中精度最高的一种,引起国内外研究者的关注。
在理论教学中,被测物体的三维面形与测量系统结构和相移量有关系。
在实验中,如果将系统的结构参数和光栅相移作为实验内容,由于光学仪器比较精密,调节起来相对复杂,耗费大量的时间。
因此,学生在仪器调节步骤上花费时间长,难以深入观察实验现象、不能更好的理解实验原理。
为了更好的解决以上问题,本文通过MATLAB GUI 技术开发了三维面形测量仿真软件。
该仿真软件可以对相位测量轮廓术在不同参数条件下进行仿真模拟,互动式界面中采用滚动条动态展现系统参数、相移与物体高度之间的关系,仿真结果更加直观,有利于加深学生对PMP 原理的理解和认识,便于学生对PMP 的研究和学习[6]。
2. 测量原理相位测量轮廓术系统原理如图1所示,d ,L 是系统结构参数。
当一幅正弦光栅图像被投影到三维漫反射物体表面上时,通过成像系统获得变形光栅像可表示[7]为()()()()(),,,,cos ,I x y R x y A x y B x y x y φ=+ (1)Figure 1. Principle diagram of measurement system图1. 测量系统原理图李凯颖 等式中,(),R x y 表示物体表面不均匀的反射率,(),A x y 表示背景强度,(),B x y 表示条纹对比度。
相位函数(),x y φ表示了条纹的变形,包含了待测物体的高度信息。
连续投影4幅具有2π相移量的正弦条纹,所产生相应的4帧变形条纹图像可表示为 ()()()()()1,,,,cos ,I x y R x y A x y B x y x y φ=+ (2) ()()()()()2,,,,sin ,I x y R x y A x y B x y x y φ=− (3) ()()()()()3,,,,cos ,I x y R x y A x y B x y x y φ=− (4) ()()()()()4,,,,sin ,I x y R x y A x y B x y x y φ=+ (5)由(2)、(3)、(4)、(5)式,可以计算出相位函数()()()()()4213,,,arctan,,I x y I x y x y I x y I x y φ−=− (6)由上式计算出的相位分布φ被截断在反三角函数的主值范围内,必须将其展开成连续的相位分布。
相位与高度(),h x y 之间的映射关系可以表示[7]为()(),2,L x y h fd x y φφ=π+ (7)利用上式的映射关系就可以计算出待测物体的三维面形。
3. PMP 的GUI 设计与仿真为了更加便捷地操作与直观地展示三维面形测量的仿真结果,在相位测量轮廓术Matlab 程序的基础上添加了GUI 图形用户界面。
GUI 是指采用图形方式显示的计算机操作用户界面,通过GUIDE 工具来设计[8]。
3.1. GUI 界面的设计新建一个fig 文件,命名为PMP_Simulation.fig 。
在布局编辑器中设置如下控件:建立4个坐标轴对象用来显示模拟物体图、变形条纹图、恢复物体图和误差分析图;建立5个静态文本标签,标注相应的控件提示;建立5个可编辑文本框,分别显示系统参数L 、d 、条纹周期T 、噪声noise 和最大误差Error;建立4个滑动条用来控制系统参数L 、d 、条纹周期T 、噪声noise ;建立2个按钮,用来开始和结束程序,如图2所示。
3.2. 程序的调试打开M 文件,进行相关的代码的编写,并将可编辑文本框和滑动条进行相互控制,以便于更改参数的操作。
在MATLAB 里进行相关的代码程序编写之后,将系统参数L 和d 的初始默认值设为75 cm 和20 cm ,条纹周期的初始默认值设为0.4,噪声的初始默认值为0.03,仿真演示时,再根据需要调节参数值或者滑动条。
3.3. 仿真平台的使用在点击开始按钮,并对基本参数进行设置之后,便能够清晰的在交互式界面中显示出模拟物体图、变形条纹图、恢复物体图和误差图,并且能够显示出在这种方法下的最大误差,仿真结果如图3所示。
李凯颖等Figure 2. Interface design of Matlab GUI图2. Matlab GUI界面设计图Figure 3. Simulation result图3. 仿真结果4. 实物测量实验为了能够更加清晰地展示我们所提出的方法的实用性,可以通过以下这个具体实验来展现,也就是以下所展示的——通过MATLAB的仿真交互式界面恢复物体葫芦的实验,被测物体如图4(a)所示。
李凯颖等Figure 4. Experiment图4.实验首先,将GUI界面设计好,新建一个fig文件,命名为pmp_experiment.fig,在布局编辑器中设置各需要的控件。
进行相关的代码的编写,将读取图片、计算相位、恢复物体等步骤的代码编写好。
接着,采集恢复物体需要的图片。
实验采用奥图马投影仪(EP728)投影条纹到葫芦模型上,在与投影仪成一定夹角的方向上用CCD相机(JAI CV-A50)获取条纹图和变形条纹图,测量系统参数为L = 760 mm,d = 220 mm。
采集到的图如图4(b)、图4(c)所示。
最后将采集到的条纹图和变形条纹图(共八张),经由设计好的程序读取,转换为需要的可计算的数据,经由MATLAB GUI设计的相位测量轮廓术三维面形测量仿真软件将该数据进行相应的图像计算方面的处理之后,恢复出所需的物体,最终的结果如图4所示。
5. 结论利用MATLAB GUI设计的相位测量轮廓术三维面形测量仿真软件,通过在界面中修改相关参数,实现在不同参数情况下的仿真测量并进行一定程度上的误差结果分析。
操作简单、使用方便,避免了因光学仪器比较精密,调节起来相对复杂,从而影响实验现象的深入观察,使同学能够对相位测量轮廓术(PMP)理解更加深刻。
同时,通过参数的直接修改,模拟过程的直接呈现,使得图像细致逼真,误差清楚直观,对学生三维测量的学习和深入理解有积极作用。
基金项目江苏省高等学校大学生实践创新训练计划项目,淮安市科技支撑计划(No. HAG2014019)资助,淮阴师范学院青年优秀人才支撑计划(No. 13HSQNZ03)。
参考文献(References)[1]李华伟, 申作春, 覃银红, 等. 相位测量轮廓术应用于叶片测量[J]. 航空动力学报, 2012, 27(2): 275-281.李凯颖等[2]Liu, Y.K., Su, X.Y. and Zhang, Q.C. (2011) A Novel Encoded-Phase Technique for Phase Measuring Profilometry.Optics Express, 19, 14137-14144. /10.1364/OE.19.014137[3]赵婧, 王永昌, 刘凯. 一种抑制相位测量轮廓术饱和误差的方法[J]. 中国激光, 2013, 40(10): 1008001.[4]Bian, X.T., Xue, J.P., Cheng, J., et al. (2013) Phase Measuring Profilometry Based on Elliptically Pattern Grating. Op-tik, 124, 3924-3928. /10.1016/j.ijleo.2012.11.042[5]Zhang, S. and Yau, S.T. (2007) High-Speed Three-Dimensional Shape Measurement System Using a Modified Two-plus-One Phase-Shifting Algorithm. Optical Engineering, 46, 113603.[6]高峰, 赵文丽, 曹学成. 基于MATLAB GUI 的夫琅禾费单缝衍射仿真[J]. 山东农业大学学报(自然科学版),2012, 43(3): 475-479.[7]苏显渝. 信息光学[M]. 北京: 科学出版社, 2011.[8]陈垚光. 精通MATLAB GUI设计[M]. 北京: 电子工业出版社, 2013.。