1

私は、7x10グリッドのiphone(またはあらゆる種類のまともなカメラ)によって撮影された写真を取り込む必要があるプログラムを持っています。エッジの周りには厚い黒いボーダーがあります。この画像は、右または左に回転して受信できます(スキューを気にする必要はありません)。グリッドの画像はすでに元の状態になっていますが、取り込んでいる画像を取得して、「完全/元の」状態に回転させる必要があります。

アイデア1:パフォーマンスの低下/悪い結果

私が受け取る画像と私がすでに持っている完璧なグリッド画像をしきい値設定します。各ピクセルを0回転で比較し、合計スコアを取得して保存します。これを行って、増分の画像を1から359まで回転させます。最低のスコアは、画像を元の状態に戻すために必要な回転です。

アイデア2:これを行う方法がまだわからない

私が受け取る画像と私がすでに持っている完璧なグリッド画像をしきい値設定します。画像の中央に垂直方向と水平方向に線を引きます。垂直線と水平線が通過した黒のピクセル数に基づいて回転を見つけます。これには、私が理解するのが苦手なある種の三角法が必要になります。

これを機能させるための他のアイデアはありますか?

私を正しい方向に向けるための助けをいただければ幸いです。

ありがとう!

4

1 に答える 1

2

1本の水平線と1本の垂直線を描く代わりに、2本の水平線を描きます(たとえば、それぞれが画像の3分の1にあります)。a1これらの線の左半分だけを見て、それぞれ(および)のパス上にある黒いピクセルの数を計算しますa2。また、2本の赤い線の間の距離、つまりピクセル数を追跡する必要がありdます。

私が理解しているように、問題の図

上の図でこの表記を使用すると、目的の角度は次のようになります。

alpha=atan2((a2-a1),d)

を反時計回りに回転さalphaせると、画像の白い部分が適切に配置されます。

于 2012-05-23T22:08:59.460 に答える