机器视觉课内实验.doc_第1页
机器视觉课内实验.doc_第2页
机器视觉课内实验.doc_第3页
机器视觉课内实验.doc_第4页
机器视觉课内实验.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

。机器视觉课内实验报告(4次)学 院: 自动化 班 级: 智能 姓 名: 学 号: -可编辑修改- 目 录实验一:一种摄像机标定算法的编程实现 1实验二:图像预处理算法的编程实现 8实验三:基于一阶微分算子的边缘检测 14实验四:基于二阶微分算子的边缘检测 17机器视觉 课内实验报告(1)摄像机标定算法的编程实现专 业 :智能科学与技术班 级 :学 号 :姓 名 :实验时间 :- 1 -可编辑修改-实验一MATLAB编程实现基于直接线性变换的摄像机标定方法一、实验目的掌握摄像机标定方法的原理,采用直接线性变换方法,通过MATLAB编程实现摄像机内参数和外参数的估计。2、 实验原理摄像机标定是指建立摄像机图像像素位置与场景点位置之间的关系,其途径是根据摄像机模型,由已知特征点的图像坐标求解摄像机的模型参数。直接线性变换是将像点和物点的成像几何关系在齐次坐标下写成透视投影矩阵的形式:其中(u,v,1)为图像坐标系下的点的齐次坐标,(X,Y,Z)为世界坐标系下的空间点的欧氏坐标,P为3*4的透视投影矩阵,s为未知尺度因子。 消去s,可以得到方程组:当已知N个空间点和对应的图像上的点时,可以得到一个含有2*N个方程的方程组:三、实验步骤1 读取一幅图像并显示;2 检查内存(数组)中的图像;3 实现图像直方图均衡化;4 读取图像中像素点的坐标值;5 保存图像;6 检查新生成文件的信息;7 使用阈值操作将图像转换为二值图像;8 根据RGB图像创建一幅灰度图像;9 调节图像的对比度;10 在同一个窗口内显示两幅图像;11 掌握Matlab命令及函数,获取标定块图像的特征点坐标;12 根据DLT摄像机标定方法原理编写Matlab程序,估计摄像机内参数和外参数;四、程序代码及实验结果显示代码:I=imread(C:UserswwwwDesktop12.jpg);imshow(I);whosfigure,I1=rgb2gray(I);figure,imshow(I1)imhist(I1);I2=histeq(I1);figure,imshow(I2)figure,imhist(I2)a=imread(C:UserswwwwDesktop12.jpg);imwrite(I1,DSgray.jpg);imwrite(I2,DSgrayeq.jpg);inf=imfinfo(C:UserswwwwDesktop12.jpg);level=graythresh(I2);bw=im2bw(I2,level);figure,imshow(bw)whosI3=imadjust(I2,stretchlim(I2),0 1);figure,imshow(I3);a=imread(C:UserswwwwDesktop12.jpg);b=imread(DSgray.jpg);subplot(1,2,1),imshow(a);subplot(1,2,2),imshow(b); clear;xpot=;ypot=;imshow(C:UserswwwwDesktop12.jpg);hold on;n=input(Please input the number of pot:);for i=1:n x,y=ginput(1); plot(x,y,or); text(x+1,y+1,num2str(i); xpot=xpot,x; ypot=ypot,y;endxpot;ypotxw;yw;zwa=xw,yw,zw,ones(100 1),zeros(100 4),(-1)*xpot.*xw,(-1)*xpot.*yw,(-1)*xpot.*zw,-1*xpot;zeros(100 4),xw,yw,zw,ones(100 1),(-1)*ypot.*xw,(-1)*ypot.*yw,(-1)*ypot.*zw,-1*ypot;c=a(:,1:11);b=a(:,12);l=(-1)*(c*c)(-1)*c*b;显示两幅图对比度调节均衡化直方图灰度图直方图二进制图图片信息: 名 称:12.jpg 项目类型:JPG图像 文件夹路径:C:UserswwwwDesktop 创建日期:2017年11月6日, 星期一 13:16 修改日期:2017年11月6日, 星期一 13:16 大 小:111KB 分辨率:1024 x 638 宽 度:1024像素 高 度:638像素 水平分辨率:72dpi垂直分辨率:72dpi位深度:24检查内存中的图像: Name Size Bytes Class Attributes I 638x1024x3 1959936 uint8 ans 2x15 240 double i 1x1 8 double n 1x1 8 double x 1x1 8 double xpot 1x15 120 double y 1x1 8 double ypot 1x15 120 double Name Size Bytes Class Attributes I 638x1024x3 1959936 uint8 I1 638x1024 653312 uint8 I2 638x1024 653312 uint8 a 638x1024x3 1959936 uint8 ans 2x15 240 double bw 638x1024 653312 logical i 1x1 8 double inf 1x1 42720 struct level 1x1 8 double n 1x1 8 double x 1x1 8 double xpot 1x15 120 double y 1x1 8 double ypot 1x15 120 double Please input the number of pot:10ans = 550.3592 391.7113 261.9085 521.5141 838.8099 921.7394 211.4296 117.6831 770.3028 957.7958 463.7254 308.6831 146.4296 160.8521 283.4437 492.5704 460.1197 247.3873 113.9789 157.2465五、实验心得机器视觉 课内实验报告(2)图像预处理算法的编程实现专 业 :智能科学与技术班 级 :学 号 :姓 名 :实验时间 :- 8 -可编辑修改-实验二:图像预处理算法的编程实现一、实验目的掌握图像预处理的基本方法及其主要思想,编程实现直方图均衡化、直方图规定化和图像的锐化处理。2、 实验原理(1)直方图均衡化的基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了像素灰度值的动态范围,从而可达到增强图像整体对比度的效果。直方图均衡化是灰度变换的一个重要应用,广泛应用在图像增强处理中,它是以累计分布函数变换为基础的直方图修正法之一,可以产生一幅灰度级分布具有均匀概率密度的图像,扩展了像素的取值动态范围。若像素点的原灰度为R,变换后的灰度为S,需要注意的是R、S是归一化后的灰度值,其灰度变换函数T(R)为:式中,是第j级灰度值的概率,是图像中j级灰度的像素总数,是图像中灰度级的总数目,是图像中像素的总数。对变换后的S值取最靠近的一个灰度级的值,建立灰度级变换表,将原图像变换为直方图均衡的图像。(2) 直方图规定化是能够有目的地增强某个灰度区间的图像, 即能够人为地修正直方图的形状, 使之与期望的形状相匹配。换句话说,希望可以人为地改变直方图形状,使之成为某个特定的形状,直方图规定化就是针对上述要求提出来的一种增强技术,它可以按照预先设定的某个形状来调整图像的直方图。直方图规定化是在运用均衡化原理的基础上,通过建立原始图像和期望图像之间的关系,选择地控制直方图,使原始图像的直方图变成规定的形状,从而弥补了直方图均衡不具备交互作用的特性。(3)图像锐化是一种补偿轮廓、突出边缘信息以使图像更为清晰的处理方法。为了要把图像中间任何方向伸展的边缘和轮廓线变得清晰,我们希望对图像的某种运算是各向同性的。可以证明偏导平方和的运算是各向同性的,即: 式中是图像旋转前的坐标,是图像旋转后的坐标。梯度运算就是在这个式子的基础上开方得到的。图像(x,y)点的梯度值: 为了突出物体的边缘,常常采用梯度值的改进算法,将图像各个点的梯度值与某一阈值作比较,如果大于阈值,该像素点的灰度用梯度值表示,否则用一个固定的灰度值表示。我们在对图像增强的过程中,采用的是一种简单的高频滤波增强方法:式中f,g分别为锐化前后的图像,是与扩散效应有关的系数。表示对图像f进行二次微分的拉普拉斯算子。这表明不模糊的图像可以由模糊的图像减去乘上系数的模糊图像拉普拉斯算子来得到。可以用下面的模板H=1,4,1,4,-20,4,1,4,1来近似。在具体实现时,上述模板H中的各个系数可以改变,这个系数的选择也很重要,太大了会使图像的轮廓过冲,太小了则图像锐化不明显。实验表明,选取2-8之间往往可以达到比较满意的效果。3、 实验步骤1、 输入一幅图像;2、 对该图像进行直方图均衡化处理,输出实验结果;3、 对该图像进行直方图规定化处理,输出实验结果;4、 对该图像进行图像锐化,输出实验结果;5、 对实验结果截图,并分析实验结果。4、 程序代码及实验结果显示1、直方图均衡化I=imread(C:UserswwwwPictures桌面图片c.jpg);I=rgb2gray(I);figure;subplot(2,2,1);imshow(I);subplot(2,2,2);imhist(I); %获取图像数据直方图I1=histeq(I); %直方图均衡化subplot(2,2,3);imshow(I1);subplot(2,2,4);imhist(I1);2、直方图规定化clear all;close all;% 扩展原图像形成中间图像的高斯滤波orgin=imread(C:UserswwwwPictures桌面图片c.jpg);orgin=rgb2gray(orgin); %读入原图像m_o,n_o=size(orgin);orgin_hist=imhist(orgin)/(m_o*n_o);standard = imread(C:UserswwwwPictures桌面图片j.jpg); % 读入标准图standard=rgb2gray(standard); m_s,n_s=size(standard);standard_hist=imhist(standard)/(m_s*n_s);startdard_value=; % 标准图累积直方orgin_value=; % 原图像累积直方for i=1:256 startdard_value=startdard_value sum(standard_hist(1:i); orgin_value=orgin_value sum(orgin_hist(1:i); endfor i=1:256 valuei=startdard_value-orgin_value(i); valuei=abs(valuei); temp index(i)=min(valuei);endnewimg=zeros(m_o,n_o);for i=1:m_o for j=1:n_o newimg(i,j)=index(orgin(i,j)+1)-1; endendnewimg=uint8(newimg);subplot(2,3,1);imshow(orgin);title(原图);subplot(2,3,2);imshow(standard);title(标准图);subplot(2,3,3);imshow(newimg);title(myself匹配到标准图);subplot(2,3,4);imhist(orgin);title(原图);subplot(2,3,5);imhist(standard);title(标准图);subplot(2,3,6);imhist(newimg);title(myself匹配到标准图);3、直方图锐化I=imread(C:UserswwwwPictures桌面图片j.jpg); A=rgb2gray(I); figure, subplot(221),imshow(A); title(原图); hs=fspecial(sobel); S=imfilter(A,hs); hp=fspecial(prewitt); P=imfilter(A,hs); A=double(A);%双精度型 H=0 1 0,1 -4 1,0 1 0;%拉普拉斯算子 J=conv2(A,H,same); K=A-J; subplot(222),imshow(K); title(拉普拉斯锐化图像); subplot(223),imshow(S); title(sobel算子锐化图像); subplot(224),imshow(P); title(prewitt算子锐化图像);五、实验总结机器视觉课内实验报告(3)基于一阶微分算子的边缘检测专 业 :智能科学与技术班 级 :学 号 :姓 名 :实验时间 :- 14 -可编辑修改-实验三:基于一阶微分算子的边缘检测一、实验目的1 了解常见的一阶微分算子的原理及其卷积模板。2 熟练掌握MATLAB图像处理工具箱中的使用方法,利用Roberts算子、Sobel算子和Prewitt算子等一阶微分算子编程实现边缘检测。3 熟悉图像边缘检测方法。二、实验的主要仪器设备1 微型计算机2 MATLAB软件(安装图像处理工具箱)3 典型的灰度图像文件三、实验原理边缘检测的基本思想是通过检测每个像素和其邻域的状态,以决定该像素是否位于一个物体的边界上。如果一个像素位于一个物体的边界上,则其邻域像素的灰度值的变化就比较大。假如可以应用某种算法检测出这种变化并进行量化表示,那么就可以确定物体的边界。四、实验内容1 利用MATLAB图像处理工具箱进行边缘检测。2 结合实验原理,通过编程实现的实验结果比较各种边缘检测方法。五、实验步骤1 读入一幅图像2 选择不同的边缘检测方法,对图像进行边缘检测3 分析不同检测方法对图像处理的效果6、 程序代码及实验结果显示I=imread(I:机器视觉lyx.jpg);I=rgb2gray(I);BW1 = edge(I,sobel); %利用Sobel算子进行边缘检测BW2 = edge(I,roberts); %利用roberts算子进行边缘检测BW3 = edge(I,prewitt); %利用prewitt算子进行边缘检测BW4 = edge(I,log); %利用log算子进行边缘检测BW5 = edge(I,canny); %利用canny算子进行边缘检测subplot(2,3,1),imshow(I);subplot(2,3,2),imshow(BW1);subplot(2,3,3),imshow(BW2);subplot(2,3,4),imshow(BW3);subplot(2,3,5),imshow(BW4);subplot(2,3,6),imshow(BW5);七、心得体会机器视觉课内实验报告(4)基于二阶微分算子的边缘检测专 业 :智能科学与技术班 级 :学 号 :姓 名 :实验时间 :实验四:基于二阶微分算子的边缘检测一、实验目的1 了解常见的二阶微分算子的原理及其实验步骤。2 熟练掌握MATLAB图像处理工具箱,利用LoG算子和Canny算子等微分算子编程实现边缘检测。二、实验原理及步骤1 为了减少噪声的影响,对图像先进行平滑,然后在运用Laplacian算子。平滑函数选择具有正态分布形式的高斯函数h (x, y):其中是高斯分布的均方差。令r2=x2+y2用高斯函数h (x, y)对图象f (i, j)做卷积,然后以对求二阶导数来计算拉普拉斯值,则: 称作高斯-拉普拉斯算子,简称LoG算子。高斯平滑运算导致图像中边缘和其他尖锐不连续部分的模糊,其中模糊量取决于值。值越大,噪声滤波效果越好,但同时也丢失了重要的边缘信息,影响了边缘检测器的性能。如果取小的值,又有可能平滑不完全而留有太多的噪声。因此在不知道物体尺度和位置的情况下,很难准确确定值。一般来说,使用大的值会产生鲁棒边缘,小的值产生精确定位的边缘,两者结合,能够检测出图像的最佳边缘。LoG算子可以用MATLAB中的edge函数来检测边缘:其中,thresh是边缘检测的阈值,sigma是高斯滤波器的值,默认为2。用不同值的LoG算子检测图象的边缘。2 Canny的主要工作是推导了最优边缘检测算子。考核边缘检测算子的指标是:低误判率,即尽可能少地把边缘点误认为是非边缘点;高定位精度,即准确地把边缘点定位在灰度变化最大的像素上;抑制虚假边缘。Canny边缘检测算法步骤: step1:用高斯滤波器平滑图象; step2:用一阶偏导的有限差分来计算梯度的幅值和方向; step3:对梯度幅值进行非极大值抑制 step4:用双阈值算法检测和连接边缘三、实验程序与结果图lenna=imread(rice.png);lenna_3=mat2gray(lenna);m,n=size(lenna_3);lenna_4=lenna_3;L=0;t=0.2;for j=2:m-1 for k=2:n-1 L=abs(4*lenna_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论