これは完全に個人用のメモです。
OpenCVを使っていたときに次の記事を発見。
因果応報 | cvCalibrateCamera2関数
で、そこに世界座標系におけるカメラの位置と姿勢が数式で書いてあったんだけど、まだ3Dを始めたばっかりの自分は((なんで?))ってなった。で、考えて見た結果以下のような理由だという結論に至った。
まず、世界座標系 X = (X, Y, Z)T からカメラ座標系 x = (x, y, z)T に変換するためには4x4のカメラ行列を利用して以下の式で表現することができる:
ここで、Rは3x3の回転行列、tは3次元のベクトルとする。OpenCVのcvCalibrateCamera2()が返すRとtはこれ。
それじゃあカメラ座標系から世界座標系に変換するにはどうすればいいのよっていうと、逆行列を用いて以下のように表現できる:
つまり世界座標系におけるカメラの位置と姿勢を求めるためには、この逆行列を利用しなければならない、と。たぶんこんな感じかな…
2009年10月12日月曜日
忘備録:cvCalibrateCamera2()について
2009年10月7日水曜日
(追記)郵便局で作る日本全国の光の地図
これは前回の記事
『住所一覧からマックと吉野家の光の地図を作ってみた』
の続きです。今回はデータとして、郵便局の住所一覧を用いました。
また、データは『全国郵便局名一覧』からダウンロードしました。ありがとうございます。







当たり前ですけど、郵便局はやっぱり多いですね。解析にまる3,4日くらいかかったような気がします。
しかも日本全国に散らばっているあたり、郵政事業がいかに重要なのか思い知らされます。
投稿時刻
1:14
0
コメント
ラベル:
proce55ing,
python,
技術情報
2009年10月4日日曜日
住所一覧からマックと吉野家の光の地図を作ってみた
おひさしぶりです。
お久しぶりです。どうやら巷ではアクセスアップのコツとして「内容よりも一日の更新頻度を上げたほうが人気が出る」らしいですが、ここはそんなこと全く気にせずにのんびりと更新していきます。(かと言って質が高いかと言えば疑問ですが…)さて、更新してみようと思い立ったきっかけはこんな記事からでした。
「マックまでの近さ」が光で表された米国地図 | WIRED JAPANで、ブックマークのコメントを見たらこんなものが。
この地図を作成したのは、Steven Von Worley氏。ロサンゼルス盆地の、本当に何もないようなところで目にしたマクドナルドに刺激されてこの地図の作成を思い立ったという。
はてなブックマーク - 「マックまでの近さ」が光で表された米国地図 | WIRED VISIONやってみようじゃないの。
Layzie food, ネタ 東と西でクッキリ分れてるねえ。誰か、日本で「吉野家」バージョンで作らないだろうか。
というわけでちょっとした思いつきで吉野家地図の日本版を作ってみました。ちなみに本家ではきちんと距離を計算してそこからの最短距離で色を作っているらしいですが、そんなことしても面倒くさい割にそんな役に立たないので単純な加算処理にしてあります。
工程は後述するとして、画像は以下。

これが吉野家の光…
東京や大阪、京都の大都市は吉野家が密集していることが伺えます。また各種国道や高速自動車道をなぞるように点在しているようですね(*1)。しかし海岸沿いなどにはほとんどなく、東北地方、特に札幌を除く北海道は悲惨です。これが地方格差ってやつか。
ついでにマクドナルドの地図も作って見ました。結果の画像は以下。

