写真から距離を知る3

前回、実際の距離と写真から得た計算距離との差を、歪曲収差だけに起因するものとして、
収差係数を色々変えて、距離の差が「0」に近い所を探しました。
今回は、逆に、距離差から収差係数を割り出せないか、VBを弄ってみました。

「0」に収束すると言うことで、二分法が出来るんじゃないかと色々やってみましたが、ダメ。
二分法自体が初めての実装ですから、頭がパニクってしまいました。

結局は、For〜nextでループして、マイナス値からプラス値に変わったところで、両者数値を比例配分で、
距離差「0」での収差係数を求めました。
なんか線形補間とかいうらしい。
イメージ 1
ループして探査する回数103回!
距離差の大小で、係数がかなり振れるので、ループする巾を大きくしないといけないみたい。

デジタル写真から被写体までの距離を知るという今回のテーマ、最初から間違っているかも・・・。(笑)
でも、二分法とか線形補間とか算法があるの知っただけでも、うれしく感じるジジイでした。

この記事に

開く コメント(0)

写真から距離を知る2

前回の続き!

今回は30cm定規をぶら下げ、三脚を立てて、三脚中央からの距離との比較です。
レンズの光軸とセンサー中央が一致している(一般のデジカメはずれていることがあるとか読んだ事がありました。)。
被写体が光軸に垂直な状態であるという仮定です。

計算結果をベタ出力です。

イメージ 1

計算値と実測値の差が、約16mmでした。
この差はレンズの収差のみによるものとして、収差の補正をしてみました。

イメージ 2

収差係数0.0000000145で、差が0.23mmまでにしてみました。
距離測定前に、そのカメラとレンズに対する収差を取得できたら、
結構、良い精度で距離を計算できると思いました。

VB6.0での収差補正の所です。

r = Sqr((pc.x - p1.x) ^ 2 + (pc.y - p1.y) ^ 2) '画像中心からの距離
'Distortion '歪曲収差係数(+糸巻型  -樽型)
dt = r ^ 3 * Distortion'歪曲収差値
Pt1 = NaibunGaibun(pc, p1, r, dt) '内分点外分点座標を計算

'======================================
Type Point
  x As Double
  y As Double
End Type

'延長線上の座標を求める 外分点 内分点
Function NaibunGaibun(P As Point, Q As Point, PQ#, L#) As Point
'P(px,py)、Q(qx,qy)とするとQ方向にL伸ばした点R(rx,ry)の座標を求める。
'PQは線分PQの長さ
Dim R As Point
R.x = (-L * P.x + (PQ + L) * Q.x) / PQ
R.y = (-L * P.y + (PQ + L) * Q.y) / PQ
NaibunGaibun = R
End Function

内分点、外分点は、初めての数学。 少しは脳が活性化したかなって思う「ボケボケ」でした。 

この記事に

開く コメント(0)

写真から距離を知る

写真から距離を知る。という一応実験ということです。
使用しているデジカメの仕様を開き、勉強してみました。
キャノンEOSKISS x4です。ズームレンズで、55mm焦点距離です。

汚い自宅の壁掛けです。
イメージ 1

白い部分の高さと、壁までの距離をメジャーで測定しました。

結果です。
イメージ 2

結果は19mmの差である。
面白い。 

差の原因は、内的には、ズームレンズによるf値?、歪曲収差(糸巻き方収差?)
その他、外的に被写体のサイズ距離実測の誤差(2mメジャーで測定)、壁掛けの厚さ、三脚を使わず手持ち(前後ある。)、写真画像からの位置測定(結構変位が出る。)。
だから、19mmなんて偶然だと思う。
次回は、しっかり計画して実験してみたいと、うきうきしているのでした!




この記事に

開く コメント(0)

畑に行ってきました。

15日ぶりに、畑に行ってきました。
週1回は、畑に行っておりましたが、今回は車が空きません!
1台の車をワイフと二人で使っているのですが、孫の子守の上、熱が有るの風邪だのって、ワイフが車ではしりまわります。車が空かないのでした。

久しぶり!
やっぱり畑仕事は気持ちが良い。昼飯も取らず、朝から3時までがんばりました。
少しは体重減ったかなって、ほほ笑むのでした!  (^^!)

車のトランクは野菜で一杯です。
ネギ、ニンジン、ジャガイモ、山の芋、リーフレタス、結球レタス、ほうれん草、ミニトマト、ニラ、カボチャ、
パパイヤ、春菊etc

イメージ 1
イメージ 2
上は、カボチャです! 20cmほどの玉です。 東北地方では、「ボボラ」と言う。 たぶん同じ種類と思います。
固定種で、原種ではないのかな、と思います。

こんなにして軒下に転がしておき、食べますが、表皮が黄色くなるほど、追熟が進み甘みを増します。
ただ、比較的、身がやわらく、炊くと、形が崩れやすくなります。しかし、しょう油仕立ての具沢山のスープにすると美味! これに、うどん、ソウメン、トロロなんか「ぶち込ん」だら、涙が出るほどおいしいです。

このカボチャ!植えたわけでもないですが、私の畑では、勝手に生えています。
カボチャのツルのヒゲは、根に変化して、地中に潜り、成長するようです。
ですから、老いて古くなった株は、ツルのヒゲから若返り、又成長して実を付けるようです。
ある程度成長したら、枯れだしますが、先端部はツルのヒゲが根っこに変わり新しい株になるようです。
実際に土をいじっくって知ることも多いものです。

今回は、怠けジジイの手抜き菜園レポートでした!
いつかは、手抜きの極意を日記に書いてみます。   (笑)


この記事に

開く コメント(0)

三角形の中心  

三角形の内なる点Pについて、初めて知ったことがありました。
特異な点として知っているのは、内心、外心、重心、垂心、傍接円の中止、それに今度知ったシュタイナー点です。
でも、WIKIでは7500余りあるそうです。

yahoot知恵袋で三角形の内なる点Pで分割される三角形の面積比の関係式をベクトルで解いている方が
居りました。素晴らしいですね。私もVBでまねしてみました。


任意の点Pで分割される三角形の面積比で、Pの座標を決定できるらしい。
で、その関数を作ってみました。


'引数 三角形の頂点座標、面積比(重心座標)
'戻値 点Pの座標
Function Calc_P(A As Point, B As Point, C As Point, _
                ByVal Alfa%, ByVal Beta%, ByVal Gamma%) As Point
Dim P As Point
P.x = (Alfa * A.x + Beta * B.x + Gamma * C.x) / (Alfa + Beta + Gamma)
P.y = (Alfa * A.y + Beta * B.y + Gamma * C.y) / (Alfa + Beta + Gamma)
              
Calc_P.x = P.x
Calc_P.y = P.y             
End Function

作図チェック !
イメージ 1

△PBC : △PAC : △PAB  = 1 : 10 : 30    
の時のPの位置



さて、最初のテーマ、「画像から任意の座標位置を検出する」というもの、例えば、星空の写真を撮った時、その中の任意の天体の座標を計算するというもの。 出来そうもないな〜


この記事に

開く コメント(0)

[ すべて表示 ]


.


みんなの更新記事