课程链接三维视觉

作业任务任务

课程任务就一个,实现一个Linear Sweep Algorithm,这个算法是用来检测两张图片之间的对应点。

因为SIFT检测如果把检测点的数量增大,可能会存在一些错误错误检测点,所有通常把SIFT检测的点的数量k设置为很小,这样虽然减少了出错率,但是检测的点少了。所有我们需要使用linear sweep算法补充这些点。

实现

他给出的实现已经写的很清楚了。

需要实现五个方法:

  1. get_keypoints
  2. get_matches
  3. convert_line_pts_to_lines
  4. get_line_intersections
  5. get_line_crossings
  6. get_cross_ratios

都比较简单,convert_line_pts_to_lines是两种直线不同表示方法之间的转换,原本的表示是起点和终点,两点确定一条直线,通过这个函数变成直线的标准形式(a, b, 1),也即是ax+by+1 = 0。其中l = (a, b, 1)需要满足 l x T = 0 , l y T = 0 lx^T = 0, ly^T = 0 lxT=0,lyT=0。所有直接算叉乘就行了。

    # 直接求叉乘就完事了,因为X * (X x Y) = 0, Y * (X X Y) = 0, 说明XY都在(X x Y)上了。lines = np.cross(pts, other_pts, axis=1)# 最后一项归一化成1lines = lines / (lines[:, -1].reshape(lines.shape[0], 1))

get_line_intersections算直线的交点,也是算叉乘就行:

    intersections = np.cross(lines, other_lines)intersections = intersections / (intersections[:, -1].reshape(intersections.shape[0], 1))

get_line_crossings算当前直线和检测直接的交点,这里麻烦一点,因为我们还需要确认交点是不是在起点和终点的范围内,所有求出交点后还需要对交点进行过滤。这里的过滤方法是:如果 P P P是在 P 0 P_0 P0​和 P 1 P_1 P1​方法之间,那么就有 0 < P 0 P ∗ P 0 P 1 < = ∣ P 0 P 1 ∣ 2 0<P_0 P * P_0P_1 <= |P_0P_1|^2 0<P0​P∗P0​P1​<=∣P0​P1​∣2,因为 P P P在 P 0 P 1 P_0P_1 P0​P1​上的的投影肯定在 P 0 P 1 P_0P_1 P0​P1​上。

    # 保证get_line_intersections的输入v_lines = np.ones_like(r_lines)v_lines[:, ] = v_line# 计算交点line_intersections = get_line_intersections(v_lines, r_lines)# 判断是否是在线段中间# P如果在P0和P1的中间,那么把PP0投影到P0P1一定会在0到|P0P1|上,所有有0 < P0P * P0P1 < |P0P1|^2for i, point in enumerate(line_intersections):prod = (point[0] - r_start_pts[i][0]) * (r_end_pts[i][0] - r_start_pts[i][0]) + \(point[1] - r_start_pts[i][1]) * (r_end_pts[i][1] - r_start_pts[i][1])sqrlen = (r_end_pts[i][0] - r_start_pts[i][0]) * (r_end_pts[i][0] - r_start_pts[i][0]) + \(r_end_pts[i][1] - r_start_pts[i][1]) * \        (r_end_pts[i][1] - r_start_pts[i][1])      if (prod >= 0 and prod <= sqrlen):line_crossings = np.concatenate((line_crossings, point))line_crossings = line_crossings.reshape(-1, 3)

