C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: 直線の傾きについて


(過去ログ 65 を表示中)

[トピック内 19 記事 (1 - 19 表示)]  << 0 >>

■38049 / inTopicNo.1)  直線の傾きについて
  
□投稿者/ utt (1回)-(2009/07/06(Mon) 15:37:33)

分類:[C#] 

2009/07/06(Mon) 15:38:36 編集(投稿者)
2009/07/06(Mon) 15:38:33 編集(投稿者)

2点から,それらのなす直線の傾きを正確に計算したいのですが,困っています.

なぜ困っているかというと,調べたい2点間の距離が最大で24ピクセル程度しか取れないためです.

2点間距離が24ピクセルだと,例えば1°回転させたいとして...
tan1=0.017...なので,単純に言って直角をなす2線の比が1000:17でないといけないですよね?
24を長辺だとして,短辺は(17*24/1000)で,0.408となります.
0.408ピクセルなんてピクセル単位なら表せられないじゃないか!!

ってことで困っています・・・

(ちなみに本当の目的は,すでに傾いている画像からx軸から何度傾いているのかを正確に調べることです)


なにかよい方法はないでしょうか?
画像の回転処理,角度の計算方法,回転後の補間方法など,どれを見直せばよいのか・・・
どなたかアドバイスありましたらよろしくお願いします.




引用返信 編集キー/
■38051 / inTopicNo.2)  Re[1]: 直線の傾きについて
□投稿者/ .SHO (925回)-(2009/07/06(Mon) 15:54:32)
計算の入力は何ですか?

2点のXY座標?
引用返信 編集キー/
■38053 / inTopicNo.3)  Re[1]: 直線の傾きについて
□投稿者/ オショウ (255回)-(2009/07/06(Mon) 15:58:56)
> 2点間距離が24ピクセルだと,例えば1°回転させたいとして...
> tan1=0.017...なので,単純に言って直角をなす2線の比が1000:17でないといけないですよね?
> 24を長辺だとして,短辺は(17*24/1000)で,0.408となります.
> 0.408ピクセルなんてピクセル単位なら表せられないじゃないか!!
>
> 略
>
> なにかよい方法はないでしょうか?
> 画像の回転処理,角度の計算方法,回転後の補間方法など,どれを見直せばよいのか・・・
> どなたかアドバイスありましたらよろしくお願いします.

  よくやる手ですが・・・
  単純に1000倍でもして計算し、誤差の相関を見て、倍率の最適値を算定して
  みては?

  要は、10倍の時・100倍の時・1000倍の時・・・

  またベクトル演算方法にしてみるとか・・・
  3点あれば中点での角度が計算で求めれますので、後は有効ケタ数的に、
  問題があるかないか・・・と言う話。

※ まだイメージわかないのであれば・・・
  24ピクセルは絶対空間での距離なので、仮想空間として、何倍かしてみて
  許容誤差無いで収まる最大倍率を計算してみると言うこと・・・

  如何?

以上。
引用返信 編集キー/
■38054 / inTopicNo.4)  Re[1]: 直線の傾きについて
□投稿者/ επιστημη (2020回)-(2009/07/06(Mon) 16:03:52)
επιστημη さんの Web サイト
> なぜ困っているかというと,調べたい2点間の距離が最大で24ピクセル程度しか取れないためです.

であるなら分解能はarc-tan(1/24) = 2.4度で"いっぱいいっぱい"ですねー

> なにかよい方法はないでしょうか?

もっと離れた二点を取れないことにはどーしよーもなさげです。

引用返信 編集キー/
■38055 / inTopicNo.5)  Re[2]: 直線の傾きについて
□投稿者/ オショウ (256回)-(2009/07/06(Mon) 16:11:06)
No38054 (επιστημη さん) に返信
>>なぜ困っているかというと,調べたい2点間の距離が最大で24ピクセル程度しか取れないためです.
>
> であるなら分解能はarc-tan(1/24) = 2.4度で"いっぱいいっぱい"ですねー
>
>>なにかよい方法はないでしょうか?
>
> もっと離れた二点を取れないことにはどーしよーもなさげです。

  επιστημηさんに1票!

  24ピクセルしかないので・・・仮に計算しましたが
  半径24ピクセルの円周上での±1ピクセル誤差に含まれる角度・・・そりゃ〜無理だよ・・・
  と思った次第。

