用于等边三角形检测的霍夫变换

问题描述

我有一个作业,我必须为等边三角形检测实现霍夫变换:

  • 三角形边的长度为 L,因此这意味着图像中的所有三角形都是相同的。 我做了什么? 首先,我使用精明的边缘检测器来获取图像中的边缘。 现在我必须找到一种方法来为霍夫变换参数化,我的想法是拥有这些参数:
  • 三角形的中心。
  • 旋转角度θ。 3 trianlges with the same center 我开始实施以下想法,但我认为这比我想象的要困难一些,因为: 我必须检查它属于哪个三角形中心的每个边缘点,为此我认为没有办法找到它。

那么任何人都可以通过告诉我我的想法是对还是错来提供帮助吗?

如果参数化很好,我该如何从这一点开始?

如果不是,什么是好的参数化?

这是我在这里的第一个问题,所以我希望它没有我想象的那么糟糕。 谢谢你,祝你有美好的一天。

编辑

添加一个带有三角形的输入图像的样本 example of input image

解决方法

我认为这是一个很好的参数化,我使用了相同的参数化。 请注意,对于每个点,您都有它的梯度,这意味着您有它可能属于的三角形角。 注意等边三角形角,这种三角形有3条边,每条边+120度,例如: 边缘1:1 边缘2:121 = 1 + 120 边缘3:241 = 1 + 120 + 120 这意味着每个边缘梯度模数 120 将产生相同的结果。 这意味着给定一个具有梯度的点(假设梯度指向三角形内部),您可以轻松计算它可能属于的三角形的角度,这样您只需在霍夫变换中迭代 x,y。 我使用了这些方程: https://byjus.com/jee/centre-of-mass-of-equilateral-triangle/#:~:text=In%20geometry%2C%20the%20equilateral%20triangle,at%20which%20its%20medians%20meet

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...