輪郭の境界矩形(既に別のアルゴリズムによって決定されている)を見つけるアルゴリズムを実装したいと思います。私が持っている唯一のものは、二値化された画像です(下図参照)。基本的な考え方は、に次のようになります。このような何か取る複数の要素の境界矩形を特定する方法は?
- 前処理二値画像
をし、この
輪郭の境界矩形(既に別のアルゴリズムによって決定されている)を見つけるアルゴリズムを実装したいと思います。私が持っている唯一のものは、二値化された画像です(下図参照)。基本的な考え方は、に次のようになります。このような何か取る複数の要素の境界矩形を特定する方法は?
- 前処理二値画像
をし、この
接続されたコンポーネントのラベルを確認してください:http://en.wikipedia.org/wiki/Connected-component_labeling。この場合、白いピクセルまたは黒いピクセルの接続されたコンポーネントを見つけることができます(画像に白い点が少なくなるため、計算が簡単です)。
のようなものを作る私は単純なアプローチを提案することができます開始時:
画像では、2Dバイナリ検索を実行します画像(x、y)中の中間点についてのものである。 その時点から、フラッドフィルを実行します。
塗りつぶした図形の境界線が画像の境界線ではない場合、閉じた図形、したがってその境界線が見つかった場合。
イメージ全体を塗りつぶした場合は何も表示されないので、イメージを4つのキューブラントに分割し、同じ再帰的に行います。 (以前に見つかったバウンディングボックスフィギュアの中にある点をチェックする必要はなく、その過程で検索スペースをカットする)。各要素について
:私は画面ない最大値の先頭に最も近い意味最高による
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.
注意。
あなたは私を少し誤解しました.1つの画像(0と1の行列)があり、これらの長方形 - その座標を探したいと思います。 – Patryk
OpenCVには既に実装されている輪郭の境界ボックスを見つけるアルゴリズムがいくつかあるようです。その機能がどのように機能しているかを調べることは、始めるには良い方法かもしれません。 http://opencv.itseez.com/doc/tutorials/imgproc/shapedescriptors/bounding_rects_circles/bounding_rects_circles.html
最小スパニングツリーを計算し、最長エッジを削除することができます。次に、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はその後、各クラスタのためにこのルールを適用します。
姉妹サイト[DSP.SE]をご覧ください。 –