2012-01-14 13 views
4

輪郭の境界矩形(既に別のアルゴリズムによって決定されている)を見つけるアルゴリズムを実装したいと思います。私が持っている唯一のものは、二値化された画像です(下図参照)。基本的な考え方は、に次のようになります。このような何か取る複数の要素の境界矩形を特定する方法は?

  • - 前処理二値画像 enter image description here

  • をし、この enter image description here

+0

姉妹サイト[DSP.SE]をご覧ください。 –

答えて

3

接続されたコンポーネントのラベルを確認してください:http://en.wikipedia.org/wiki/Connected-component_labeling。この場合、白いピクセルまたは黒いピクセルの接続されたコンポーネントを見つけることができます(画像に白い点が少なくなるため、計算が簡単です)。

1

のようなものを作る私は単純なアプローチを提案することができます開始時:

画像では、2Dバイナリ検索を実行します画像(x、y)中の中間点についてのものである。 その時点から、フラッドフィルを実行します。

  • 塗りつぶした図形の境界線が画像の境界線ではない場合、閉じた図形、したがってその境界線が見つかった場合。

  • イメージ全体を塗りつぶした場合は何も表示されないので、イメージを4つのキューブラントに分割し、同じ再帰的に行います。 (以前に見つかったバウンディングボックスフィギュアの中にある点をチェックする必要はなく、その過程で検索スペースをカットする)。各要素について

+0

2Dバイナリではkdツリーを意味しますか? – Bytemain

+0

私は四分木のように四分円の空間を分割することを意味します。 –

+0

私はkdツリーもうまくいくと思います。しかし、クアッドツリーは持っているのがいいです。 – Bytemain

0

:私は画面ない最大値の先頭に最も近い意味最高による

They highest y - 1 is the top of the rectangle. 
The leftmost x - 1 is the left of the rectangle. 
The lowest y + 1 is the bottom of the rectangle. 
The rightmost x + 1 is the right of the rectangle. 

注意。

+0

あなたは私を少し誤解しました.1つの画像(0と1の行列)があり、これらの長方形 - その座標を探したいと思います。 – Patryk

0

OpenCVには既に実装されている輪郭の境界ボックスを見つけるアルゴリズムがいくつかあるようです。その機能がどのように機能しているかを調べることは、始めるには良い方法かもしれません。 http://opencv.itseez.com/doc/tutorials/imgproc/shapedescriptors/bounding_rects_circles/bounding_rects_circles.html

+0

これは良い考えですが、私はフォームのスクラッチを開始したいと思います。私はOpenCVの実装を使用することはできません。 – Patryk

+0

輪郭作成機能の実装では、各輪郭をポイントの集合としてグループ化できますか?あなたがそれを行うことができれば、各セット内の最も高い、最も低い、最も左の、そして一番右のポイントを見つけなければならないので、バウンディングボックスを見つけることはほとんど些細なことになります。 – aoi222

+0

私はちょうど二値化されたイメージを持っています - それだけです。私は何とか境界の矩形を整理しなければなりません。 – Patryk

-1

最小スパニングツリーを計算し、最長エッジを削除することができます。次に、k-meansを計算することができます。別の長い辺を削除し、k平均を計算します。 N = 10になるまで、すすぎ洗いを繰り返します。私はこのアルゴリズムが単一リンクk-meansと呼ばれ、クラスタはボロノイ図と似ていると信じています。

"シングルリンクkクラスタリングアルゴリズムは...正確にはKruskalのアルゴリズムです... MSTと最も高価なk-1個のエッジを削除します。

は、ここでは例を参照してください:私は画面ない最大値の先頭に最も近い意味最高で

They highest y - 1 is the top of the rectangle. 
The leftmost x - 1 is the left of the rectangle. 
The lowest y + 1 is the bottom of the rectangle. 
The rightmost x + 1 is the right of the rectangle. 

注:

https://stats.stackexchange.com/questions/1475/visualization-software-for-clusteringはその後、各クラスタのためにこのルールを適用します。

関連する問題