Новичок в OpenCV и плохая математика. Моя работа заключается в применении фильтра Габора к нормализованному изображению. И я знаю только, что в OpenCV есть функция getGaborKernel
, и я хочу знать, что матрица возврата этой функции является реальной или мнимой частью ядра. Если я не могу использовать эту функцию, то как я могу сгенерировать это ядро? Использование Java API, но код C++ в порядке.
Как получить реальную и мнимую части матрицы ядра габора в OpenCV
Ответы (2)
Вы можете увидеть в gabor.cpp строку 87, что вычисляется реальная часть (согласно википедии).
double v = scale*std::exp(ex*xr*xr + ey*yr*yr)*cos(cscale*xr + psi);
Вы можете получить воображаемую часть, изменив эту строку на (как сообщается также здесь< /а>)
double v = scale*std::exp(ex*xr*xr + ey*yr*yr)*sin(cscale*xr + psi);
^^^
Получив ядро, вы можете использовать его с функцией filter2d.
person
Miki
schedule
18.11.2015
Понятно. Большое спасибо!
- person ztypl; 19.11.2015
дорогой @Miki, не могли бы вы взглянуть на мой вопрос stackoverflow.com/questions/49218236/
- person Amir; 14.03.2018
@Miki ››Дорогая Мики, никто еще не ответил на мой вопрос, я ценю, если у вас есть время, чтобы взглянуть.
- person Amir; 30.03.2018
На самом деле разница между cos и sin заключается в смещении на 90 градусов или PI/2. Таким образом, вы можете получить реальное и мнимое ядра Габора, сделав PSI равным 0 для реального и PI/2 для мнимого.
Mat kernelReal = getGaborKernel(ksize, sigma, theta, lambda, gamma, 0, 0, CV_32F); Mat kernelImag = getGaborKernel(ksize, sigma, theta, lambda, gamma, 0, PI/2, CV_32F);
person
Túlio Pires
schedule
09.08.2017