python使用RANSAC算法拟合直线
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算法拟合直线相关推荐
- PCL:RANSAC算法拟合直线的两种实现方式
pcl利用ransac实现直线拟合的方法 pcl::SampleConsensusModelLine pcl::SACSegmentation pcl::SampleConsensusModelLin ...
- Open3D RANSAC算法拟合分割多条直线
Open3D RANSAC算法拟合分割多条直线 Open3D是一个基于Python的可视化和三维数据处理库,它包含了一些现代计算机视觉算法和工具,使得对3D图像和点云数据进行处理变得更加轻松.在Ope ...
- RANSAC 算法拟合平面
RANSAC 算法拟合平面 视觉库为VisionPro 1.输入参数 Distance Threshold:对于拟合算法的每次迭代,测量候选平面与每个3D输入点之间的距离.比这个阈值更远的点被认为是离 ...
- RANSAC算法做直线拟合
RANSAC算法之前了解过相关的原理,这两天利用晚上闲暇的时间,看了一下RANSAC算法的Python代码实现,这方面的资料很多了,这里就不在重复.在分析该RANSAC.py代码之前,想用自己的对RA ...
- RANSAC算法实现 + 直线拟合
一.RANSAC算法 1.参考资料 [1]题目来源与解析:商汤科技SLAM算法岗的RANSAC编程题 [2]牛客网题目:[编程题]线性回归 [3]牛客网解答参考:商汤科技某算法岗的编程题有点过分了啊 ...
- 利用 ransac 算法拟合平面
1.前言 最近项目中遇到一个问题, 老板给了一组数据然后要求获取其中处于同一个平面上的数据点的信息, 很明显就是使用ransac 算法进行处理. 2. ransac算法思想 这里我们使用自己的理解来说 ...
- 用RANSAC算法实现干扰严重的直线拟合~
1.说到直线拟合,一般是用最小二乘啦,在opencv里面就是用cv.fitLine来完成,首先简单介绍一下该函数: cv.fitLine(points, distType, param, reps, ...
- 机器视觉:ransac算法详解
一.说明: 在线性回归问题中,采样点具备明显的线性相关性:如下图左.然而有些情性中,噪声很大,线性性散布在非线性点的噪声中,将无法用线性回归 的方法进行直线提取. 随机样本一致性 (RANSAC) 是 ...
- RANSAC算法(附RANSAC直线拟合C++与Python版本)
文章目录 RANSAC算法简介 RANSAC算法基本思想和流程 迭代次数推导 RANSAC与最小二乘区别 RANSAC直线拟合代码(C++及Python版本) C++版本代码 Python版本代码如下 ...
最新文章
- ETC核心技术团队CTO空降上海,引领高校区块链技术风潮
- hihocoder 1320 压缩字符串(字符串+dp)
- SAP Fiori gateway OData开发重要的tcode SEGW背后的数据库表
- redhat Enterprise 5下安装中文输入法,
- C++学习之路 | PTA乙级—— 1075 链表元素分类 (25 分)(精简)
- weblogic下载安装
- 快速回复信息神器免费的有哪些,哪些工具可以快捷回复
- 爬取智联招聘岗位描述并根据描述生成词云
- 微信小程序开发的基本用法
- 基于Java+springboot+mvc+vue员工管理系统
- 毕马威明确从事区块链行业所需的四大技能
- 扬声器程序设计(微机原理实验四)
- python xls 转化 xlsx
- 超分辨率(CVPR2020) ~《Video Super-resolution with Temporal Group Attention》
- 3070网卡驱动linux教程,Ubuntu 12.04下RT5370无线网卡驱动安装
- 视频重建论文EDVR: Video Restoration with Enhanced Deformable Convolutional Networks阅读笔记
- 3D成像方法 汇总(原理解析)--- 双目视觉、激光三角、结构光、ToF、光场、全息
- EPLAN 2.7 新建符号或图框
- Error connecting to the service protocol: failed to connect to
- p2p网贷平台设计简析