かみのメモ

コンピュータビジョン・プログラムな話題中心の勉強メモ(記事一覧は https://kamino.hatenablog.com/archive へ)

数理最適化の勉強メモ − 最急降下法 / ニュートン法の原理と特徴

連続最適化問題の数値解法である最急降下法とニュートン法についてまとめた勉強メモです。

数理最適化の勉強メモ − 解析的な解法 / 最適性条件 / 勾配法がうまくいかない条件

連続最適化問題を解析的に解く方法、最適性条件、最適化がうまくいかない条件などについて考えたことをまとめた勉強メモです。

プロジェクタとカメラのキャリブレーションソフトを書いてみた

GitHubで公開しているプロカムキャリブレーションのソフトウェアについて軽い紹介記事を書いてみます。このソフトウェアはプロジェクタとカメラを使ったシステム(いわゆるプロカムシステム)において、プロジェクタとカメラの幾何較正を行うためのソフトウ…

coreML学習済みネットワークをplaygroundで試してみた

coreML入門の手始めにAppleが配布している学習済みネットワークをmacOSのplaygroundで動かしてみました。学習済みモデルをplaygroundからロードする方法と、coreMLを動かすための最小実装をメモとして残しておきます。

iTerm2+NeoVimに定住するためにやったこと

最近ようやくターミナルでの開発環境がいいかんじにまとまってきたので、振り返りついでに記事を書いてみます。 ターミナル開発環境を整えるためのTips集として読んで頂けると幸いです。

勝手に作るCMake入門 その4 外部ライブラリを利用する

この連載は、ここ1年くらいでCMakeに入門した筆者が勉強した内容をまとめたものです。今回はfind_packageの使い方やCMakeで外部ライブラリを利用する方法についてまとめていきます。

勝手に作るCMake入門 その3 プロジェクトの設定

この連載は、ここ1年くらいでCMakeに入門した筆者が勉強した内容をまとめたものです。今回はキャッシュ変数の役割とccmakeやcmake-guiを使ったプロジェクト設定について紹介します。

勝手に作るCMake入門 その2 プロジェクトの階層化

この連載は、ここ1年くらいでCMakeに入門した筆者が勉強した内容をまとめたものです。今回はプロジェクトを静的ライブラリとそれに依存する実行ファイルという2段階に階層化する方法について書いていきます。

勝手に作るCMake入門 その1 基本的な使い方

この連載は、ここ1年くらいでCMakeに入門した筆者が勉強した内容をまとめたものです。初回のこの記事ではCMakeとは何なのか、CMakeの基本的な使い方について書いていきます。

Unity Native PluginでC++の処理を非同期に呼び出す

前の研究室で「UnityでOpenCV使いたい」とか「UnityからArduinoにアクセスしたらゲームが固まった」とかよく耳にしたので、それに応えるつもりで記事を書いてみます。 この記事では①UnityからC++の関数を呼び出す方法、②C++の重い処理を非同期に呼び出す方法…

Plotlyでレポート・論文に使えるグラフを描こう

Pythonを使ってPlotlyのグラフを画像として保存する方法と、自分が資料用のグラフを作るときによく使うレイアウト調整の方法を紹介します。

OpenCV calibrateCamera関数のプロになる

カメラのキャリブレーションでよく使われる、OpenCVのcalibrateCamera関数の原理や実用上のコツを解説します。

XFLR5のXfoilコードを抽出してみた

初の鳥人間成分。 情報量ゼロの宣伝記事です。 かの有名なMark Drela先生が作成した二次元翼型解析ソフトXfoil。 割と古いソフトですが未だそこそこの数の鳥人間チームが利用していると思います。 しかし自作のプログラムと連携させることを考えたとき、オリ…

焦点距離の定義と用法をまとめてみた

珍しく光学の話題です。 コンピュータビジョンの分野ではいくつかの文脈で焦点距離(focal length)という単語が登場します。 この単語は元を辿れば全て同じ定義に行き着くのですが、使われる文脈によって前提とする考え方が少し違うので混乱しやすいです。 …

cmakeプロジェクトの設定項目一覧を表示させる

CMakeプロジェクトの設定項目(キャッシュ変数)の一覧を表示させる方法を紹介します。

C++で順列・組み合わせを列挙する

C++

競プロとかアルゴリズム系のコードを書いてるとたまに順列・組み合わせを列挙したいことがありますよね。この記事では自分なりに書いたC++のコードを紹介してみます。

回転ベクトル・回転行列・クォータニオン・オイラー角についてまとめてみた

この記事では回転ベクトル,回転行列,オイラー角,クォータニオン(四元数)それぞれについて回転の表現方法,特徴,右手系・左手系の変換方法を紹介します。

macOSのcmakeでcmathが大量のエラーを吐いたときのメモ

MacでPCL(Point Cloud Library)のサンプルをcmakeからビルドしようとしたときに次のようなエラーが大量発生したので原因を調べてみました。 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmath:313:…

OpenCVのカメラ歪みシミュレータを作ってみた

OpenCVのカメラキャリブレーションの際に取得できる歪みパラメータを可視化するWebアプリを作ってみました。 キャリブレーション結果の確認などにお使いください。 https://kamino410.github.io/cv-snippets/camera_distortion_simulator/ ソースコードはこ…

OpenCVで取得したカメラパラメータをUnityで使う

OpenCVで取得したカメラパラメータ(内部パラメータ・外部パラメータ)をUnityのカメラオブジェクトに反映させる方法を紹介します。ソースコード:https://github.com/kamino410/cv-snippets/tree/master/unity

EDSDKを使ってCanon EOSカメラをPCから制御してみた

C++

またまたニッチなネタ。 Canonの一眼レフカメラであるEOSシリーズをPCから制御するプログラムを書いてみたよ、というお話です。 ソースコード カメラと接続して写真を1枚撮って保存して終了する、という基本動作のソースコードをGitHubにアップしました。 言…

OpenCVを使ってグレイコードパターンを投影する

よく忘れるので、自分用にOpenCVを使ったグレイコードパターン投影のテンプレートを作りました。 ついでなので解説記事を書いてみます。 サンプルプログラムの言語はC++とPythonです。 github.com 目次 1. グレイコードパターン投影とは? 1.1. 基本的な原理…

東工大 情報理工学院のA日程を外部受験した話

2019年入学の東工大 情報理工学院 情報工学系を受験したのでそのメモ。 誰かの参考になればということで残しておきます。 ※ 受験の制度は年々変化するので鵜呑みにしすぎないようご注意ください。 この記事によって生じた不利益には一切責任を持てません。 …

OpenCVに入門するならまず公式のサンプルコードを動かしてみよう

この記事では、OpenCVの公式サンプルコードを実行する方法を紹介します。公式のサンプル集はバリエーション豊かで勉強になるので「OpenCVで何ができるの?」「この処理はどう書いたらいいの?」という入門者の方におすすめです。

AngularでHttpClientのgetのためにbase-hrefを取得する

どういう状況? Angular 6.1.3でアプリを作っているときのこと。 「最終的にxxxx.example.comにデプロイするけど、とりあえずデモのためにxxxx.github.io/xxxx.example.comで公開したいな」と思いたちました。 そこでangular-cli-ghpagesを使って、 ng build…

RustからCUDAのカーネルを呼んでみた【Windows】

RustとCUDAを連携させて遊んでみた。 参考にしたのはこちらのサイト↓ qiita.com ほとんどこの記事の通りに書けばよいのですが、私の環境はWindowsで、build.rs周りで若干苦戦したのでその辺りについてまとめてみます。 環境 普通にVS Community 2017、CUDA T…

CUDA9.2でunsupported Microsoft Visual Studio version!とか言われた

C++

Visual Studio 2017でCUDA SDK v9.2のテンプレートプロジェクトをビルドしようとしたら以下のようなエラーが出た。 unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported! …いやいや、VS2017使ってるん…

Rustのimageのピクセル処理をRayonで並列化する

Rustのimageでピクセルごとの処理を書くときは`enumerate_pixels_mut()`を使うらしい。 これにRayonの`par_iter_mut()`を組み合わせて、処理を並列化してみる。

ipythonで「Fatal error in launcher」が出た話

Windows 10 Home Python 3.6.5 IPython 6.3.1 Windows 10上のPythonを3.6.5にアップグレードしたところ、ipyhonがコケるようになった。 なんでやねん。 Pathを確認してもpython.exeが重複しているとかいうことはなかった。 そこでもう一度エラーメッセージを…

NVIDIA 3D Vision 2を入手したのでOpenGLでテストアプリを書いてみた

色々あってNVIDA謹製の3Dグラス「NVIDIA 3D Vision 2」と対応ディスプレイが手に入ったので、とりあえず立体視できる映像を表示してくれるプログラムを書いてみようと思った。 入手したデバイスはこれ↓ https://www.amazon.co.jp/dp/B006D9WLKO NVIDIA 3D Vi…