最近,我已经扫描了很多专辑封面,试图将我的音乐收藏数字化。扫描后的默认程序是旋转和裁剪。
对于旋转,重要的是找到一条或多条参考线。旋转后,“正常”线将或多或少水平(或垂直),奇数线将略微倾斜。可以区分两个“不同”的旋转:
注意:两个四边形是两张专辑封面。你可以想象专辑中的两行作为两条印刷线。所有参考线都以粗体显示。您可能想知道为什么专辑封面不仅仅是矩形,而是请注意这张图片大大夸大了。也就是说,如果你仔细看过专辑封面,你会发现他们很少接近一个矩形。
在情况A中,很明显大多数覆盖边缘是平行的并且形成90度角,和/或印刷物体过度倾斜,这表明印刷品本身是倾斜的。在这两种情况下,我都可以更好地使用封面边缘作为参考。
在情况B中,大多数线条看似不规则,印刷品似乎没问题。然后我更好地使用打印的对象作为参考。
总而言之,这主要是一个直观的过程。
虽然上述内容不是实际问题的一部分,但我认为首先了解背景信息对您有用。我们现在已经到了裁剪步骤,这个部分一直困扰着我。
我的问题很简单:如果我必须裁剪任何专辑封面,我怎么能以这样的方式裁剪它让我留下专辑封面的最大部分?换句话说,如何找到共同形成四边形内最大可能矩形的4个值?
唯一的条件是矩形必须与参考线平行,即水平。
答案 0 :(得分:-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)