ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:313.68KB ,
资源ID:6020755      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6020755.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字图像处理课件设计报告工件尺寸图像测量.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字图像处理课件设计报告工件尺寸图像测量.docx

1、数字图像处理课件设计报告工件尺寸图像测量数字图像处理课程设计报告课设题目:工件尺寸的图像测量学 院:信息与电气工程学院专 业:电子与信息工程班 级:0902501班姓 名:高秀政学 号:090250106指导教师:周志权 于海雁 赵占峰哈尔滨工业大学(威海)2012 年10月31日 不要删除行尾的分节符,此行不会被打印目 录目 录 I一. 课程设计任务 11.1 设计目的 11.2 设计要求 1二. 课程设计原理及设计方案 22.1 设计原理的选择 22.2 设计方案 42.3 设计流程图 5三. 课程设计的步骤和结果 63.1 图像文件管理 63.2 图像预处理 93.3 尺寸与距离测量 1

2、6四. 课程设计总结 21五. 设计体会 22六. 参考文献 23一. 课程设计任务1.1 设计目的数字图像处理,就是用数字计算机及其他有关数字技术,对图像进行处理,以达到预期的目的。随着计算机的发展,图像处理技术在许多领域得到了广泛应用,数字图像处理已成为电子信息、通信、计算机、自动化、信号处理等专业的重要课程。数字图像处理课程设计是在学习完数字图像处理的相关理论后,进行的综合性训练课程,其目的是: 使学生进一步巩固数字图像处理的基本概念、理论、分析方法和实现方法; 增强学生应用Matlab编写数字图像处理的应用程序及分析、解决实际问题的能力; 尝试所学的内容解决实际工程问题,培养学生的工程

3、实践能力。1.2 设计要求在加工制造领域,需要对很多零部件尺寸进行测量,以验证零件是否符合加工要求。一般这种测量可以通过千分尺或游标卡尺完成。但对于很多易碎或易变形的零件,类似的测量几乎难以完成。在这种场合,一般要求采用非接触测量方法,图像测量就是其中的方法之一。试设计一应用软件,能够对标准形状的零件进行图像测量。要求完成功能: 1、能够读取和存储图像,对图像进行去噪和对比度增强; 2、能够根据控制点对图像失真进行几何校正; 3、根据控制点对图像进行定标,建立像素与实际尺寸之间的对应关系; 4、对于非标准零件,利用人工鼠标操作,测量任意指定点间的距离; 5、对圆形标准零件进行自动尺寸测量(提高

4、部分); 6、设计软件界面。二. 课程设计原理及设计方案2.1 设计原理的选择2.1.1滤波去噪由于图像中不可避免地存在噪声,故在图像预处理过程中需要对噪声进行滤除。一些常见的噪声有椒盐噪声、脉冲噪声、高斯噪声等。椒盐噪声是含随机出现的黑白亮度值,脉冲噪声是只含有随机的白强度值(正脉冲噪声)和黑强度值。与强两者不同,高斯噪声是含有亮度服从高斯或正态分布的噪声。图像的平滑处理在空间域和频域采取不同的方法,空间域滤波是在图像空间借助模版进行邻域操作,一般分为线性和非线性两类。1. 线性平滑滤波器对去除高斯噪声有很好的效果,大多数情况下对其他来性的噪声也有很好的效果。最简单的线性滤波是均值滤波,即对

5、局部进行均值计算,每一像素点的灰度值用其邻域内的各点灰度值的均值来置换。但是邻域N的大小控制着滤波程度,大尺度滤波器会加大滤波程度,作为消除大噪声的代价,大尺度滤波器会导致细节的损失和计算量的增加,使得图像的尖锐部分变模糊。2. 中值滤波法是一种较好的非线性滤波方法,它将每一象素点的灰度值设置为该点某邻域窗口内的所有象素点灰度值的中值,在去除图像脉冲噪声、椒盐噪声的同时,又能保留图像的边缘细节,有效地保持图像轮廓的清晰。设G(x,y)表示原始图像在(x,y)处的灰度值,选用N*N的正方形窗口(N一般取3或5),F(x,y)表示滤波后的图像在(x,y)处的灰度值,Med表示对窗口求中值,则中值滤

