プログラミング

Visual Studio でマクロ定義

ソースコードではなく、コンパイル(プリプロセス)実行時にマクロを定義する方法。プロパティページで「C/C++」→「プリプロセッサ」→「プリプロセッサの定義」がそれっぽい。探しても分からんかった。

Linux で IPP 使って OpenCV 2.4.9 ビルド

OpenCVFindIPP.cmakeの231行目〜248行目(下記参照)をコメントアウト。 if (UNIX) get_filename_component(INTEL_COMPILER_LIBRARY_DIR ${IPP_ROOT_DIR}/../lib REALPATH) if (IPP_X64) if(NOT EXISTS ${INTEL_COMPILER_LIBRARY_DIR}/intel64) message(SEND_E…

ICCとC99とVC

Intel C++ コンパイラ Windows 版(Visual Studio版)を使うことで、VC++でもC99のコードをコンパイルすることが可能になったっぽい。とりあえず、動く。

エンディアン反転

UNIX規格(の一部?)にはエンディアンを反転する関数が用意されている。

OpenCV with CUDA on Ubuntu Linux 10.04 (Lucid)

まずTBBをインストール $ sudo aptitude install libtbb2 libtbb-dev 鬼門になるのが10.04にいかにCUDA4.0をインストールするかという点。以下を参考に頑張る。 http://forums.nvidia.com/index.php?showtopic=204890 ドライバ、toolkit、SDKが入ればOpenCV…

OpenCV cv::Mat を CvMat や IplImage と見なす

ラボメンバーのためのメモ。cv::Matクラスには CvMat 型や IplImage型への変換演算子が定義されているのでキャストできる。したがって、CvMatやIplImageしか受け付けない古いバージョンの関数を使う場合には明示的にキャストするか、もしくは以下のように暗…

accumulator_set と std::for_each

Boost 1.36 からある boost::accumulators::accumulator_set は統計を取るクラス (参照:letsboost::accumulators)。参照先にあるような例題では要素数が少ないのでそのまま書き下せるが、要素数が増えてくるとループで回すことになる。例えば以下のように。…

フリーのsvn サーバ

XP-Dev.com - Enterprise grade Subversion, Git, Mercurial & Trac Hosting Secure Git™, Secure Software Development in the Cloud | Assembla

浮動小数点数のノーマル、サブノーマル

http://www.umekkii.jp/college/syllabus/03w_digital_media/note01.pdf これを判別する関数がC99で用意されている。C++でもtr1にある。

Boost on cygwin

いつのまにか、1.33.1-4 から最新版の 1.43 になってる…これでまたプログラミングと互換性の幅が広がる。

ALCN

でけた。背景差分法もどき。コード自体は短く60行くらい。全レベルに対応できて高速だけど、さほど精度は期待できない。でもちゃんと追跡できてちょっと感動。

ALCN

最初はオプチカルなんちゃらの応用を使おうと思ったけど、それよりも効率的な方法があるような…。撮影条件が、 カメラ固定 動物体は1つ フレーム間の見かけの運動は大きい (照明の変化はほとんどない?) という感じなので、背景差分法関連の技術を使った方が…

ALCN

Howto - PRMU Algorithm Contest 2010 動画処理なのに、関数の外部仕様で画像を一度に一枚しか渡さないってことは、前フレームの画像は関数の静的変数で保持するということですかね?

MIST

GitHub - mist-team/mist: MIST (Media Integration Standard Toolkit) 国産の画像処理系ライブラリ。3次元画像を扱えるらしいよ。各点の値は関数呼出し演算子 f(x, y, z) で取り出せるみたいなので見た目もよさげ?

自作VFライブラリ

あ、id:DOSEI さんらに渡したライブラリ、PFMとPCMが読めるって書いたけど、バグで読めなかった…原因は条件文書き損じ…まぁ使わない機能だからいいよね!(ぉ

MATLAB

使うことに決定。ついにマトラブデビュー。

EISATS

Raw Image (RAW形式画像ではない)の生データファイル形式の仕様はどこにも書いていないので、ソースコードから解析するしかないという…そしてそのソースコードはやっぱり読みにくい上に謎行動が目立つ…もっとシンプルで安全な方法があると思うんですが… 何に…

GCC最適化+α

最適化オプション -O3 に加えて、以下のオプションを与えるどうなるか。環境はIntel Core2 Duo 1.2GHz。プログラムはHS法の線型数値計算の反復1000回をYosemiteに。OpenMP有効、-O3で標準3.0秒弱。 -march=native: ほぼ変わらない。気持速くなる誤差。 -mfpm…

多様性

はじめてポリモーフィズムというものを使った。意外と便利。そして、基底クラスのメンバ関数内から派生クラスの仮想関数って呼べるのね。知らんかったよ。多様性のおかげで、同じコードが乱立してたフロー計算プログラムがすっきり。各手法の漸化式や独自パ…

関数バインダ

STL の std::bind1st や std::bind2nd は参照の参照問題を解決できないので、パフォーマンス的な問題が起こりうる。そこで、Boost の boost::bind。これは参照の参照問題を回避しているだけでなく std::ptr_fun などで関数オブジェクト化しなくても関数をそ…

Cast from C array to Boost::Array

http://d.hatena.ne.jp/kamekamekame877/20090627 での配列からのキャストを使った応用。 BOOST_STATIC_ASSERT(sizeof(int[10]) == sizeof(boost::array<int, 10>)); int a[10]; boost::array<int, 10> &b = *reinterpret_cast<boost::array<int, 10>*>(a);</boost::array<int,></int,></int,>

分散 variance

結構前に作ったんですが、STL となるべく互換性を持たせて作った分散を求める関数。内容も短いしイテレータさえあれば使えるので便利かも? #include <cmath> #include <iterator> #include <numeric> /*! variance between iterators 'b' and 'e' with average 'a'. */ template <typename V, typename InItr> inli</typename></numeric></iterator></cmath>…

TortoiseSVN のエラー

いつの間にやらエラーが出てリポジトリにアクセスできなくなった問題。 Error: network connection closed unexpectedly 日本語版を入れていると英語版に戻してもこのメッセージが完全に文字化けするので原因究明が困難にorz。 原因は PuTTY のデフォルトの…

関数の合成

合成関数はSGI ライブラリにはあるが、標準C++ライブラリには無い。使いたい場合は STLport か Boost を用いる…ってBoost では compose は無くなって Bind で代用すんのか。使い方は大体一緒?

GCCのRVO最適化のバグ?

warning: ‘r.203’ may be used uninitialized in this function note: ‘r.203’ was declared here コード上の変数名は r で、r.203 てのは多分RVO のために自動でつけられた名前か?自動的に埋め込まれたメンバ変数か…?わけ分からん。警告が出る箇所はコン…

std::distance and std::advance

<iterator> - C++ Reference それぞれイテレータの差を取得する関数とイテレータを前進させる関数。std::distance はイテレータ(ポインタ)から配列の添え字を計算するときなどに使う。単純便利なのに意外と今まで知らなかった…</iterator>

仮想デストラクタと多様性(ポリモーフィズム)

継承を使う場合には通常、基底クラスのデストラクタは仮想関数(デストラクタ)にする。なぜなら、基底クラスのポインタ経由で派生クラスオブジェクトを削除しようとすると、その結果は不定であるため。というわけで、Effective C++ では基底クラスのデストラ…

value of const std::valarray

26.3.2.3 valarray element access T operator[](size_t) const; T& operator[](size_t);

valarray on icc

const and valarray reference - C / C++ どうやら Intel コンパイラではアドレス取得が不可能な模様…かくなる上は、滅多に使わない const_cast。 const std::valarray<int> v(100); const int* p = &(*const_cast<std::valarray<int>*>(&v))[0]; 多分これで、標準準拠でもデータの先</std::valarray<int></int>…

std::valarray と NaN と max(), min(), sum()

標準C++ライブラリの std::valarray は、浮動小数点数型で NaN を含んでいると、メンバ関数 max(), min(), sum() の値が NaN になったりする。これは無論 valarray に限ったことではなく、std::vector だろうと配列だろうと、標準テンプレートライブラリ関数…