NUS CS5477 assignment1相关推荐

  1. 去除冗余token的DETR效果怎么样?NUS颜水成团队提出端到端的PnP-DETR结构

    ​作者丨happy 编辑丨极市平台 本文原创首发于极市平台,转载请获得授权并标明出处. 原文链接:https://arXiv.org/abs/2109.10852 语言模型与目标检测这种八竿子打不着的 ...

  2. NUS 联合 Sea AI Lab 发表 Multi-view Pose Transformer,完全端到端学习,超强可扩展性...

    关注公众号,发现CV技术之美 ✎ 编 者 言  从多视角估计多人三维人体姿态是一个比较challenge的研究方向,目前的方法都采用了多阶段的模式,整个框架比较复杂.最近NUS联合Sea AI Lab ...

  3. 5u以太网用交换机连接电脑_干货丨如何用自己的电脑直接连接NUS打印机

    期末考试又来啦,有好多同学在后台问小助手怎么把复习资料打印下来. 有同学会抢答了:这题我会!拿着U盘去图书馆就可以打印了呀! 没错,用U盘打印是大家最常用的方式.但小小的U盘不仅容易弄丢,还容易发生各 ...

  4. 伦敦大学国王学院 计算机phd,伦敦大学国王学院招收博士(CSC资助博士或者NUS/HKU与KCL联培博士) - 公派出国 - 小木虫 - 学术 科研 互动社区...

    伦敦大学国王学院招生CSC资助博士,还有一些和HKU,NUS等合作的联培博士项目,大家可以关注一下. 我的博导目前也在招收博士,有兴趣的可以联系他,药物化学方向 https://kclpure.kcl ...

  5. CS231n assignment1 KNN部分用到的函数

    1. plt.rcParams 摘自:https://www.cnblogs.com/pacino12134/p/9776882.html 作用 设置matplotlib的配置参数,pylot使用rc ...

  6. nus计算机和iss学院,走进新加坡国立大学系统科学院

    系统科学院(ISS)是NUS的一个学术部门,成立于1981年,是提供研究生教育和专业发展课程以培养通讯行业领袖并推动商业和组织创新的专门学院.本学院目前已经是海内外国际一流的IT知识传输中心,专门提供 ...

  7. [嵌入式框架][nrf51822][SDK12.3] BLE分层设计 NUS 透传数据队列发送,提升带宽利用率

    接上一篇 [嵌入式框架][nrf51822][SDK12.3] BLE分层设计 集合(OTA.透传.电量.设备信息.HID) [单片机框架] [queue] 实现一个简易的消息队列 文章目录 一. 透 ...

  8. Coursera | Introduction to Data Science in Python(University of Michigan)| Assignment1

       u1s1,这门课的assignment还是有点难度的,特别是assigment4(哀怨),放给大家参考啦~    有时间(需求)就把所有代码放到github上(好担心被河蟹啊)    先放下该课 ...

  9. COS461-普林斯顿大学计算机网络课程-assignment1实现

    COS461是普林斯顿大学的计算机网络课程:https://github.com/PrincetonUniversity/COS461-Public 课程实现 assignment1 assignme ...

最新文章

  1. c语言编译开头,#includestdio.h,为什么C语言代码开头都有这一行?
  2. maven setting.xml配置说明
  3. 6.0的版本的 tc,不支持大漠对象做数组吗?
  4. 微软亚研提出VL-BERT:通用的视觉-语言预训练模型
  5. 计算机二级vb重点知识,计算机二级《VB》历年考试重点知识
  6. java wifimanager_Java WifiManager.disableNetwork方法代碼示例
  7. WebView实例开发之人人网Oauth2认证
  8. LuoguP1268树的重量【构造/思维】By cellur925
  9. 最接近原点的 k 个点_第K个最接近原点的位置
  10. iOS开发UI篇-在UItableview中实现加载更多功能
  11. no plugin found for prefix ‘tomcat 7‘ in the current project and in the plugin groups的解决方法
  12. python-numpy.array中,any()和all()方法介绍
  13. java.lang.NoClassDefFoundError: Could not initialize class org.apache.batik.bridge.CursorManager
  14. ajax submittype,AjaxSubmit()提交file文件
  15. avr单片机流水灯程序c语言,AVR单片机学习(四)C语言的流水灯验证
  16. IIS无法启动:存储空间不足解决办法
  17. unity与3DMax的单位问题
  18. php控制梯形图,如何画梯形图? plc梯形图怎么画?如何画plc梯形图
  19. 勒索软件攻击为何越来越多?
  20. 程序员阿里三次面试已过却无理由挂了,网友:阿里HR有一票否决

热门文章

  1. 朗读评价语言集锦_课堂评价语言“集锦”
  2. 如何从硬盘安装DOS和windows
  3. 用PhotoshopCS3制作动画效果
  4. java web系统明文密码加密传输
  5. 数据库的应用(三):实例举例
  6. 人工智能及其应用第六版目录
  7. 【生物信息学-单细胞】基因转录调控网络转录因子调控网络分析
  8. 网申之后宣讲会有必要去吗?
  9. GP——数据库常用命令
  10. 《工业APP白皮书》发布,鼎捷软件ERP,MES等系统方案获专业推荐