0

画像と 2 つの点があり、これらの 2 つの点の間のピクセルを読み取り、 それらを小さな 1x40 配列にリサンプリングし
たいと考えています。 OpenCV の C# ラッパーである EMGU を使用しています。 ありがとう、 SW



サンプル画像

4

3 に答える 3

4

あなたが探しているのはブレゼンハムのラインアルゴリズムです。これにより、直線に最も近いピクセル配列内のポイントを取得できます。ウィキペディアのリンクには、開始するための疑似コードも含まれています。

于 2011-02-12T13:35:08.140 に答える
3

Emgu CV には、Imageと呼ばれる線に沿って色をサンプリングするクラスのメソッドが含まれていSampleます。

定義についてはマニュアルを参照してください。バージョン 2.3.0へリンクは次のとおりです。Image.Sample

から返された配列内のポイントを再サンプリング/補間して、Sample最終的に 40 要素の配列にする必要があります。再サンプリングにはいくつかの方法があるため、他の質問を参照することをお勧めします。

于 2011-10-31T22:32:05.323 に答える
2

回転とトリミング

私は最初に次のようにしようとします:

  • GetRotationMatrix2D( )で回転行列を計算する
  • この線が水平になるように画像をゆがめます ( WarpAffine)
  • 2 つのポイントの新しい位置を計算します ( を使用できますTransform)
  • 適切な幅と高さ 1 ピクセルの画像長方形を取得します ( GetRectSubPix)

あちこちの補間は結果に影響を与える可能性がありますが、とにかく補間する必要があります。回転する前に画像をトリミングすることを検討してください。

線の 8 連結ピクセルを反復処理します

それ以外の場合は、ライン反復子を使用して、2 点間のピクセルを反復処理できます。のドキュメントを参照してくださいInitLineIterator(申し訳ありませんが、リンクは OpenCV の Python バージョンです。EMGU については聞いたことがありません)。この場合、アンチエイリアス処理されていないラインのピクセルを反復処理すると思います。しかし、これははるかに高速である必要があります。

手動で補間する

最後に、画像を配列に変換し、線が通過する要素を計算し、手動でサブサンプリングして補間することができます。

于 2011-02-09T17:08:54.793 に答える