現在プログラミングで困っています。
そのプログラミングというのは、
「二値化した画像を二次元配列に置き換えそこから重心を求めよ」
というプログラムです。
重心を求めたい画像は、以下の特徴を持っています。
・形はほぼ楕円。
・輝度は0と255で二値化。重心を求める部分の輝度は0となっています
この図形の重心を求めるには、どのようにプログラムを組めば良いのでしょうか。
みなさんのアドバイスをよろしくお願い致します。
また、私はプログラミングについてはほぼ初心者なので、詳しい説明をして頂けると助かります。
お手数なのですが、よろしくお願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
考えてみました。
重心座標をx,yとして
対称図形の座標をU(x(a),y(a))として
それぞれを順に計算していく。
つまり a=1 から 例えば a=100 まで。
初期値は x=x(1) y=y(1) でその後は
a=2 から 100 で
x=x+((x(a)-x)/a
y=y+((y(a)-y)/a
これをa=100までやれば重心が出ると思います。
形は何でもいいですが
精度を落としてドット数を減らした所で座標を得れば計算できると思います。
No.3
- 回答日時:
重心の計算方法としては下記などを参考にしてみてください。
http://www.gifu-nct.ac.jp/elec/yamada/iwata/cyu/
これを実際にプログラムするとこんな感じになるはずです。
5x5の二値画像を対象にしていますが、適当にアレンジしてみてください。
#include<stdio.h>
int main( void ) {
intsx = 0;
intsy = 0;
intmm = 0;
intimg[ 5 ][ 5 ] = { { 1, 1, 1, 0, 0, },
{ 1, 1, 1, 1, 0, },
{ 0, 1, 1, 0, 0, },
{ 0, 1, 1, 0, 0, },
{ 1, 1, 0, 0, 0 } };
int x, y;
floatgpx, gpy;
for( x = 0; x < 5 ; x++ ) {
for ( y = 0 ; y < 5 ; y++ ) {
if ( img[ x ][ y ] == 1 ) {
sx += (float)x;
sy += (float)y;
++mm;
}
}
}
gpx = (float)sx/(float)mm;
gpy = (float)sy/(float)mm;
printf( "Total = %d, Gravity Center( x, y) = %f, %f\n", mm, gpx, gpy );
return( 0 );
}
No.4
- 回答日時:
失礼、
sx += (float)x;
sy += (float)y;
これは、間違い。floatの演算は最後にまとめたので、キャストが不要でした。
単純に、
sx += x;
sy += y;
でOKです。
あと説明が不足していましたが、値が”0”の方が重心を求める輝度と書かれているので、
if ( img[ x ][ y ] == 1 ) {
は、
if ( img[ x ][ y ] == 0 ) {
としてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 図のように、内半径aの中空の円筒が、その中心軸が水平になるように固定されており、その中で、 質量 M 7 2023/02/15 09:23
- その他(学校・勉強) T形抵抗減衰器の減衰量の求め方について 4 2022/06/30 11:30
- その他(プログラミング・Web制作) VBA 1 2023/01/19 16:19
- C言語・C++・C# プログラミングの問題です。P1(x1,x2)、P2(x2,y2)をニ頂点とする長方形および△P1P2 2 2022/05/09 22:17
- オープンソース IT用語、ソースとオブジェクト、改変と翻訳と翻案の違いなど どのようにりかいすればよいのですか 1 2022/09/09 10:02
- 物理学 力学の問題です。質量m1、速度v1の物体Aと質量m2、速度v2の物体Bがx軸上を等速直線運動していて 2 2022/12/24 13:26
- その他(プログラミング・Web制作) 【プログラミングScratch】で音楽を演奏するプログラムを短時間でつくる方法 2 2023/07/02 07:50
- その他(プログラミング・Web制作) 大学一年でVBAのプログラミングを勉強しているものです。来週の情報の授業で以下の問題のプログラムを勉 4 2023/01/19 16:15
- 物理学 粘度や動粘度 から 残存される量が求められますか? 例えば 粘度1.6cP(Pa.s) 動粘度1.7 1 2023/03/10 11:26
- Visual Basic(VBA) VBAプログラム初心者です。 以下の問題のプログラムを表記してみたのですが、実行するためには、どこを 4 2023/01/19 20:04
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
高校物理の質問です。 [問題] ...
-
この記号の意味はなんでしょうか?
-
5本足の椅子は4本足に比べて...
-
ボルダの振り子 慣性モーメント
-
0.90kg 2.7kg ・------・------...
-
半円筒の重心
-
力のつりあい <L字型針金>
-
慣性モーメントについて
-
中性子-陽子の弾性散乱
-
剛体の振り子について質問です...
-
ハンマーのような形状の重心の...
-
写真のように物体の形が違って...
-
教えてください。かなり困って...
-
地面に横たえてある質量30kg、...
-
トラクターヘッドの重心高について
-
物理 長さがL=4.0mのはしごが壁...
-
はしごが倒れる先端の速度
-
扇形の慣性モーメント
-
断面二次モーメントの算出
-
ジャイロ効果がある回転体の作り方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報