4
A
回答
3
我的建议是做遵循两个步骤:
- 找到点
- 找到一个凸多边形的最小边界框可以在O(N)来解决的convex hull,这个algorithm以下
编辑:好的,其实上述2个步骤是不足以成为一个正确和接受的答案。
在这两个步骤之前,您必须先对该组点进行预处理。
- 检查是否有3个或更多点共线,除去两个端点以外的点。
- 第1步之后,你现在应该得到一组没有3点或多点共线的点。
检查集合的大小:如果它只剩下1点或2点,你必须特别处理它们(对于1点,你可以找到任何最小的方框来包含它自己的方法; 2点也许使他们成为边框的对角线)
如果结果集已经离开> = 3分,那么只要按照我原来的2个步骤:凸包+旋转卡钳
欢呼。
2
看起来这是一个minimzation problem with constraints。
你需要找到4条线路:
l1: a1x + b1y + c1 = 0
l2: a1x + b1y + c2 = 0
l3: a2x + b2y + c3 = 0
l4: a2x + b2y + c4 = 0
所以,你有8个变量:a1,a2,b1,b2,c1,c2,c3,c4
您需要减少:
Sum(distance(li,point_j) | i from [1,4], j - over all points)
受到约束:
l1 dot l3 = 0 [ensuring rectangle - cosine=0->angle between lines=90]
for each point j:
a1xj + b1yj + c1 >=0 ['above' l1]
a1xj + b1yj + c2 <= 0 ['below' l2]
(similarly for l3,l4)
请注意,您可以更改目标函数以匹配其他最小化标准,如最小面积。
+0
这是不必要的复杂。 –
相关问题
- 1. OnRectangleToolClick:如何识别矩形?
- 2. 识别矩形形状
- 3. 删除ListBoxItem周围的矩形
- 4. SVG文本周围的矩形边框
- 5. 点击UIImageView周围的识别器
- 6. 如何给定的矩形内识别子三角形在该矩形
- 7. 如何获得矩形周围的最小长度电路?
- 8. Android imagebutton:如何删除图像周围的彩色矩形?
- 9. 如何在java中的鼠标光标周围绘制矩形?
- 10. 周边矩形
- 11. 识别图像中的矩形区域
- 12. 如何用svg在矩形周围创建“发光”?
- 13. Qt如何在矩形周围绘制边框?
- 14. 如何在轮廓周围绘制矩形?
- 15. 如何在这些图表周围获得白色矩形?
- 16. 如何在pictureBox1边框周围画一个矩形?
- 17. 如何在标签控件周围绘制矩形?
- 18. 如何在WPF中的多个形状周围获取单个边界矩形
- 19. 如何从矩阵中识别类别
- 20. 如何识别点击上绘制的矩形在画布上
- 21. 如何识别矩形的其他角落?
- 22. 如何在MATLAB中识别和裁剪图像中的矩形
- 23. 如何在openCV中识别不完整的矩形
- 24. 延迟绘制矩形周围形状部
- 25. 如何识别四边形多边形(非矩形)碰撞检测?
- 26. 形状识别(识别手绘基本形状 - 矩形,椭圆形,三角形等)?
- 27. 如何删除复选框中的复选框(安卓)周围的矩形
- 28. 如何在Leptonica中的图像(PIX)中的矩形周围创建边框?
- 29. 如何识别AutoHotkey中的IP范围
- 30. 如何在Silverlight网格的列周围显示“选择突出显示” - 矩形?
任何有限的点集都有许多周围的矩形。你需要告诉你想要哪一个。最小面积?最小的周长?最漂亮的看? –
构建凸包,然后以O(n)时间复杂度(其中n是凸包中的点数)构建矩形。 –
@ n.m。最好找到最漂亮的一个。作为一个人,图像的第一印象产生一个正方形,尽管它在数学上是正确的。 – Verilocos