использовать значения (особенности) в векторе для вычисления косинусного сходства для opencv

Я недавно работаю над проектом, в котором я извлек некоторые функции, относящиеся к изображению, и хочу выяснить, есть ли сходство между двумя изображениями, использующими эти функции.
Вот список функций, которые я извлек:

  1. Соотношение сторон (ширина / высота)
  2. Нормализованная область (область обрезки Рой для ввода области изображения)
  3. Центр обрезанного изображения
    и другие функции из одного изображения

Теперь я хочу передать эти значения в вектор и использовать этот вектор для нахождения косинусного сходства. Короче говоря, используйте такой вектор из двух изображений и найдите сходство между ними.
Я знаю, как работает перекрестное произведение двух векторов, но
Я хочу помочь в сохранении этих изображений в вектор и использование вектора. Любые предложения будут высоко оценены.

0

Решение

о, не слишком сложно

Шаг 1: заполните вашу функцию (Мат) с номерами, один за другим:

Mat feature; // you could use a std::vector, too, but cv::Mat has the
// handy dot-product used below already built in.
feature.push_back(aspect_ratio);
feature.push_back(area);
feature.push_back(center.x);
feature.push_back(center.y);
feature.push_back(more_stuff);
...

шаг 2: чтобы сравнить эти особенности, используйте косинусную норму:

Mat feature_a, feature_b; // composed like above
double ab = feature_a.dot(feature_b);
double aa = feature_a.dot(feature_a);
double bb = feature_b.dot(feature_b);
return -ab / sqrt(aa*bb);
1

Другие решения


По вопросам рекламы [email protected]