読者です 読者をやめる 読者になる 読者になる

ステレオマッチング (cvaux)

OpenCvSharp C#

cvFindStereoCorrespondenceBM, cvFindStereoCorrespondenceGCのほかに、cvauxの方にもcvFindStereoCorrespondenceという関数があります。こちらもラップしてみました。
http://opencv.jp/opencv-1.1.0/document/opencvref_cvaux.html#decl_cvFindStereoCorrespondence


cvauxの機能については、新たに定義したKwsmLab.OpenCvSharp.Auxiliaryという名前空間に実装しました。
これまではC++/CLIで実装していましたが、AuxiliaryについてはC#でP/Invokeによる実装を試みています。こんなこともあろうかと、ラッパクラスからはCvPtrプロパティでネイティブのポインタが得られるようにしてあるので、なんとかいけるのではないかと踏んでいます。が、もしダメそうなら早々にまたC++/CLIになります。


実行結果はこのようになります。あってるのかは知りません。


コードは前回と大体同じような感じです。

// using KwsmLab.OpenCvSharp;
// using KwsmLab.OpenCvSharp.Auxiliary;

// 入力画像の読み込み
using (IplImage imgLeft = new IplImage("tsukuba_left.png", LoadMode.GrayScale))
using (IplImage imgRight = new IplImage("tsukuba_right.png", LoadMode.GrayScale))
{
    // 出力画像の領域を確保
    using (IplImage dst = new IplImage(imgLeft.Size, BitDepth.U8, 1))
    {
        CvAux.FindStereoCorrespondence(imgLeft, imgRight, DisparityMode.Birchfield, dst, 50, 25, 5, 12, 15, 25);
        Cv.ConvertScale(dst, dst, 16);

        // ウィンドウに表示
        using (CvWindow window = new CvWindow("Stereo Correspondence (cvaux)", dst))
        {
            CV.WaitKey();
        }
    }
}

実践OpenCV―映像処理&解析

実践OpenCV―映像処理&解析