Сравнить дескрипторы, используя 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.

Другие вопросы по тегам