Я пытаюсь сравнить и проверить, соответствуют ли два изображения друг другу.Я не смог найти подходящих руководств по сравнению с OpenCV Java в Android Studio.Итак, я нашел несколько шагов и начал вычислять гистограммы, чтобы я мог затем сравнить гистограммы двух изображений и посмотреть, совпадают ли они.
Я кодировал приведенный ниже способ вычисления гистограммы изатем сравните его.
Mat matB2 = new Mat(sourceSize, sourceMat.type());
Mat matG2 = new Mat(sourceSize, sourceMat.type());
Mat matR2 = new Mat(sourceSize, sourceMat.type());
Imgproc.calcHist(channels2, allChannel2[0], new Mat(), matB2, hisSize2, histRange2);
Imgproc.calcHist(channels2, allChannel2[1], new Mat(), matG2, hisSize2, histRange2);
Imgproc.calcHist(channels2, allChannel2[2], new Mat(), matR2, hisSize2, histRange2);
Toast.makeText(MainActivity.this, "test", Toast.LENGTH_SHORT).show();
int graphHeight2 = 300;
int graphWidth2 = 200;
int binWidth2 = 3;
Mat graphMat2 = new Mat(graphHeight2, graphWidth2, CvType.CV_8UC3, new Scalar(0, 0, 0));
//Normalize channel
Core.normalize(matB2, matB2, graphMat2.height(), 0, Core.NORM_INF);
Core.normalize(matG2, matG2, graphMat2.height(), 0, Core.NORM_INF);
Core.normalize(matR2, matR2, graphMat2.height(), 0, Core.NORM_INF);
//Comparing histograms
int compareMethod = 1;
double comparisonValueB = Imgproc.compareHist(matB,matB2, Imgproc.CV_COMP_CORREL);
double comparisonValueG = Imgproc.compareHist(matG,matG2,Imgproc.CV_COMP_CORREL);
double comparisonValueR = Imgproc.compareHist(matR,matR2,Imgproc.CV_COMP_CORREL);
Toast.makeText(MainActivity.this, "comparisonValueB::"+comparisonValueB, Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, "comparisonValueG::"+comparisonValueG, Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, "comparisonValueR::"+comparisonValueR, Toast.LENGTH_SHORT).show();
Однако результаты, которые я получил от трех добавленных тостов со значениями сравнения, следующие:
- ** сравнениеValueB: ** 1984.5519 **сравнениеValueG: ** 2159,2307 ** сравнениеValueR: ** 3420,9038
Я не понимаю, что означают эти значения.Может кто-нибудь сообщить мне, что означают эти значения и как я могу узнать, похожи изображения или нет.Также не предполагается, что значения находятся между 0 и 1, где 1 - самое высокое совпадение, а ноль - самое низкое?
Я очень новичок в OpenCV, поэтому, пожалуйста, помогите мне с этим.Если я сравниваю неправильно, пожалуйста, дайте мне знать правильный метод тоже.