2013-03-22 2 views
3

Чтобы сделать 3x3 фильтр высоких частот ядра в OpenCV, я использую следующий код (для Android):высоких частот фильтрации в OpenCV

Mat kernel = new Mat(3, 3, CvType.CV_32FC1); 
float[] data = {0, -1, 0, -1, 4, -1, 0, -1, 0}; 
kernel.put(0, 0, data); 

Я тогда фильтр, используя ядро:

Imgproc.filter2D(image, image, -1, kernel); 

Есть ли способ автоматически генерировать большие ядра высоких частот в OpenCV?

ответ

5

В opencv имеется ряд различных фильтров верхних частот. Один вы установили для вашего примера лапласиан:

0 1 0 
1 -4 1 
0 1 0 

Вы можете использовать Laplacian функции OpenCV, которая имеет параметр ksize. Вы должны иметь возможность применять большие ядра Лапласа, манипулируя этим параметром.

Если вы заинтересованы в других фильтрах верхних частот, OpenCV имеет Каннь, Собел и т.д.

1

В то время как я буду использовать ответ Safir, я нашел функцию getDerivKernels(), которая, как представляется, порождает ядро сами матрицы, хотя и только для фильтров Sobel или Scharr и только в определенных размерах.

Смежные вопросы