认识矩形

发布于 2024-11-25 11:14:09 字数 108 浏览 2 评论 0原文

我有一个笔画点列表,我想检测这个笔画是否是矩形。 所以4个角大约是90度。然后我需要矩形的大小、位置和方向。

我使用的是 C#,但其他语言的算法或伪代码也很有用。

谢谢

I have a list of points of a stroke and I want to detect if this stroke is rectangular.
So 4 angles of approximately 90 degrees. Afterwards I need the size, position and orientation of the rectangle.

I am using C# but algorithms in other languages or pseudocode are also usefull.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

棒棒糖 2024-12-02 11:14:10

我假设您将每个笔划收集到一个单独的列表中:

  1. 查找笔划的趋势线(我从
  2. 找到每两条相交趋势线之间的角度(与某个阈值的 90 度进行比较)。
  3. 找到任何趋势线的方向(角度)以获得形状的方向(当然,任何接近 0 mod 90 度的值与正方形的 0 相同)。
  4. 找到任何趋势线的长度(从一个交点到另一条交点的距离),以及它的相邻(相交)线的长度,这两个长度将是您的长度和宽度(或者宽度和高度,如果你喜欢)用于尺寸计算(面积,或其他任何东西)。

    • 在第 1 步中,您可以使用多种趋势线计算算法,并且可能值得您花时间检查其中的一些算法。

如果所有点都采样到同一个集合中,您首先需要将此集合分成 4 个笔画(这本身就是一项艰巨的任务...更艰巨的任务)

I'll assume that you collected each stroke into a separate list:

  1. Find the trend line for the stroke (I'd start with Simple linear regression for this).
  2. Find the angle between the each two intersecting trend lines (compare to 90 deg with some threshold).
  3. Find orientation (angle) of any of the trend lines to get orientation of shape (of course anything which is near 0 mod 90 deg is the same as 0 in case of a square).
  4. Find the length of any of the trend lines (distance from one intersection to the other), and the length of on of it's adjacent (intersecting) lines, these two lengths will be your length and width (or width and height if you like) for size calculation (area, or anything else).

    • In step 1 you can use many trend line computing algorithms, and it might be worth your time checking a few of them out.

In case all points are sampled into the same collection, you first need to break this collection into the 4 strokes (which is a though task on it's own...tougher task)

不离久伴 2024-12-02 11:14:09

嗯,我不久前做了类似的东西。
您可以在此处下载。
http://up352.siz.co.il/up2/lhmjmdenn53m.png
这个东西可以让你检测边缘 - 正如你所看到的,它非常准确。
当你得到边缘时,你所需要的就是计算它们之间的角度 - 如果它是 ~ 90 那么它是一个矩形。

Well, I've made something like this a while ago.

You can download it here.

http://up352.siz.co.il/up2/lhmjmdenn53m.png

This thing allows you to detect edges - as you see its pretty accurate.

When you get the edges all you need is to calculate the angles between them - and if it's ~ 90 then its a rectangle.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文