せっかくグラボがあるのに腐っていたので、有益なことに使ってみます。OpenCVのcv::gpu名前空間以下にあるGPUモジュールを使い、CUDAの力を確認します。OpenCV 2.4.8です。
続きを読むOpenCVで時間の計測
cv::TickMeter を使いましょう。なんか影の薄いcontribにあります。
cv::TickMeter meter; meter.start(); // 何かの処理 meter.stop(); std::cout << meter.getTimeMilli() << "ms" << std::endl;
定番は以下のような書き方ですが、卒業しましょう。OpenCVのを使わずQueryPerformanceCounter, timeGetTime等の別の手段を使うにしろ、大抵これと似たようになると思います。TickMeterにより、これよりも見通し良く、何をしているか直感的にわかるコードにできます。
int64 start = cv::getTickCount(); // 何かの処理 int64 end = cv::getTickCount(); double elapsedMsec = (end - start) * 1000 / cv::getTickFrequency(); std::cout << elapsedMsec << "ms" << std::endl;
なお、std::ostreamへの出力のオペレータが定義されているので、直接TickMeterオブジェクトを投げることもできます。"12.345sec" のような形式で、秒数が表示されます。
std::cout << meter << std::endl;続きを読む
JavaScriptのコンピュータビジョンライブラリ「jsfeat」を試す
jsfeatは純粋にJavaScriptのみで動作するコンピュータビジョンのライブラリです。
以下がプロジェクトのサイトです。いわゆる基本的な画像処理、線形代数、特徴点抽出などなど色々とサポートしており、期待のプロジェクトです。
http://inspirit.github.io/jsfeat/
https://github.com/inspirit/jsfeat
「このプロジェクトの目標は、最先端のコンピュータビジョンアルゴリズムを実装することで、JavaScript/HTML5の可能性を探ること」だそうです。コンピュータビジョンの研究者としてはここは目的と手段を逆に捉えるところだと思いますが、私は開発者志向なので、この姿勢は大変共感できるところです。
実際のところ触ってみて、思ったよりも精度よく、かつなかなか高速に動作し、十二分に最近のWebテクノロジの進展を感じたところです。
相当苦戦中ですが、ごく簡単な使い方をまとめておきます。
なお、本記事で作った実際に動作するサンプルは、以下からお試しください。
- ガウシアンフィルタ - http://notiz.flnet.org/jsfeat/gaussian.html
- Cannyエッジ検出 - http://notiz.flnet.org/jsfeat/canny.html
OpenCV(2.4.8)による新しいノイズ除去 ざっくり精度調べ
最近のOpenCVには、以下のような新しいフィルタ処理の関数が追加されています。
- cv::fastNlMeansDenoising (photo)
- cv::adaptiveBilateralFilter (imgproc)
この関数がどれくらい使えるものなのか、サクッと試してみました。あまり学術的に正確でないかもしれないですが、ご容赦ください。間違っていたら教えてください。
続きを読む