FC2ブログ
 

ロコリンの雑記

アニメ大好き社会人のロコリンのブログ。2015年卒(修士)の社会人。学生時代(2010年)から続けてるブログなのでエントリによっては学生ブログと社会人ブログになっています。時系列から察して。
 
 
このブログについて
ブログ内検索
カテゴリ
プロフィール

ロコリン

Author:ロコリン
2018年6月から会社員。2015年3月まで大学院生でした。
趣味:アニメ/Twitter/ゲーム/ニコ動
今(2015年2月更新):プリキュア/プリパラ/アイカツ/ごちうさ/艦これ

外部リンク
Twitter

スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

任意領域でのポアソン方程式の数値解法を用いた画像合成できた - 2010年夏休み自由研究 

前回はポアソン方程式の境界問題を用いた画像合成を、長方形領域に限り完成させました。
今日は、任意領域での合成に成功しました。


領域の指定は、領域指定用にあらかじめビットマップ画像を用意します。
これを、私は「マスク画像」と呼んでいます。
(画像編集に詳しくないので言葉遣いがこれで合っているかわかりませんが。)
マスク画像のうち、色が暗いところを合成領域とします。

今回は、次の2枚の画像を合成しました。

合成元画像 合成対象画像
smg20100811.jpg universe20100811.jpg

マスク画像は次の物を使いました。

マスク画像
smg_mask20100812.png

これによってできた画像がこちらです。
単純合成と比較します。

単純合成画像 数値解合成画像
universe_straight20100812.png universe_pie20100812.png

前回の長方形領域の合成と比べると、違和感は激減したと思います。
ただ、合成元の背景が星の輝く宇宙で、合成先の背景が惑星なので、惑星上に遠くの星が輝いて見えるという点で違和感はあります。
しかし、合成元画像と合成対象画像の組合せによっては、まったく違和感を与えないこともできそうだと思いませんか?

ということで、私が作ろうとしたポアソン方程式を用いた画像合成ソフトのエンジン部分が実質的に完成したことになります。
これからの課題は、操作性に尽きると思います。
この画像を合成するために、マスク画像を事前用意することすら面倒臭かったです。
(画像編集に長けている人ならできるのでしょうか?)
その後、コマンド プロンプトから次のような操作をしました。 (赤文字が手操作)

>pie.exe smg.bmp universe.bmp smg_mask.bmp
マスク画像 (smg_mask.bmp) の左上端は合成元画像 (smg.bmp) 上のどの点ですか? (x, y):
x = 0
y = 0
マスク画像上のマスク領域を囲む長方形は、マスク画像上の点 (807,94)~(995,277) であると判断しました。
よって、合成元画像上での合成領域を囲む長方形は、合成元画像上の点 (807,94)~(995,277) となります。
合成対象画像 (universe.bmp) 上の点 (xt, yt) と合成元画像上の点 (xs, ys) のズレ (Δx, Δy) = (xt - xs, yt - ys) :
Δx = -140
Δy = 296
よって、対象画像上のマスク領域を囲む長方形は、対象画像上の点 (667,390)~(855,573) となります。

設定は以上でよろしいですか? [Y/N]:y
比較回数 (漸化式を 79 回解く毎に一度) : 6
こういう操作を毎回やるのは面倒臭いです。
なので、将来的に GUI での操作に対応する必要があると思います。

これからしばらくは GUI ソフトの作り方を勉強したいと思います。
ということで、今日までほぼ毎日書いていたソフトウェア開発についてのブログは、明日からは不定期更新になるかと思います。
GUI は、実装は大変そうですけれど、完成したら操作は楽になりそうですから、早く作りたいですね。

追記 (2010年8月12日20時38分頃)

作ったプログラムをうpします。
「CUI でもいいから早く使ってみたい」という方はダウンロードしてください。

  • 画像合成ソフト (ver.1.00) (ZIP 版)
  • 画像合成ソフト (ver.1.00) (7-ZIP 版)

追記 (2010年8月17日22時32分頃)

最近はお盆などがあり、また燃え尽き症候群なのか面倒臭くて、全然プログラムの勉強とソフトウェア開発をしていませんでした。
昨日、ブログ拍手が1拍手入っていたのを見て、とても嬉しかったことから、やる気が出て、ソフトウェア開発を再開しました。
今日は十和田湖へ旅行に行っていたので、今日は夜からソフトウェア開発をしました。

プログラムに機能を追加しました。 (まだ CUI です。)

まず、コマンドライン体系を充実させました。
前回までは画像を合成するときに座標などの入力をプログラム実行中に質問してやっていましたが、
今回のプログラムでは、コマンドラインから座標を入力できるようにしました。
例えば、前回と同じ画像合成を、次のコマンド1行で実行可能としました。

>pie.exe -s smg.bmp -t universe.bmp -m smg_mask.bmp -o universe.bmp_pie.bmp -sp1 0 0 -dts -140 296
一応、前回の仕様も残してあり、前回と同様のコマンドでやった場合、質問するようにしてあります。

次に、機能の追加です。
論文『Poisson Image Editing』に載っている、

  • グレイスケールにしてからラプラシアンフィルタをかける (-gs)
  • ラプラシアンフィルタを増幅する (-amp <増幅率>)
  • 元画像と対象画像の勾配 (grad) のうち強い方を選択 (-mix)
などの機能を追加し、オプション指定によって利用可能としました。

まあ、わざわざ新しい記事を作るまでもないと思ったので、追記という形で発表させてもらいます。

追記 (2013年2月11日)

もう保守することはないと思うので、ソースコードを公開します。作ったのは 2010 年で、当時の C++ の知識は C 言語に毛が生えた程度のものだったので、ひどいソースです。今の私に「こんなものは C++ じゃない」と言われても困ります。

ギャラリー

画像 説明
universe_pie20100812.png 投稿者:Loxyplst
投稿日:2010年8月12日(木)
元画像 対象画像 マスク 単純合成
マリオギャラクシーのチコです。
sea_pie20100812.jpg 投稿者:Loxyplst
投稿日:2010年8月12日(木)
元画像 対象画像 マスク 単純合成
スマブラXのスネークです。

2010年夏休み自由研究記事一覧

  1. ラプラシアンフィルタ完成 (2010.08.08)
  2. ポアソン方程式の数値解法を実装 (2010.08.09)
  3. ポアソン方程式の数値解法を改良 (2010.08.10)
  4. ポアソン方程式の数値解法を用いた画像合成できた (長方形領域のみ) (2010.08.11)
  5. 任意領域でのポアソン方程式の数値解法を用いた画像合成できた (2010.08.12)
スポンサーサイト
コメント















 管理者にだけ表示を許可する

トラックバック
 
http://rexpit.blog29.fc2.com/tb.php/22-a916c5b5
最新記事
最新コメント
FC2カウンタ
欲しい
最近買ったもの
Amazon 検索
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。