相关资料

广州大学计算机视觉实验一:图像处理入门
广州大学计算机视觉实验二:摄像机几何
广州大学计算机视觉实验三:图像滤波
广州大学计算机视觉实验四:图像分割
广州大学计算机视觉实验五:简易数字识别
广州大学计算机视觉实验六:车牌识别
六份实验报告下载链接Click me🔗

一、实验目的

本实验课程是计算机、智能、物联网等专业学生的一门专业课程,通过实验,帮助学生更好地掌握计算机视觉相关概念、技术、原理、应用等;通过实验提高学生编写实验报告、总结实验结果的能力;使学生对计算机视觉、模式识别实现等有比较深入的认识。
1.掌握模式识别中涉及的相关概念、算法。
2.熟悉计算机视觉中的具体编程方法;
3.掌握问题表示、求解及编程实现。

二、基本要求

1.实验前,复习《计算机视觉与模式识别》课程中的有关内容。
2.准备好实验数据。
3.编程要独立完成,程序应加适当的注释。
4.完成实验报告。

三、实验软件

使用Python实现。

四、实验内容

1. 世界坐标系点和像素坐标系点的对应

a. 用手机拍摄国际象棋棋盘图片(假设棋盘位于世界坐标系XY 平面,左上角8A处为坐标原点,棋盘每格长宽为1)
b. 选择至少6个世界坐标系点,记录其像素坐标

2. 验证二者坐标是否线性关系

a. 验证二者欧几里得坐标是否存在线性关系(通过线性回归的残 差验证)
b. 验证二者齐次坐标是否存在线性关系(附加题)

在这里插入图片描述

五、实验过程

1. 世界坐标系点和像素坐标系点的对应

a. 用手机拍摄国际象棋棋盘图片(假设棋盘位于世界坐标系XY 平面,左上角8A处为坐标原点,棋盘每格长宽为1)
b. 选择至少6个世界坐标系点,记录其像素坐标
用手机拍摄国际象棋棋盘图片:
在这里插入图片描述
选择7个世界坐标系点,并记录其像素坐标(红色小圆点标记)
在这里插入图片描述

根据XYZ轴确定坐标,7个世界坐标系点分别是(1,1,0)、(2,2,0)、(3,3,0)、(5,4,0)、(6,3,0)、(6,6,0)、(8,7,0),对应的像素坐标分别为(182,187,0)、(368,372,0)、(545,547,0)、(871,705,0)、(1034,536,0)、(1026,1019,0)、(1316,1154,0)。
2. 验证二者坐标是否线性关系
a. 验证二者欧几里得坐标是否存在线性关系(通过线性回归的残 差验证)

世界坐标系,相机坐标系,图像坐标系和像素坐标系之间的转换
1、世界坐标系到相机坐标系之间的转换:世界坐标系是真实世界的基准坐标系,我们需要知道相机坐标系下的点在世界坐标中的位置,利用齐次坐标转换矩阵。
在这里插入图片描述

2、相机坐标系到图像坐标系之间的转换:该转换可以看成简单的射影变换(将相机看成小孔模型),将三维坐标变换成二维坐标。其中f为焦距:
在这里插入图片描述

3、图像坐标系到像素坐标系:
在这里插入图片描述

可以看到,从世界坐标系到像素坐标系需要经过一个复杂的过程,根据题意,我们需要判断两个坐标是否存在线性关系,由于Z轴都取零值,所以仅讨论X,Y从世界坐标系映射到像素坐标系的关系是否满足线性关系即可。

x_data_ = [[1,1],[2,2],[3,3],[5,4],[6,3],[6,6],[8,7]]
y_data_ = [[182,187],[368,372],[545,547],[871,705],[1034,536],[1026,1019],[1316,1154]]

#线性回归
model = linear_model.LinearRegression()
model.fit(x_data_, y_data_)
print("[X',Y']=",model.coef_,"*[X,Y]",model.intercept_)
#计算残差
y_pred = model.predict(x_data_)
residual_error=y_pred-y_data_
print("世界坐标[X,Y]拟合像素坐标[X',Y']的残差和:",sum(residual_error))

在这里插入图片描述

证明得到二者欧几里得坐标存在线性关系。

b. 验证二者齐次坐标是否存在线性关系(附加题)

x_data_ =[[1,1,1],[2,2,1],[3,3,1],[5,4,1],[6,3,1],[6,6,1],[8,7,1]]
y_data_ = [[182,187,1],[368,372,1],[545,547,1],[871,705,1],[1034,536,1],[1026,1019,1],[1316,1154,1]]

#线性回归
model = linear_model.LinearRegression()
model.fit(x_data_, y_data_)
print("[X',Y',1]=",model.coef_,"*[X,Y,1]",model.intercept_)
#计算残差
y_pred = model.predict(x_data_)
residual_error=y_pred-y_data_
print("世界坐标[X,Y,1]拟合像素坐标[X',Y',1]的残差和:",sum(residual_error))

在这里插入图片描述

证明得到二者齐次坐标存在线性关系。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