Я использую код из bytefish.de генерировать мои LBP. Если я сгенерирую 2 LBP и соответствующие им гистограммы, как лучше всего их сравнить?
Это мой код до сих пор:
#include "lbp.hpp"#include "histogram.hpp"
#include <opencv2/opencv.hpp>
#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"
using namespace cv;
int main()
{
//template image
Mat temp = imread("Template.jpg",1);
//image to be compared to
Mat match = imread("Match.jpg",1);
Mat dst,dst2; // image after preprocessing
Mat lbp,lbp2; // lbp image
Mat hist,hist2;
//Convert to gray
cvtColor(temp, dst, 6);
cvtColor(match, dst2, 6);
//remove noise
GaussianBlur(dst, dst, Size(5,5), 5, 3, BORDER_CONSTANT);
GaussianBlur(dst2, dst2, Size(5,5), 5, 3, BORDER_CONSTANT);
//gets the lbp
lbp::ELBP(dst,lbp,1,8);
lbp::ELBP(dst2,lbp2,1,8);
// normalize(lbp2, lbp2, 0, 255, NORM_MINMAX, CV_8UC1);
//normalize(lbp, lbp, 0, 255, NORM_MINMAX, CV_8UC1);
//get histograms
lbp::histogram(lbp,hist,255);
lbp::histogram(lbp2,hist2,255);
//comparing the 2 LBP histograms
double compareHist = cv::norm(hist-hist2);
cout<<compareHist<<endl;
waitKey(0);
return 0;
}
По сути, это дает мне поддающееся количественному определению число относительно того, насколько похожи эти два изображения.
У меня вопрос, как мне улучшить этот результат? Какой лучший способ получить количественное число, основанное на том, насколько похожи 2 LBP?
Благодарю.
LBP просто дает вам (довольно большой) вектор объектов. Чтобы сделать что-то полезное, вы обычно обрабатываете много примеров изображений (все они принадлежат к классу изображений, которые вы определяете как «похожие»), а затем используете машину опорных векторов для обучения поведения, позволяющего ему распознавать это сходство.
Простое сравнение двух LPB обычно не дает много информации о сходстве двух изображений. Чтобы увидеть это: просто переведите первое изображение на один размер ячейки вашего алгоритма LBP. Второй LBP будет выглядеть как сдвинутая версия первого LBP. Поскольку у вас обычно нет информации о том, как изображения выровнены или повернуты, очень трудно сравнивать два LBP с помощью простой логики.
Других решений пока нет …