2

最近、自分の音楽コレクションをデジタル化するために、多くのアルバム カバーをスキャンしました。スキャン後のデフォルトの手順は、回転とトリミングです。

回転する場合、重要なことは、1 つまたは複数の基準線を見つけることです。回転後、「通常」の線は多かれ少なかれ水平 (または垂直) になり、奇数の線は多少斜めになります。2 つの「異なる」回転を区別できます。

2 つの四角形

注: 2 つの四角形は 2 つのアルバム カバーです。アルバム カバーの 2 つの行は、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 に答える