2010年11月25日

距離フィールドを用いた画像の拡大

距離フィールドによるテクスチャ画像のベクトル化という情報があったので、OpenCVで試してみました。

参考サイト:http://hexadrive.jp/index.php?id=26

参考サイトのようにきれいにできていないので何か間違っている気がします。

実行結果

原画像として、下記サイトの2094x2094の画像を使用させていただきました。
http://freesozai.jp/sozai/logistics/lgs_001.html

原画像を64x64に縮小し、縮小画像(左)を512x512にバイリニア補間した画像(右)

small64.bmp small512.bmp

原画像を64x64の距離画像に縮小し、距離画像(左)を512x512にバイリニア補間して2値化した画像(右)

df64.bmp dst3.png

カラーの時とか複雑な図形の場合どうするんですかね。続きを読む
web拍手 by FC2
posted by シンドラー at 21:51 | Comment(0) | TrackBack(0) | Image Processing | このブログの読者になる | 更新情報をチェックする

2010年11月23日

ファジーによる画像の拡大

昔家電とかでファジーって言葉を良く聞いた気がしますが最近あまり聞きませんね。

DCTによる画像の拡大のところの参考サイトにファジーによる画像の拡大があったので試してみました。

簡単そうに見えて結構判りにくかったような気がします。なので間違っているかもしれません。

参考サイト:
[1] http://scl.m-kb.net/
[2] http://www.f-kmr.com/PDF/dsp_interpolate.pdf
[3] http://www.comm.tcu.ac.jp/~tkimura/abstract.pdf

実行結果

128x128の画像を512x512の4倍に拡大しています。
参考サイト[2]の図5のαとβは5と100でやっています。表1のλは[3]の方に決め方が載っていました。
斜め方向の拡大画素値は[3]と違ってファジーを使っていないので斜め方向が微妙なのかもしれません。

small.bmp fuzzy_result_x4.bmp
web拍手 by FC2
posted by シンドラー at 22:59 | Comment(0) | TrackBack(0) | Image Processing | このブログの読者になる | 更新情報をチェックする

2010年11月13日

Verlet積分とParticle-IKについて

マリオのジャンプ実装法とVerlet積分というお話がありますが、ゲームの分野ではVerlet積分というものが使われることがあるようです。
http://d.hatena.ne.jp/Gemma/20080517/
http://masafumi.cocolog-nifty.com/masafumis_diary/2004/09/verlet.html

金子さんの資料を見ると、LinkというサンプルがParticle-IKと同じような感じだなーと思ったので試してみることにしました。Particle-IKについては下記のサイトでわかりやすく説明されております。
http://www.tmps.org/index.php?CCD-IK%20and%20Particle-IK

処理の流れは以下のようになっています。力や加速度などは考慮せず、現在の位置と1個前の位置から速度を計算しています。

1. 初期化処理でパーティクルの配置およびパーティクル間の初期長さを計算
2. 以下シミュレーションループ内で繰り返し
2-1. パーティクルの速度情報から現在の位置を計算
2-2. 制約条件(リンク間の長さが初期長さである、床に侵入しない等)から現在の位置を修正
2-3. 修正後の位置−1個前の位置=パーティクルの速度
2-4. 1個前の位置←修正後の位置として更新

実行結果



特に最大長の制限などをしていないので、指定した長さに必ずなるわけでもなくちょっと伸びちゃいますね。

外力として重力(による位置変化)、制約条件としてリンクの長さと床との衝突を入れています。パーティクルやリンクの衝突判定などをいれればもっとそれっぽくなりそうですが、どうなんですかね。

ソースコード置いておきます。btVector3のためだけにBullet使っています。

Particle-IK.zip

一応Particle-IKってプロジェクト名にしていますが、実際のParticle-IKとは違うんじゃないかなーと思います。
web拍手 by FC2
posted by シンドラー at 19:47 | Comment(0) | TrackBack(0) | OpenGL & Metasequoia | このブログの読者になる | 更新情報をチェックする

2010年11月12日

DCTによる画像の拡大

画像を拡大する場合、拡大した部分の画素値は元々無いので、その情報を追加するために補間が必要となります。いろいろな方法があるようですが、なんとなくDCTを使用した方法を試してみました。

DCT/IDCTはOpenCVの関数を使用しました。

参考サイト:
http://www.f-kmr.com/dsp.htm
http://ameblo.jp/mochimochi7/entry-10073001480.html

参考サイトを参考に適当に実装したので参考サイトとは少しやり方が違います。
間違っているのかもしれませんが時間がかかる割に他の手法とそんなに変わらない結果になる気がしますね。

実行結果

ノイズがある画像を縮小して、再度拡大すればノイズ除去効果があるような気がしたので試してみました。

原画像
ネットで適当に探しました。問題がありましたらお知らせください。
ttp://papermoonsara.blog69.fc2.com/blog-entry-121.html

IMG_0904.jpg

縮小画像
OpenCVのAPIなどで縮小してみたのですが、Windows XPのフォルダのサムネイル(詳細)の画像の方がなぜかきれいに縮小されていたので、それを使うことにしました。Windowsがどうやってサムネイルを作っているのか知ってる人がいましたら教えてください。

small2.bmp

拡大結果

big_fig.bmp

一応それっぽいですが、他の方法で拡大しても同じような結果になりますね。

領域分割をしようと思っていたはずなのに何で画像の拡大なんてやってるんですかね・・・。

web拍手 by FC2
posted by シンドラー at 03:53 | Comment(0) | TrackBack(0) | Image Processing | このブログの読者になる | 更新情報をチェックする

2010年11月05日

画像の極座標変換について

画像のX、Y座標を極座標r、θに変換することで、円形のキャップの文字を戻したり、360度カメラで取った画像をパノラマ画像に戻したりできます。

参考サイト:http://www.mvision.co.jp/WebHelpIM/_RESOURCE/Filter_Mvc_Polar.html

なんとなくやってみましたがあまり使い道がなさそうですね。

実行結果

パノラマ画像を360度の画像に逆変換しています。

変換前の画像データ(ライセンスも変換前のものに準拠します)
http://en.wikipedia.org/wiki/File:Panorama_of_Sunset_on_Paranal.jpg
http://commons.wikimedia.org/wiki/File:Lichtenstein_360_degree_panorama_(aka).jpg

変換後の画像データ
small_planet_001.JPG small_planet_002.JPG
web拍手 by FC2
posted by シンドラー at 01:43 | Comment(2) | TrackBack(0) | Image Processing | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。