天気が悪いときは(お金が無いときは)...

ソフト開発が、暇つぶし&安上がりでお勧めです。(汗)
工作も凝るとお金が掛かるし...。

ということでピント合わせの課題を何とかするワークアラウンドの一環として思い立ちましたが、これが半徹する勢いになってしまいました。
のりきゅうさんがカセグレン系用にダンカンマスクを自作されていて興味がありましたが、今後、タブレットPCでピント管理を行いたいのでしばらくは画像解析とは相性がよさそうなバーティノフマスクについて研究をしてみます。

まずはHDDを漁って以前撮ったバーティノフマスクの画像を探しましす~。
見つかった画像に対してハフ変換で直線を検出して、3本の直線がどのように交差しているかを見極めればいいはず。

画像

ええ加減な図ですが、3本の線が一点で重なり、緑矢印間の距離が"ゼロ"になるとピントが合った状態になります。このずではピントが外れているイメージです。

直線検出は最初は自前のハフ変換を使っていましたが、今後は画像中にたくさんあるマスクイメージにも対応したいので、線分検出が可能なOpenCVの確率的ハフ変換を使うことにしました。色々と試してみると、輝度のある一本の線を左右から挟みこむ感じの複数ラインで検出できるので、検出結果をうまくグルーピングすることで、精度よく検出できるようになりました。

画像

水色のラインは、いまいち精度よさそうには見えませんが、画面に描画するときに座標を整数化した際の誤差なので、大丈夫(のはず)。
検出できた距離をピクセル単位で表示していて、PentiumM(1GHz)の非力なマシン、ソフトの性能チューニング皆無、DSLRの大きなJPEGでも2~3秒で終わるので十分実用になりそうです。
画面に一杯星が写っていたら、一気にスケアリング調整まで出来るはず。


ただし現状は複数のイメージを処理できるようになっていないので、もっと作りこみが必要です。
あとは三本の線のうち一本が三角関数の境界をまたいだときの処理とか、エラー処理関係がまったく入っていないので先は長そうですが、とりあえずまる一日で動くようになってよかったです。
あとは便宜的にズレのベクトル(方向)によってプラス/マイナスをつけないと管理しづらそうですね。

#でもポインタの罠にはまって寝ぼけた頭では解決できず、今朝から昼過ぎまで停滞していました。(汗)


今後、PC制御によるステッピングモーターでフォーカス制御と組み合わせたいところですが、制御に使うSPIインターフェースの経験が無いので、はまりそうな予感です。
まあテストに使える部品はあるので、本番用部品はボーナス後でもないと買えないのでゆっくりやってみます。

"天気が悪いときは(お金が無いときは)..." へのコメントを書く

お名前
ホームページアドレス
コメント