Monthly Archives: December 2009

Zaku認識(1)

年末なので、夢を語って終わりにしましょう。 夏頃から構想している動体認識=Zaku認識の話です。何故「Zaku認識」なのかといえば、当然、緑の量産ザクとシャア・ザクを区別したいからですね(ガンダムRX-78とMk-IIの違いでもいいんだけど、こちらは細部の特徴比較なので少し趣が違う、両方やるけど)。 現在の構想/妄想を公開メモしておきます。少しでも訳が分かった方はコメントなりメールなりを下されば、その先の詳細をお話することはやぶさかではありませぬ(いや、マジで)。 さて、Zaku認識のほうは、動体認識と個体認識を同時にやります。当然、動いているロボットに載せることも考慮して、背景画像からの物体抽出も入ります。いわゆる、視覚と認識の両方を一体化させます。 ■前処理 色成分を残さないと、量産ザクとシャア・ザクの区別がつかないので、単純なグレー化では駄目です。 HSV成分に分解するか、グレー色調との混合による色距離を計算します。このために、 ・色相、あるいは、YCbCrのCbCrのみの二次元 ・明度による一次元 の2種類を使うほうが妥当しょう。 ■座標補正 いわゆる、カメラのブレを計算します。移動体にカメラを載せるために、 ・上下左右の二次元 ・回転 ・拡大/縮小 を考慮します。 先行きは、デジタルカメラの手ぶれ補正のように、加速度センサのフィードバックを含めます(そうしないと計算量が膨大になるので、ある程度「予測」を立てるため)。 また、人が頭を左右に振ったときにも、視点を固定するような自動補正を組みいれるためにも、3次元加速度センサのフィードバックが必須です。 当面は、膨大な計算量/高速化をものともしないCPUを使って、フィードバックなしで計算します。 これは、実際に移動体に載せたときには加速度センサによる予測が成り立つのですが、ゲーム画面のように静止したカメラの場合はこの予測が不可能になるためです。つまり、画面からのフィードバックだけを頼りに、動体を追跡します。 座標補正については、前処理で行った画像を元に差分を取ります。 この差分がより少ないものが、正しい背景(静止物体)の認識ができているとみなします。 ■動体認識 単純な動体については、超音波センサやレーザーによる反射を使ったほうが効果的です。しかし、ガンダム無双でザクの機体を数えたり、シャア・ザクに向かったりするためには、この方法は取れません。 なので、先の座標補正を行った画像について前後の複数のフレームで比較をします。 当初は、一枚の画像からと考えていたのですが、動体認識をいれたほうがより人間の眼と認識に近いので、この方法をとります。つまりは、残像を追跡します。 動体の追跡に関しては、重心あるいは中央値の移動による計算で十分かと考えています。高速移動物体を認識することも考慮すれば、おそらく、中央値で十分かなと。 懸念事項ではありますが、アニメの切り替えのように、前のフレームが全く違っている場合(画面切り替えが行われた場合)を考慮する必要があります。 ■個体認識 その物体が何であるか、を認識するには「認識票(識別信号)」を見ればいいわけですが、敵のZakuでは無理ですよね。なので、機影を確認します。これがパターンマッチングです。ただし、RX-78とMk-IIの違いを認識させるためには、ぼけぼけの画面では無理です。いや、逆にぼけぼけの画面の場合では、両者は同じものとして認識されなければいけません。 また、遠くにあって色識別が難しい場合(空気遠近法など)は、量産ザクの緑とシャア・ザクの赤は区別がつきません。あるいは、赤という色が認識できれば「シャアではないか?」という想像が可能です。 これらを考慮するために、 ・テンプレートマッチング法 ・特徴量抽出 の2種類を同時にこなす必要があります。 ~~ さて、これらが夢なのか妄想なのか、年末出血大サービスなのかは、皆様のご想像にお任せいたします。 ええと、これらのコードを何で書こうかと画策中なのですが、高速化を含めればC言語で書いた方がいいのだけど、プロトタイプはC#で書こうかなと思っています。Javaでもいいんですが、ロジックはokなのですが、画像出力の方法をいくつか調べないといけないので、面倒なんですよね私にとって。まぁ、画像認識は、入力と出力以外は純粋にロジックなので、何で書いてもok。 # OpenCV … Continue reading

Posted in 開発 | Leave a comment

チーム板橋起業塾忘年会

linux担当のM口さんは欠席ですが、チームいたばし起業塾の忘年会を開きました。 創業乾杯は忘れてしまったのはさておき、I島さんの壊れ具合は尋常ではないことが判明。 時代の一コマにするべきかと。攻殻機動隊とかね。

Posted in 雑談 | Leave a comment

microsoft office 2010 beta をお試しインストール

