实验内容.docx
《实验内容.docx》由会员分享,可在线阅读,更多相关《实验内容.docx(21页珍藏版)》请在冰豆网上搜索。
实验内容
机器视觉与图像处理
实验报告
课程名称:
机器视觉与图像处理
班级:
自动F1202
姓名:
王安
学号:
201223910318
实验时间:
2015.3.19~4.16
机器视觉与图像处理
专业:
自动化班级:
自动F1202姓名:
王安
学号:
201223910318完成日期:
2015.4.9成绩评定:
1、实验题目
Matlab软件的使用
二、实验目的
1.熟悉并掌握Matlab软件的一些基本概念,了解菜单栏、工具栏、状态栏、命令窗口等。
2.掌握Matlab软件安装。
3.熟悉Matlab软件基本操作环境,了解文档help中演示demo内容和ImageProcessing工具箱。
3、实验过程及结果
1.打开MATLAB软件,了解菜单栏、工具栏、状态栏、命令窗口等;
(1)双击桌面的matlab软件图标,进入matlab软件。
如图1.1所示:
图1.1matlab软件界面
(2)浏览使用matlab软件的菜单栏、工具栏、状态栏、命令窗口等。
如图2所示:
图1.2matlab窗口
2、打开help工具栏,进入demo演示内容。
如图3所示:
图1.3demo演示内容
3、找到imageProcessing工具箱,并进行初步学习,为后续实验做准备。
如图3所示:
图1.4demo练习
四、实验总结和分析
通过课上的老师的讲解和之前的了解,对matlab有了一定认识,在实验中,了解了matlab实际操作中的步骤以及matlab中demo工具箱及其功能,熟悉Matlab软件基本操作环境,巩固了课堂上的知识。
机器视觉与图像处理
专业:
自动化班级:
自动F1202姓名:
王安
学号:
201223910318完成日期:
2015.4.9成绩评定:
2、实验题目
图像的增强技术
二、实验目的
1.了解图像增强技术/方法的原理。
2.熟练掌握一般图像处理理论及方法,如图像滤波,图像边缘检测。
3.通过程序的调试,初步了解图像处理命令的使用方法
4、实验过程及结果
1、打开matlab软件demo工具下的ImageProcessing工具箱下Enhancement图像增强工具栏,了解认识图像增强的基本原理。
如图2.1所示:
图2.1图像增强工具界面
2、打开一个图像直方图和调整演示例程,逐步了解图像处理的方法。
Step1:
Readimage
I=imread('rice.png');
imshow(I)
Step2:
Usemorphologicalopeningtoestimatethebackground
background=imopen(I,strel('disk',15));
%DisplaytheBackgroundApproximationasaSurface
figure,surf(double(background(1:
8:
end,1:
8:
end))),zlim([0255]);
set(gca,'ydir','reverse');
Step3:
Subtractthebackroundimagefromtheoriginalimage
I2=imsubtract(I,background);
imshow(I2)
Step4:
Increasetheimagecontrast
I3=imadjust(I2);
imshow(I3);
Step5:
Thresholdtheimage
level=graythresh(I3);
bw=im2bw(I3,level);
imshow(bw)
Step7:
Viewthewholelabelmatrix
RGB_label=label2rgb(labeled,@spring,'c','shuffle');
imshow(RGB_label)
机器视觉与图像处理
专业:
自动化班级:
自动F1202姓名:
王安
学号:
201223910318完成日期:
2015.4.10成绩评定:
3、实验题目
图像特征提取
二、实验目的
1.了解图像特征提取的方法。
2.利用matlab软件,编程实现图像中长度、角度、半径、边界等特征的提取测量。
3.通过程序的调试,初步了解图像特征提取命令的使用方法。
5、实验过程及结果
1.双击MATLAB图标打开MATLAB软件;单击help/Demos打开帮助中的演示;找到ImageProcessing工具箱中的图像特征提取,如图3.1所示
图3.1ImageProcessing工具箱
本次实验选取一个:
测量带卷的半径。
进行试验。
我们的目标是测量辊的带,这是部分地由磁带分配器遮蔽的半径。
将利用bwtraceboundary来完成这个任务。
分为五个步骤:
*步骤1:
阅读图像
RGB=imread('tape.png');imshow(RGB);text(15,15,'Estimateradiusoftherolloftape',...'FontWeight','bold','Color','y')
*步骤2:
阈值图像
I=rgb2gray(RGB);threshold=graythresh(I);BW=im2bw(I,threshold);imshow(BW)
*步骤3:
提取初始边界点位置
dim=size(BW);col=round(dim
(2)/2)-90;row=find(BW(:
col),1);
*步骤4:
跟踪的边界
connectivity=8;num_points=180;contour=bwtraceboundary(BW,[row,col],'N',connectivity,num_points);imshow(RGB);holdon;plot(contour(:
2),contour(:
1),'g','LineWidth',2);
*步骤5:
适合圆的边界
x=contour(:
2);y=contour(:
1);%solveforparametersa,b,andcintheleast-squaressenseby%usingthebackslashoperatorabc=[xyones(length(x),1)]\-(x.^2+y.^2);a=abc
(1);b=abc
(2);c=abc(3);%calculatethelocationofthecenterandtheradiusxc=-a/2;yc=-b/2;radius=sqrt((xc^2+yc^2)-c)%displaythecalculatedcenterplot(xc,yc,'yx','LineWidth',2);%plottheentirecircletheta=0:
0.01:
2*pi;%useparametricrepresentationofthecircletoobtaincoordinates%ofpointsonthecircleXfit=radius*cos(theta)+xc;Yfit=radius*sin(theta)+yc;plot(Xfit,Yfit);message=sprintf('Theestimatedradiusis%2.3fpixels',radius);text(15,15,message,'Color','y','FontWeight','bold');
五、实验总结和分析
图像处理工具箱软件提供了一套全面的参考标准算法和图像处理,分析,可视化和算法开发的图形化工具。
您可以恢复干扰或退化图像,增强图像清晰度提高,提取特征,分析形状和纹理,并注册两个图像。
大多数工具箱函数都写在公开MATLAB®语言,让你可以检查算法,修改源代码,并创建自己的自定义功能的能力。
机器视觉与图像处理
专业:
自动化班级:
自动F1202姓名:
王安
学号:
201223910318完成日期:
2015.4.10成绩评定:
4、实验题目
图像变换
二、实验目的
1.了解图像变换的原理。
2.利用matlab软件,编程实现投影数据的图像重构。
3.通过程序的调试,初步了解图像投影变换的应用。
6、实验过程及结果
1.双击MATLAB图标打开MATLAB软件;
2.单击help/Demos打开帮助中的演示;
3.找到ImageProcessing工具箱中的图像特征提取,如图4.1所示:
图4.1图像变换工具箱
P=phantom(256);imshow(P)
*平行梁-计算综合预测
theta1=0:
10:
170;[R1,xp]=radon(P,theta1);num_angles_R1=size(R1,2)
theta2=0:
5:
175;
[R2,xp]=radon(P,theta2);
num_angles_R2=size(R2,2)
theta3=0:
2:
178;[R3,xp]=radon(P,theta3);num_angles_R3=size(R3,2)
N_R1=size(R1,1)N_R2=size(R2,1)N_R3=size(R3,1)
P_128=phantom(128);[R_128,xp_128]=radon(P_128,theta1);N_128=size(R_128,1)
figure,imagesc(theta3,xp,R3)colormap(hot)colorbarxlabel('ParallelRotationAngle-\theta(degrees)');ylabel('ParallelSensorPosition-x\prime(pixels)');
*平行光束-从投影数据重建头部模型:
output_size=max(size(P));dtheta1=theta1
(2)-theta1
(1);I1=iradon(R1,dtheta1,output_size);figure,imshow(I1)
dtheta2=theta2
(2)-theta2
(1);I2=iradon(R2,dtheta2,output_size);figure,imshow(I2)
dtheta3=theta3
(2)-theta3
(1);I3=iradon(R3,dtheta3,output_size);figure,imshow(I3)
扇形波束-计算合成预测
计算合成预测采用扇形波束几何形状和改变“FanSensorSpacing”。
D=250;dsensor1=2;F1=fanbeam(P,D,'FanSensorSpacing',dsensor1);dsensor2=1;F2=fanbeam(P,D,'FanSensorSpacing',dsensor2);dsensor3=0.25;[F3,sensor_pos3,fan_rot_angles3]=fanbeam(P,D,...'FanSensorSpacing',dsensor3);
扇形波束-从投影数据重建头部模型:
.
Ifan1=ifanbeam(F1,D,'FanSensorSpacing',dsensor1,'OutputSize',output_size);figure,imshow(Ifan1)
Ifan2=ifanbeam(F2,D,'FanSensorSpacing',dsensor2,'OutputSize',output_size);figure,imshow(Ifan2)
Ifan3=ifanbeam(F3,D,'FanSensorSpacing',dsensor3,'OutputSize',output_size);figure,imshow(Ifan3)
四、实验总结和分析
通过本次实验展示了如何使用iradon,扇束和ifanbeam形成从样品图像投影,然后从投影重建图像。
而氡和iradon使用平行束几何结构的突起,扇形束和ifanbeam使用一个扇形束的几何形状。
比较平行束和扇形束的几何形状,下面的实施例创建的合成预测每个几何然后使用这些合成的预测,以重构原始图象。
机器视觉与图像处理
专业:
自动化班级:
自动F1202姓名:
王安
学号:
201223910318完成日期:
2015.4.11成绩评定:
5、实验题目
摄像机标定实验
二、实验目的
1.了解摄像机标定的定义。
2.了解摄相机标定方法的分类。
3.使用Matlab工具箱进行摄像机标定。
7、实验过程及结果
1.双击MATLAB图标打开MATLAB软件;
2.单击help/Demos打开帮助中的演示;
3.找到标定工具箱,如图5.1所示:
图4.1图像标定工具箱
Createtwocellarrayscontainingfilenamesofcalibrationimagestakenwitheachcamera.
numImagePairs=10;
imageFiles1=cell(numImagePairs,1);
imageFiles2=cell(numImagePairs,1);
imageDir=fullfile(matlabroot,'toolbox','vision','visiondata',...
'calibration','stereoWebcams');
fori=1:
numImagePairs
imageFiles1{i}=fullfile(imageDir,'left',sprintf('left%02d.png',i));
imageFiles2{i}=fullfile(imageDir,'right',sprintf('right%02d.png',i));
End
%Trytodetectthecheckerboard
im=imread(imageFiles1{1});
imagePoints=detectCheckerboardPoints(im);
%Displaytheimagewiththeincorrectlydetectedcheckerboard
figure;
imshow(im,'InitialMagnification',50);
holdon;
plot(imagePoints(:
1),imagePoints(:
2),'*-g');
title('FailedCheckerboardDetection');
images1=cast([],'uint8');
images2=cast([],'uint8');
fori=1:
numel(imageFiles1)
im=imread(imageFiles1{i});
im(3:
700,1247:
end,:
)=0;
images1(:
:
:
i)=im;
im=imread(imageFiles2{i});
im(1:
700,1198:
end,:
)=0;
images2(:
:
:
i)=im;
End
[imagePoints,boardSize]=detectCheckerboardPoints(images1,images2);
%Displayonemaskedimagewiththecorrectlydetectedcheckerboard
figure;
imshow(images1(:
:
:
1),'InitialMagnification',50);
holdon;
plot(imagePoints(:
1,1,1),imagePoints(:
2,1,1),'*-g');
title('SuccessfulCheckerboardDetection');
%Generateworldcoordinatesofthecheckerboardpoints.
squareSize=108;%millimeters
worldPoints=generateCheckerboardPoints(boardSize,squareSize);
%Computethestereocameraparameters.
stereoParams=estimateCameraParameters(imagePoints,worldPoints);
%Evaluatecalibrationaccuracy.
figure;
showReprojectionErrors(stereoParams);