Сравнить дескрипторы, используя SIFT в C#
Image My_Image = new Image(Openfile.FileName);
pictureBox1.Image = My_Image.ToBitmap();
Image<Gray, Byte> modelImage = My_Image.Convert<Gray, byte>();
SIFTDetector siftCPU = new SIFTDetector();
VectorOfKeyPoint modelKeyPoints = new VectorOfKeyPoint();
MKeyPoint[] mKeyPoints = siftCPU.DetectKeyPoints(modelImage, null);
modelKeyPoints.Push(mKeyPoints);
ImageFeature<float>[] results = siftCPU.ComputeDescriptors(modelImage, null, mKeyPoints);
Image<Bgr, Byte> image = Features2DToolbox.DrawKeypoints(modelImage, modelKeyPoints, new Bgr(Color.Red), Features2DToolbox.KeypointDrawType.DEFAULT);
pictureBox1.Image = image.ToBitmap();
эта программа просто находит дескрипторы SIFT в одном изображении. Я хочу сравнить с Image, но я не знаю, какую ImageFeature<> я буду использовать. Я ищу функции ImageFeature <> Я не могу найти его, пожалуйста, помогите мне.
1 ответ
Результаты ImageFeature[] состоят из нескольких выборок в зависимости от изображения, и каждая выборка состоит из ключевых точек и дескриптора (128), который представляет собой функции, которые вы ищете. Вы можете получить к нему доступ, например, сказав result[x].Descriptor[j], x имеет максимальное значение номера выборки, а j максимальное значение 128.