ハフ変換で求めた2直線の交点

ハフ変換で求めた2直線の交点

概要

画像の中の直線を検出する古典的な方法として,ハフ変換が有名です. ハフ空間上の点は直線の式に相当するものになります.

たとえば,上のような写真の中から四角形の物体の頂点を取り出したい場合,ハフ空間上の点から求めた直線の式を連立して,直線どうしの交点を求める必要があります. とても簡単なことなのですが,巷の記事ではわざわざ $y=ax+b$ の形に直してから解いていたり,数値的に交点が求められていたりして若干微妙に感じるポイントがあります. いちいち解説している記事が見当たらない割によく使うため,書くことにします.

ハフ空間上で表示された直線

ハフ空間上の点 $(\rho, \theta)$ は,つぎの直線を表すものになっています. $$ \rho = x \cos\theta + y \sin\theta $$

$y=ax+b$ にせずに交点を求める

いま,$(\rho_1, \theta_1),\ (\rho_2, \theta_2)$ で表現される2本の直線を考えます. これらが交点をもつということは, $$ \rho_1 = x \cos\theta_1 + y \sin\theta_1\\ \rho_2 = x \cos\theta_2 + y \sin\theta_2 $$ の両方が同一の $(x,y)$ に対して成り立つということなので, $$ \begin{bmatrix} \cos\theta_1 & \sin\theta_1\\ \cos\theta_2 & \sin\theta_2 \end{bmatrix} \begin{bmatrix} x\\ y \end{bmatrix} = \begin{bmatrix} \rho_1\\ \rho_2 \end{bmatrix} $$ と書けます. これを単純に $(x,y)$ について解くことで, $$ \begin{bmatrix} x\\ y \end{bmatrix} = \begin{bmatrix} \cos\theta_1 & \sin\theta_1\\ \cos\theta_2 & \sin\theta_2 \end{bmatrix}^{-1} \begin{bmatrix} \rho_1\\ \rho_2 \end{bmatrix} $$ と計算できます.

ただし,傾きが同一の2直線に対しては行列部分が特異となり,この方法は使用できません. この場合はそもそも交点をもたないので,行列式の値の大きさを確認する例外処理を入れると良いでしょう.

線形代数に祈りを.

Share Comments

MATLABのタブ補完機能をコードから利用する

MATLABのタブ補完機能をコードから利用する

概要

MATLABデスクトップのタブ補完機能は便利に作られています. たとえば,コマンドウィンドウに

>> load

と入力した後にTABキーを押すと,現在見えるパス上のディレクトリやファイルをリスト表示してくれます. また,

>> matl

まで入力してTABを押すと,matlab までが確定して入力され,その後に続く関数や変数の候補が表示されます.

最近わたしはVimのPythonプラグインを書いていて,その上でMATLABエンジンを動かして遊んでいます. この補完機能をうまく利用してVim上でMATLABの賢い補完ができないだろうかと考え,やってみたのがこの記事の内容です.

ドキュメント化されていない機能なので,今後のバージョンアップ等で使用できなくなる可能性があることを注意しておきます.

Read More

Share Comments

iPad(第6世代)とApple Pencilの活用方法&なるべく安く買う方法

iPad(第6世代)とApple Pencilの活用方法&なるべく安く買う方法

ついに買ってしまったiPad第6世代とApple Pencil

今年の3月に発売されたiPad第6世代は,これまでiPad Proにしか対応していなかったApple Pencilにも対応したモデルです. これまでiPad Proの価格に悩まされて購入に踏み切れなかった私ですが,この知らせを受けて手が滑って,つい1週間ほど前に(自費で)iPadを購入してしまいました.

今回購入したのは以下のモデルです.

これまでスタイラスを頑なに作らなかったAppleでしたし,正直Apple Pencilの何が良いのか,1万円も出して買うだけの価値はあるのか疑問でした. 今回アーティストやデザイナー以外でもかなり便利に活用できることがわかったので,記事に残そうと思います.

私の普段のユースケースにかなり偏った記事になりますが,特に研究者の方や日曜エンジニアの方には,活用いただける記事になっているのではないかと思います. また,記事の最後で便利なアクセサリーや,Apple製品をなるべく安く購入する方法についても書こうと思います.

この記事の概要

  • 研究における活用方法
    • Foxit Mobile PDFでPDFファイルにメモしながら記事を読む
    • Notabilityで快適にノートを取る
    • MATLAB Mobileで計算・プロットを作成する
  • 趣味における活用方法
    • OnshapeアプリでiPadで3D CAD
    • Autodesk SketchBookでおえかき
  • なるべく安く買う方法
    • 学生・教職員ストアについて
    • Rebatesで楽天ポイント還元
    • その他考えられる方法
  • 便利なアクセサリー類

Read More

Share Comments

STM32F4Discovery向けにNuttX(RTOS)をビルドしてみる

STM32F4Discovery向けにNuttX(RTOS)をビルドしてみる

概要

FreeRTOSはみんな使っててつまらないから別のRTOSを使ってみるよ

NuttXについて

NuttX[1]はPOSIX, ANSI準拠のフリーのRTOSで,いろいろなプラットフォームに対応しています. 有名所ではSonyのICレコーダマルチコプター向けのフライトコントローラPixhawkに採用されていたりします[2]

FreeRTOSなどのほとんどのメジャーなRTOSにはシェルは提供されていませんが,NuttXにはNuttShell(nsh)というbashライクな独自のシェルが用意されています. また,ファイルシステムやネットワーク,オーディオ,グラフィクスなどの拡張機能も実装されています. アプリケーションはRTOSのコードと一緒にリンクする必要はなく,別にリンクしたELFの読み込みもサポートしています. もはやふつうのOSと遜色ない機能を持ち合わせています.何にでも使えそうな感じがします.

続きからF4Discovery向けにビルドしていきます.

Read More

Share Comments

それほど間違っていないマイクロマウス用語事典2018年版

それほど間違っていないマイクロマウス用語事典2018年版

なにこれ

マイクロマウスをはじめたばかりの人にありがちなのが,大会に行ったものの用語がよくわからなくて,「何言ってんだこいつら」状態になるという問題です. 私が初めてマイクロマウスの大会に参加したのは2013年の学生大会なのですが,その際に審査員の方から「これは重ね探索ですか?」と聞かれて「何だそれは」となったのを昨日のことのように思い出します. また,競技者は当日心の余裕がないので,MCの人にマイクを向けられても観客のことなんかそっちのけで自分が普段使ってる用語で話してしまいがちです.

というわけで,私が「これはマイクロマウス固有の用語だろう」と独断と偏見により判断した語句を,軽く事典ライクにまとめてみました. なるべく一般的な語句を使用して説明しようと試みています. 一部内輪ネタが入ってしまっているかもしれません.すみません.

コメントくだされば2019年版に反映させるかもしれませんが保証はしません.

ちなみにこの記事のネーミングはこちらの書籍をパクっています.

Read More

Share Comments