OpenCV2.0 から OpenCV2.1 の変更点(ChangeLog)

13 5月 2010 Under: opencv2.x-tips

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

コメントをどうぞ