一か月遅れですが、MSDNから office 2010 beta をダウンロードして windows 7 on VMWare に入れてみました。 Office 2010 ベータ版 ダウンロード提供開始! http://www.microsoft.com/japan/office/2010/beta/default.mspx なところでもダウンロードができます。 さて、インストールした後、まず起動するのが Excel です。仕事柄、これを起動する機会が多いので。リボンはどうなったのかなぁ、と。 <001> リボンは相変わらずなのですが、左上の「officeボタン」が無くなっていますね。「ファイル」になっています。UI上、「ファイル」と「ホーム」で、どっちがどっちか奇妙な感じはするのですが、office 2007 で培った「ホーム」の名前は変えず、「ファイル」にしたんでしょうねぇ。 ところで、このリボンですが、office 2007 では最小化することができます。リボン自身をを右クリックして「リボンの最小化」を選択すると、画面が狭くなる~と悪名高いリボンが消えてしまいます。そうして、メニューをクリックすると画面に出てくる、という具合です。 このリボンの最小化、どうやら好評だったらしく、office 2010 では右上にリボンを最小化するボタンがあります。 <002> ご丁寧にショートカット「Ctrl+F1」が割り当てられてる…と思ったら、このショートカットは office 2007 でも同様ですね。 リボンが消えたときはこんな感じになります。 <003> 縦に少し広く使いたいときは便利な機能です。 さて、肝心の「officeボタン」改め「ファイル」タブですが、クリックするとこんな感じです。 <004> office … Continue reading

Posted in 雑談 | Leave a comment

VB6.0.NET(仮)

MSのK高さん的には「それ意味がわからないですからw」なんですが、M崎さん的にはどうでしょう? というわけで、少し真面目に考えてみました(ネーミングも)。 visual basic 6.0.net か、vba.net のどちらがいいか悩みましたが、ドメイン的に「vb60.net」が空いているので、こっちがいいかな、と。 ■言語は visual basic 6.0 ベース 言語体系は、visual basic 6.0 がベースにします。なので、クラスはありません。継承できないクラスはあるけど、まあ、最初は実装しなくて良いでしょう。使っている人は多くないし。 なので、基本は sub/function の関数で作ります。 ただし、 set xlapp = CreateObject(“Excel.Application”) な形で、COM オブジェクトは作れる、と。 それに付随して、.NETクラスライブラリは呼び出せたほうがいいかな、と。 文法的には vb6.0 を踏襲するので、ややこしい構文は open 何とかぐらいなものです。 ■中身は IronPython と同じ? .NET Framework は ver.4 をベースにします。これは、動的言語ランタイム(DLR)を使うためです。というか、使ってみたいがためです。 … Continue reading

Posted in 開発 | Leave a comment

.NETラボ勉強会12月

以前より技術系の勉強会はたくさんでているのですが、最近は月1回が限度。今のところ.NETラボだけに出ています。 そんな訳で、.NETラボでは「おいしい関係」の話をしたのですが、これは珍しいほうで、主に microsoft 系の話が中心です。その中で、今回はMSのK高さんがいらっしゃいました。。。って伏字にする必要はなくて、microsoftのエバンジェリスト日高さんの解説でした。 Code Recipe http://msdn.microsoft.com/ja-jp/samplecode.recipe.aspx のうち、今後の予定である silverlight で作るショッピングサイトの例です。 http://msdn.microsoft.com/ja-jp/dd266962.aspx#01 このショッピングサイト、ブラウザ全面で silverlight を使います。このあたり、よくある flash のサイトと同じです。逆に言えば、flash と同等なショッピングサイトを siverlight で作ることを目的としている、、、と思うですがどうなんでしょう? さて、本筋の解説は日高さんが為さるということで、ちょっと横道を私なりに考察していきます。 以前、LAMP上でsilverlightを使うために、いくつか実験をしました。 手始めに Silverlight+WCFの組み合わせで実験 http://www.moonmile.net/blog/archives/358 この手のショッピングサイトで重要な層は、 ・ブラウザによるUI層 ・データ検索などの通信層 ・サーバーでのデータベース層 の3層があります。細かい部分の違いはさておき(特にデータベース層は、DAOの違いなど異論があるでしょうが)設計段階で、どこで何の技術/言語を使うのかを選定してきます。このあたり、要求仕様段階の技術検証も必要なのですが、 ・設計のしやすさ ・プログラマの集めやすさ ・人件費(外注、社内など) も大きく関わってきます。特に外注になる場合、元請けのコンサルタントが技術面を決めてしまうことが多く、後々のコストが考慮されてない場合が多くあります。 # 現実問題として、提案する会社(microsoft や oracle など)の技術(silverlightやjavaなど)に寄ってしまうのも常だったりしますね。営業的にそういうものです。 さて、ショッピングサイトを作るにしても、外注/内製の違いあり、業務系/一般系の違いあり、というわけで、この段階で何が一番いい技術という訳でもありません。それぞれの違い、特に「得手不得手」を考慮するのが良いでしょう。 例えば、先の3つの層を … Continue reading

Posted in 開発 | Leave a comment