hirax.net::Keywords::「CHDK」のブログ



2011-12-30[n年前へ]

10万分の1秒で眺める「一瞬の水滴」 

 「ゆがんだ形の水滴が作る虹をシミュレーションしてみた」という論文(PDF)が数ヶ月前話題になりました。虹を作り出すのは空気中の水滴ですが、そういった水滴は完全な球というわけではありませんから、そういったゆがんだ形の水滴が作る虹をシミュレーションしてみました、という研究です。そして、ゆがんだ形の水滴が作る、ゆがんだ形の虹が再現された、というわけです。

 空気中にただよう水滴は、基本的に重力で下に落ちようとしているわけですから、水滴の下面から空気抵抗を受けひしゃげた形になります。今日は、そんな空気中を落ちていく水滴の形を眺めようと、蛇口の水が水滴へと変化していくようすをコンパクトデジカメで撮影してみました。それが右の写真です。撮影シャッタースピードを10万分の1秒に強制設定し(CHDK)、水滴に向かって「はい、チーズ!」とやってみた記念写真です。ひしゃげた形の水滴が、ガラス細工か水飴(みずあめ)であるかのように柔らかく映っています。

 空には、虹だけでなくたくさんのものが浮かんでいます。いつか、空へたくさんの経路を作り・広がり・突き抜けていく雷でも撮影したいものです。

10万分の1秒で眺める「一瞬の水滴」10万分の1秒で眺める「一瞬の水滴」






2012-04-26[n年前へ]

”コンパクトデジカメ”だけで「本をめくるだけの最速”自炊”」をするワザがある! 

 本の頁をパラパラめくり、それをiPhone撮影・処理することで、書籍を”非破壊””最速”に電子化をする『最速自炊カメラ「Jucie」』はとても便利です

 しかし、iPhone を持っていなくとも、(いくつかの)コンパクト・デジカメのユーザであれば、実は同じようなことができるのです。つまり、デジカメのレンズの前で「本のページをめくるだけ」で、紙の書籍を電子化することができるのです。

 CHDKというコンパクト・デジカメのファームウェアをハックするツールがあります。このツールを使うと、「CHDKユーザたちが作ったさまざまな拡張機能」を使うことができて、その拡張機能の中には「動くものを検知する機能」もあるのです。そして、その動体検知機能を使い、「本のページをめくるだけで、紙の書籍を電子化することができるようになる拡張機能(Document Archival Motion Detection Script for CHDK)」も作成されているのです。つまり、”コンパクトデジカメ”だけで「本をめくるだけの最速”自炊”」をする機能も提供されている、というわけです。

 この拡張機能(Document Archival Motion Detection Script for CHDK)」は、ページをめくり・位置を揃える動作を監視し、その作業が終わった後に「ページ撮影」を行います。そして、またページめくり動作が行われるのを監視・待機する…という動作を行います。三脚にカメラを固定して、カメラの前で本のページをめくっていけば、自動的に、なおかつ、高画質にすべてのページがカシャリ・カシャリとカメラの中に撮影され、紙の書籍が電子化されていきます。

 iPhone を持っていないけれど、「本をめくるだけの最速”自炊”」をしてみたいという人は、(もしもCHDKを使うことができるコンパクト・デジカメを持っているなら)”Document Archival Motion Detection Script for CHDK”を試しに使ってみると、面白いかもしれません。

2012-12-29[n年前へ]

Rubyで(が)動くデジカメを作る!? キックオフ編 

 Rubyで(が)動くデジカメ作りに挑戦してみました。コンパクトデジカメ用の特殊ファームウェア(CHDK)に組み込み向けRuby(mruby)を組み込んでみようという試みです。CHDKというコンパクトデジカメ用ファームウェアは、機能拡張用の簡易スクリプト作成言語として、すでにBasicとLuaをサポートしているので、そこに(さらに)Rubyを追加する作業に果たして意味があるだろうか…?という疑問もあるだろうと思いますが、ひとまず挑戦してることにしました。

 そこで、まずはCHDKのMain.c中にあるcore_spytask()に、液晶画面に対して"Hello! Ruby!"を出力するmrubyコードを埋め込もう、という作戦を考えてみました。たとえばこんな具合のコードをcore_spytask()に書き入れて、arm-elf-gccでmrubyをビルドした上で(libmruby.aとlibmruby-core.aを作成し)、CHDK のビルド時にlibmruby.aとlibmruby-core.aをリンクしよう、という流れです。(main.cにmrubyをリンクするなら、Makefile中にlibmruby.aとlibmruby-core.aを追加するだけで良いといった理由もあります)

char osd_buf[30];
 mrb_value v;
mrb_state *mrb = mrb_open();
 char code[] = "def hello\n"
                "  \"Hello, Ruby!\"\n"
                "end";
