3

はじめに: オブジェクトの 2 つの境界線を見つけようとする画像処理タスクに取り組んでいます。これは 2 つの直線セグメントで表すことができます。ハフ線変換のいくつかの変形を使用して、ターゲット画像の線分を見つけています。オブジェクトの境界ごとにハフ変換によって複数の線が検出され (非常に小さな角度を共有)、画像内のどこかにあるオブジェクトの境界に対応しない線が検出される場合があります (偽陽性)。オブジェクトの 2 つの境界線の間の空間的関係 (角度) はおおよそわかっているので、何らかのクラスタリング アプローチを使用して、誤検知を除外し、1 つずつ見つかった複数の線分から平均線分を計算すると考えました。国境。

アプローチ: 線分をクラスター化するには、各線分の位置の類似度を定義する必要があります。私は、2 つの線分間の角度のタプルと、2 つの線分間のある種の平均距離を使用すると考えました。これは、この平均距離測定を計算するための最良のアプローチが何であるかを考えている場所でもあります。やや単純なアプローチは、離散的な位置で各セグメントをサンプリングし、サンプリングされた各ポイントから他の線分までの最も近い距離 (L2) を測定し、距離を合計して、合計をサンプル数で割ることです。これを行うにはもっと賢い方法があると思いますが、何か提案はありますか?

ヒント: 私は LGPL/BSD ライセンスのツールキット (OpenCV、Boost) を使用して C++ で作業しているため、mathematica への統合などの特殊な数学演算は実装が難しい場合があります。

4

3 に答える 3

1

平均距離の代わりに最短距離はどうですか?これを計算する方法についての詳細な議論がここにあります

于 2011-09-13T21:10:07.970 に答える
1

問題を正しく理解していると仮定すると、次の解決策はどうでしょうか。線がある場合、それらの線の開始点と終了点を決定しようとすることができます。それらを計算するときは、両方の始点と両方の終点の距離を測定し、距離の平均を計算するだけです。

ラインをピクセル値として持っていると思います。始点と終点は、線のピクセルの x と y の最大値と最小値を見つけることで計算できます。

于 2011-09-13T14:16:22.397 に答える
0

点 (x0i,y0i) から (x1i, y1i) まで延びる i 番目の線分を含む、n 個の線分のセットがあるとします。

最初の線分を見て、それが垂直または水平に近いかどうかを確認します。abs(y00-y10) > abs(x00-x10) の場合、フラグを設定し、x 座標と y 座標を交換します。これにより、無限勾配の問題が回避されます。(2 つの線分が垂直である場合でも問題が発生する可能性があると思いますが、線分がそれほど異なる場合、平均線はあまり意味がありません。)

2n 個の端点すべてを使用して、直線に適合する最小二乗を計算します

y = a*x + b

各エンドポイントについて、abs(a*xij + b - yij) を計算します。これは、平均線までの端点の y 軸に平行な距離を測定します。これがある程度大きい場合は、その線分を拒否して、それなしでフィットを繰り返すことができると思います. 数ピクセル未満の場合は、y 座標を適合した座標に置き換えて、線分の端を適合した線に移動できます。

交換フラグが設定されている場合は、x と y を元に戻します。

于 2017-01-02T21:53:51.150 に答える