OpenCV2.0 から OpenCV2.1 の変更点(ChangeLog)
2.1
(April, 2010)
OpenCV 2.1 は,基本的には OpenCV 2.0 の安定化版ですが,新機能もいくつか追加されています. >>> 一般的な変更: - SVN リポジトリが SourceForge から https://code.ros.org/svn/opencv に移動しました. バグトラッカーも https://code.ros.org/trac/opencv/ に移っています. また,twitter の OpenCV アカウントもできました! http://twitter.com/opencvlibrary - OpenCV では,古いlibc-形式の方法を止め,代わりに例外を利用するようにしました. つまり,cvGetErrStatus() (現在は,常に0を返します)でエラーコードを調べる代わりに, C++ の try-catch 文の内部でOpenCV の関数を呼べば良いだけです. 今のところ,cv::Exception は,std::exception から派生しています. - 現在の OpenCV は,autotools-ベースのビルドスクリプトをサポートしません. どのOS上でもOpenCV をビルドする唯一の方法は,CMake (www.cmake.org) を利用することです. http://opencv.willowgarage.com/wiki/InstallGuide を参照してください. - OpenCV 内のすべての並列ループを,OpenMP から Intel TBB (http://www.threadingbuildingblocks.org/) を利用したものに変更しました. この OpenCV の並列化版は,MSVC 2008 Express Edition または GCC 4.2 以降を利用することでビルド可能です. - SWIG-ベースの Python ラッパーは,まだ含まれていますが,デフォルトではビルドされません. 一般的には新しいラッパーを利用した方が良いでしょう. python サンプルは,James Bowman によって新しい形式のPython ラッパーを利用するように書き換えられています. また,元のサンプル自体も James の手によるものです. - OpenCV は,MacOSX 10.6 および Windows の 64-bit 版でビルド,動作可能です (以下の highgui と 既知の問題 のセクションを参照してください). Windows では,MSVC 2008 と mingw64 で動作することが確認されています. - 理論的には,OpenCV はホストCPUを自動的に判断し, SSE/SSE2/... 命令が有効ならば,それを利用するようにすることができます. つまり,CMake で WITH_SSE* フラグを利用するのは,より安全のためだけです. しかし,最大のポータビリティを望むならば,WITH_SSE と WITH_SSE2 をON に, SSE* を OFF のままにしておくことがお勧めです. WITH_SSE3, WITH_SSSE3, WITH_SSE4_1 を利用した場合, Intel の古い Penryn コアやAMDチップと互換性の無いコードを生成する可能性があるからです. - Jose Luis Blanco により,実験的な "static" OpenCV のCmake コンフィギュレーションが提供されました. OpenCV を静的ライブラリとしてビルドするには,CMake に "BUILD_SHARED_LIBS=OFF" を渡してください. >>> 新機能,特徴: - cxcore, cv, cvaux: * Grabcut (http://en.wikipedia.org/wiki/GrabCut) 画像セグメンテーションアルゴリズムが実装されました. opencv/samples/c/grabcut.cpp を参照してください. * 改良された 新しい one-way ディスクリプタが追加されました. opencv/samples/c/one_way_sample.cpp を参照してください. * 我々が SGBM(semi-global block matching) と呼ぶ H. Hirschmuller 準大域的ステレオマッチングアルゴリズムが加わりました. Kolmogorov の グラフカットベースのアルゴリズムよりもはるかに高速で, 大抵はブロックマッチングの StereoBM アルゴリズムよりも良い結果になります. opencv/samples/c/stereo_matching.cpp を参照してください. * K. Konolige による StereoBM ステレオ対応点探索アルゴリズムが大きく改善されました: left-right 一貫性チェック,speckle フィルタリングが加えられ, パフォーマンスが(約20%)向上しています. * ステレオ平行化変換後(stereoRectify/cvStereoRectify を参照)の画像の可視領域を コントロールすることが可能になりました. また,視差を計算する領域(CvStereoBMState::roi1, roi2; getValidDisparityROI)が制限可能になりました. * 混合ガウス分布に基づく背景差分アルゴリズムが書き直され,速度と精度が向上しました. C++ インタフェース BackgroundSubtractor が提供されています. 学習された背景モデルを利用して,モデルを更新せずに前景のセグメンテーションを行うことも可能です. opencv/samples/c/bgfg_segm.cpp を参照してください. - highgui: * MacOSX:OpenCVは,Carbon と Quicktime に加えて Cocoa と QTKit バックエンドを含みます. なので,OpenCV を 64-bit ライブラリとしてビルドできます.これは Andre Cohen と Nicolas Butko のおかげです. しかし,このバックエンドはα版であることに注意してください. クラッシュやメモリリークの可能性があるので,単に試してみたい以上の目的に使うならば, 今のところ,Carbon と Quicktime を利用する方が良いかもしれません. その場合,CMake に USE_CARBON=ON と USE_QUICKTIME=ON を渡して OpenCV を 32-bit モードでビルドしてください(つまり,Xcode で i386アーキテクチャを選択します). * Windows:MSVC 2008 と mingw64 を用いて,OpenCV を 64-bit モードでビルドできます. * (Yannick Verdie によって)フルスクリーン機能が追加されました. 全画面表示を行うには cvSetWindowProperty(window_name, CV_WINDOW_FULLSCREEN, 1) を呼んでください. これは,Cocoa バインディングではまだサポートされていません. * (Stefano Fabri によって)gstreamer バックエンドが大きく改善されました. >>> 新しいテスト: - 数ダース分のテストが追加され,今までの多くのテストも OpenCV の正確さを徹底的に検証するように書き直されました. その結果,いまいちな値だったテストカバレッジが,非常に良いものになりました(特に,cxcore と cv). Module OpenCV 2.0 coverage OpenCV 2.1 (関数/条件) (関数/条件) cxcore 65/54 91/73 cv 52/46 80/68 ml 66/47 73/52 highgui 17/3 54/27 cvaux 0/0 5/12 - Python で書かれた多くの回帰テストが加わりました. これは,OpenCV と 新しい形式のバインディングの両方をチェックします. - テストデータを別のリポジトリに移しました:https://code.ros.org/svn/opencv/trunk/opencv_extra/testdata. これはパッケージには含まれないので,cvtest や mltest の幾つかは,データが無いという結果を表示します. このデータをダウンロードして,次の様に cvtest を実行することもできます: ./cvtest -d <path_to_opencv_extra>/testdata/cv ./mltest -d <path_to_opencv_extra>/testdata/ml - テストエンジンが改良されました: -tn, -seed, -r フラグが追加されました. また,失敗したテストの詳細が,コンソール上に表示されます. >>> バグ修正: - 約 200 個のバグが修正されました. 修正済,未修正のバグのリストに関しては,以下を参照してください: https://code.ros.org/trac/opencv/report http://sourceforge.net/tracker/?group_id=22870&atid=376677 >>> 既知の問題点,制限: - 異なるプラットフォームで,時々テストが失敗することがあります. おそらくほとんどは,(テストを実行する度にランダムに生成される様な)非常に特殊なテストケースが原因です. このテストケースは,関数やテストによって適切に扱われません. この内幾つかは,再現,報告されています: https://code.ros.org/trac/opencv/ticket/29 https://code.ros.org/trac/opencv/ticket/113 https://code.ros.org/trac/opencv/ticket/114 - 新しい Python バインディングは,新しい C++ や MLL の機能に対するインタフェースを持っていません. これについては,いずれかの OpenCV リリースで取り組まれる予定です. - ドキュメントは,未だ完全ではなく,フォーマットや文法上の,または意味的なエラーが存在します. 我々は,これを定期的に改良していきます. 最新のオンラインドキュメントをチェックしてみてください: http://opencv.willowgarage.com/documentation/c/index.html (C) http://opencv.willowgarage.com/documentation/cpp/index.html (C++) http://opencv.willowgarage.com/documentation/python/index.html (Python) - 修正中のバグもチェックしてみてください: https://code.ros.org/trac/opencv/report http://sourceforge.net/tracker/?group_id=22870&atid=376677