如何实现霍夫变换?

2023-12-24

如何实施霍夫变换 http://en.wikipedia.org/wiki/Hough_transform在文本图像上?我正在寻找伪代码(最终这将在java中)。

以下是一些背景信息:

给定图像,确定直线的方程y = mx + b。通常,霍夫变换以极坐标表示,使得Rho = y*sin(theta) + x*cos(theta)。 (我不太确定是什么X and Y值对应于返回图像)。

我们只对Rho and theta值并绘制它们。累加器中具有许多点的位置(我知道一些实现,而不是执行)被视为一条线。

我不明白的问题是如何找到rho and theta您将用它来更新累加器。


霍夫变换最简单的情况是线性变换 检测直线。在图像空间中,直线可以表示为 描述为 y = mx + b 并且可以为每对绘制图形 图像点 (x, y)

所以这告诉你什么x and y对应于图像中的背面。

在霍夫变换中,一个主要思想是考虑特征 直线的不是图像点 (x1, y1), (x2, y2), ...,而是 相反,就其参数而言,例如斜率参数 m 和 截距参数 B.

基于这一事实,直线 y = mx + b 可以表示为参数空间中的点(b, m)。 然而,人们面临着垂直线引起的问题 参数 m 和 b 的无界值。出于计算原因, 因此,最好使用一对不同的参数,表示为 和 (theta),用于霍夫变换中的线。

参数 rho 表示直线与直线之间的距离 原点,而 theta 是从原点到此向量的角度 最近点。

这告诉你什么rho and theta对应于:它们是您试图在图像中描述的线的斜率和截距的极坐标表示。


On 来源锻造 http://cimg.cvs.sourceforge.net/cimg/CImg/examples/hough_transform.cpp?view=markup你可以找到一个C++霍夫变换的实现。

您应该能够解释我在上一个链接中指出的代码的描述可能如下:

霍夫变换算法使用一个称为累加器的数组来 检测直线 y = mx + b 的存在。

例如,线性霍夫变换问题有两个未知数 参数:m 和 b。

对于每个像素及其邻域,霍夫变换算法 确定该像素处是否有足够的边缘证据。如果 所以,它会计算该行的参数,然后寻找 参数落入的累加器的 bin,并增加 该垃圾箱的价值。