以上。
引用返信 編集キー/
■38061 / inTopicNo.6)  Re[3]: 直線の傾きについて
□投稿者/ なぎせ (1回)-(2009/07/06(Mon) 17:30:43)
アンチエイリアスがかかっている直線ならもうちょっと角度を計測可能かもしれませんが。
2値画像とかだと分解能の限界は超えれませんね。
引用返信 編集キー/
■38076 / inTopicNo.7)  Re[1]: 直線の傾きについて
□投稿者/ れい (850回)-(2009/07/06(Mon) 18:50:22)
なぎせさんに一票。
επιστημη さんにマイナス一票。

> (ちなみに本当の目的は,すでに傾いている画像からx軸から何度傾いているのかを正確に調べることです)

とありますので、
傾いている元画像があるということですね。
でしたら、回転前と後の、対応する点が何点か取れるか、
画像中の特定構造の角度など、「2点」以外の情報が取れるはずです。

それらを調べればより正しく回転角を求めることが可能です。
(仕事でそういった画像処理はよく行っています。)

問題の詳細がわかればアドバイスできるかもしれません。
引用返信 編集キー/
■38080 / inTopicNo.8)  Re[2]: 直線の傾きについて
□投稿者/ オショウ (257回)-(2009/07/06(Mon) 19:12:46)
No38076 (れい さん) に返信
> 傾いている元画像があるということですね。
> でしたら、回転前と後の、対応する点が何点か取れるか、
> 画像中の特定構造の角度など、「2点」以外の情報が取れるはずです。
>
> それらを調べればより正しく回転角を求めることが可能です。
> (仕事でそういった画像処理はよく行っています。)
>
> 問題の詳細がわかればアドバイスできるかもしれません。

  2点間の距離が最大で24ピクセル程度しか取れないためです
  と書かれてますので、無理でしょう・・・
  何点取れても、1ピクセルあたりの角度量はどうしようもない。

  オリジナル画像がもっと大きいサイズであるならば、こういう
  問いは無いのでは?と・・・

※ 24ピクセルって単純にアイコンサイズの画像サイズと思いますが・・・
  実際には何なのでしょうかネ〜

  プリクラ等の画像補正?・・・
  オリジナルはもっと大きいの撮っているので、そういうことでは
  ないはず・・・

スレ主さん、実際にそれは何なんでしょうか?

以上。
引用返信 編集キー/
■38083 / inTopicNo.9)  Re[3]: 直線の傾きについて
□投稿者/ なちゃ (309回)-(2009/07/06(Mon) 20:38:14)
れいさんが言ってるのはそういう事じゃなくて、画像によってはもっと情報を補足出来る可能性があるって事だと思います。

例えば、補完をかけながら1ピクセルに満たない回転をかけた場合、
元の画像と変わらないかと言えばそんなことはなかったりするわけです。

引用返信 編集キー/
■38084 / inTopicNo.10)  Re[4]: 直線の傾きについて
□投稿者/ なちゃ (310回)-(2009/07/06(Mon) 20:40:08)
あ、れいさんが言ってることと上に書いた例はちょっと意味違うか…
引用返信 編集キー/
■38085 / inTopicNo.11)  Re[2]: 直線の傾きについて
□投稿者/ utt (2回)-(2009/07/06(Mon) 20:53:36)
2009/07/06(Mon) 21:24:14 編集(投稿者)

みなさん書き込みありがとうございます!!
とりあえず,読みながら一つずつ質問答えさせていただきます!

※もし,この「引用返信」がツリーみたいに質問のすぐ下段に来るのでなければ,次から複数の質問に一つのレスで返しますね.

No38051 (.SHO さん) に返信
> 計算の入力は何ですか?
>
> 2点のXY座標?

正確に言うと,4点まで取れます!
引用返信 編集キー/
■38086 / inTopicNo.12)  Re[2]: 直線の傾きについて
□投稿者/ utt (3回)-(2009/07/06(Mon) 20:57:49)
2009/07/06(Mon) 21:24:28 編集(投稿者)