やっぱり吉野家と比べると明るいですね。でも吉野家の光の密度が多くなったような感じで、全体的な傾向としてはあまり変わらないような気がします。
ちなみに2つとも画像映えを良くするために少しのグロー効果も入れてあります。
メイキング
作った流れとしては以下のような感じです。- まずマックのすべての店舗の住所一覧を取得する。
- 住所から経度と緯度のペアに変換する。
- Proce55ingにデータを読み込ませ、パーティクルとして処理する。
住所から経度、緯度のペアに変換する手順では、今回はGoogleのウェブAPIサービスを利用しました。住所のデータを投げればXML形式で返ってくるので、ペアから経度と緯度部分だけを抜きだし、csv形式で保存するスクリプトを組みました(*2)。
最後にProce55ingを用いてデータを読み込ませ、経度、緯度を単なるXY座標のデータとして処理させました。ただし、座標軸の違いによりこのままでは日本が上下反対になってしまうので、単純に-1をかけて反転させてあります。
あとは見やすいように座標変換を行って、完成です。
ソースコード
今回のスクリプトをcodereposのリポジトリ上にアップしました。svn checkout http://svn.coderepos.org/share/lang/java/misc/light
でチェックアウトしてください。
外部ライブラリに依存していないので単純にproce55ingを使えば動くと思います。ついでにpythonスクリプトも同様にアップしてみました(trans.py)。参考までに。
ちなみに使い方ですが、座標が書いてあるCSVファイルを指定した後はProce55ing側が勝手に読み取ってプロットしてくれます。
ドラッグで見たい場所を移動できます(Google Mapsと同じ)。
'f'キーでズームイン、'g'キーでズームアウトを行います。マウスポインタを中心としてズームを行います。
'j'キーでパーティクルサイズを大きく、'h'キーでパーティクルサイズを小さくします。
's'キーでフレームを保存します。

