タグ

ブックマーク / iphone.moo.jp (8)

  • 画像のベクトル化

    ビットマップ画像をベクトル画像に変換するアルゴリズムをいろいろ調べていました。画像をベクトル化するということは、すべてのエッジを曲線の方程式で近似するということです。その変換方法としては、Potraceというアルゴリズムが有名なようですね。 論文は、ここから入手できます。 Potrace: a polygon-based tracing algorithm. Peter Selinger. September 20, 2003 基的には、 1. 輪郭座標の抽出 2. ポリゴン化 3. ベジェ曲線で近似 という流れのようです。ぼちぼち、iPhoneに実装していきたいです。ただ、このアルゴリズム、そのままだと重すぎて動かない気がする(笑)まぁ、行き詰ってから考えよっと。 This entry was posted on 金曜日, 11月 26th, 2010 at 9:28 PM and i

    yuiseki
    yuiseki 2012/07/15
  • フーリエ変換の本質

    工学系の大学生なら、2回生ぐらいで習うフーリエ変換。フーリエ級数やらフーリエ展開やらの式だけ覚えさせられて、フーリエ変換の意味を理解してない人が多いようです。 そこで、フーリエ変換とは何か?をサクっと説明してみましょう。 全ての信号は、上図のようにsin波の足しあわせで表現することが出来ます。 具体的には、周波数が1のsinxと周波数が2のsin2xと周波数が3のsin3xと・・・周波数がnのsinnxを足し合わせることで、あらゆる信号を表現することが出来るのです。 しかし、ただ単にy=sinx+sin2x+sin3x+・・・としたのでは1種類の信号しか表現できません。そこで、各周波数の振幅を変化させることで、あらゆる信号を表現するのです。 上記の信号の場合、y=4*sinx+0.5*sin2x+2*sin3x+sin4xと表現できます。 さて、先程の図を用いて、周波数を横軸に、振幅の大き

    yuiseki
    yuiseki 2012/07/15
  • C言語による画像処理入門 その1

    C言語をひと通り学ぶと、多くの人は画像処理だったりゲーム作りだったりと、目に見えるものを作りたくなるものです。しかし、画面上にHello, Worldを表示するのと、ウインドウを出すのとでは天と地ほどの開きがあるのです。Windowsでは、Windows特有の言語を使って100行近いコードを書かないと、ウインドウすら出てくれません。これでは、画像処理の勉強をしているのかWindowsプログラミングの勉強をしているのか分からなくなってしまいそうです。 たまに、C言語のみで画像処理を行なっている入門者用のサイトがあったとしても、やれSDKをインストールしろだとか、やれ自作ライブラリをリンクしろだとか、入門者には意味プーのことばっかり書いてあって心が折れてしまいそうです。また、世の中にはOpenCVというIntelが開発した天才的に楽ちんなライブラリがあるのですが、ほぼ完全にブラックボックス化さ

  • アイデアを生み出す13の方法

    アイデアを出すときには、自分の中にある情報雲とでも言うべき”もやもや”っとしたモノから数カ所をちぎりとり、型を変えて、見方を変えて、姿をかえて、そして質をつくりだす。その火種となる情報雲を絶やさないように・・・。 ちょっと慣れてきた人の為のハテブの使い方 効率よく人気記事を探すためには、はてなブックマークの人気エントリーや注目エントリーを利用するのが一番便利だと思います。このサイトでは、これらのエントリーだけでなく、一歩踏み込んだ使い方まで解説されているので、はてなブックマークをさらに利用したい方にはオススメです! 今さら聞けない?初心者に送る「Twitter」の始め方・使い方 インスタントでライトなコミュニケーションはもとより、研究や技術といった深〜い情報の交換までできてしまう優れもの。ただ、RTや@や#など、使われる用語が特殊なため、少し敷居が高いと感じてしまう人も多いはず。そこで、

  • 画像処理に使えるUIImageのTips10個

    (1) 画像をUIImageに読み込む 指定したファイルから画像を読み込み、UIImageに格納するためにはUIImageのクラスメソッドであるimageNameメソッドを使います。このメソッドはinitWithContentsOfFileよりも高速です。 //画像を読み込む UIImage *image = [UIImage imageNamed:@"test.jpg"]; (2) 画像をファイルパスから読み込む ファイルパスを指定して画像を読み込むためには、NSBundleクラスを用いてパスを作成し、そのパスをinitWithContentsOfFileの引数にしてわたします。ただし、initWithContentsOfFileで作成したUIImageの描画は非常に遅いので注意。 NSString *filePath = [[NSBundle mainBundle] pathForRe

  • OpenCVでウェーブレット変換プログラム

    OpenCVには2次元ウェーブレット変換(wavelet transform)のメソッドが実装されていなかったので作ってみた。先日作成した画像修復プログラムのテンプレートマッチングが遅い〜ってぼやいてたところ、@fukushima1981様から、ウェーブレット変換して多重解像度でのマッチをすればいいのでは?とのコメントを頂いたのが始まりです。 ウェーブレット変換の意味などは、こちらの参考書に素晴らしく分かりやすい説明が書いてあるので、参考にしてみてください。うちの研究室でもゼミ資料として使用しています。 すごく簡単に(しかも1次元ウェーブレットで。笑)説明すると下図のような感じ。フーリエ変換の場合、変換結果は周波数ごとのパワー値で出てきます。(フーリエ変換の簡単な説明)それに対して、ウェーブレット変換の場合には、各周波数ごとに、パワー値の時間変化が変換結果として得られる。 要するに、フーリ

  • 10分で学ぶOpenCV超入門

    C言語を勉強した人がOpenCVを始める取っ掛かりとして使ってもらえれば嬉しいです。配列とか関数は分かるけど、ポインタはちょっと・・・というくらいの人から読めるように書いてみました。 OpenCVとは OpenCVとは画像処理で使える関数がたくさん用意されている関数群(フレームワーク)です。例えばC言語でファイルを読み込むのにfgets()という関数が用意されているように、OpenCVでは画像を読み込むcvLoadImage()という関数が用意されています。勿論、用意されている関数はこれだけではなく、画像をグレースケール化したり画像中から四角形を検出したり、顔を検出したりする関数まで用意されています。 OpenCVでの処理の流れ OpenCVを使ったプログラムの基的な流れは といった流れになっています。以下では、まず始めにstep1とstep3だけを行うプログラムを作成したあとに徐々に複

  • 画像修復プログラムを作った

    OpenCVを使って、欠損領域を含む画像に対して画像修復を行うプログラムを作成しました。参考にした論文はこちらです。かなりGreedyで時間のかかるアルゴリズムですが、結果画像のクオリティは高いです。 Y. Wexler, E. Shechtman and M. Irani, Space-Time Video Completion. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Washington, June 2004. 入力画像がこちら。 赤色正方形の部分を欠損領域として指定しています。 修復結果がこちら かなりのクオリティで修復できているのが分かりますね。アルゴリズムとしては、先日紹介した4種類のうち4番目の「テクスチャの全体最適化による画像修復」に相当します。 このアルゴリズムの基的なアイデア

  • 1