C# で sift 実装を使いたい。
この Web サイトhttp://user.cs.tu-berlin.de/~nowozin/libsift/を見つけまし たが、メイン プログラムまたはプロジェクト ファイルがないことに混乱しています。通常の C# コンソール/ウィンドウ アプリケーションでどのように使用できるのか、GK# の規則とは何かを理解できませんでした。
誰かが私にいくつかの有用なヒントを教えてくれますか、またはC#での別の実装を知っている人はいますか?
C# で sift 実装を使いたい。
この Web サイトhttp://user.cs.tu-berlin.de/~nowozin/libsift/を見つけまし たが、メイン プログラムまたはプロジェクト ファイルがないことに混乱しています。通常の C# コンソール/ウィンドウ アプリケーションでどのように使用できるのか、GK# の規則とは何かを理解できませんでした。
誰かが私にいくつかの有用なヒントを教えてくれますか、またはC#での別の実装を知っている人はいますか?
明らかにクラス ライブラリであるため、メイン プログラムはありません。お気に入りの IDE を使用してプロジェクトを作成し、それにソース ファイルを追加するか、ターミナル ウィンドウを開いて、付属の Makefile を使用してライブラリをビルドします。
このコードは、Surf アルゴリズムhttp://www.emgu.com/wiki/index.php/SURF_feature_detector_in_CSharpに非常に似ています。
public Image<Bgr, Byte> PutFeaturesOnImage(string file)
{
Image<Gray, Byte> modelImage = new Image<Gray, byte>(file);
SIFTDetector siftCPU = new SIFTDetector();
VectorOfKeyPoint modelKeyPoints = new VectorOfKeyPoint();
MKeyPoint[] mKeyPoints = siftCPU.DetectKeyPoints(modelImage, null);
modelKeyPoints.Push(mKeyPoints);
ImageFeature<float>[] reulst = siftCPU.ComputeDescriptors(modelImage, null, mKeyPoints);
Image<Bgr, Byte> image = Features2DToolbox.DrawKeypoints(modelImage, modelKeyPoints, new Bgr(Color.Red), Features2DToolbox.KeypointDrawType.DEFAULT);
return image;
}
ライブラリを追加することを忘れないでください:
using Emgu.CV;
using Emgu.CV.Features2D;
using Emgu.CV.Util;
using Emgu.CV.Structure;
using System.Drawing;
EmguCv と OpenCV の SIFT アルゴリズムを比較しました。結果は同じです。どちらの例でも、フィーチャの数はまったく同じです。
https://sites.google.com/site/btabibian/projects/3d-reconstruction/code
Sift クラスを持つ 1 つの実装をここで見つけることができます。その EmguCV ライブラリに基づいています。sift_features (名前は C# の規則に非常に反しています) は、double[] 記述子メンバーを持つ Feature オブジェクトのリストを返します。
命名規則は、アルゴリズムがどのように実行されるかを確認するためのテストに過ぎなかったため、UBC によって公開された元の C コードに従います。必要があれば喜んでお手伝いします。