5

円を検出するプログラムをMatlabで作成しています。

基本的には角を探し、それらの間の距離に基づいてどのような形であるかを判断することで、正方形、長方形、三角形などの形を検出することができました。画像は白黒で、背景は黒、形は白なので、角を見つけるには、白いピクセルが見つかるまで画像の各ピクセルを検索する必要があります。

しかし、どうすれば円を識別できるのか理解できません。

これは、円の入力がどのように見えるかの例です。

http://i.imgur.com/yfbqx.png

4

2 に答える 2

3

たとえば、複数の円が存在する可能性があるかどうか、常に画像の中心にあるかどうか、アルゴリズムが歪みに対してどの程度回復力がある必要があるかなど、詳細な情報がなければ最良の方法を判断するのは困難です。また、形状の位置と寸法を決定する必要があるのか​​、単に「はい」/「いいえ」の出力を決定する必要があるのか​​。

ただし、円が1つしかない場合の非常に単純なアプローチは、次のとおりです。

  1. (x1、y1)に最初の白いピクセルが見つかるまで、画像を上から下にスキャンします
  2. (x2、y2)で最後の白いピクセルが見つかるまで、画像を下から上にスキャンします
  3. 疑わしい円の直径をy2-y1として導きます
  4. 疑わしい円の中心を((x1 + x2)/ 2、y1 +(y2-y1)/ 2)として導きます
  5. これで、画像内の各ピクセルを、この仮想の円と一致するかどうかについてスコアリングできます。たとえば、ピクセルが疑わしい円の内側にある場合、それが白の場合は0、黒の場合は1、その逆の場合は疑わしい円の外側にスコアを付けます。
  6. ピクセルスコアを合計します。結果がゼロの場合、画像には完全な円が含まれています。スコアが高いほど、歪みのレベルが高くなっていることを示します。
于 2012-11-27T19:43:49.260 に答える
2

私はあなたがこの2つのトピックについて読むかもしれないと思います:

理論的:

Matlab:

于 2012-11-27T19:36:22.893 に答える