实验二 多边形边长测量
一、实验目的
1. 掌握哈夫变换方法检测直线的基本原理和步骤。
2. 复习VB/VC/Matlab的基本概念、基本语法和编程方法,并熟练使用VB/VC/Matlab编写遗传算法程序。
二、实验设备
微机
三、实验原理
在原始图像坐标系下的一个点对应了参数坐标系中的一条直线,同样参数坐标系的一条直线对应了原始坐标系下的一个点,然后,原始坐标系下呈现直线的所有点,它们的斜率和截距是相同的,所以它们在参数坐标系下对应于同一个点。这样在将原始坐标系下的各个点投影到参数坐标系下之后,看参数坐标系下有没有聚集点,这样的聚集点就对应了原始坐标系下的直线
四、预习要求
1. 查阅资料,理解并掌握哈夫变换方法检测直线的基本原理与步骤。
2. 复习VB/VC/Matlab的基本概念、基本语法和编程方法。
五、实验内容及步骤
1. 上机编写程序,以“六边形.bmp ”为实验对象,利用哈夫变换方法检测出六边形各边边长。
2. 利用实验一的Harris 角点检测程序,检测“六边形.bmp ”中六边形的各边边长。
3. 调试程序。
4. 根据实验结果,撰写实验报告。
六、实验程序
clc,
close
BW=imread('liu.bmp' );
thresh=[0.01,0.17];
sigma=2;%¶¨Òå¸ß˹²ÎÊý
f = edge(double(BW),'canny' ,thresh,sigma);
figure,imshow(f,[]);
[H, theta, rho]= hough(f,'RhoResolution' ,0.5);
peak=houghpeaks(H,6);
hold on
lines=houghlines(f,theta,rho,peak);
figure,imshow(f,[])
hold on
for k=1:length(lines)
xy=[lines(k).point1;lines(k).point2]; plot(xy(:,1),xy(:,2),'LineWidth' ,2, 'Color' , 'green' ); % ±ê³öÏ߶εÄÆðʼºÍÖն˵ã plot(xy(1,1),xy(1,2),'x' , 'LineWidth' ,2, 'Color' , 'yellow' ); plot(xy(2,1),xy(2,2),'x' , 'LineWidth' ,2, 'Color' , 'yellow' );
text((xy(1,1)+xy(2,1))/2,(xy(1,2)+xy(2,2))/2,num2str(sqrt((xy(1,1)-xy(2,1))^2+(xy(1,2)-xy(2,2))^2)),'Color' ,[1,0,0]);%Ëã³öÏ߶γ¤¶È end
实验二 多边形边长测量
一、实验目的
1. 掌握哈夫变换方法检测直线的基本原理和步骤。
2. 复习VB/VC/Matlab的基本概念、基本语法和编程方法,并熟练使用VB/VC/Matlab编写遗传算法程序。
二、实验设备
微机
三、实验原理
在原始图像坐标系下的一个点对应了参数坐标系中的一条直线,同样参数坐标系的一条直线对应了原始坐标系下的一个点,然后,原始坐标系下呈现直线的所有点,它们的斜率和截距是相同的,所以它们在参数坐标系下对应于同一个点。这样在将原始坐标系下的各个点投影到参数坐标系下之后,看参数坐标系下有没有聚集点,这样的聚集点就对应了原始坐标系下的直线
四、预习要求
1. 查阅资料,理解并掌握哈夫变换方法检测直线的基本原理与步骤。
2. 复习VB/VC/Matlab的基本概念、基本语法和编程方法。
五、实验内容及步骤
1. 上机编写程序,以“六边形.bmp ”为实验对象,利用哈夫变换方法检测出六边形各边边长。
2. 利用实验一的Harris 角点检测程序,检测“六边形.bmp ”中六边形的各边边长。
3. 调试程序。
4. 根据实验结果,撰写实验报告。
六、实验程序
clc,
close
BW=imread('liu.bmp' );
thresh=[0.01,0.17];
sigma=2;%¶¨Òå¸ß˹²ÎÊý
f = edge(double(BW),'canny' ,thresh,sigma);
figure,imshow(f,[]);
[H, theta, rho]= hough(f,'RhoResolution' ,0.5);
peak=houghpeaks(H,6);
hold on
lines=houghlines(f,theta,rho,peak);
figure,imshow(f,[])
hold on
for k=1:length(lines)
xy=[lines(k).point1;lines(k).point2]; plot(xy(:,1),xy(:,2),'LineWidth' ,2, 'Color' , 'green' ); % ±ê³öÏ߶εÄÆðʼºÍÖն˵ã plot(xy(1,1),xy(1,2),'x' , 'LineWidth' ,2, 'Color' , 'yellow' ); plot(xy(2,1),xy(2,2),'x' , 'LineWidth' ,2, 'Color' , 'yellow' );
text((xy(1,1)+xy(2,1))/2,(xy(1,2)+xy(2,2))/2,num2str(sqrt((xy(1,1)-xy(2,1))^2+(xy(1,2)-xy(2,2))^2)),'Color' ,[1,0,0]);%Ëã³öÏ߶γ¤¶È end