首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在检测器系统中确定旋转方块的重叠

在检测器系统中确定旋转方块的重叠
EN

Stack Overflow用户
提问于 2012-02-21 00:09:42
回答 2查看 740关注 0票数 2

我正在做一个问题,它需要我计算两个正方形的重叠面积。这是程序的一部分,该程序将由几个正方形检测器单元/像素(阵列)组成的旋转检测器置于由几个(较小)正方形像素组成的输入图的顶部,并确定由检测器像素检测到的来自每个输入像素的光的百分比。我尝试过几何方法,但有太多可能的变化需要考虑。

一个正方形可以相对于另一个正方形旋转任意角度,并且两个正方形的大小可以不同。给定的参数是输入地图上检测器像素的中心坐标、检测器像素的大小(默认情况下,输入像素的大小等于1)和旋转角度。

编辑:添加草图以澄清

Sketch

所以我要做的是计算每个输入像素(黑色方块)在给定的检测器像素(红色方块)内的部分,它可以是0到1之间的任何地方。然后可以乘以输入像素的值,并对所有输入像素求和,以计算检测器像素收集的总光线。

我尝试使用的几何方法是计算检测器像素边缘的斜率,并使用与输入像素边缘的交集来计算总重叠。

EN

回答 2

Stack Overflow用户

发布于 2012-02-21 00:27:40

如果我没理解错的话,你所做的等同于试图在灰度位图上找到重叠的方块?如果是这样的话,你可以做角点检测,并尝试从检测到的角点制作正方形,然后计算检测到的方块上的重叠?这个opencv示例可能是一个很好的起点:https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/python/squares.py?rev=907

如果我误解了问题(例如,我对旋转角度感到困惑),请提前道歉。

票数 0
EN

Stack Overflow用户

发布于 2012-02-21 00:42:50

下面是我用来做这件事的步骤。

  1. 确保你有两个正方形的角的坐标。
  2. 选择一个正方形并旋转两个正方形的角坐标,这样你在第一步中选取的正方形就有平行于x和y轴的边,并检查另一个正方形的角是否在第一个正方形的内侧。由于旋转了,这就像检查x坐标是否在左右两侧之间,y坐标是否在顶部和底部之间一样简单。

要旋转点,您将使用如下所示的函数:

代码语言:javascript
复制
from math import sin, cos, radians

def rotate_points(x, y, angle):
    """Rotate a set of points `angle` degrees counterclockwise about
    the origin.
    """
    theta = radians(angle)
    x_prime = x * cos(theta) - y * sin(theta)
    y_prime = x * sin(theta) + y * cos(theta)
    return x_prime, y_prime
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9364332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档