2

最近,我扫描了很多专辑封面,试图将我的音乐收藏数字化。扫描后的默认过程是旋转和裁剪。

对于旋转,重要的是找到一条或多条参考线。旋转后,“正常”线或多或少会水平(或垂直),而奇数线会有些倾斜。可以区分两个“不同”的旋转:

两个四边形

注意:两个四边形是两个专辑封面。您可以将专辑封面中的两条线想象成两条印刷线。所有参考线均以粗体显示。您可能想知道为什么专辑封面不只是矩形,但请注意这张图片被大大夸大了。也就是说,如果您曾经仔细查看过专辑封面,您会注意到它们很少接近矩形。

在情况 A 中,很明显大部分封面边缘是平行的并形成 90 度角,和/或打印对象过度倾斜,这表明打印本身是倾斜的。在这两种情况下,我都可以更好地使用封面边缘作为参考。

在情况 B 中,大部分线条看起来不规则,打印效果还不错。然后我最好使用打印的对象作为参考。

总而言之,这主要是一个直观的过程。

尽管上述不是实际问题的一部分,但我认为首先了解背景信息对您很有用。我们现在已经到了裁剪步骤,一直困扰着我的部分。

我的问题很简单:如果我必须裁剪任何专辑封面,我该如何裁剪它以使我留下专辑封面的最大部分?换句话说,我怎样才能找到一起形成四边形内最大可能矩形的 4 个值?

唯一的条件是矩形必须平行于参考线,即水平。

4

1 回答 1

-2

如果您接受给定矩形将与现实世界中的 x 和 y 轴对齐而不是倾斜的约束,您可以执行以下操作

Given that point contains values x,y
Given quadrilateral roughly formed by

    A
                  B

      C          D

A rectangle may be formed via the following

leftX = max(A.x,C.x) 
topY = min(A.y,B.y)
rightX = min(B.x,D.x)
botY = max(C.y,D.y)

rectA = point(leftX, topY)
rectB = point(rightX, topY)
rectC = point(leftX, botY)
rectD = point(rightX, botY)
于 2012-07-18T19:25:14.180 回答