OpenCVにある画像認識のためのロジック、メジャー所で以下の3つ位
・ORB
・SURF
・SIFT
OpenCVは良く出来ていますので、3つの機能(クラス)は、共通のスーパークラスを持ちます。
実装の切り分けは簡単です。
こんなかんじ。
cv::FeatureDetector* pdetector = new cv::OrbFeatureDetector();
cv::DescriptorExtractor* pextractor = new OrbDescriptorExtractor();

ちなみに、OpenCVは全て無料では無いです。
"opencv2/nonfree/features2d.hpp"
↑のように、nonfreeフォルダがありますwww
・ORB     無料
・SURF 有料
・SIFT 有料

使った感じ
・ORB     しょぼい。無料だし、しょうがない
・SURF いい。
・SIFT いい。

こんな感じ。
OpenCVのセットアップをしてみた。
もう2012年なのに、こんなにも面倒くさいので、メモ

1. ソースコードのダウンロード
http://sourceforge.net/projects/opencvlibrary/
ちなみに、iOS用には、.frameworkがあるので、ダウンロードしてXCodeでリンクすれば、OK

2.ソースコードのビルド
面倒くさいですが、以下の手順が必要です。
    2-1.ビルドの準備
2-1-1.CMakeのダウンロード、インストール
http://www.cmake.org/cmake/resources/software.html
2-1-2.XCode CommandLineToolのインストール
こちらは、XCode→Preference→Downloadよりダウンロード、インストールできます。
 AppleのDeveloper'sサイトからも、ダウンロードできます。

2-2.ビルド
          ターミナル上で、ソースコードの解凍先へ移動し、
cmake .
を実行すれば、ビルド
make install
で、インストール

/user/local/include/opencv
/user/local/include/opencv2 内に、opencv関係のヘッダファイル
/usr/local/lib 内に、opencv関係のdylibができます。
アプリケーションのタイトルバー右側に付いている
フルスクリーンボタン押下時と同じ挙動をするロジックを使う。

ただ、マウスカーソルが画面上のメニュー領域に入ると、
メニューが表示され、フルスクリーンの解除が出来てしまうので、私は困る。
ついでにメニューも非表示にして、フルスクリーンの解除が出来ないようにしたい。

①先ず、フルスクリーン
[[myView window]toggleFullScreen];

②次にメニューを消す
   コツが必要。フルスクリーン変更中に、メニューを消すと、なぜかドックが残るので、
フルスクリーン終了イベントを待って実行する。

↓このイベントを捕まえる
- (void)windowDidEnterFullScreen:(id)sender
ここで、
[NSMenu setMenuBarVisible:NO];
を指定すればよい。

これだけでフルスクリーン対応ができる。