OpenCV と Qt5 を使用してキャリパーフィッティング直線ツールを構築する (C++ 実装)


OpenCVとQt5をベースにしたキャリパーフィッティング直線ツールの構築

序文

ブロガーは最近、Haikang VM のライン検索ツールを使用した Haikang Vision Master4.0 に基づいた産業用ビジョン エンジニアリング プロジェクトを作成しました。その後ブロガーは、OpenCV に基づいた技術原理に基づいて同様の機能を開発しました。検索用のキャリパー ツールを構築しました。 Qt5では直線になります。直線を見つけるキャリパーは、コンピューター ビジョンの分野で一般的に使用される技術であり、画像内の画像を検出するために使用され、産業用ビジョンやその他の分野で広く使用されています。
キャリパーフィッティング円ツールについては、ブロガーがOpenCV と Qt5 を使用してキャリパー円検索ツールを構築している (C++ 実装)を参照してください。

1. キャリパーエッジ直線フィッティングの概要

キャリパー エッジ ライン フィッティングは、画像内のオブジェクトの直線エッジを検出してフィッティングするために一般的に使用されるコンピューター ビジョン技術です。その原理は数学的幾何学と統計的手法に基づいています。

以下は、キャリパーエッジ直線フィッティングの基本原理です。

  1. エッジ検出: まず、画像に対してエッジ検出を実行して、画像内のエッジ情報を抽出します。一般的に使用されるエッジ検出アルゴリズムには、Sobel オペレーター、Canny オペレーターなどが含まれます。

  2. キャリパー スライディング ウィンドウ: 画像から開始点を選択し、固定ステップ サイズと方向で小さなウィンドウ (通常は 1 次元) を移動し、ウィンドウ内のエッジ ピクセルの勾配を計算します。

  3. 距離メトリックとフィッティング: 各ウィンドウについて、距離メトリック関数 (最小二乗など) によってウィンドウ内のピクセルとライン間の誤差を測定します。最も一般的な距離計量関数は、点から線までの距離です。

  4. 反復更新: 距離測定の誤差が最小限になるように、ウィンドウの位置を反復的に調整します。これは、収束条件に達するまでウィンドウの位置と向きを継続的に調整することで実現できます。

  5. ライン フィッティング: 最後に、ウィンドウが最適なラインに移動すると、ウィンドウ内の点がライン モデルにフィットします。これは、最小二乗法などのフィッティング アルゴリズムを使用して、傾きや切片などのライン パラメーターを計算することで実行できます。

上記のステップを通じて、キャリパーエッジ直線フィッティングは画像から直線エッジ情報を効果的に抽出し、対応する直線モデルをフィッティングすることができます。この方法は、物体検出、線分抽出、道路標示検出など、多くのコンピュータ ビジョン タスクで広く使用されています。


2. キャリパーの原理

キャリパーの原理は、N 個の小さな長方形 ROI のグレー値が突然変化する場所を見つけることです。つまり、それぞれの小さな長方形の ROI を横断し、グレースケール変異のピーク値である点をそれぞれ見つけます。次に、N 個の点を直線または円に当てはめます。

3. 1Dエッジ抽出

ここに画像の説明を挿入

  1. Qt5 を使用してキャリパー ライン ファインダー ツール シェイプを構築します。これは各長方形ツールによって構築されます。
    ここに画像の説明を挿入

  2. ガウス フィルタリングは平均グレー値 (輪郭) に対して実行され、曲線が滑らかになり、ノイズが除去されます。
    ここに画像の説明を挿入

  3. 平滑化された輪郭の一次導関数を求めます。
    ここに画像の説明を挿入

  4. 設定されたパラメータに従ってエッジ点を抽出します。

4. 直線当てはめの原理

ライン フィッティングは、一連の離散データ点を通じて直線モデルを推定およびフィッティングするための一般的な数学的手法です。この方法は、統計、機械学習、コンピューター ビジョンなどの多くの分野に適用できます。

直線フィッティングの原理は次のとおりです。

  1. データ収集: まず、既知のデータ ポイントのセットを収集します。これらのデータ ポイントは、実験による観察、サンプル データ、または他の手段で取得されたデータです。

  2. フィッティング モデルの決定: 直線フィッティングの場合、フィッティングされるモデルは直線であると仮定します。線形モデルは、傾きと切片、つまり y = mx + b で表現できます。ここで、m は傾き、b は切片です。

  3. 損失関数の選択: 観測点と適合線の間の誤差を測定するための損失関数を選択します。一般的な損失関数は最小二乗法 (最小二乗法) です。これは、各観測点からラインまでの垂直距離の二乗の合計です。

  4. パラメータ推定: 損失関数を最小化することで、最適なライン パラメータ (傾きと切片) を見つけます。最小二乗法では、閉解を数式で計算したり、勾配降下法などの最適化アルゴリズムを使用して反復最適化を実行したりできます。

  5. モデルの評価: ラインをフィッティングした後、モデルを評価して、その適用性と有効性を判断できます。一般的な評価指標としては、平均二乗誤差(Mean Squared Error)や決定係数(Coefficient of Determination)などがあります。

5. ソフトウェアの実装

商用の画像処理ライブラリは使用せず、純粋な Qt5 + OpenCV
ここに画像の説明を挿入

  1. 画像を選択して直線を検索します
    ここに画像の説明を挿入

  2. 線を描くファインダー
    ここに画像の説明を挿入

  3. 直線フィッティング
    ここに画像の説明を挿入

4. Hikvision Vision Masterとの比較
ここに画像の説明を挿入

結論

ブロガーの能力の限界により、この記事で紹介した方法にはどうしても抜けが生じてしまいますが、次の改訂版ではより完璧かつ厳密な形で皆さんにお届けできるよう、間違いを熱心に指摘していただければ幸いです。

おすすめ

転載: blog.csdn.net/weixin_40280870/article/details/131423657