1

理解を深めるためにサンプル画像をアップロードしました:http://www.imagebanana.com/view/kaja46ko/test.jpg

画像では、いくつかのスキャンラインとマーカー(円が入った白いリタングル)を見ることができます。OpenCVを、5x5程度の指定された領域(スキャンラインで概説されている例)に沿って移動させたいと思います。その領域に黒から白へのグラデーションが含まれている場合は、後で作業できるように、OpenCVにその領域の位置を保存してもらいたいと思います。

最終的な結果は、マーカーと、黒と白の線で区切られた他のリタングルを区別することです。

そのようなことは可能ですか?私はたくさんグーグルで検索しましたが、エッジ検出器しか見つかりませんでしたが、それは私が望んでいることではありません。本当に必要なのは、黒から白へのグラデーションのみです。

前もって感謝します。

4

3 に答える 3

2

ヒストグラムを計算して、一部の領域を除外することをお勧めします。タスクにcvCalcHistを使用してから、しきい値を設定して、白黒ピクセルのパーセンテージがグラデーションのパーセンテージに対応するかどうかを判断できます。これはタスクを解決しませんが、複雑さを軽減するのに役立ちます。

次に、画像を侵食してすべての白い領域をマージできます。しきい値を適用した後、ブラックゾーンまたはホワイトゾーンの画像を分離する連結成分を(cvFindContoursを使用して)見つけることができます。次に、ホワイトゾーンとブラックゾーンの両方を同時に含む5x5の領域を見つけることにより、グラデーションを検出できます。

それが役に立てば幸い。

于 2010-08-04T16:26:23.957 に答える
1

回答者のdnulに感謝しますが、それは私がこれを解決するのに本当に役立ちませんでした。問題にアプローチするためのヒストグラムについては考えましたが、それは私が望んでいることではありません。

この問題を解決するために、3つのチャネルすべての生のピクセルデータを含む5x5マトリックスを保持する40x40マトリックスを作成しました。私は各40px-areaのトラフを繰り返し、5px-areaの各境界線の内側を繰り返しました。各ピクセルをチェックして、特定のしきい値よりも暗いピクセルをストレージに保存しました。

反復後、私はそれらがいくつの黒いピクセルであるかについて大まかな考えを持っていたので、3つのチャネルすべてに白いピクセルを持つ隣人がないかそれぞれをチェックしました。次に、それらの各ピクセルにマークを付けて、別のストレージに保存しました。

次に、ransacアルゴリズムを使用して、これらの点から線を作成しました。マーカーエッジごとに約5〜20本の線を作成します。次に、互いに交わる線を見て、直角に交わる線の位置を保存しました。それから得られる4つのポイントは、マーカーのエッジです。

これを再現したい場合は、事前に画像をフィルタリングし、黒と白のピクセルを区別しやすくするためにしきい値を適用する必要があります。

サンプル画像、ポイントを見つけた後、線を作成する前に保存します:http: //www.imagebanana.com/view/i6gfe6qi/9.jpg

于 2010-08-06T07:01:42.427 に答える
0

あなたが説明しているのエッジ検出です。これはまさに、たとえば、キャニーエッジ検出器が機能する方法です。明るいピクセルの近くの暗いピクセルを探し、渡したしきい値に基づいて(しきい値を計算するアダプティブキャニーもあります)、それらをすべて黒またはすべて白に設定します(別名「マーク」) )。

ここを参照してください:http: //docs.opencv.org/doc/tutorials/imgproc/imgtrans/canny_detector/canny_detector.html

于 2012-12-20T00:42:10.567 に答える