No38053 (オショウ さん) に返信
>   よくやる手ですが・・・
>   単純に1000倍でもして計算し、誤差の相関を見て、倍率の最適値を算定して
>   みては?
>
>   要は、10倍の時・100倍の時・1000倍の時・・・
>
>   またベクトル演算方法にしてみるとか・・・
>   3点あれば中点での角度が計算で求めれますので、後は有効ケタ数的に、
>   問題があるかないか・・・と言う話。
>
> ※ まだイメージわかないのであれば・・・
>   24ピクセルは絶対空間での距離なので、仮想空間として、何倍かしてみて
>   許容誤差無いで収まる最大倍率を計算してみると言うこと・・・

んー1ピクセルずれてしまった場合,10倍したら10ピクセル,100倍したら100ピクセル...と線形に変化してしまう気がしました.
意図に反する捕らえ方だったらすみません・・.

ベクトルの話は,ちょっとしっかり会得してない所もあり・・・調べてみます!

引用返信 編集キー/
■38087 / inTopicNo.13)  Re[2]: 直線の傾きについて
□投稿者/ utt (4回)-(2009/07/06(Mon) 21:00:27)
2009/07/06(Mon) 21:24:44 編集(投稿者)

No38054 (επιστημη さん) に返信
>
> もっと離れた二点を取れないことにはどーしよーもなさげです。
>

やはりそうですよね・・・
でも,この2点はなるべくこれ以上離せないんです...


No38055 (オショウ さん) に返信
>   επιστημηさんに1票!
>
>   24ピクセルしかないので・・・仮に計算しましたが
>   半径24ピクセルの円周上での±1ピクセル誤差に含まれる角度・・・そりゃ〜無理だよ・・・
>   と思った次第。
>

初めなにも考えずにいけるだろとか思ってまして,
今考えると24ピクセル程度じゃちと問題ですよね・・・笑
引用返信 編集キー/
■38089 / inTopicNo.14)  Re[5]: 直線の傾きについて
□投稿者/ utt (5回)-(2009/07/06(Mon) 21:11:43)
2009/07/06(Mon) 21:24:57 編集(投稿者)

No38061 (なぎせ さん) に返信
> アンチエイリアスがかかっている直線ならもうちょっと角度を計測可能かもしれませんが。
> 2値画像とかだと分解能の限界は超えれませんね。

おぉ!いま考えてる次策の中にそれもなんとなく思ってました,

おそらく,アンチエイリアスされてるので(BitmapRotate()関数の仕様はまだ調べてませんが)
画素以下の計算(サブピクセルでしたっけ?)を上手く実現できれば・・・・とか.


No38076 (れい さん) に返信
> 傾いている元画像があるということですね。
> でしたら、回転前と後の、対応する点が何点か取れるか、
> 画像中の特定構造の角度など、「2点」以外の情報が取れるはずです。
>
> それらを調べればより正しく回転角を求めることが可能です。
> (仕事でそういった画像処理はよく行っています。)
>
> 問題の詳細がわかればアドバイスできるかもしれません。

計測に使える点は,上の返事に書いたとおり4点(x軸とのなす角0°のとき,1辺24ピクセルの正方形)なのですが,
逆にいうと,その4点しか目印として使うことは出来ません・・・.

これは,もともと無表情な表面上にマーカとして,上記の点を付加させたものだからです.

使用する画像全体の説明をしますと(すみません,これは早めにするべきだったかも?)
1000*500の画像中の,左上の方に4つの点が24*24の正方形をなす形で配置されてるものです.
この4点以外は,極端な話無地になります.

引用返信 編集キー/
■38091 / inTopicNo.15)  Re[3]: 直線の傾きについて
□投稿者/ utt (6回)-(2009/07/06(Mon) 21:21:00)
No38080 (オショウ さん) に返信
>   2点間の距離が最大で24ピクセル程度しか取れないためです
>   と書かれてますので、無理でしょう・・・
>   何点取れても、1ピクセルあたりの角度量はどうしようもない。
>
>   オリジナル画像がもっと大きいサイズであるならば、こういう
>   問いは無いのでは?と・・・
>
> ※ 24ピクセルって単純にアイコンサイズの画像サイズと思いますが・・・
>   実際には何なのでしょうかネ〜
>
>   プリクラ等の画像補正?・・・
>   オリジナルはもっと大きいの撮っているので、そういうことでは
>   ないはず・・・
>
> スレ主さん、実際にそれは何なんでしょうか?


