2017年06月11日

画像処理のGUI作成

キューブマップの作成のついでに、画像処理関係のGUIを追加してみました。グレースケール化は昔の記事でやった方法で、ラベリングとかCannyエッジ抽出とかはOpenCV使っています。ラベリングは[1]を参考にさせていただきました。

実行結果

ip_gui_000.png
別ウィンドウでHSVの色分布を表示しています。Hが360度で一周するので、0付近が見づらい場合があるので、シフトできるようにしています。今回はテスト画像として[2]の画像を使用させていただきました。

画像を読み込んで表示して、右クリックするとその色を取得できるようにしています。そこからその色との距離/類似度を使ってグレースケール化します。今回は赤いチョコ?を抽出するということで、HSVを使いました。
ip_gui_002.png

次は普通に閾値で2値化しました。
ip_gui_003.png

OpenCVのラベリングを使って色を塗りました。くっついているので困りますが、一応赤いチョコだけ抽出できているかと思います。
ip_gui_004.png

面積の情報も取得できますので、面積が50以下のものを削除してノイズを減らしました。
ip_gui_005.png

処理前の画像を一応確認できるように右上に小さく表示しています。これから膨張収縮とか穴埋めとか色々追加するとGUIが狭くなりそうですね。
ip_gui_001.png

[1] http://qiita.com/wakaba130/items/9d921b8b3eb812e4f197
[2] http://sipi.usc.edu/database/

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

2017年06月08日

キューブマップとスフィアマップの作成

キューブマップとかスフィアマップとか出てきたのでパノラマ画像[1]をキューブマップやスフィアマップに変換するプログラムを作成してみました。

キューブマップは球面調和関数を試していたころに作っていた関数があったのでそのまま使用しました。積分などは行わずに極座標変換してレイが当たったところの色をそのままとっていたと思います。

スフィアマップの方は[2]を参考にさせていただきました。細かい話ですが、ray[2]とray[3]はray[1]とray[2]の間違いですね。ちゃんと見ていませんが、fire_ray関数の実装はなさそうでしたので、rayをワールド座標に見立てて、それを極座標に変換してキューブマップと同じ方法で変換してみました。

実行結果

cubemap_001.png
HDR画像を開いた後です。一応輝度値の最小/最大も表示するようにしています。255が1.0になるようにしているので、普通の画像は0〜1になります。

cubemap_002.png
キューブマップ変換後です。1枚にまとめたものと、各方向個別の6枚も出力するようにしました。

cubemap_003.png
スフィアマップ変換後です。これで合っているのかどうかはいまいちわかりませんが、[3]のミラーボールに似た結果になっているので良いことにします。

参考サイト
[1] http://vgl.ict.usc.edu/Data/HighResProbes/
[2] ftp://ftp.sgi.com/opengl/contrib/blythe/advanced99/notes/node179.html
[3] http://steradian.co.jp/adv3d/3dcg/HDRShop/PanoramicImage.html

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

2017年06月07日

四角ポリゴンの三角ポリゴン化

Oculus Mediumというソフトウェアを試してみたのですが、3次元空間でのお絵描きというのも新鮮でいいですね。MediumでObjファイルをStampとして空間に描くことができるのですが、少し前のバージョンでは四角ポリゴンがあったり法線ベクトルがなかったりするとエラーで読み込めませんでした。最新バージョンでは直したみたいです[1]。

以前他のレンダラ用の変換プログラムを作っていた気がしたので、それに四角ポリゴンを三角ポリゴンに変換する機能も入れました。やり方自体は簡単です。QUADの場合、indexに4頂点が指定されていますので、3頂点×2個の面に分割して追加するだけです。

quad2triangles_001.png

一応四角ポリゴンの.objを読み込んで出力してみましたが、きちんと三角ポリゴンになっていました。この変換プログラムは輪郭線の描画は画像処理でやっていたので、遅かったのでOpenMPを試してみました。parallel forしか使っていませんが、体感的には2倍ぐらい早くなった気がします。ついでに過去の記事でやっていたブルーム効果も追加してみました。

実行結果

render_blume_001.png
キューブマップを導入したら動くPCと動かないPCがあって謎です。キューブマップ単体のサンプルなら表示されるので、テクスチャ周りの使い方に何か問題があるんだと思うのですが…。

[1] Oculus Medium Updates

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