首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个矩形的位置和大小匹配算法

两个矩形的位置和大小匹配算法
EN

Stack Overflow用户
提问于 2016-09-15 16:05:33
回答 3查看 1.2K关注 0票数 5

我正在寻找一种算法来计算以下内容:我有一个带有预定义区域的图像(附加图像上的绿色区域)。用户绘制红色矩形,算法应该计算红色矩形是否与绿色矩形大致匹配。例如,附加图片上的红色矩形的位置就可以了。

计算这个值的好方法是什么?有没有什么最佳实践算法?

我的想法是计算红色矩形的中间,然后确定中间是否在绿色矩形内。此外,我会计算长度和高度是否与绿色的长度和高度大致匹配(或多或少25%)。

这是个好主意吗?还有其他建议吗?

EN

回答 3

Stack Overflow用户

发布于 2016-09-15 18:43:07

计算交叉点的面积,并除以两个矩形面积的平均值(算术或几何)。你会得到一小部分。越接近1,匹配越好。

票数 12
EN

Stack Overflow用户

发布于 2016-09-15 19:55:29

  • 将顶点之间的平均距离作为不匹配的标准。
  • 假设第一个矩形的顶点是[x1,y1], [x2,y2], [x3,y3], [x4,y4],第二个是[a1,b1],[a2,b2],[a3,b3],[a4,b4]
  • Get euclidiean distance这些点
  • 较小的距离表示更好的匹配,例如,精确重叠将得到0,任何矩形的形状偏移或偏移偏移将增加顶点的平均距离。

票数 2
EN

Stack Overflow用户

发布于 2016-10-01 23:42:12

实际上,我上面的意思是,我希望从算法中得到以下响应,明确比较的哪些方面失败:

  1. 矩形的宽度偏差。
  2. 矩形的高度偏差。
  3. 矩形的水平位置偏差。
  4. 矩形的垂直位置偏差。

让我们将上面的条件称为“失败条件”。这些失败的条件表明了我对比较的看法,这不可避免地指导了我的方法。人们可以用不同的方式来看待它(“你的矩形的面积太远了。”)。当然,用户可以获得更通用的响应,如下所示:

  • 你的矩形的尺寸偏差。
  • 你的矩形的位置偏差。
  • 你的矩形偏差。再试一次。
  • 伙计,你喝醉了吗?

在下面的代码中,我使用green将绿色矩形作为对象引用,使用red将红色矩形作为对象引用。所有条件都基于相对误差,即相对于实际值归一化的绝对误差,即绿色矩形的值。

需要指定的一件事是“远离”对于水平和垂直位置意味着什么。这意味着绿色矩形的关键点的位置与红色矩形的相应关键点的位置之间存在分歧。让我们选择矩形的中心作为比较的关键点(可以选择矩形的左上角)。

另一件需要指定的事情是如何以相对的方式比较两个点,分别针对每个轴。你需要一个参考值。您可以做的是计算每个轴上两点之间的绝对偏移量。然后,您可以计算相对于绿色矩形的相应尺寸的相对偏移。例如,可以通过x轴中心之间的绝对偏移除以绿色矩形的宽度来计算相对水平偏移。总而言之,为了比较成功,我希望矩形具有几乎相同的尺寸和几乎相同的中心。其中“几乎”应该用百分比来量化。

代码语言:javascript
复制
| green.width - red.width | / green.width > 0.25

如果上面的值为true,则失败条件(1)关闭。这家伙可能喝醉了。我们可以退出并通知。

关于失败条件(2),假设矩形高度的最大允许相对误差为30%,我们必须计算的布尔值为:

代码语言:javascript
复制
| green.height - red.height | / green.height > 0.30

如果上面的值为true,则失败条件(2)关闭。我们可以退出并通知。

代码语言:javascript
复制
| green.center.x - red.center.x | / green.width > 0.15

如果上面的值为true,则失败条件(3)关闭。我们可以退出并通知。

代码语言:javascript
复制
| green.center.y - red.center.y | / green.height > 0.20

如果上面的值为true,则失败条件(4)关闭。我们可以退出并通知。

如果至少有一个失败的条件发生,则比较失败。如果没有失败条件为true,则比较成功,绿色和红色矩形几乎相同。

您还可以根据自己的喜好调整阈值。不过,在极端情况下,可能需要考虑更多参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39505991

复制
相关文章

相似问题

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