申し訳ありません,そのあたりの説明が不十分でした,
使用画像については一つ上の回答に書きましたが,点だけしか初めの説明に乗せなかったのは,
他に目印として取れるものがなにも無いから,意味ないかなと判断したためです.

同じ箇所を撮った2枚の写真があるのですが,その手動撮影によるずれを自動で計算して直したいのです.


引用返信 編集キー/
■38092 / inTopicNo.16)  Re[4]: 直線の傾きについて
□投稿者/ utt (7回)-(2009/07/06(Mon) 21:22:40)
2009/07/06(Mon) 21:23:59 編集(投稿者)
2009/07/06(Mon) 21:23:53 編集(投稿者)

No38083 (なちゃ さん) に返信
> れいさんが言ってるのはそういう事じゃなくて、画像によってはもっと情報を補足出来る可能性があるって事だと思います。
>
> 例えば、補完をかけながら1ピクセルに満たない回転をかけた場合、
> 元の画像と変わらないかと言えばそんなことはなかったりするわけです。
>

上の回答に示したとおり,その4点以外の情報は期待できなさそうなのです...
引用返信 編集キー/
■38102 / inTopicNo.17)  Re[5]: 直線の傾きについて
□投稿者/ れい (851回)-(2009/07/06(Mon) 23:24:22)
> 計測に使える点は,上の返事に書いたとおり4点(x軸とのなす角0°のとき,1辺24ピクセルの正方形)なのですが,
> 逆にいうと,その4点しか目印として使うことは出来ません・・・.
> これは,もともと無表情な表面上にマーカとして,上記の点を付加させたものだからです.
> 使用する画像全体の説明をしますと(すみません,これは早めにするべきだったかも?)
> 1000*500の画像中の,左上の方に4つの点が24*24の正方形をなす形で配置されてるものです.
> この4点以外は,極端な話無地になります.

よくわかりません。
x軸との為す角が0度でないときは1辺24ピクセルの正方形にはならないのですか?

また、マーカーはどうやって記したのですか?
引用返信 編集キー/
■38105 / inTopicNo.18)  Re[4]: 直線の傾きについて
□投稿者/ れい (852回)-(2009/07/07(Tue) 04:50:25)
> 同じ箇所を撮った2枚の写真があるのですが,その手動撮影によるずれを自動で計算して直したいのです.

同じ箇所を撮ったはずの2枚のイメージを、比較したいのですか?
画像のかなりの部分が(位置や角度は変わっているにしても)同じなのですか?

もしそうなら、画像処理でいくらでもやりようがあります。
例えば、エッジ検出した後、直線に対してハフ変換をするというのがあります。

2枚の写真に同じ直線が写っていればそこから2枚の画像の位置・角度のずれを検出できます。
精度は直線の写り方次第ですが、別に直線でなくとも「位置」と「角度」が検出できるような図形ならOKです。
(円はだめ。楕円とか、曲線ならOK)

また、2枚の画像の差分が最小になるように、「位置」と「角度」について最尤法を用いる手もあります。

マーカーが何のためにどうやって付いているのかわからないのが気になりますが。
引用返信 編集キー/
■38107 / inTopicNo.19)  Re[5]: 直線の傾きについて
□投稿者/ y4yama (2回)-(2009/07/07(Tue) 07:19:10)
こんちは
>使用する画像全体の説明をしますと(すみません,これは早めにするべきだったかも?)
>1000*500の画像中の,左上の方に4つの点が24*24の正方形をなす形で配置されてるものです.
>この4点以外は,極端な話無地になります.

どの程度の補正を期待するか・・ですが。
横1000ピクセルでズレ1〜2ピクセルだとしたら、24では勝負にならないでしょう
左下か右下にもマーカーを付けるのが簡単そうですが・・(諸事情は不明・・)

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -