概率霍夫变换(Progressive Probabilistic Hough Transform)原理详解
概率霍夫变换(Progressive Probabilistic Hough Transform)的原理很简单,如下所述:
1.随机获取边缘图像上的前景点,映射到极坐标系画曲线;
2.当极坐标系里面有交点达到最小投票数,将该点对应x-y坐标系的直线L找出来;
3.搜索边缘图像上前景点,在直线L上的点(且点与点之间距离小于maxLineGap的)连成线段,然后这些点全部删除,并且记录该线段的参数(起始点和终止点),当然线段长度要满足最小长度;
4.重复1. 2. 3.。
In "A real-time lane marking localization, tracking and communication system":
Hough transform (HT) was proposed in [30] and is usually used to detect lines and circles; it has been used as the core method of lane marking detection in [3] and [31]. The core formula of HT is:
λ=xcos(θ)+ysin(θ)
λ is the length between the origin and the pedal of detected line and θ is the angle of its perpendicular line.
In [32], Matas et al. proposed the PPHT, which has been commonly accepted as one of the best line detection methods based on Hought transform theory. The algorithm PPHT proceeds as follows:
Randomly, select a new point for voting in the accumulator array, with contributions to all available bins (as referenced in [32], bin stands for a pair of (λ, θ)). Then remove the selected pixel from the input image.
Check if the highest peak (the pair of (λ, θ) with the most voting points) in the updated accumulator is greater than a pre-defined threshold th(N). If not then go to Step 1.
Find all lines with the parameter (λ, θ) which was specified by the peak in Step 2. Choose the longest segment (which can be denoted by starting point Pt0 and ending point Pt1) of all lines.
Remove all the points of the longest line from the input image.
Remove all the points of the selected line in Step 3 (Pt0−Pt1) from the accumulator, which means those points do not attend any other voting process.
If the selected segment is longer than a pre-defined minimum length, then take the segment (Pt0−Pt1) as one of the output results.
Go to Step 1.
References:
[3] D.O. Cualain, C. Hughes, M. Glavin, E. Jones. Automotive standards-grade lane departure warning system. IET Intell. Transp. Syst., 6 (1) (2012), pp. 44–57
[30] P.V.C. Hough, A method and means for recognizing complex patterns, US Patent: 3,069,654 (1962).
[31] K. Zu. Realtime lane tracking of curved local road. Proceedings of the IEEE Intelligent Transportation Systems (2006), pp. 1149–1155
[32] J. Matas, C. Galambos, J. Kittler. Robust detection of lines using the progressive probabilistic hough transform. Comput. Vision Image Underst., 78 (1) (2000), pp. 119–137
概率霍夫变换(Progressive Probabilistic Hough Transform)原理详解的更多相关文章
- 【动画消消乐】HTML+CSS 自定义加载动画:清新折叠方块效果 063(附源码及原理详解)
前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 自我介绍ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专 ...
- I2C 基础原理详解
今天来学习下I2C通信~ I2C(Inter-Intergrated Circuit)指的是 IC(Intergrated Circuit)之间的(Inter) 通信方式.如上图所以有很多的周边设备都 ...
- Zigbee组网原理详解
Zigbee组网原理详解 来源:互联网 作者:佚名2015年08月13日 15:57 [导读] 组建一个完整的zigbee网状网络包括两个步骤:网络初始化.节点加入网络.其中节点加入网络又包括两个 ...
- 块级格式化上下文(block formatting context)、浮动和绝对定位的工作原理详解
CSS的可视化格式模型中具有一个非常重要地位的概念——定位方案.定位方案用以控制元素的布局,在CSS2.1中,有三种定位方案——普通流.浮动和绝对定位: 普通流:元素按照先后位置自上而下布局,inli ...
- SSL/TLS 原理详解
本文大部分整理自网络,相关文章请见文后参考. SSL/TLS作为一种互联网安全加密技术,原理较为复杂,枯燥而无味,我也是试图理解之后重新整理,尽量做到层次清晰.正文开始. 1. SSL/TLS概览 1 ...
- 锁之“轻量级锁”原理详解(Lightweight Locking)
大家知道,Java的多线程安全是基于Lock机制实现的,而Lock的性能往往不如人意. 原因是,monitorenter与monitorexit这两个控制多线程同步的bytecode原语,是JVM依赖 ...
- [转]js中几种实用的跨域方法原理详解
转自:js中几种实用的跨域方法原理详解 - 无双 - 博客园 // // 这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同 ...
- 节点地址的函数list_entry()原理详解
本节中,我们继续讲解,在linux2.4内核下,如果通过一些列函数从路径名找到目标节点. 3.3.1)接下来查看chached_lookup()的代码(namei.c) [path_walk()> ...
- WebActivator的实现原理详解
WebActivator的实现原理详解 文章内容 上篇文章,我们分析如何动态注册HttpModule的实现,本篇我们来分析一下通过上篇代码原理实现的WebActivator类库,WebActivato ...
随机推荐
- 洛谷.3690.[模板]Link Cut Tree(动态树)
题目链接 LCT(良心总结) #include <cstdio> #include <cctype> #include <algorithm> #define gc ...
- Java并发程序设计(五)JDK并发包之线程复用:线程池
线程复用:线程池 一.为什么需要线程池 为了避免系统频繁地创建和销毁线程,使用线程池让线程进行复用.(即创建线程变成了从线程池中获取空闲线程,销毁线程变成了把线程放回线程池中.) 二.JDK对线程池的 ...
- iOS Application Extension
链接: iOS App Extension入门 iOS10通知及通知拓展Extension使用详解(附Demo) iOS10 通知extension之 Content Extension
- AngularJS中使用$http对MongoLab数据表进行增删改查
本篇体验使用AngularJS中的$http对MongoLab数据表进行增删改查. 主页面: <button ng-click="loadCourse()">Load ...
- selenium之关于 chromedriver的安装和使用
转自:https://blog.csdn.net/d77808675/article/details/79016271 最近在学习爬虫,用到了selenium 环境:Windows,python3 但 ...
- linux -- 查看磁盘空间的大小
Ubuntu 查看磁盘空间大小命令 df -h Df命令是linux系统以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间信息, 命令格式: df -hl 显示格式为: 文件系统 容量 已 ...
- CentOS7 命令笔记
网络 ifconfig已经过时,查看ip地址请使用ip addr或者ip link 服务 查看系统和硬件信息 cat /etc/os-release uname -r 显示正在使用的内核版本 dmid ...
- .NET 用 Unity 依赖注入——概述注册和解析类型(1)
本文内容 Unity 概述 环境 一个真实的例子 类型注册(Type Registrations) 解析类型(Resolving Types) 跳槽,新公司使用了 Unity,初步看了一下,公司的使用 ...
- [BetterExplained]书写是为了更好的思考
我经常在走路和睡前总结所学过的内容,思考遗留的问题,一段时间的阅读和思考之后,一个总体的知识框架就会逐渐浮现在脑海中.然后我会将它书写下来,然而,我往往非常惊讶地发现,当我书写的时候,新的内容仍然源源 ...
- 管理 Oracle Cluster Registry(OCR)
oracle的clusterware包含两个重要组件:OCR(包含本地组件OLR)和voting disks --OCR管理oracle clusterware和oracle rac数据库的配置信息 ...