(ズームして分かる、東京都のマックの様子)
'b'キーで日本地図(Thanks http://www.freemap.jp/)をバックに表示します。

まぁ、おまけ機能です。なんで位置合わせしないかというと、そこまでするときちんと経度、緯度を座標変換しなきゃなんなくて面倒だからです。
終わりに
作業時間としては大体3日間くらいかかりました。そんなに難しくありませんが、いろんな知識が複合的に絡んでいたのでそれなりに面白かったです。ちなみに、郵便局バージョンでも作れないかと今住所一覧を経度、緯度に変換しているんですがこれ3万件くらいあってすごい時間かかるんですよね…現在2日間くらい回してるんですがまだ1万件しか処理できていません。できたらちゃんと報告します。
*1 個人的に、国道にはよく吉野家が点在しているイメージがあります。
*2 もちろんこのままではサーバに過負荷(単なるDoS攻撃になってしまう)がかかってしまうので5秒のスリープを入れてあります。
追記
typo ×吉野屋 ○吉野家
投稿時刻
1:46
6
コメント
ラベル:
proce55ing,
python,
技術情報
2009年8月11日火曜日
自転車盗難 その後
自転車が2週間くらい経っても一向に見つかる気配がなかったので新しい自転車を購入。
その翌日に自転車屋に行って、ギアの調整なんかをしてもらっている最中に電話が。受けとると警察からで、自転車が見つかったから早く引き取ってほしいとのことでした。
笑
iPhone 3GS 買った
ホーム画面。デフォルトが一番綺麗と思っているので、特にカスタマイズはしていません。
最近猫も杓子もiPhone持ってるので別に珍しくないんですが、とりあえずiPhone買ってみました。
旧ボーダフォンのプランだったので、逆に切り替えたほうが安いことになるんですよね。前は月に8-10kくらいかかってましたし。
とりあえず数週間使ってみての感想としては、『パソコンをあまり使わない人は、持っている意味が殆どない』という感じです。
Googleカレンダーで予定を管理していたので、iPhoneとの同期はすごく役立ちますし、当たり前のようにGmailアカウントを追加できるのも便利。「産経新聞」アプリのおかげで新聞が気軽に読めるようになりましたし(*1)、「weathernews」で各地の天気も気軽、かつ詳細に調べられるようになりました。なぜ今までの携帯ができなかったのか不思議に思うくらいです。
逆にそういうサービスをまったく使わない人たちは特に買う利点は見当たらないので、ちゃんとした日本の携帯を買ったほうが幸せなような気がします。
キーボードについては長短あり。フリック入力だと入力が通常の携帯よりも早いのでとても便利なのですが、デバイス上結構ミスが連発するのでなんともいえません。早いけれどタイプミスでちょっとストレスがたまるようなかんじです。
jailbreakについては別にあまり重要でないから、やんなくてもいいのではという意見が多数を占めていますが、自分はむしろ逆だと思います。jailbreakしないiPhoneなんて初めっから完成されているプラモを買うようなもんです。
例えば辞書の追加。現状のiPhoneは単語の追加登録ができないです。そうなると追加するためには辞書のファイル(sys.dic)を直接いじることになります(*2)。これにはjailbreakと、最小限のコマンドライン知識が必要となってくるわけです。
linuxなどを使っている方ですと、iPhoneの中身はまんまunixで知識が流用できるので結構楽しいです(*3)。Open SSH入れて遠隔操作したり、通信を偽装して3G通信でskypeができるようになったり、vlcやmplayerを入れてflvの動画を再生できたりとか。インストーラのCydiaも.debパッケージを使っているので、リポジトリを追加して自由に自作のアプリケーションを承認なしで入れることもできます。
そーゆー抜け道が色々あるところが一番面白いんじゃないかなーと。
でも気をつけないと個人情報が駄々漏れになるんで、そこらへんは気をつけないといけないですね(特にOpenSSH関連)。
*1 自分は一番この「産経新聞」がキラーアプリなんじゃないかと思うほど気に入ってます。なんせ無料で新聞が読めるというところがデカい。
*2 別にいじんなくても他の方法はいくらでもあるんですが、どれもスマートじゃありません。
*3 iPhoneのハッカー文化がここまで大きくなった理由の一つだと思います。
2009年7月22日水曜日
2009年7月18日土曜日
クレジットカードと脆弱性
「クレジットマスター」か? VIPルーム宿泊男を逮捕 警視庁
他人のクレジットカード番号を割り出してインターネット決済し宿泊代金の支払いを免れたとして、警視庁と北海道警が電子計算機使用詐欺などの疑いで、指定暴力団山口組系元組員、瓜生誠被告(35)=覚せい剤取締法違反罪(使用)で起訴=を逮捕していたことが15日、同庁への取材で分かった。同庁などは、不正に入手した他人のIDとパスワードを使ったとして、14日に不正アクセス禁止法違反の疑いで追送検した。
眠れないのでとりあえず記事を更新することにしよう。
さてと、最近なんかクレジットマスター関連の犯罪が増えているような気がします。「クレジットマスター」自体はもう10年くらい前から登場している、古典的な手法らしいんですが、なんで最近になってこんなに頻出しているんでしょうか?謎です。
まず、世界中でよく使われているVISAのクレジットカードだと、桁数は16桁となっています。このままですととりうるカード番号の数は10^16通りであり、とてもじゃないですが実際に使われているカード番号にはたどり着けなさそうです。
ですが、実は全てのクレジットカード番号の最初の6桁は銀行のID番号になっていますので、容易に推測可能です。さらに最後の1桁はチェックサムであり、これも残りの数値から算出することが可能である*1)ため、16-7=9で残りは10^9通りとなりました。
この値が一体どれくらいの多さなのかというと、会員数が多いであろう三井住友VISAカードを例にとりますと、会員数は1641万人(平成20年3月末日)であるので、割合は0.01641。なんとランダムに数値を取っただけで100回につき1、2回は本物のカード番号に突き当たってしまうという計算になってしまいます。これはひどい。

(クレジットマスターの例。アルゴリズムは非常に簡単なので、こんな感じで容易にキージェネが作れてしまいます。一応問題ないとは思いますがモザイク入れておきますね。)
後の残る問題は有効期限なんですが、せいぜい3〜5年以内ですし試行はスクリプトなりなんなりを使えば容易に自動化できますから、1晩か2晩くらい回せばある程度の量の有効なクレジットナンバーが手に入りそうです。
まぁ名義が違ったら目をつけられますし、本物の住所を書くとすぐにお縄になってしまうので、容易さの割に非常にリスクが高い手法なんですが、自分が言いたいのはそんなことじゃなく、ここまで容易に割り出せてしまうクレジットカードの制度自体に問題があると思うのです。今時ナンバーと有効期限だけで認証が通ってしまうシステムってどうなのさっていう話で。
*1) どうやって算出するのかというと、『MOD10』アルゴリズムを用いて算出します。これについては他のサイトをご覧になったほうが容易に理解できると思います。このアルゴリズムの致命的な問題としては、残りの数値からチェックサムの値が一意に推測できてしまうという点でしょうか。これによって桁が1つ少なくできてしまうので。


