私はC#でsiftの実装を使いたいです。C#でのSIFT実装
私はこのウェブサイトを見つけましたhttp://user.cs.tu-berlin.de/~nowozin/libsift/ 私はメインプログラムやプロジェクトファイルがないと混乱しています。私はどのように通常のC#コンソール/ウィンドウアプリケーションでそれを使うことができるのか理解できず、GK#のルールは何ですか。
いくつかのヒントを教えていただけますか、誰かがC#の別の実装を知っていますか?
私はC#でsiftの実装を使いたいです。C#でのSIFT実装
私はこのウェブサイトを見つけましたhttp://user.cs.tu-berlin.de/~nowozin/libsift/ 私はメインプログラムやプロジェクトファイルがないと混乱しています。私はどのように通常のC#コンソール/ウィンドウアプリケーションでそれを使うことができるのか理解できず、GK#のルールは何ですか。
いくつかのヒントを教えていただけますか、誰かがC#の別の実装を知っていますか?
命名規則は、アルゴリズムの実行方法を確認するためのテストに過ぎなかったため、UBCによって発行された元のCコードに従います。あなたが必要な場合は、私は喜んでお手伝いします。
私はMr.Tabibianによって実装されたコードを試しましたが、次のようなエラーが表示されます。型名または名前空間 'INVERT_METHOD'が名前空間 'Emgu.CV.CvEnum'に存在しません。 cvEnumを確認しましたが、Invet_Methodが削除されたか、もうサポートされていないようです。私が代用できる他の命令はありますか? [行660:sift.cs:CvInvoke.cvInvert(H、H_inv.Ptr、Emgu.CV.CvEnum.INVERT_METHOD.CV_SVD); ] –
https://sites.google.com/site/btabibian/projects/3d-reconstruction/code
あなたはふるいにかけるのクラスを持って、ここで1つの実装を見つけることができます。それはEmguCVライブラリに基づいています。 sift_features(名前はC#の規約に非常に似ています)は、double []記述子メンバを持つFeatureオブジェクトのリストを返します。
私はMr.Tabibianによって実装されたコードを試しましたが、エラー:型または名前空間の名前 'INVERT_METHOD'が名前空間 'Emgu.CV.CvEnum'に存在しません。 cvEnumを確認しましたが、Invet_Methodが削除されたか、もうサポートされていないようです。私が代用できる他の命令はありますか? [行660:sift.cs:CvInvoke.cvInvert(H、H_inv.Ptr、Emgu.CV.CvEnum.INVERT_METHOD.CV_SVD); ] –
明らかにクラスライブラリであるため、メインプログラムはありません。お気に入りの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;
}
librarysを追加することを忘れないでください:
using Emgu.CV;
using Emgu.CV.Features2D;
using Emgu.CV.Util;
using Emgu.CV.Structure;
using System.Drawing;
私はEmguCvとOpenCVのSIFTアルゴリズムを比較しました。結果は同じです。どちらの例もまったく同じ数の機能です。
悲しいことに、リンクが既に死んでいる – Tom
コードはここにあるようです:http://www.nowozin.net/sebastian/tu-berlin-2006/libsift/ – sunside