Mugichoko's blog

Mugichoko’s blog

プログラミングを中心としたメモ書き.

プログラミング

PixMix Inpainting

目標 PixMix Inpainting 論文 概要 コスト関数 伝播 ソースコード 目標 画像上の欠損領域を同一画像内の他の画素を用いて埋めるPixMix Inpaintingを実装する. PixMix Inpainting 論文 Jan Herling and Wolfgang Broll, "High-Quality Real-Time Video Inpai…

Caffeを通してCNNを理解する #3

大域的目標 今回の目標 0. LMDBの作成方法の模索 create_mnist.shを覗く create_mnist_data.cppを覗く 1. 自分で学習用データのLMDBを作成する データの準備 LMDBの作成 LMDBのインストール LMDB作成用Pythonスクリプト 2. 自作のLMDBを使って学習及び認識ま…

Fast Digital Image Inpainting

目標 Fast Digital Image Inpainting 概要 結果 ソースコード 所感 目標 画像上の欠損領域を同一画像内の他の画素を用いて埋めるImage Inpaintingを実装する. Fast Digital Image Inpainting 概要 とても簡単に実装できるImage Inpaintingの一つ.単に論文…

Caffeを通してCNNを理解する #2

大域的目標 今回の目標 自らprototxtを作成し,MNISTの学習を行う 1. prototxtの作成 train.prototxt solver.prototxt 2. 学習の実行 2.1 ファイルを構成 2.2 trainコマンドの実行 Deployment(学習した結果を用いて認識)を行う 1. deploy.prototxtの作成 2…

Caffe 1.0 (CPU) on Windows 10

目標 経緯 開発環境 インストール方法 MNISTの例 実行方法 実行結果 目標 Deep Learningがやりたい!そこでCaffe(カフェ)をインストールして,サンプルプログラムを実行することで動作確認を行い,経験談をまとめた. 経緯 今回,将来的にモバイル上で動作…

MOVERIO + OpenGL ES 2.0 + ジャイロセンサ

目標 開発環境 サンプルプログラム OpenGLES20Activity MyGLSurfaceView MyGLRenderer MoverioGyro 結果 目標 MOVERIOのジャイロセンサから得られた回転のパラメータを使って回転行列を得て,OpenGL ESに与え,頭の回転に合わせて三角形のCGを描画する. Ope…

プロジェクション行列から内部パラメータを得る

今回の内容 経緯 内部パラメータを加味したプロジェクション行列の計算方法 プロジェクション行列から内部パラメータを計算する方法 今回の内容 内部パラメータを加味したプロジェクション行列の計算方法 そこから逆算して,プロジェクション行列から内部パ…

Android Studio + MOVERIO + OpenCV #2

目標 開発環境 実装 参考サイトとそこからの追加 OpenCVで画像処理するための流れ サンプルプログラム MainActivity.java CameraPreview.java ImageProcUtil.java AndroidManifest.xml activity_main.xml 結果 目標 前回の記事の最後に書いた通り,OpenCVのC…

Android Studio + MOVERIO + OpenCV #1

モチベーション 目標 開発環境 MOVERIOでの開発の難点 Android StudioとAndroid SDKのインストール Android StudioでのOpenCVの設定 具体的な手順(全10ステップ) MOVERIO用SDKの設定 マニュアル BT300 SDKのダウンロード サンプルプログラム MainActivity.…

RGB-D SLAMを実装する #6

大域的目標 できた? 方針の再転換 グローバルマップの管理 点のマージと削除 残った問題 パラメータ調整 実行速度 参考文献 大域的目標 KellerらのRGB-D SLAM[1]が実装したい!と思い立ったので実装していく,というモチベーションの記録.ちょっとずつ実装…

RGB-D SLAMを実装する #5

大域的目標 今回の目標 実装内容 実装結果 所感 参考文献 大域的目標 KellerらのRGB-D SLAM[1]が実装したい!と思い立ったので実装していく,というモチベーションの記録.ちょっとずつ実装している.今回が5回目.モチベーションに関する詳細は初回の記事を…

RGB-D SLAMを実装する #4

大域的目標 画像ピラミッドの実装 画像ピラミッドを使ったICPの実装 実装結果 参考文献 大域的目標 KellerらのRGB-D SLAM[1]が実装したい!と思い立ったので実装していく,というモチベーションの記録.ちょっとずつ実装している.今回が4回目.モチベーショ…

RGB-D SLAMを実装する #3

大域的目標 今回の目標 ICPアルゴリズムの理解 ICPアルゴリズム(画像ピラミッドなし)のGPU実装 実装結果 参考文献 大域的目標 KellerらのRGB-D SLAM[1]が実装したい!と思い立ったので実装していく,というモチベーションの日誌記録.ちょっとずつ実装して…

GLSL #12: Pixel Buffer Object (PBO)

目標 実装環境 サンプルプログラム pbo.h pbo.cpp 結果 目標 Pixel Buffer Object (PBO) を使って,GPUメモリにあるテクスチャ(画像)をメインメモリに読み込む.「glReadPixels()やglGetTexImage()は遅い!」でも「PBOを使うと速い!」という話をよく聞く…

C++からPythonを呼び出す

