JavaScriptでHarrisオペレータによるコーナー検出

ひさしぶりのブログ。 ブラウザの処理能力の進化を測るには個人的に画像処理が一番わかりやすいです。 今回は画像内にあるオブジェクトのコーナー(corner:頂点, エッジの交点)を検出をしてみます。コーナー検出に用いられる特徴点検出法はいくつか提案されていますが、今回はブラウザ上で実行することを考慮し計算量とメモリ使用量の観点からHarrisオペレータを採用します。 コーナー検出法についてはWikipediaを参考に。 コーナー検出法 – Wikipedia Harrisオペレータは微…

JavaScriptで2D-FFTによるハイパス/ローパスフィルタ

これまでにJavaScriptとHTML5 Canvas APIでいくつかの画像処理を試してきましたが、今回は二次元離散フーリエ変換(2D-DFT、実装上では2D-FFT)で得られた周波数スペクトルにハイパス/ローパスフィルタ(HPF/LPF)を適用します。 「フーリエ変換」は音声処理でよく耳にする単語かと思います。音声データをフーリエ変換してHTML5 Canvas上でビジュアライズするデモもたくさん公開されています(例: Visualizing an audio spectrum &#821…

ANEで画像処理

前回のエントリー、FlashDevelop + GCCでANE入門の続きになります。今回はANE(ActionScript Native Extensions)で画像処理を行う際のいくつかの注意点などをメモしていこうと思います。ANEの作成手順については前エントリーを参照してください。 ANEのC APIでは、ASのBitmapDataを扱う為の構造体 FREBitmapData というものが提供されています。

OpenCVでいう…

JavaScriptでステレオ画像処理

過去、OpenCVやFlashで簡単なステレオ画像処理を試してきましたが (ステレオ画像処理, Flashでステレオビジョン入門)、今回はJavaScriptとCanvas APIで同じものを作ってみます。 Demo: HTML5 Stereo Vision Source Code: cv/stereo_matching at master from wellflat/jslib – GitHub ここではKinectのように赤外線センサーはもちろん利用できないので、純粋な画像解析の…

Perlの画像処理モジュールメモ

僕はぜんぜん詳しくないのですが、Perlの場合はどれが一番モダンで使いやすいんですかね。 このブログを見てくださっている方はわかるかと思いますが、ブラウザ上で動く画像処理のサンプルを書く時はActionScriptを好んで使っています。その理由は簡単で、Flashは描画系が優れているから。また、最近だとChrome Developer Toolsの使い勝手がとても良いので、JavaScript(+ Canvas)でサンプルを書くことも増えてきました。 ただ、この2つの言語は仕事で使うわけでもない…

CanvasとBitmapとよもやま話

久しぶりにフロントエンド寄りのこと。 ウチの会社の制作本部の人達と久しぶりに飲みに行ったので、彼/彼女らの仕事の進め方みたいなものを聞いてきた。一般的なWebサイト制作はもちろん、FlashやJavaScriptなどの技術力も僕より数倍上な人達だ。大きな組織の内でプロのデザイナーとしてたくさんの人と競争し続けてきたわけだから優秀で当たり前なのかもしれない。趣味程度にやってる僕なんかとは違う。 * CanvasとBitmapについて 彼らはしばらくCanvasを使ったアニメーションやゲームなどの案…

HLAC: 高次局所自己相関特徴

今回は画像特徴量の1つである高次局所自己相関特徴 (HLAC: Higher-order Local AutoCorrelation)について。 HLACは画像認識に対する基本的な要望としての位置不変性および加法性を満たすものであり、一次にとどまらない高次の相関に基づく統計的特徴量になっています。現在では様々なHLACの発展系が生まれていますが、今回はその基本となるアルゴリズムについて整理したいと思います。 基本アルゴリズム 自己相関関数を高次に拡張したN次の自己相関関数は、対象となる画像領域内…