6、波的输出可表达为:2.1.2几何校正数字图像几何变形是指图像上的像元在图像坐标系的坐标与其在实际元件等参考坐标系之间的坐标不一致,从而导致图像行列式不均匀、像元大小和位置与实际对应不准确、形状不规则等。图像的总体几何变形是平移、缩放、旋转、偏扭、弯曲及其其他变形的综合作用结果。对于图像的几何校正有直接和间接两种方法,其关键环节在于:一是像素坐标变换;而是像素亮度值冲采样。在对工件进行图像采集时,主要涉及到的几何变形是投影畸变,形象的说获得的图像就像是影子近大远小,因此只要在采集图像时设置四个控制点,根据我们已知控制点的标准图像和获得的畸变的控制点图像建立传输函数,利用传输函数对元件的畸变图像反

7、变换获得理想的元件图像。2.1.3测量定标元件尺寸的图像测量,是建立在实际尺寸与像素关系已知的基础上的,通过检测元件的像素个数,以及像素与实际尺寸的对应关系(图像分辨率)求得元件的实际尺寸。对于扫描仪等设备获取的图像,因为其设备为固定高度且步进电机匀速扫描采集信息,则可以获取元件图像的像素分辨率(像素/英寸dpi),然后直接利用此分辨率进行测距计算。而大部分图像,包括相机、摄像头获取,或者从屏幕上截取得到,其图像分辨率已经发生变化,或者根本没有任何实际意义,这是就需要对图像进行尺寸定标。在获取元件图像的同时,放置已知具体实际尺寸的标定物,在获取图像后与元件图像一起进行相同的几何校正等一系列操作

8、,最终求的其像素数,从而获得像素数与实际尺寸的比例关系,设为分辨率dpi,进行元件实际尺寸的测量计算。2.1.4增强对比度和二值化处理经过几何校正后的图像则可以用于尺寸测量,但由于背景的影响,在检测元件边缘时会有较大的误差,因而更好的办法是增强对比度后设置门限,对图像进行二值化处理。1. 在数字图像处理中,二值图像占有非常重要的地位,二值化后的图像更容易检测元件图像的边缘。图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。其次,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像。2. 为了方便选取二值化所需的阈值,我们希望图像的直方

9、图是一个标准的双峰一谷,则直接在谷底处取得阈值,使一侧为0另一侧为1,因此需要对图像首先进行对比度增强。如果原图象f(x,y)的灰度范围是m,M,我们希望调整后的图象g(x,y)的灰度范围是n,N,利用MATLAB图象处理工具箱中提供的imadjust函数,可以很容易实现上述线性变换的对比度增强。2.1.5投影法自动测距投影法就是统计目标像素在水平方向(x轴)和竖直方向(y轴)上累计的个数,然后画出统计图形。根据本次统计图形的零极点判断元件图像的边缘,测得边缘之间的距离即为所求元件的尺寸。对于统计图像峰值的判断,可以采用一阶甚至二阶差分,判断统计图像两侧异号或者突变的点,即元件的边缘位置。2.

10、1.6手动两点测距应用最简单方法,测得图像上两点像素的坐标,计算出两点间的像素数,然后根据读取或者测得的图像分辨率计算出任意两点间距离。2.2 设计方案根据以上设计原理的选择,结合MATLAB的图像处理工具箱函数,大量调用已有函数进行设计,通过各项程序的最优组合,不但完美完成任务,而且使得程序更加优化,运行速度更快。以下为程序设计选取的重要的程序工具。2.2.1中值滤波I=medfilt2(I,3 3);%滤波器的末班为3*32.2.2几何校正cpselect(I,I);%选取控制点mytform=cp2tform(input_points,base_points,projective);%建

