魚眼レンズで撮った写真を超広角レンズ写真にする画像処理ソフト「uonome」リリースしました

 https://atnd.org/events/72012参加記事です。

Ver1.1リリースしました(2016/01/05追記)

 「uonome」バージョンアップしています。

 新規点は以下です。よければ新しいバージョンを使ってみて下さい。

  • バイリニア(Bilinear)・バイキュービック(Bicubic)補間機能追加
  • 画像天地クロップ機能追加
  • 動作高速化(+リファクタリング)
  • Processing3対応

魚眼レンズ写真を超広角レンズ写真に変換

 ボディキャップ魚眼レンズ購入しました。

 実は id:OKP さんから、以前から魚眼ボディキャップ購入を勧められると共に、購入したら魚眼レンズの写真を広角写真に変換するアプリ開発してと要望うけていました。てっきり忘れていると思ったのですが、ブコメでもしっかり要望されてましたw

ボディキャップ魚眼レンズBCL-0980購入 - karaage. [からあげ]

魚眼や広角は焦点距離でなく対角線画角で表示した方が分かりやすいですよね。BCL-0980用のディストーション補正アプリ、期待してますw

2015/12/28 08:26

 そんなもん需要あるんかいなと思っていましたが、調べてみると意外に手頃で使い勝手の良いアプリが無く、わざわざPhotoshopを使っている人もいたりしてビックリしました。困っている人もいるようなのと、何より面白そうなので自分で作ってみることにしました。

魚眼レンズ写真変換アプリ「uonome」リリースします

 といわけでできました。半日くらいかな?ソフトと関係ないところで時間かかりました。githubで公開、リリースします。ライセンスはMITとしますので、好きに使用・改変下さい。


 アイコンはけいおんフォントとkeynoteで適当に作りました。

 githubって何?気取ってんじゃねーぞ!という方、安心して下さい、ついてますよ。下記リンク先にバイナリファイルを置いておくのでダウンロードして開けば使用できます。下の方のDownloadsの下のzipファイルがソフトです。

 Macの方はuonome_for_mac_v0_1.zipをダウンロード。Windowsの方はuonome_for_win_v0_1.zipをダウンロードして下さい。ただWindowsの方はテストしてないので動くかわからないです。動かなかったらごめんなさい。
 Processing 1.5.1で作っています。pythonで作ろうかと思ったのですが、使い勝手等考えてProcessingにしました。ProcessingはUIが簡単に作れるのでほんとうに楽です。以前作った自作の多重露光ソフト「Multiple Exposed Holic」をベースに作ったのすんなりできました。ライブラリの関係でProcessing 2以降は対応していません。
随時改良中です。最新verをチェック下さい。

 作り方などは、最後の方に書くので興味ある方はみてください。あと、ちゃんとした補間してないので画質はイマイチです。バイリニアとかの補間プログラム書いてpull requestもらえると泣いて喜びます。おしゃれなアイコンも募集中。Processing 3にも対応したいかな。

「uonome」使い方

 起動した後は、小さい方のウィンドウの上の方にあるLOAD SOURCE IMAGEをクリックして下さい。ダイアログボックスが開くので、魚眼レンズで撮影した写真を選択して下さい。試すだけなら、別に魚眼レンズで撮影した写真じゃなくても大丈夫です。あんまり大きいファイルだと落ちるかもしれないので、お手数ですがファイル縮小してみてください。
 写真を開いた後は、その下のスライダでパラメータを調整してみましょう。上の2つのGAMMA_SGAINはガンマカーブと明るさの調整で魚眼の補正とは関係ないです。
 その下のRAD_FISH_VALDIST_FISH_VALが魚眼の補正のパラメータです。私の魚眼ボディキャップレンズ(BCL-0980)だと RAD_FISH_VAL=0.7DIST_FISH_VAL=0.5付近だと良い感じに補正されました。

 その下のCONVERT MODEはおまけです。基本は魚眼から超広角への変換ですが下のNORMAL FISHEYECONVをクリックすると、普通の写真を魚眼レンズで撮ったような写真に変換することができます。よくあるやつですね。

 良い感じに変換できたら SAVE IMAGEをクリックして下さい。ダイアログが出てきますので、好きなファイル名を入れて保存して下さい。image.jpgみたいな感じに拡張子まで入力する必要あるので注意して下さい。pngとかでも保存できます。


 スクリーンショット

「uonome」使用例

 魚眼レンズで撮影した写真を


 魚眼レンズ写真


 「uonome」で変換すると…



 こうじゃ!

 同じ構図で9mm(35mm換算で18mm)のレンズで撮影した写真が以下です。


 9mmのレンズより全然広い画角!35mm換算で14mm相当くらいになるのではないでしょうか?

 8000円程度で14mm相当のレンズが変える。そうマイクロフォーサーズとuonomeならね!


 あとはお待ちかねの(退屈な?)作り方です。

「uonome」作り方

 魚眼レンズどうやって変換するかなと調べていたら、まさに求めていたような回答ずばりの記事が。

 神がいた…。もうちょっと頭使って自分で考えた方が良かったかもしれません、でも自分だけだとひょっとしたらできなかったかも。ネット万歳ですね。自分の理解の整理に絵を入れて補足すると以下かな。


 左が魚眼で、右が普通のレンズの投影のイメージ。詳しく聞かないで、私もよくわかりません(笑)

 上記の角度を同じに保つ拘束条件で、以下の式が得られる
{ \displaystyle
l/r = L / \sqrt{D^2+L^2}
}

 上記式を変形していくと、魚眼レンズと普通のレンズの変換式が得られます。「uonome」のパラメータRAD_FISH_VALDIST_FISH_VALは、上の式のrDにそれぞれ対応します。Do you understand? I can't understand.
 プログラムはGitHubに公開しているので、好きに使用ください。

補間に関して

 「uonome」は変換時にまともに補間をしておらず、近くにある画素を適当に使っています(Nearest neighbor法にもなってないです)。バイリニア補間 (Bilinear)とかバイキュビック補間(Bicubic)すると画質が多少は向上するはずなのですが、まだ実装していません。以下サイト参考にプログラム組めば理論上は実現できるはずなので、もし気が向いたらやってみるかもしれません。面倒くさいので誰か作ってください(本音)。

画像処理解説のpdf

画素の補間(Nearest neighbor,Bilinear,Bicubic) 画像処理ソリューション

「uonome」使用記事(2016/1/24追記)

 なんと「uonome」を早速使用してくれて記事にしてくれた人がいました。しかも2人も沢山になりました!。ありがたいことです。


 超広角記事の中でさりげなく「uonome」で加工した画像が



 こちらは本格的な使用レビュー!他のソフトとの比較まで。ありがたいことです。Windowsでも動くってよ、奥さん!


http://history.hatenablog.com/entry/2016/01/10/190000
 丁寧に使用方法を解説くださっています!感謝!


 なんと変デジ研究所にも取り上げていただきました!うれしい!


 使用例を書いてくださっています。

まとめ

 というわけで今年最後にふさわしい記事で締め括れて満足しています。意味がわからない!電波すぎる!宇宙語!という声も多いので、来年はちょっと電波な感じの記事は減らしていこうかなと思います。読み手の期待に応える男ですからね。褒めてください。
 折角ソフト作ったので、誰か使ってくれると嬉しいです。私は使うかわかりませんが。

関連記事


 以前Processingで作った自作の多重露光ソフト。今回のソフトはこれをベースにしました。


変更履歴

  • 2023/10/12 使用例追加