6

こんにちは、ポリゴンに問題があります。何を調べたらいいのかわからないので、ここで質問することにしました。下の画像は単純な形状を示しています。輪郭は OpenCV のfindContours()で検出され、CV_CHAIN_APPROX_TC89_KCOS (これがどのように行われるかを知りたい人向け) アルゴリズムによって近似されるため、線のすべての点が 1 つの線にまとめられます。とにかく、いくつかの輪郭には何らかの種類のノイズが含まれています。これをノイズと呼んでいます。下の画像は、ノイズの意味を示しています。赤い線が輪郭です。(申し訳ありませんがMSペイントスキルはありません)

ここに画像の説明を入力

私の目標は、形状を再定義して形状を近似することですが、この「ノイズ」は除外します。したがって、輪郭は次のようになります。青い線は修正された輪郭を示しています。

ここに画像の説明を入力

4

2 に答える 2

5
  1. コーナーの検出を試みます... cvGoodFeatuersToTrack()....しかし、コーナーが十分な距離で分離されている必要があるという基準を持っています...コーナーがクラスターを形成する場合、それらを破棄します。
  2. 等高線にある点のリストから... (最高の x、最高の y)、(最高の x、最低の y)、(最低の x、最高の y) および (最低の x、最低の y) を持つ点を選択します。 ..これらの 4 つの点を結合します...
  3. コーナー自体に「ノイズ」がある場合は、ハフの変換を使用して画像内の直線を検出してみてください...
于 2013-01-17T13:47:10.030 に答える
1

もう1つのアプローチを提案できます:

1) Hough Line Transformを使用して画像上の線を検出できます (Canny を使用して輪郭を検出する前に)。メソッド HoughLinesP でかなり大きなしきい値 (線を「検出」するための交差の最小数) を使用することで、細い線を考慮することはできません。

2) すべての線を見つけた後、@DanielHsH によって説明されているように、それらの交点を見つけることができます。したがって、すべてのコーナーを見つけることができます。

于 2013-01-17T14:24:06.010 に答える