11、立传输函数I=imtransform(I,mytform);%对图像反变换2.2.3截取标定或目标J=imcrop(I); %从图像上截取需要的标定物或元件图像2.2.4对比度增强I=imadjust(I,stretchlim(I);%增强图像对比度2.2.5二值化T=graythresh(I);%获取阈值I=im2bw(I,T);%通过阈值二值化处理2.2.6获取像素点坐标x,y=ginput(2);%通过鼠标点击获取像素点坐标2.2.7距离计算D=abs(D2-D1)/dpi*2.54;%通过零点或极值点距离获得尺寸D=sqrt(x(1)-x(2)2+(y(1)-y(2)2)/dpi*2.

12、54;%通过量像素点坐标求得距离2.3 设计流程图三. 课程设计的步骤和结果3.1 图像文件管理设计的GUI界面如下:每段程序写在set(handles.edit6,String,.);与set(handles.edit6,String,OK);之间,则通过状态窗口程序的执行情况一目了然。3.1.1打开/拍摄1. 摄像头启动程序global vid;global P; %标志位P=8;axes(handles.axes1);vid=videoinput(winvideo, 1, YUY2_320x240);preview(vid);2. 打开/拍摄程序set(handles.edit6,Str

13、ing,.);hold off;global n;n=0;set(handles.radiobutton1,value,1);set(handles.edit1,String,10);set(handles.edit3,String,0);set(handles.edit4,String,0);set(handles.edit5,String,0);global P;if P=8 global vid; axes(handles.axes1); I=getsnapshot(vid); imshow(I); set(handles.edit7,String,“摄像头拍摄图像”);else fil

14、ename,pathname=uigetfile(*.jpg;*.bmp;*.tif;*.*,打开图像.); if isequal(filename,0)|isequal(pathname,0) errordlg(图像文件未找到,File Error); else global file; global I; P=1; file=pathname,filename; I=imread(file); axes(handles.axes1); imshow(I); set(handles.edit7,String,“元件的原始图像”); endendset(handles.edit6,String

15、,OK);当标志位P为0时打开图像,P为8是通过摄像头拍摄图像。打开或拍摄的同时,进行标识为设置和一些现实的清零。3.1.2复位程序set(handles.edit6,String,.);hold off;global file;global I;global P;global n;n=0;set(handles.radiobutton1,value,1);set(handles.edit3,String,0);set(handles.edit4,String,0);set(handles.edit5,String,0);if P=8 axes(handles.axes1); cla rese

16、t;else if P = 0 errordlg(请先打开图像!,Warning.); else P=1; I=imread(file); axes(handles.axes1); imshow(I); set(handles.edit7,String,“元件的原始图像”); endendset(handles.edit6,String,OK);重新打开未经处理的图像或者关闭拍摄的图像重新拍摄,与打开相似,清空一些数据。3.1.3存储和关闭1. 存储的程序set(handles.edit6,String,.);global P;if P = 0 errordlg(请先打开图像!,Warning

17、.);elsefilename,pathname=uiputfile(*.jpg;*.bmp;*.tif;*.*,保存图片.,Undefined); if isequal(filename,0) str = pathname filename; px=getframe(handles.axes1); cdata = getappdata(gcf,Timg); imwrite(px.cdata,str); else errordlg(保存失败!,Warning.); end;endset(handles.edit6,String,OK);2. 关闭的程序set(handles.edit6,Str

18、ing,.);global P;P=0;set(handles.edit3,String,0);set(handles.edit4,String,0);set(handles.edit5,String,0);axes(handles.axes1);cla reset;closepreview;set(handles.edit7,String,“请先打开图像”);set(handles.edit6,String,OK);通过存储和关闭按键,可以实现对图像的操作,包括对处理到任意状态的图像进行存储或直接关闭。3.1.4退出clc;clear;close all;close(findobj(Tag,

19、figure1);退出程序,关闭所有启动程序,清除数据,关闭运行界面。3.2 图像预处理3.2.1中值滤波set(handles.edit6,String,.);global I;global P;switch P case 7,errordlg(图像已经完成二值化,请直接测距或复位!,Warning.); case 6,errordlg(图像已经增强对比度,请放弃该操作或复位!,Warning.); case 5,errordlg(已经截取目标,请放弃该操作或复位!,Warning.); case 4,errordlg(已经选取标定目标,请放弃该操作或复位!,Warning.); case

20、3,errordlg(图像已经完成几何校正,请放弃该操作或复位!,Warning.); case 2,errordlg(图像已经完成中值滤波,请放弃该操作或复位!,Warning.); case 1,P=2; I=rgb2gray(I); %转化为灰度 I=medfilt2(I,3 3); %中值滤波 axes(handles.axes1); imshow(I); set(handles.edit7,String,“中值滤波后的元件图像”); case 0,errordlg(请先打开图像!,Warning.);endset(handles.edit6,String,OK);通过3*3的模板做中

21、值滤波,原始图像与处理后效果如下图: 3.2.2几何校正set(handles.edit6,String,.);global I;global P;switch P case 7,errordlg(图像已经完成二值化,请直接测距或复位!,Warning.); case 6,errordlg(图像已经增强对比度,请放弃该操作或复位!,Warning.); case 5,errordlg(已经截取目标,请放弃该操作或复位!,Warning.); case 4,errordlg(已经选取标定目标,请放弃该操作或复位!,Warning.); case 3,errordlg(图像已经完成几何校正,请放弃

22、该操作或复位!,Warning.); case 2,P=3; set(handles.edit7,String,“选取四对控制点”); cpselect(I,I); uiwait; input_points = evalin(base, input_points); base_points = evalin(base, base_points); mytform=cp2tform(input_points,base_points,projective); I=imtransform(I,mytform); axes(handles.axes1); imshow(I); set(handles.

23、edit7,String,“几何校正后的元件图像”); case 1,errordlg(请先进行中值滤波!,Warning.); case 0,errordlg(请先打开图像!,Warning.);endset(handles.edit6,String,OK);通过cpselect(I,I)函数选取四对控制点,采完点后按Ctrl+E把点的数据输出到当前工作空间,通过求得的传输函数逆变换,得到校正后的图像如下: 3.2.3选取标定和截取目标1. 选取标定global I;global Pswitch P case 7,errordlg(图像已经完成二值化,请直接测距或复位!,Warning.);

24、 case 6,errordlg(图像已经增强对比度,请放弃该操作或复位!,Warning.); case 5,errordlg(已经截取目标,请放弃该操作或复位!,Warning.); case 4,errordlg(已经选取标定目标,请放弃该操作或复位!,Warning.); case 3, B=str2double(get(handles.edit1,string); if B=0 errordlg(标定长度不能为零,请输入!,Warning.); else P=4; set(handles.edit7,String,“请输入标定长度并选取标定目标,右击Crop Image”); J=i

25、mcrop(I); %截取标定 J=imadjust(J,stretchlim(J); %增强对比度 T=graythresh(J); %二值化 J=im2bw(J,T); J=1-J; %反相 a,b=size(J); x=zeros(1,b); D1=0;D2=0; for i=1:a x=x+J(i,:); %投影 end for i=2:b-1 %取水平长度 if x(i)1 if D1=0 D1=i-1; end end if x(b+1-i)2 if D2=0 D2=b+1-i; end end end end B=str2double(get(handles.edit1,stri

26、ng); dpi=abs(D2-D1)/B*2.54; set(handles.edit2,string,num2str(dpi,%10.3f); case 2,errordlg(请先进行几何校正!,Warning.); case 1,errordlg(请先进行中值滤波!,Warning.); case 0,errordlg(请先打开图像!,Warning.);endset(handles.edit7,String,“几何校正后的元件图像”);set(handles.edit6,String,OK);2. 截取目标global I;global Pswitch P case 7,errordl

27、g(图像已经完成二值化,请直接测距或复位!,Warning.); case 6,errordlg(图像已经增强对比度,请放弃该操作或复位!,Warning.); case 5,errordlg(已经截取目标,请放弃该操作或复位!,Warning.); case 4, dpi=str2num(get(handles.edit2,string); if dpi=0 errordlg(定标未完成,请检查选取的定标点!,Warning.); else P=5; set(handles.edit7,String,“请截取元件目标图像,右击Crop Image”); I=imcrop(I); axes(h

28、andles.axes1); imshow(I); set(handles.edit7,String,“截取目标后的元件图像”); end case 3,errordlg(请先取标定目标!,Warning.); case 2,errordlg(请先进行几何校正!,Warning.); case 1,errordlg(请先进行中值滤波!,Warning.); case 0,errordlg(请先打开图像!,Warning.);endset(handles.edit6,String,OK);选取标定即在校正后的图像中选定设置好的标定物,通过对标定物的测量求的像素与实际尺寸的关系,在选取标定之前要先

29、将“标定长度”输入,然后选取图像中标定物,通过增强二值化后,侧得标定物图像的像素数,除以实际尺寸,得到图像的分辨率,自动显示出来。截取目标是为了去除由于几何校正带来的黑色边框,以便于下一步的处理。截取标定和目标都是用了I=imcrop(I)函数。截取过程和截取后元件图像如下图: 3.2.4增强对比度和二值化1. 增强对比度set(handles.edit6,String,.);global I;global P;switch P case 7,errordlg(图像已经完成二值化,请直接测距或复位!,Warning.); case 6,errordlg(图像已经增强对比度,请放弃该操作或复位!,Warning.); case 5,P=6; I=imadjust(I,stretchlim(I); %增强对比度

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1