Я сейчас пытаюсь найти нормализованную взаимную корреляцию между двумя изображениями 1 на 1.Поэтому для этого я использую cvMatchTemplate.Но после использования cvMinMaxLoc maxval всегда возвращает 1,00000 для любых 2 изображений 1 на 1.
Поэтому я попытался обойти это, пытаясь использовать cvMatchTemplate для изображений 6 на 3 и 3 на 3.Для каждого исходного пикселя я расширил его до 6 на 3 и 3 на 3, чтобы посмотреть, будет ли это лучше.Это не так.maxval по-прежнему возвращает 1.000000.Есть ли лучший способ найти NCC между 2 пикселями?
cvSetImageROI(img, cvRect(curWidth, curHeight, 1, 1));
IplImage* tempROI = cvCreateImage(cvSize(1, 1), img->depth, img->nChannels);
cvCopy(img, tempROI);
cvResetImageROI(img);
IplImage* currentROI = cvCreateImage(cvSize(6,3), img->depth, img->nChannels);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 6; j++) {
cvSetImageROI(currentROI, cvRect(j, i, 1, 1));
cvCopy(tempROI, currentROI);
cvResetImageROI(currentROI);
}
}
cvReleaseImage(&tempROI);
cvSetImageROI(opp_img, cvRect(opp_loc, curHeight, 1, 1));
tempROI = cvCreateImage(cvSize(1, 1), opp_img->depth, opp_img->nChannels);
cvCopy(opp_img, tempROI);
cvResetImageROI(opp_img);
IplImage* centerROI = cvCreateImage(cvSize(3,3), opp_img->depth, opp_img->nChannels);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cvSetImageROI(centerROI, cvRect(j, i, 1, 1));
cvCopy(tempROI, centerROI);
cvResetImageROI(centerROI);
}
}
IplImage *re = cvCreateImage(cvSize(4, 1), IPL_DEPTH_32F, 1);
cvZero(re);
cvMatchTemplate(currentROI, centerROI, re, CV_TM_CCORR_NORMED);
cvMinMaxLoc(re, &minval, &maxval, &minloc, &maxloc);