通过查找具有最高值的箱,通常通过寻找 累加器空间中的局部最大值,最可能的线可以是 提取的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何实现霍夫变换? 的相关文章

  • TreeMap 删除所有大于某个键的键

    在项目中 我需要删除键值大于某个键的所有对象 键类型为Date 如果重要的话 据我所知TreeMapJava中实现的是红黑树 它是一种二叉搜索树 所以我应该得到O n 删除子树时 但除了制作尾部视图并一一删除之外 我找不到任何方法可以做到这
  • Java Logger 未记录到 Netbeans 中的输出

    我正在 Netbeans 中使用 Maven 启动一个 Java 项目 我编写了一些代码来使用 Logger 类进行日志记录 但是 日志记录似乎不起作用 在程序开始时 我运行 Logger getLogger ProjectMainClas
  • 垃圾收集器如何在幕后工作来收集死对象?

    我正在阅读有关垃圾收集的内容 众所周知 垃圾收集会收集死亡对象并回收内存 我的问题是 Collector 如何知道任何对象已死亡 它使用什么数据结构来跟踪活动对象 我正在研究这个问题 我发现GC实际上会跟踪活动对象 并标记它们 每个未标记的
  • 与 Eclipse 中的 Java Content Assist 交互

    作为我的插件项目的一部分 我正在考虑与 Eclipse 在 Java 文件上显示的内容辅助列表进行交互 我正在尝试根据一些外部数据对列表进行重新排序 我看过一些有关创建新内容辅助的教程 但没有看到有关更改现有内容辅助的教程 这可能吗 如果是
  • Android中如何使用JNI获取设备ID?

    我想从 c 获取 IMEIJNI 我使用下面的代码 但是遇到了未能获取的错误cls 它总是返回NULL 我检查了环境和上下文 它们都没有问题 为什么我不能得到Context班级 我在网上搜索了一下 有人说我们应该使用java lang Ob
  • java inputstream 打印控制台内容

    sock new Socket www google com 80 out new BufferedOutputStream sock getOutputStream in new BufferedInputStream sock getI
  • 在 Java 中如何找出哪个对象打开了文件?

    我需要找出答案哪个对象在我的 Java 应用程序中打开了一个文件 这是为了调试 因此欢迎使用工具或实用程序 如果发现哪个对象太具体了 这class也会很有帮助 这可能很棘手 您可以从使用分析器开始 例如VisualVM http visua
  • 将非 Android 项目添加到 Android 项目

    我在 Eclipse 中有三个项目 Base Server 和 AndroidClient Base和Server是Java 1 7项目 而AndroidClient显然是一个android项目 基础项目具有在服务器和 Android 客户
  • 如何在java中将日期格式从YYMMDD更改为YYYY-MM-DD? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我从机器可读代码中获取日期格式为 YYMMDD 如何将其更改为 YYYY MM DD 例如我收到 871223 YYMMDD 我想把它改成
  • 将人类日期(当地时间 GMT)转​​换为日期

    我正在服务器上工作 服务器正在向我发送 GMT 本地日期的日期 例如Fri Jun 22 09 29 29 NPT 2018在字符串格式上 我将其转换为日期 如下所示 SimpleDateFormat simpleDateFormat ne
  • Oracle Blob 在 PHP 页面中作为 img src

    我有一个网站当前使用文件服务器上的图像 这些图像显示在页面上 用户可以根据需要拖放每个图像 这是使用 jQuery 完成的 图像包含在列表中 每张图片都非常标准 img src network path image png height 8
  • 不可变的最终变量应该始终是静态的吗? [复制]

    这个问题在这里已经有答案了 在java中 如果一个变量是不可变的并且是final的 那么它应该是一个静态类变量吗 我问这个问题是因为每次类的实例使用它时创建一个新对象似乎很浪费 因为无论如何它总是相同的 Example 每次调用方法时都会创
  • 轻松的反应

    我有一个与这里描述的类似的案例 动态更改RESTEasy服务返回类型 https stackoverflow com questions 3786781 dynamically change resteasy service return
  • Java Swing - 如何禁用 JPanel?

    我有一些JComponents on a JPanel我想在按下 开始 按钮时禁用所有这些组件 目前 我通过以下方式显式禁用所有组件 component1 setEnabled false 但是有什么办法可以一次性禁用所有组件吗 我尝试禁用
  • 为什么\0在java中不同系统中打印不同的输出

    下面的代码在不同的系统中打印不同的输出 String s hello vsrd replace 0 System out println s 当我在我的系统中尝试时 Linux Ubuntu Netbeans 7 1 它打印 When I
  • 部署 .war 时出现 Glassfish 服务器错误:部署期间发生错误:准备应用程序时出现异常:资源无效

    我正在使用以下内容 NetBeans IDE 7 3 内部版本 201306052037 爪哇 1 7 0 17 Java HotSpot TM 64 位服务器虚拟机 23 7 b01 NetBeans 集成 GlassFish Serve
  • 将 JScrollPane 添加到 JFrame

    我有一个关于向 Java 框架添加组件的问题 我有一个带有两个按钮的 JPanel 和一个添加了 JTable 的 JScrollPane 我想将这两个添加到 JFrame 中 我可以将 JPanel 添加到 JFrame 或将 JScro
  • partitioningBy 必须生成一个包含 true 和 false 条目的映射吗?

    The 分区依据 https docs oracle com javase 8 docs api java util stream Collectors html partitioningBy java util function Pred
  • 由 Servlet 容器提供服务的 WebSocket

    上周我研究了 WebSockets 并对如何使用 Java Servlet API 实现服务器端进行了一些思考 我没有花费太多时间 但在使用 Tomcat 进行一些测试时遇到了以下问题 如果不修补容器或至少对 HttpServletResp
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁

