【发布时间】:2016-01-10 05:06:56
【问题描述】:
我正在使用来自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之前假设两张图片总是对齐正确的?
-
@basav 是的。方向和对齐之间非常细微的差异。
-
@Miki compareHist 似乎不适用于我正在制作的直方图。都给出了很高的相似率。
标签: c++ opencv textures histogram lbph-algorithm