2010-01-21 わしはこんなコード書きとうはなかった
■ スリックカート風のやつ

Box2DFlashに挑戦してみた。
クリックしてキーボードフォーカスを与えてから矢印キーで。
昔のCarII GRANDPRIXみたいにしたかったけどなかなかうまくいかない。
絵も下手すぎるし。
2010-01-09 大塚愛とは何の関係も無い
2009-01-15
■[ダイナミクスエンジン] JigLibFlashのサンプルをFlex SDKでビルドするやりかた

自分用メモ
- Flex SDK のインストールディレクトリを $FLEX_SDK とする
Papervision3Dの準備
- JigLibFlashをビルドするにはPapervision3Dが必要
- Papervision3Dのダウンロードは http://code.google.com/p/papervision3d/downloads/list から
- 現時点では Papervision3D_rev859.swc が得られる。
- ダウンロードした Papervision3D_rev859.swc を $FLEX_SDK/frameworks/site-libs/ にコピーする
- $FLEX_SDK/frameworks/flex-config.xml を編集して $FLEX_SDK/frameworks/site-libs/ を有効にする
diff -c flex-config.xml~ flex-config.xml
*** flex-config.xml~ Wed Oct 29 08:16:18 2008
--- flex-config.xml Thu Jan 15 22:02:21 2009
***************
*** 66,71 ****
--- 66,72 ----
<!-- List of SWC files or directories that contain SWC files. -->
<library-path>
+ <path-element>site-libs</path-element>
<path-element>libs</path-element>
<path-element>libs/player</path-element>
<path-element>libs/player/{targetPlayerMajorVersion}</path-element>
JigLibFlash のビルド
- JigLibFlash のダウンロードは http://code.google.com/p/jiglibflash/downloads/list から
- 現時点では JigLibFlash v0.25.zip が得られる
- unzipして jiglib が見えるところをカレントディレクトリにして、compcでjiglib.swcを作る
$FLEX_SDK/bin/compc -include-sources . -output jiglib.swc
- できた jiglib.swc を $FLEX_SDK/frameworks/site-libs/ にコピーする
JiglibFlashサンプルのビルド
- サンプルの JigLibFlash_v0.25_Example.zip をダウンロードしてunzip
- Flash3DPhysics.as が見えるところをカレントディレクトリにして、mxmlcでFlash3DPhysics.swfを作る
$FLEX_SDK/bin/mxmlc -default-size 800 600 -default-frame-rate 60 -default-background-color 0x000000 Flash3DPhysics.as
2008-12-21
■ ミニプログラム好きの貴兄に

wonderfl build flash onlineがなんかすごいらしいのでに過去に作ったものをいくつか投稿してみた。
200行くらいのプログラムを公開するのにちょうど良いかな。
面白そうなのでサービスの品質を下げずに維持していってほしい。
できすぎ
2009/01/03 08:52
2008-11-30の特徴点抽出をOpenCVで行いたいのですが、OpenCV上では、どのようにプログラムを描けばいいか教えて下さい。
flashrod
2009/01/04 22:50
OpenCVは参考書も参考になるWebサイトもたくさんあるのでどうにかなるでしょう。このブログでOpenCVを扱うことは無いと思います。ごめんなさい。
2008-11-30 特徴点抽出
■[画像処理] AS3で画像処理入門(その7)

自分で何度も検索するのが面倒なのでカテゴリーをつけてみた。
特徴点抽出
前回4-連結細線化をやったので、その結果に対して特徴点を抽出する。ここでいう特徴点は線図の端、分岐しているところ、交差しているところのこと。4-連結線図のばあい、1-画素の上下左右にある1-画素の数を数えるだけで分類できる。上下左右の1-画素の数が1のときは端点、3が分岐点、4が交差点。ちなみに1-画素というのは白い画素のこと。0-画素が黒で背景。
/** 特徴点抽出(素朴版) * @param b 2値化済み画像(0黒背景,255白対象) 4-連結細線化済み画像 * @return 特徴点配列 */ private function feature_extract(b:BitmapData):Array { var a:Array = []; for (var j:int = 1; j < b.height - 1; j++) { for (var i:int = 1; i < b.width - 1; i++) { if (b.getPixel(i, j) != 0) { var c:int = (b.getPixel(i + 1, j) != 0 ? 1 : 0) + (b.getPixel(i, j - 1) != 0 ? 1 : 0) + (b.getPixel(i - 1, j) != 0 ? 1 : 0) + (b.getPixel(i, j + 1) != 0 ? 1 : 0); if (c == 1 || c == 3 || c == 4) { a.push({c:c, x:i, y:j}); } } } } return a; }
上下左右の1-画素の数が1・3・4のときは特徴点として登録する、を全ての1-画素についてやるという素朴なもの。
ところで上下左右の1-画素の数を数えるのは ConvolutionFilter でできる。
/** 特徴点抽出 (ConvolutionFilter版) * @param b 2値化済み(0黒背景,255白対象) 4-連結細線化済み画像 * @return 特徴点配列 */ private function feature_extract(b:BitmapData):Array { var l:Array = [0, 1, 0, 1, 0, 1, 0, 1, 0]; var d:BitmapData = b.clone(); d.applyFilter(b, b.rect, b.rect.topLeft, new ConvolutionFilter(3, 3, l, 255)); var a:Array = []; for (var j:int = 1; j < b.height - 1; j++) { for (var i:int = 1; i < b.width - 1; i++) { if (b.getPixel(i, j) != 0) { var c:int = d.getPixel(i, j) & 255; if (c == 1 || c == 3 || c == 4) { a.push({c:c, x:i, y:j}); } } } } return a; }
処理時間は素朴版とあまり違わない。たぶん全ての画素について調べる2重ループがボトルネックなんだろう。
こうして得られた特徴点に丸印をつけたのが下の図。
青が端点で赤が分岐点。交差点はこの図には無かった。
また一歩画像認識の野望に近づいた。






