プロが教えるわが家の防犯対策術!

以下のプログラムは重心を求めるプログラムなそうなのですが、例えば検出した円や四角形の重心を取るとします。
ここで質問なのですが、
以下のプログラムでどうやって重心を求めているのでしょうか?
アルゴリズムが知りたいです。

//重心の計算
int count=0;
double x_g=0.0,y_g=0.0,x_d=0.0,y_d=0.0,xy_d=0.0
for(int y=0; y<height; y++){
for(int x=0;x<width; x++){
if(img_src[y*width+x] == 255){
count++;
x_g +=x;
y_g +=y;
}
}
}
x_g /=conut;
y_g/=count;

A 回答 (5件)

AN04です。

ああ、 venomctun さんか。
じゃあ何も知らないですよね。

http://wakariyasui.sakura.ne.jp/p/mech/gou/jyuus …

このあたりをしっかり読んで、重心の定義をしっかり頭に入れて下さい。
図形の重心の場合は、各ピクセルが同じ重さ同じと仮定してます。
すると、重心は各ピクセルの座標値の単純平均になります。
    • good
    • 0
この回答へのお礼

理解できました。ありがとうございます。

お礼日時:2018/06/11 01:01

>もしかしたら重心を取るのは現実世界でも


>画像処理の世界でも難しいため平均を用いたのかもしれませんが。

そこまでいうのなら、あなたの知っているか
重心の定義をここにかいてみましょう。
    • good
    • 0

>どうやって、全座標の平均値が重心の座標になることを見つけだしたかはわかりませんが。



No.1の方も仰っていますが、重心(幾何学中心)の定義を知っていればそんな疑問は沸かないと思います。
    • good
    • 6

>なぜ平均にしようとしたのか知りたいです。



if(img_src[y*width+x] == 255){
とあるように、均質と仮定しているからでしょう。

また、このプログラムではimg_src[]に全ピクセル(もしくは一定の粒度の格子点)情報が格納されているものを利用して全座標をなめているので、円や四角形に限らず、任意の複雑な図形にも対応していると思います。
    • good
    • 1
この回答へのお礼

どうもありがとうございます。
ちなみに全座標を調べるのはわかりました。そして検出した全座標の平均が重心となるため、平均値をだしたという事でしょうか?
どうやって、全座標の平均値が重心の座標になることを見つけだしたかはわかりませんが。

お礼日時:2018/06/07 13:17

そのプログラムがアルゴリズムそのものです。


「重心は座標の平均」という定義をそのままプログラムにしただけです。
何も特殊な技術は使われていないので、初心者でもわかります。

そもそもの「重心」って何だか理解していますか?
理解できていないなら、まずは、数学や画像処理の知識を身につけましょう。
    • good
    • 5
この回答へのお礼

どうもありがとうございます。理解が浅はかでした。
ちなみに、座標の平均でないと重心はもとまらないのでしょうか?
なぜ平均にしようとしたのか知りたいです。もしかしたら重心を取るのは現実世界でも画像処理の世界でも難しいため平均を用いたのかもしれませんが。

お礼日時:2018/06/07 09:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています