nptest1 = np.array(line1_yx)
print("nptest1", nptest1)line1 = cv2.fitLine(nptest1, cv2.DIST_L2, 0, 0.01, 0.0)
k1 = line1[1] / line1[0]
b1 = line1[3] - k1 * line1[2]
print('第1排line1: \ny = {:0.8f}x + {:0.8f}'.format(k1[0], b1[0]))ran_k, ran_b = fit_line_by_ransac(nptest1)
print('line1: y=%s*x+%s' %(ran_k, ran_b))
import numpy as np
import random
import mathdef fit_line_by_ransac(point_list, sigma, iters = 1000, P = 0.99):# 使用RANSAC算法拟合直线# 迭代最大次数 iters = 1000# 数据和模型之间可接受的差值 sigma# 希望的得到正确模型的概率P = 0.99# 最好模型的参数估计best_a = 0#直线斜率best_b = 0#直线截距n_total = 0#内点数目for i in range(iters):# 随机选两个点去求解模型sample_index = random.sample(range(len(point_list)), 2)x_1 = point_list[sample_index[0]][0]y_1 = point_list[sample_index[0]][1]x_2 = point_list[sample_index[1]][0]y_2 = point_list[sample_index[1]][1]if x_2 == x_1:continue# y = ax + b 求解出a,ba = (y_2 - y_1) / (x_2 - x_1)b = y_1 - a * x_1# 算出内点数目total_inlier = 0for index in range(len(point_list)):y_estimate = a * point_list[index][0] + bif abs(y_estimate - point_list[index][1]) < sigma:total_inlier += 1# 判断当前的模型是否比之前估算的模型好if total_inlier > n_total:iters = math.log(1 - P) / math.log(1 - pow(total_inlier/len(point_list), 2))n_total = total_inlierbest_a = abest_b = b# 判断是否当前模型已经符合超过一半的点if total_inlier > len(point_list)//2:breakreturn best_a, best_bif __name__ == '__main__':#测试points = [(1,3), (5,11), (8,18), (9,22), (10, 19), (19,37)]a,b = fit_line_by_ransac(points, sigma=3)print('line: y=%s*x+%s' %(a, b))

python使用RANSAC算法拟合直线相关推荐

  1. PCL:RANSAC算法拟合直线的两种实现方式

    pcl利用ransac实现直线拟合的方法 pcl::SampleConsensusModelLine pcl::SACSegmentation pcl::SampleConsensusModelLin ...

  2. Open3D RANSAC算法拟合分割多条直线

    Open3D RANSAC算法拟合分割多条直线 Open3D是一个基于Python的可视化和三维数据处理库,它包含了一些现代计算机视觉算法和工具,使得对3D图像和点云数据进行处理变得更加轻松.在Ope ...

  3. RANSAC 算法拟合平面

    RANSAC 算法拟合平面 视觉库为VisionPro 1.输入参数 Distance Threshold:对于拟合算法的每次迭代,测量候选平面与每个3D输入点之间的距离.比这个阈值更远的点被认为是离 ...

  4. RANSAC算法做直线拟合

    RANSAC算法之前了解过相关的原理,这两天利用晚上闲暇的时间,看了一下RANSAC算法的Python代码实现,这方面的资料很多了,这里就不在重复.在分析该RANSAC.py代码之前,想用自己的对RA ...

  5. RANSAC算法实现 + 直线拟合

    一.RANSAC算法 1.参考资料 [1]题目来源与解析:商汤科技SLAM算法岗的RANSAC编程题 [2]牛客网题目:[编程题]线性回归 [3]牛客网解答参考:商汤科技某算法岗的编程题有点过分了啊 ...

  6. 利用 ransac 算法拟合平面

    1.前言 最近项目中遇到一个问题, 老板给了一组数据然后要求获取其中处于同一个平面上的数据点的信息, 很明显就是使用ransac 算法进行处理. 2. ransac算法思想 这里我们使用自己的理解来说 ...

  7. 用RANSAC算法实现干扰严重的直线拟合~

    1.说到直线拟合,一般是用最小二乘啦,在opencv里面就是用cv.fitLine来完成,首先简单介绍一下该函数: cv.fitLine(points, distType, param, reps, ...

  8. 机器视觉:ransac算法详解

    一.说明: 在线性回归问题中,采样点具备明显的线性相关性:如下图左.然而有些情性中,噪声很大,线性性散布在非线性点的噪声中,将无法用线性回归 的方法进行直线提取. 随机样本一致性 (RANSAC) 是 ...

  9. RANSAC算法(附RANSAC直线拟合C++与Python版本)

    文章目录 RANSAC算法简介 RANSAC算法基本思想和流程 迭代次数推导 RANSAC与最小二乘区别 RANSAC直线拟合代码(C++及Python版本) C++版本代码 Python版本代码如下 ...

最新文章

  1. ETC核心技术团队CTO空降上海,引领高校区块链技术风潮
  2. hihocoder 1320 压缩字符串(字符串+dp)
  3. SAP Fiori gateway OData开发重要的tcode SEGW背后的数据库表
  4. redhat Enterprise 5下安装中文输入法,
  5. C++学习之路 | PTA乙级—— 1075 链表元素分类 (25 分)(精简)
  6. weblogic下载安装
  7. 快速回复信息神器免费的有哪些,哪些工具可以快捷回复
  8. 爬取智联招聘岗位描述并根据描述生成词云
  9. 微信小程序开发的基本用法
  10. 基于Java+springboot+mvc+vue员工管理系统
  11. 毕马威明确从事区块链行业所需的四大技能
  12. 扬声器程序设计(微机原理实验四)
  13. python xls 转化 xlsx
  14. 超分辨率(CVPR2020) ~《Video Super-resolution with Temporal Group Attention》
  15. 3070网卡驱动linux教程,Ubuntu 12.04下RT5370无线网卡驱动安装
  16. 视频重建论文EDVR: Video Restoration with Enhanced Deformable Convolutional Networks阅读笔记
  17. 3D成像方法 汇总(原理解析)--- 双目视觉、激光三角、结构光、ToF、光场、全息
  18. EPLAN 2.7 新建符号或图框
  19. Error connecting to the service protocol: failed to connect to
  20. p2p网贷平台设计简析

热门文章

  1. android USB如何修改Serial Number or SN
  2. 数学建模论文写作学习——问题重述与问题分析写作规范
  3. python实现GIF生成工具
  4. 【深度学习】自回归VS自编码
  5. 【附源码】计算机毕业设计SSM校园二手交易平台
  6. MES系统软硬件常规故障处理方法
  7. 复现贪吃蛇程序——构造小蛇
  8. 理解对数——你需要了解的方方面面
  9. Docker构建镜像时,验证码无法绘制的问题
  10. 【Codeforces 803 C. Maximal GCD】