目標 実装環境 Visual StudioとPython Toolsのインストール サンプルプログラム 遭遇した問題とその対処 問題 対処法 目標 Visual Studioを使ってC++のプロジェクトからPythonのスクリプトを実行する.また,この際に遭遇した「Visual StudioがC++からのPyth…

RGB-D SLAMを実装する #2

大域的目標 方針転換 GLSLによる制約? 解決案 今回の目標 実装 処理フローとメモリ管理 実装結果 参考文献 大域的目標 KellerらのRGB-D SLAM[1]が実装したい!と思い立ったので実装していく,というモチベーションの日誌.ちょっとずつ実装していく.今回が…

RGB-D SLAMを実装する #1

目標 アルゴリズム 参考文献 目標 KellerらのRGB-D SLAM[1]が実装したい!と思い立ったので実装していく,というモチベーションの日誌.今回が初稿.ちょっとずつ実装していく.今回は,論文読解とアルゴリズムの整理を行う.

GLSL #11: Bilateral Filter

目標 実装環境 参考サイト main.cpp bilateralFilter.comp 結果 目標 前回(下記参照)の予告通り,Bilateral Filterを実装する.

GLSL #10: RGB-D画像からの頂点・法線マップ生成

目標 実装環境 処理内容 流れ 頂点マップの計算 法線マップの計算 サンプルプログラム main.cpp calcVertMap.comp calcNormMap.comp 結果 参考文献 目標 前回(下記参照)は,Compute Shaderを使って,3DCGを描画した際に生成されるZバッファの線形化を行う…

ドロネー三角形分割:三角形に所属する各点のIDを取得

目標 実装環境 プログラム 実行結果 目標 前回ランダムに生成した2次元点を入力として,ドロネー三角形分割を行い,結果を描画した. 今回は,そこで用いたFade2Dを利用して,各三角形にどの2次元点が使われたかを特定する方法を実装する.

Python 3.6 + OpenCV 3.2 on Windows 10 64-bit

目標 実装環境 遭遇した問題 解決策 解決策1:conda-forge 解決策2:pipと.whil 解決策3:Python3.5へのダウングレード(未確認) テストコード 実行結果 目標 Python版OpenCVを使ったプログラミングを,Visual Studioでできるようにする.今回は,Visual St…

GLSL #9: Zバッファの線形化

目標 Zバッファの線形化とは? 実装環境 レンダリングの流れ サンプルプログラム main.cpp zbuff.comp 結果 目標 前回(下記参照)までの実装を少し変更して,Compute Shaderを使って,3DCGを描画した際に生成されるZバッファの線形化を行うプログラムを作成…

GLSLのCompute ShaderでZバッファを読み込む際のトラブルと解決方法

問題 GLSLのCompute ShaderでZバッファを読み込みたかったのだが,下記のリンクと同じ問題に遭遇した. stackoverflow.com 簡単には,Zバッファを可視化したところ,ワイヤーフレームが強調された用な結果が出力されてしまう問題だ. 結果的に,私の場合は単…

GLSL #8: Compute Shaderを使った画像処理

目標 実装環境 レンダリングの流れ サンプルプログラム main.cpp sample.comp 結果 目標 前回(下記参照)までの実装を組み合わせて用いることで,3DCGを描画した結果に対してCompute Shaderを使って画像処理(Sobelフィルタによるエッジ検出)を行うプログ…

GLSL #7: Compute Shader

目標 実装環境 レンダリングの流れ サンプルプログラム shaderUtil.h shaderUtil.cpp main.cpp sample.comp 結果 目標 こちらの内容を参考に,とりあえずCompute Shaderが動作することを確認する. 尚,今回実装する内容は,前回(下記参照)までの実装に基…

GLSL #6: Frame Buffer Object (FBO)

目標 実装環境 レンダリングの流れと結果 サンプルプログラム modelTex.h modelTex.cpp fbo.h fbo.cpp main.cpp 目標 前回(下記参照)は,テクスチャマッピングを行うプログラムを作成しました. 今回は,そのプログラムをベースに,FBOに描画した結果を四…

GLSL #5: テクスチャマッピング

目標 実装環境 DevILのダウンロード Visual Studioのプロジェクト作成 サンプルプログラム model.h model.cpp modelTex.h modelTex.cpp main.cpp modelTex.vert modelTex.vert 結果 目標 前回のプログラムをベースに,今度はテクスチャマッピングを実装する…

GLSL #4: シェーダを使った三角形の描画

目標 実装環境 GLMのダウンロード Visual Studioのプロジェクト作成 サンプルプログラム window.h window.cpp shaderUtil.h shaderUtil.cpp main.cpp simple.vert simple.frag 結果 目標 前回作成したプログラム(下記参照)の固定パイプラインによる描画部…

GLSL #3: 固定パイプラインを使った三角形の描画

目標 実装環境 GLEWのダウンロード Visual Studioのプロジェクト作成 サンプルプログラム window.h window.cpp main.cpp 結果 目標 GLFWを使って作成したウィンドウ(下記の前回記事参照)に,固定パイプラインを使って三角形を描画する.ここで初めてGLEWを…

GLSL #2: コールバック関数の登録

目標 実装環境 サンプルプログラム window.h window.cpp main.cpp 結果 目標 GLFWを使って作成したウィンドウ(下記の前回記事参照)にコールバック関数を用いた,エラーハンドリング,キー操作,スクロール操作を追加する.