質問: 2次元平面上の角度分布の同定方法 数学をご専門とされておられる方々にご教示いただきたく存じます。 2次元平面上に、原点から任意の点への線分が多数与えられているとします。 それらの線分の角度 (無論角度の基準は何等かの方法で得ねばなりませんが) の平均等のスペックを得たいのです。 しかしこの角度は循環分布である上、角度は回転により複数のラベルを持ちます。 そのため、上述の値を求める方法に妙案が浮かばず、大変困っております。 ご多忙のところ誠に恐縮には存じますが、どうかご教示の程何卒宜しくお願い申し上げます。
回答: 30度の角と40度の角を平均すると、普通は35度になると言う答えが返ってくると思います。しかし、見方を変えれば215度という答えの可能性も考えられます。数の平均と言うことからすれば35度以外は考えられませんが中間の方向と言うことからすると180度を超えて広がった2つの線の方向の平均の方向と考えれば215度の方向になるわけです。この例から、平均の方向を定義しようとすると多義的になって問題が起こりそうだと分かります。2つの角ならこのようなことは簡単に見通せますが多数の角の平均を求めようとする場合はどうなるかのかと言うのが質問者さんの悩みだと思います。実例で計算してみると基準の方向の取り方によって答えが一定せず、様々になることが確認できます。 でもこれはそれほど複雑ではなく、単純に整理できると思います。整理のポイントは何らかの基準ですでに与えられている角度から基準の方向を元に測った角度への変換の際にどのように行っているかに注意することだと思います。角度の測り方の2通りのうち0から360で考えることにします。(-180から180も変換の違いに注意すればできると思いますが少し煩雑になりそう) a_i:与えられた角度(i=1~n) b :基準の角度 とすると変換後の角度b_iは b_i=a_i-b (a_i-bが負にならない:case1) b_i=a_i-b+360 (上以外:case2) となります。 従ってこのb_iの平均cはcase2となる場合がm個あるとして c=(σ(a_i-b)+360*m)/n =c0-b+360*m/n c0=(σa_i)/n と求まります。cを元の角度の測り方に変換するにはcにbを加えて360以下ならそのまま、360を超えたら360を引くと言う操作を行います。 これから基準の取り方によって様々の値をとり得ることの様子がはっきりしたと思います。 多義性の問題のうち最初の例で考えると、見方の違いというのは基準角の取り方の違いに対応し、基準の角度を30から40の間に取った場合は平均値は215、それ以外(2つの角の外側と言えるでしょうか)では35になると言うことが分かると思います。 (補足) ・上に述べたように基準角の選び方で結果が異なることがはっきりしたので、これを含めて何らかの対策を講じる必要があると思います。 ・2次元平面上の絵などを、自動的に一定の方向へ向けるために回転させたいと言うことですが、きちんと上下を定めた方向に回転したいと言うことであればかなり難しい問題となるのではないでしょうか。上で計算される平均の角度が求めるべき画像の回転角とどう関係するのかは質問や補足の情報からはよく分かりませんが、画像の中の特定の1点と複数の点から上のように平均角を計算して画像の方向を定義しようとしているとするなら、上のような問題は必然的に出てきますし、回避できないと思いますので、別の方向で考えた方がいいようにも思えます。