2010-11-20 13 views
6

たとえば、円と正方形のある画像があるとします。イメージの行列を与えられた正方形を見つける方法はありますか? (ただ1つの広場があり、時間は本当に問題ではありません)。おかげさまで 画像内の正方形を見つけるアルゴリズムはありますか?

+1

それは完璧な正方形か「正方形のような」ですか? –

+1

正確には、長方形です。しかし、それはかなりバニラです。 MSペイント「四角形」ツールで描画され、gifとして保存されているとします。 –

+1

四角形が軸に揃えられているか、回転していますか? – thejh

答えて

3

すべての点を「点灯」と「暗」に分割しましょう。

点灯している点を探し、上と下の点も点灯させます。それらは端の部分である可能性が高い。

同様に、ポイント(x、y)が点灯し、ポイント(x + 1、y)、(x + 2、y)も点灯するが、(x-1、y) 、y)は暗く、Y方向にも同様に、左上隅が見つかった可能性が高いです。等々。このようにしてコーナーを見つけてからそれらから広場を見つけることができます - 単純なアプローチであるようです。

0

イメージの四角形が完全な場合は、予想される位置に罫線があることを確認します。 Thejhの答えの擬似コードはうまくいくはずです。

+0

ありがとう、Gintautas。申し訳ありませんが、あなたは少し正式になりますか?いくつかの数学、または擬似コードかもしれない?私は文章の解析に問題があります。ありがとう。 –

+0

ええ、私の最初の文章は壊れました、申し訳ありません。修正する。 –

+0

私はあなたの質問を誤解していました。ペイントの「四角形」ツールで提供されているように、塗りつぶし矩形ではなく塗りつぶし矩形を探していると思いました。この場合、解決策ははるかに簡単です。 –

3

これは何か?

for (x,y of every black pixel) { 
#those methods should return true if the lines length is more than one pixel 
if (hasLineToRight(x,y)&&hasLineToBottom(x,y)) { 
    otherx=highestXOfLineToRight(); 
    othery=highestYOfLineToBottom(); 
    if (isLine(x,y,x,othery)&&isLine(x,y,otherx,y)) { 
    addBoxToList(x,y,otherx,othery); 
    } 
} 
} 

box image

あなたはpropably最高の幅と高さの値でボックスを使用します。

0

flood fillingあなたの四角形が見つかるまでランダムな点から始まりますか?

関連する問題