mrb_load_string(mrb, code);
v=mrb_funcall(mrb, mrb_top_self(mrb), "hello", 0);
mrb_close(mrb);
sprintf(osd_buf, "%s", v );
draw_txt_string(2, 2, osd_buf, conf.osd_color);

 トライした結果は、mruby コードをCHDKに埋め込んんだソースはコンパイルできたけれど、arm-elf-gccでのlibmruby.a自体のビルドに挫折した…というものでした(作業に成功したかと一瞬思ったのですが…寝て起きたら動かない…というわけで、ありがちな幻を見ていたようです)。

 しかし、失敗はしましたが、コンパイル済みライブラリを誰かが作成したならばコンパクトデジカメのファームにmrubyを組み込むことは容易にできそうだ、という感触を持ちました。

 今日は、mruby組み込み挑戦コードをこんな風に書き換えて、そのコードをビルドしたファームでコンパクトデジカメを起動してみました。その起動スクリーンショートが右上の写真です。

printf(osd_buf, "Alas! I have no Ruby now!", v );
 これはもちろん、オスカー・ワイルドが書いた深紅のルビーを持っていた王子と空飛ぶツバメの物語(「幸福の王子」)の言葉です。

Rubyで(が)動くデジカメを作る!? キックオフ編Rubyで(が)動くデジカメを作る!? キックオフ編






2012-12-31[n年前へ]

デジカメ内部でレイトレーシング計算をさせてみる!? 

 「デジカメにレイトレーシングをさせてみませんか?」という声が聞こえたので、コンパクトデジカメ用ロシア製ファームウェアCHDKにレイトレーシング(光路追跡計算)のコード(aobench)を挿入した上で、デジカメの上でコンピュータグラフィックス(CG)コードを動かしてみました。

 計算(レンダリング)を行った画像サイズは64x64ピクセルで、レンダリングした結果をデジカメの液晶画面(左上部分)に表示してみたところが右の写真です。

 レンダリング計算実行部中の浮動小数点処理を雑に端折ってみたり・液晶画面への表示処理(減色処理)で大幅に手抜きをしてみたり…というわけで品質は良くありませんが、下の画像のようにコンパクトデジカメ内部でのレンダリングルーチンはそこそこまともに動いているようです(左:コンパクトデジカメ内部でレイトレーシングさせた結果、右:PCでJavascript+HTML5でレンダリングした結果)。

   

 現実にある光をレンズで集めたり・整えたりして像を浮かび上がらせているカメラも、将来、実際にある光だけでなく計算上の光を作り出し、何かを浮かび上がらせたりしているのかもしれませんね。

デジカメでレイトレーシングデジカメでレイトレーシングデジカメでレイトレーシング






2013-01-11[n年前へ]

デジカメ本体・SDカード…全パーツがプログラマブルに動く世界!? 

 2週間くらい、デジカメに挿入したSDカード内部に置いたソフトウェアをデジカメで動かすという、デジタルカメラ本体のファームウェア・プログラミングにハマっています(参考:デジカメ内部でレイトレーシング計算をさせてみる!?Rubyで(が)動くデジカメを作る!? キックオフ編 )。

 それとは別に、(デジカメ本体ではなく)デジカメに挿入したSDカード内部で色んなソフトウェアを動かそう!という「 デジカメ内部でRubyを動かす狂気!無線LAN内蔵SDカードアダプタPQI Air Cardの間違った使い方」という面白い話があります。これは、デジカメに内蔵するPQI Air Cardという無線LAN内蔵SDカードアダプタ上で各種プログラミングをしてみよう!という話です。

 デジカメに挿入したSDカード自体がプログラマブルに動き、(デジカメに挿入したSDカードに挿入したソフトウェアを元に)デジカメ本体もプログラマブルに動く…となると、もちろん、それらを組み合わせてみたくなります。そこで、今日は、(プログラミング可能な)無線LAN内蔵SDカードアダプタPQI Air Cardを購入し、このSDカード内に置いた改造ファームでデジカメ本体を動かしてみることにしました。

 PQI Air Carは4GB以上のmicroSDでないと動きません。その一方、今回使う改造ファームは、SDカードがFAT16でフォーマットされていないと起動できません。ということは、PQI Air Cardの動作加減かつFAT16でフォーマットできる上限=4GBのmicroSDカードを買って、改造ファームを焼き込んだ上でPQI Air Cardに差し込み、さらに、PQI Air Cardの壁面を削り「書き込み禁止状態」としてやれば、「内蔵SDカードがプログラマブルで、本体自体もプログラマブルなデジカメ」ができあがる、というわけです。

 そういうわけで、作ってみたのが右写真の「壁面をカッターで削ることで書き込み禁止状態に見せかけた、改造デジカメ本体ファームウェアを内蔵する無線LAN内蔵SDカードアダプタPQI Air Cardです。デジカメ本体・SDカード…全パーツがプログラマブルに・記憶領域を共有しつつ動くようになったわけですが、…さてさて、どんな使い方をしたくなるものでしょうね?

デジカメ本体・SDカード…全パーツがプログラマブルに動く世界!?








■Powered by yagm.net