- ベストアンサー
三角形の抽出方法についてのヒントを教えてください。
- Visual Studio2005 + C言語でプログラムを書いています。不定形の画像20枚から、青い太線の三角形を抽出し、正解の三角形との近似率を取得したいです。
- OpenCVのMatchShapes関数を使用して、正解の三角形と他の三角形の近似率を計算することはできましたが、画像中の全ての三角形を抽出する方法がわかりません。
- 三角形の抽出方法について何かヒントやアドバイスがあれば教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ピークが分かれば線分の方程式がわかるし、方程式が分かれば三角形の頂点がわかります。 学習だとか大層な仕組みは必要ないでしょう。 私はOpenCvだとか他人が作った仕組みには興味がないので、関数といわれも全く知りません。あしからず。
その他の回答 (2)
- hashioogi
- ベストアンサー率25% (102/404)
Hough変換の考え方が正しくないようです。 Hough変換は今回の例題に沿って言うと、線分は幅1ドットだと想像していますが、画像中のすべての黒ドットにたいしてHough変換を行います。その際にそのドットが線分の一部かどうかは一切関係がありません。ゴミのようなドットが有っても関係なしに行います。 変換後のデータを調べると、今回は三角形ですからピークが3か所あるはずです。その3か所のピークが三辺に対応しています。 つまり、Hough変換は自分で直線を探すというよりも自動的に見つかるという感じです。印を付ける必要はないと思いますが。
お礼
hashioogiさん、書き込みありがとうございます。 hough関数を理解できていませんでした、すみません。 「ピークが三か所」というのが三角形の特徴量で、 その特徴が見つかったら「一定の距離や角度にピークがあれば三角形」と 判定する、ということでしょうか。 その「見つけたピークからの一定の距離や角度」をパターン学習するべきだろうか、と思い調べましたがOpenCVならFeatureEvaluator関数でできるのだろうか・・・と見当をつけているところです(サンプルコードがないので現時点試していません)、OpenCVから離れ、基本的に画像処理で、通常こうした処理で使われている関数などあれば教えていただけませんでしょうか。 いろいろと伺ってしまいすみません。 どうぞ宜しくお願い致します。
- hashioogi
- ベストアンサー率25% (102/404)
Hough変換かなと思いますけど。
お礼
ありがとうございます。 調べたのですが、 Hough関数で直線を探して、見つかれば三角形を当ててみて三角であれば(特徴量が合致すれば)抽出し、 一度探した直線には「もう検査済」の印をつけて、 何度も同じ線を走査しないようにする、 というイメージで大体、ハズレていないでしょうか。 しかし自分でいっておいて情けないのですが、一度探した直線に「もう検査済」と印をつけるって、どうすれば実現できるのでしょうか。。 もしおわかりでしたらぜひ何か教えてください。 どうぞよろしくお願い致します。
お礼
ありがとうございました。 なるほど、とてもわかりやすくイメージが湧きました。 3つのピークをつなぐ式が直線の方程式であれば三角形、と理解し調べています。 すると、これは三角形以外でも、いろいろな図形に応用できるでしょうか。 五角形、八角形、などなど。。。これは別スレッドにします。 ありがとうございました!大変助かりました!!!