функция гистограммы в OpenCV - PullRequest
       5

функция гистограммы в OpenCV

1 голос
/ 09 февраля 2011

Я ищу способ сравнить 2 изображения и получить наиболее подходящее изображение в качестве вывода.Используя функцию гистограммы в OpenCV я могу это сделать?

Может кто-нибудь помочь мне?

Но я не знаю, как это сделать, так как я не очень хорошо знаком с OpenCV.Спасибо.

Ответы [ 4 ]

2 голосов
/ 09 февраля 2011

Гистограмма просто гарантирует, что два изображения имеют одинаковое распределение цветов. Распределение цветов может быть одинаковым на очень разных изображениях.

В качестве примера представьте черно-белую шахматную доску 8х8 и изображение, левая сторона которого полностью черная, а дорожная сторона - чисто белая. Эти изображения имеют одинаковую гистограмму.

0 голосов
/ 03 декабря 2012

Для каждого изображения рассчитайте гистограмму ВПГ:

Mat src_mat = imread("./image.jpg");
Mat hsv_mat;
cvtColor( src_mat, hsv_mat, CV_BGR2HSV );
MatND HSV_histogram;
int histSize[] = { 240, 240 };
float h_ranges[] = { 0, 255 };
float s_ranges[] = { 0, 180 };
const float* ranges[] = { h_ranges, s_ranges };
int channels[] = { 0, 1 };
calcHist( &hsv_mat, 1, channels, Mat(), HSV_histogram, 2, histSize, ranges, true, false );
normalize( HSV_histogram, HSV_histogram, 0, 1, NORM_MINMAX, -1, Mat() );

Затем выполните парное сравнение и получите оценку сходства:

double score_ij = compareHist( HSV_histogram_i, HSV_histogram_j, CV_COMP_BHATTACHARYYA );

Вы можете повысить свою точность, разделив изображение на более мелкие области.и усредните результаты.

0 голосов
/ 10 февраля 2011

Если ваша цель - найти наиболее подходящее изображение, тогда в OpenCV есть функция cvMatchTemplate (), которая делает это.Is использует сопоставление гистограмм, но не нужно объявлять что-либо еще в коде.Можно найти часть изображения, которая лучше всего соответствует сопоставляемому шаблону и другим вариантам, доступным в документации.

0 голосов
/ 09 февраля 2011
...