So-net無料ブログ作成
検索選択
プログラミング ブログトップ
- | 次の5件

PhotoMosaic [プログラミング]

久々にプログラミングしてみた

やっぱり忘れてるところ多いな・・・

まぁ、それはおいといて
今回作成したのは「フォトモザイク」プログラム
要は
「多数の写真を縮小して正方形など平面充填図形に切り取り、これをモザイクのタイルに見立てて碁盤目状に配置し、大きな絵を描く」ってことです(wiki参照)

百聞は一見に如かずという事で

元画像
testImage.jpg


かなり粗めに設定(16px × 16px)
mosaic01.jpg

粗めに設定(8px × 8px)
mosaic02.jpg

細かく設定(4px × 4px)
mosaic03.jpg

かなり細かく設定(2px × 2px)
mosaic04.jpg

粗いすぎると元画像がわかりにくくって
細かすぎると1つ1つの画像がわからないっていう(笑)

簡単なアルゴリズムをここに記載
利用環境は、c++言語でOpenCV pre1.1ライブラリを使用

~~~~~~~~~~~主な手順~~~~~~~~~~~~~~~

1)元画像(以下 srcImg)や置き換えを行う画像(以下 mosaicImg)を読み込み
2)mosaicImgのリサイズ(○px × ○pxに)
3)リサイズ後、mosaicImgの画素平均(以下 mosaicBGR)をそれぞれ求める(1px毎の画素(BGR)を足して、○px × ○pxで割る)
4)srcImgの区画ごとの画素平均( 以下srcBGR)をそれぞれ求める
5)srcBGRとmosaicBGRのBGR毎の絶対値の差を求める
 ex 差 = |srcB - mosaicB| + |srcG - mosaicG| + |srcR - mosaicR|
6)差が一番小さかったmosaicImgに置き換える
7)置き換え終わるまで5と6の繰り返し

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

まぁ、こんな感じ
意外に単純、ただ計算量が多いだけ


さらに改善するなら
同じ画像を置かれないように処理するとかね
まぁ、これやるなら画像が膨大に必要になるから、ある程度色区画で条件分岐させた方が良さそうだけど
あと差の計算のBGRに重みづけや条件分岐させるとかね



その他のフォトモザイク(以前作成した壁紙を使用)

ver.4px × 4px
mosaic05.jpg
mosaic06.jpg

ver.20px × 20px
mosaic07.jpg
mosaic08.jpg


写真を約100程度しか利用していないので
同じような色には大体同じ画像が置かれるな~
数増やせばいんだけど、上手く選ばないとね
画像の大まかな色比率は、緑っぽいのを多めに、青っぽいのを少なくするといいかもね

あんぱん○ん [プログラミング]

卒業研究の中間発表が終わり
お腹が逝かれた状態のGLORYです

とりあえず
発表が朝早すぎて人少なし
意見もらえなかったのが心名残です
まぁ,無事おわったからいいやー(反省はもちろんするけど)


一息ついて,卒業研究をすぐにやる気はならないので
ある授業の最終課題(インタラクティブシステム,多分ウケれば何でも良さげ)をぱぱっと作ってしまおうと思いました

タイトルは「あんぱん○ん」

何故かというと
頭を取り替えるからです(笑)


まぁ,現状の技術ではできる訳はないので
映像上の話だけどさー
そんなイノベーションが出てきたら怖いけど


簡単に概要を説明すると
2人以上の顔を検出したら
検出された顔の中から自分以外の顔を
自分の顔の部分に合成してしまうもの

例をあげると
Aさん・Bさん・Cさんの顔を検出できたら
Aさんの体にBさんの顔
Bさんの体にCさんの顔
Cさんの体にAさんの顔
みたいな感じに映像が映し出されます

本当は利用している場面の写真を載せたいんだけど
顔を晒すことになるからやめました(笑)
デバッグの協力してくれた人には大迷惑になるしね


プログラムを書いてみると意外と簡単
2時間位でできたー
ちなみに Visual C++ ,OpenCV 1.1preを利用してます


なんか他も作りたくなってきたな
AS3.0とかjava以外の言語を覚えてもいいしなー
プログラミングは好きでないけどさ
思いつきをとりあえず作成できるからねー
誰かもっと画期的なやり方を世界標準にしてほしい

シャボン玉 [プログラミング]

明日(今日?)の発表資料が作成し終えたので
とりあえず息抜き

大学の課題でインタラクティブ作品を作成する講義があったので
なんとなく
シャボン玉を採用(笑)

書きやすいAS3.0で作成(以下SS)
bubble.png

マウスポインタの左上を基準点として、ストローを表示し
クリックを押している間に一定間隔でシャボン玉が出ます

出すだけではつまらないので
シャボン玉に
位置や時間によって色変化
時間経過によるランダム消去
衝突判定true時に衝突したシャボン玉を一定確率で消去
衝突判定true時に衝突したシャボン玉を一定確率で1つのシャボン玉に(大きさは衝突したシャボン玉の半径による)

ちょこっとつまづいたのは、風の表現に重力方向のリセットを利用したら、全部設定しなおさなきゃならなかった。

最近プログラムが書けるようになったのかなぁと思ってきた。
作成時間もだいぶ短くなってきたしね。
まぁ、大部分の人から見たらまだまだ大したレベルではないけど、それなりに成長を実感できる

3年次に、通年講義で技術リーダをやってたのが土台になってる、良かった良かった。
ほんと濃い1年間でいい事も悪い事も色んな経験したしね(笑)
そのおかげで、技術的にも精神的にも大人になれたのかなと1人思ってます。



湧き出るMUSIC [プログラミング]

考え事をしていて

再生中の歌詞が降ってきたら面白いかな

と思ったのでそれをAS3.0で実装してみた。

作成したものは、
降ってくるのではなく湧き出る方がいいかなと途中から方向転換(笑)
Box2Dライブラリを利用しました(このライブラリを作成した人に密かに感謝!感謝!)

とりあえずできた(以下SSを2枚←SWFをUPできないので)
DropMusic01.png

DropMusic02.png

iTuneで再生中の曲の歌詞を噴水のように湧きださせています

細かいとこまでデバッグしてないから、バグたくさんありそう(笑)

一応、同じ文字同士が衝突したら、その文字が花火のように散る使用を無駄に付加


んー、時間の合間を見つけて徐々に改良していきたいなぁ
って思いました。

やばい
こんなことより卒研やらねば
やばいぞ(笑)



- | 次の5件 プログラミング ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。