随机推荐

  • 如何水平对齐多个图像(连续)?

    如何水平对齐多个图像 它们不必适合宽度屏幕 相反 我想让它们超过后者的宽度 如果这有意义的话 我检查了类似问题的很多答案 但找不到任何可以解决我的问题的答案 Html div img src Content Images Personal
  • Crystal Report:“文件对于附件来说太大”错误

    我是水晶报表服务器的新手 我在这里解释错误的详细信息 我正在使用 SAP Business Objects CMC 为我的应用程序生成报告 下面是图像中的版本详细信息 当我尝试生成文件大小超过 1MB 的报告文件时 它会抛出以下错误 Err
  • 如何在 Facebook Marketing API 上检查营销活动的交付状态

    我正在用 Python 做一个关于这个的小应用程序 我使用的是 effective status 字段 但它仅显示它是否已暂停 我想检查活动是否正在运行 Thanks effective status 为您提供此活动的有效状态 对于 Cam
  • 在Python中创建一个螺旋数组?

    我和我的伙伴试图用 python 创建一个有趣的游戏 其中输入数组的元素以螺旋方式访问 我尝试了几种方法 如下所示 source https stackoverflow com a 398302 5717589 def spiral X Y
  • 通过 eclipse 插件访问项目构建路径

    我需要以编程方式检查项目的构建路径是否已包含指定的库 这是一个快速修复建议 以了解这是否已经 修复 并且不会成为问题 我可以访问当前的IInvocationContext 因此 在某些拐角处 到相应的IProject object 如何检查
  • 使用 Docker 的 artifacts-credprovider 和 VSS_NUGET_EXTERNAL_FEED_ENDPOINTS

    也许您可以帮助我使用私人 NuGet feed 进行身份验证 我已经花了一天时间研究不同的解决方案并注意到这个仓库 https github com microsoft artifacts credprovider 但我仍在努力完成它 我使
  • Perl 挑战 - 目录迭代器

    有时您会听到关于 Perl 的说法 可能有 6 种不同的方法来解决同一问题 优秀的 Perl 开发人员通常具有合理的见解 可以在各种可能的实现方法之间做出选择 举一个 Perl 问题的例子 一个简单的脚本 它递归地迭代目录结构 查找最近修改
  • 自定义验证器在 FormView 中工作吗?

    我通过谷歌搜索发现很多人都在为这个问题苦苦挣扎 但我仍然没有找到正确的答案 https i stack imgur com 15jen png https i stack imgur com 15jen png 我有一个表单视图 需要检查语
  • Django ORM 中 ImageField 的默认图像

    我正在使用一个ImageField将个人资料图片存储在我的模型上 如果没有定义图像 如何设置它返回默认图像 我还没有尝试过这个 但我相对确定您可以将其设置为您所在领域的默认值 pic models ImageField upload to
  • 是否有适用于 Delphi-XE 的 LockBox 版本

    在哪里可以找到适用于 Delphi XE 的 LockBox 版本 有 Delphi 2010 版本可用Songbeamer com http www songbeamer com delphi 根据我将 Abbrvia 移植到 Delph
  • 如何生成给定集合的幂集?

    我正在为面试而学习 我在网上的 数学 类别下偶然发现了这个问题 生成给定集合的幂集 int A 1 2 3 4 5 int N 5 int Total 1 lt lt N for int i 0 i lt Total i for int j
  • DataGridView 在最后一行之后显示一些额外的空间

    我有一个Panel我在其上放置了一个控件DataGridView控件 显示来自 SQL Server 的数据 它工作得很好 除了当我将滚动条移动到底部时出现不必要的空间 我缩短了高度 但空间仍然存在 My DataGridView以编程方式
  • (sql) 当数据类型为文本时如何使用 count() 方法?

    select count category from list where category like action 上面是我想要运行的查询 但是 当我运行该查询时 我得到 数据类型错误 有没有其他方法count 或者 我该如何使用coun
  • 寻找将变量插入对象(如果不为空)的简写

    我经常有几个命名变量 如果它们不为空或未定义 我想将它们放入一个对象中 JavaScript 有几个很好的构建对象的快捷方式 所以我想一定有一个适合这个用例的快捷方式 我通常会做这样的事情 但它是如此冗长 function foo a b
  • 表变量可以用在 select 语句的 where 子句中吗?

    我有一个正在执行两步查询的存储过程 第一步是从表中收集 VARCHAR2 类型字符的列表 并将它们收集到表变量中 定义如下 TYPE t cids IS TABLE OF VARCHAR2 50 INDEX BY PLS INTEGER v
  • 多对多自引用表

    有没有好的方法来实现单表中行之间的多对多关系 示例 存储单词同义词的表 list of words CREATE TABLE word id integer PRIMARY KEY word varchar 32 NOT NULL UNIQ
  • 将文件 bin\EntityFramework.SqlServer.xml 复制到 ..\bin\EntityFramework.SqlServer.xml 时出错失败

    当我尝试发布 ASP NET MVC 4 项目时 出现以下错误 错误 1 将文件 bin EntityFramework SqlServer xml 复制到 obj Debug Package PackageTmp bin EntityFr
  • 在C++中通过迭代器从向量中获取相邻的元素对

    我想迭代向量中的所有相邻对元素 例如 如果我有一个向量 1 2 3 4 我希望我的迭代器返回以下内容 1 2 2 3 3 4 我知道如何使用以下命令一次迭代一个元素 vector
  • pandas 重新定义 isnull 以忽略 'NA'

    作为数据分析练习的一部分 我正在将 Excel 工作表读入 pandas 数据框 df pd ExcelFile file xlsx parse 0 nullcounts df isnull sum to frame null record
  • 如何实现霍夫变换?

    如何实施霍夫变换 http en wikipedia org wiki Hough transform在文本图像上 我正在寻找伪代码 最终这将在java中 以下是一些背景信息 给定图像 确定直线的方程y mx b 通常 霍夫变换以极坐标表示