广州大学计算机视觉实验二:摄像机几何

2023-11-10 20:59

本文主要是介绍广州大学计算机视觉实验二:摄像机几何,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

相关资料

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

实验二 摄像机几何

  • 相关资料
  • 一、实验目的
  • 二、基本要求
  • 三、实验软件
  • 四、实验内容
    • 1. 世界坐标系点和像素坐标系点的对应
    • 2. 验证二者坐标是否线性关系
  • 五、实验过程
    • 1. 世界坐标系点和像素坐标系点的对应
    • b. 验证二者齐次坐标是否存在线性关系(附加题)

一、实验目的

本实验课程是计算机、智能、物联网等专业学生的一门专业课程,通过实验,帮助学生更好地掌握计算机视觉相关概念、技术、原理、应用等;通过实验提高学生编写实验报告、总结实验结果的能力;使学生对计算机视觉、模式识别实现等有比较深入的认识。
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))

在这里插入图片描述

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

这篇关于广州大学计算机视觉实验二:摄像机几何的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/385206

相关文章

uva 10387 Billiard(简单几何)

题意是一个球从矩形的中点出发,告诉你小球与矩形两条边的碰撞次数与小球回到原点的时间,求小球出发时的角度和小球的速度。 简单的几何问题,小球每与竖边碰撞一次,向右扩展一个相同的矩形;每与横边碰撞一次,向上扩展一个相同的矩形。 可以发现,扩展矩形的路径和在当前矩形中的每一段路径相同,当小球回到出发点时,一条直线的路径刚好经过最后一个扩展矩形的中心点。 最后扩展的路径和横边竖边恰好组成一个直

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

XTU 1237 计算几何

题面: Magic Triangle Problem Description: Huangriq is a respectful acmer in ACM team of XTU because he brought the best place in regional contest in history of XTU. Huangriq works in a big compa

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

poj 3304 几何

题目大意:给出n条线段两个端点的坐标,问所有线段投影到一条直线上,如果这些所有投影至少相交于一点就输出Yes!,否则输出No!。 解题思路:如果存在这样的直线,过投影相交点(或投影相交区域中的点)作直线的垂线,该垂线(也是直线)必定与每条线段相交,问题转化为问是否存在一条直线和所有线段相交。 若存在一条直线与所有线段相交,此时该直线必定经过这些线段的某两个端点,所以枚举任意两个端点即可。

POJ 2318 几何 POJ 2398

给出0 , 1 , 2 ... n 个盒子, 和m个点, 统计每个盒子里面的点的个数。 const double eps = 1e-10 ;double add(double x , double y){if(fabs(x+y) < eps*(fabs(x) + fabs(y))) return 0 ;return x + y ;}struct Point{double x , y

poj 2653 几何

按顺序给一系列的线段,问最终哪些线段处在顶端(俯视图是完整的)。 const double eps = 1e-10 ;double add(double x , double y){if(fabs(x+y) < eps*(fabs(x) + fabs(y))) return 0 ;return x + y ;}struct Point{double x , y ;Point(){}Po

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础